added patching rx/ap, could be buggy
This commit is contained in:
parent
b70af50634
commit
58fa4a6329
17
app.js
17
app.js
|
@ -11,8 +11,10 @@ const windowName = require('get-window-by-name');
|
|||
const terminalUtil = require('./terminalUtil');
|
||||
const osUtil = require('./osUtil');
|
||||
const appInfo = require('./appInfo');
|
||||
const executeUtil = require("./executeUtil");
|
||||
const { DownloaderHelper } = require('node-downloader-helper');
|
||||
|
||||
let patcherLoc = undefined;
|
||||
let tempOsuPath;
|
||||
let osuWindowInfo;
|
||||
let isIngame;
|
||||
|
@ -36,6 +38,13 @@ const run = () => {
|
|||
if (!osuLoaded) {
|
||||
osuLoaded = true;
|
||||
//TODO: do patch
|
||||
setTimeout(() => {
|
||||
console.log("yes");
|
||||
if (patcherLoc) {
|
||||
console.log("running " + patcherLoc + " in dir " + path.dirname(patcherLoc));
|
||||
executeUtil.runFileDetached(path.dirname(patcherLoc), patcherLoc);
|
||||
}
|
||||
}, 5000);
|
||||
}
|
||||
const windowTitle = firstInstance.processTitle;
|
||||
let rpcOsuVersion = "";
|
||||
|
@ -215,8 +224,13 @@ const run = () => {
|
|||
app.on('window-all-closed', () => {
|
||||
app.quit()
|
||||
})
|
||||
ipcMain.handle('launch', async () => {
|
||||
ipcMain.handle('launch', async (e, opts) => {
|
||||
console.log(opts);
|
||||
const patch = "patch" in opts && opts.patch;
|
||||
const osuFolder = await config.get("osuPath");
|
||||
if (patch) patcherLoc = path.join(osuFolder, "EZPPLauncher", "patcher.exe");
|
||||
else patcherLoc = undefined;
|
||||
|
||||
await osuUtil.updateOsuCfg(path.join(osuFolder, "osu!.cfg"));
|
||||
const osuConfig = await osuUtil.getLatestConfig(tempOsuPath);
|
||||
const username = await config.get('username');
|
||||
|
@ -240,6 +254,7 @@ const run = () => {
|
|||
if (!mainWindow.isVisible()) mainWindow.show();
|
||||
setTimeout(async () => {
|
||||
isIngame = false;
|
||||
osuLoaded = false;
|
||||
await osuUtil.replaceUI(osuFolder, false);
|
||||
await doUpdateCheck(mainWindow);
|
||||
mainWindow.closable = true;
|
||||
|
|
|
@ -4,11 +4,12 @@ module.exports = {
|
|||
childProcess.execFile(file, args, {
|
||||
cwd: folder
|
||||
}, (_err, _stdout, _stderr) => {
|
||||
onExit();
|
||||
if (onExit)
|
||||
onExit();
|
||||
});
|
||||
},
|
||||
runFileDetached: (folder, file, args) => {
|
||||
const subprocess = childProcess.spawn(file + " " + args, {
|
||||
const subprocess = childProcess.spawn(file + (args ? " " + args : ''), {
|
||||
cwd: folder,
|
||||
detached: true,
|
||||
stdio: 'ignore'
|
||||
|
|
|
@ -64,8 +64,8 @@
|
|||
</div>
|
||||
<div class="launch-button-section">
|
||||
<button class="btn btn-lg btn-launch btn-accent" id="launch-btn" disabled>Launch</button>
|
||||
<div class="patch-checkbox" style="display: none;">
|
||||
<input type="checkbox" id="enablePatching" disabled />
|
||||
<div class="patch-checkbox">
|
||||
<input type="checkbox" id="enablePatching" checked/>
|
||||
<label for="enablePatching" style="display: initial;">enable
|
||||
Patching</label>
|
||||
</div>
|
||||
|
|
76
osuUtil.js
76
osuUtil.js
|
@ -11,6 +11,14 @@ const checkUpdateURL = "https://osu.ppy.sh/web/check-updates.php?action=check&st
|
|||
const customUIDLLPath = "https://ez-pp.farm/assets/ezpp!ui.dll";
|
||||
const customUIDLLHash = "https://ez-pp.farm/assets/ezpp!ui.md5";
|
||||
const customUIDLLName = "ezpp!ui.dll";
|
||||
|
||||
const patcherHook = "https://ez-pp.farm/assets/patch.hook.dll";
|
||||
const patcherHookHash = "https://ez-pp.farm/assets/patch.hook.md5";
|
||||
const patcherHookName = "patch.hook.dll";
|
||||
const patcherExe = "https://ez-pp.farm/assets/patcher.exe";
|
||||
const patcherExeHash = "https://ez-pp.farm/assets/patcher.md5"
|
||||
const patcherExeName = "patcher.exe";
|
||||
|
||||
const ignoredOsuEntities = [
|
||||
'osu!auth.dll',
|
||||
]
|
||||
|
@ -86,6 +94,11 @@ async function getEZPPUIMD5() {
|
|||
return releaseData.data;
|
||||
}
|
||||
|
||||
async function getMD5Hash(url) {
|
||||
const releaseData = await axios.get(url, {});
|
||||
return releaseData.data;
|
||||
}
|
||||
|
||||
async function filesThatNeedUpdate(osuPath, updateFiles) {
|
||||
const filesToDownload = [];
|
||||
for (const updatedFile of updateFiles) {
|
||||
|
@ -122,11 +135,56 @@ async function filesThatNeedUpdate(osuPath, updateFiles) {
|
|||
}
|
||||
|
||||
const ezppUI = path.join(osuPath, "EZPPLauncher", customUIDLLName);
|
||||
const hook = path.join(osuPath, "EZPPLauncher", patcherHookName);
|
||||
const patcher = path.join(osuPath, "EZPPLauncher", patcherExeName);
|
||||
|
||||
if (await fu.existsAsync(hook)) {
|
||||
const latestHookMd5Hash = (await getMD5Hash(patcherHookHash)).toLowerCase().trim();
|
||||
const binaryHookContents = await fs.promises.readFile(hook);
|
||||
const existingHookMD5 = crypto.createHash("md5").update(binaryHookContents).digest("hex").toLowerCase().trim();
|
||||
if (existingHookMD5 != latestHookMd5Hash) {
|
||||
filesToDownload.push({
|
||||
folder: "EZPPLauncher",
|
||||
fileName: patcherHookName,
|
||||
fileURL: patcherHook
|
||||
});
|
||||
console.log("patcher has wrong hashsum (" + existingHookMD5 + " / " + latestHookMd5Hash + ")");
|
||||
}
|
||||
} else {
|
||||
filesToDownload.push({
|
||||
folder: "EZPPLauncher",
|
||||
fileName: patcherHookName,
|
||||
fileURL: patcherHook
|
||||
});
|
||||
console.log("patcher does not exist");
|
||||
}
|
||||
|
||||
if (await fu.existsAsync(patcher)) {
|
||||
const latestPatchMd5Hash = (await getMD5Hash(patcherExeHash)).toLowerCase().trim();
|
||||
const binaryPatchContents = await fs.promises.readFile(patcher);
|
||||
const existingPatchMD5 = crypto.createHash("md5").update(binaryPatchContents).digest("hex").toLowerCase().trim();
|
||||
if (existingPatchMD5 != latestPatchMd5Hash) {
|
||||
filesToDownload.push({
|
||||
folder: "EZPPLauncher",
|
||||
fileName: patcherExeName,
|
||||
fileURL: patcherExe
|
||||
});
|
||||
console.log("patcher has wrong hashsum (" + existingPatchMD5 + " / " + latestPatchMd5Hash + ")")
|
||||
}
|
||||
} else {
|
||||
filesToDownload.push({
|
||||
folder: "EZPPLauncher",
|
||||
fileName: patcherExeName,
|
||||
fileURL: patcherExe
|
||||
});
|
||||
console.log("patcher does not exist");
|
||||
}
|
||||
|
||||
if (await fu.existsAsync(ezppUI)) {
|
||||
const latestMd5Hash = await getEZPPUIMD5();
|
||||
const latestUIMd5Hash = (await getMD5Hash(customUIDLLHash)).toLowerCase().trim();
|
||||
const binaryUIContents = await fs.promises.readFile(ezppUI);
|
||||
const existingUIMD5 = crypto.createHash("md5").update(binaryUIContents).digest("hex");
|
||||
if (existingUIMD5 != latestMd5Hash) {
|
||||
const existingUIMD5 = crypto.createHash("md5").update(binaryUIContents).digest("hex").toLowerCase().trim();
|
||||
if (existingUIMD5 != latestUIMd5Hash) {
|
||||
filesToDownload.push({
|
||||
folder: "EZPPLauncher",
|
||||
fileName: "ezpp!ui.dll",
|
||||
|
@ -141,6 +199,8 @@ async function filesThatNeedUpdate(osuPath, updateFiles) {
|
|||
})
|
||||
}
|
||||
|
||||
console.log(JSON.stringify(filesToDownload, null, 2))
|
||||
|
||||
return filesToDownload;
|
||||
}
|
||||
|
||||
|
@ -149,16 +209,18 @@ async function downloadUpdateFiles(osuPath, filesToUpdate) {
|
|||
let completedIndex = 0;
|
||||
filesToUpdate.forEach(async (fileToUpdate) => {
|
||||
|
||||
let tempPath = osuPath;
|
||||
|
||||
if ("folder" in fileToUpdate) {
|
||||
osuPath = path.join(osuPath, fileToUpdate.folder);
|
||||
if (!(await fu.existsAsync(osuPath))) await fs.promises.mkdir(osuPath);
|
||||
tempPath = path.join(tempPath, fileToUpdate.folder);
|
||||
if (!(await fu.existsAsync(tempPath))) await fs.promises.mkdir(tempPath);
|
||||
}
|
||||
|
||||
const filePath = path.join(osuPath, fileToUpdate.fileName);
|
||||
const filePath = path.join(tempPath, fileToUpdate.fileName);
|
||||
if (await fu.existsAsync(filePath))
|
||||
await fs.promises.rm(filePath);
|
||||
|
||||
const fileDownload = new DownloaderHelper(fileToUpdate.fileURL, osuPath, {
|
||||
const fileDownload = new DownloaderHelper(fileToUpdate.fileURL, tempPath, {
|
||||
fileName: fileToUpdate.fileName,
|
||||
override: true,
|
||||
});
|
||||
|
|
|
@ -48,7 +48,7 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||
case "up-to-date":
|
||||
$("#launch-btn").attr('disabled', true);
|
||||
$('#launch-btn').html('Launching...');
|
||||
const result = await ipcRenderer.invoke("launch");
|
||||
const result = await ipcRenderer.invoke("launch", { patch: true });
|
||||
if (!result) {
|
||||
Swal.fire({
|
||||
title: 'Uh oh!',
|
||||
|
|
Loading…
Reference in New Issue
Block a user