From 40365b44e30c90cece23d78102721fedc65ea2ec Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sun, 14 Jul 2024 21:22:25 +0200 Subject: [PATCH] [bugfix] bsipa installation never show error even if bsipa throw errors --- .../services/mods/bs-mods-manager.service.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/services/mods/bs-mods-manager.service.ts b/src/main/services/mods/bs-mods-manager.service.ts index 330d9900..a4fc4195 100644 --- a/src/main/services/mods/bs-mods-manager.service.ts +++ b/src/main/services/mods/bs-mods-manager.service.ts @@ -14,7 +14,7 @@ import { lastValueFrom } from "rxjs"; import JSZip from "jszip"; import { extractZip } from "../../helpers/zip.helpers"; import recursiveReadDir from "recursive-readdir"; -import { minToMs } from "../../../shared/helpers/time.helpers"; +import { sToMs } from "../../../shared/helpers/time.helpers"; import { ensureDir } from "fs-extra"; export class BsModsManagerService { @@ -155,9 +155,20 @@ export class BsModsManagerService { } return new Promise(resolve => { - log.info("START IPA PROCESS", `start /wait /min "" "${ipaPath}" ${args.join(" ")}`); - const processIPA = spawn(`start /wait /min "" "${ipaPath}" ${args.join(" ")}`, { cwd: versionPath, detached: true, shell: true }); + const cmd = process.platform === 'linux' + ? `screen -dmS "BSIPA" dotnet ${ipaPath} ${args.join(" ")}` // Must run through screen, otherwise BSIPA tries to move console cursor and crashes. + : `${ipaPath} ${args.join(" ")}`; + + log.info("START IPA PROCESS", cmd); + const processIPA = spawn(cmd, { cwd: versionPath, detached: true, shell: true }); + + const timemout = setTimeout(() => { + log.info("Ipa process timeout"); + resolve(false) + }, sToMs(30)); + processIPA.once("exit", code => { + clearTimeout(timemout); if (code === 0) { log.info("Ipa process exist with code 0"); return resolve(true); @@ -166,10 +177,7 @@ export class BsModsManagerService { resolve(false); }); - setTimeout(() => { - log.info("Ipa process timeout"); - resolve(false) - }, minToMs(1)); + }); } @@ -230,7 +238,7 @@ export class BsModsManagerService { log.error("Error while extracting mod zip", e); return false; }); - + log.info("Mod zip extraction end", mod.name, "to", destDir, "success:", extracted); const res = isBSIPA