#node.js #electron
Вопрос:
Я пытаюсь открыть .exe
установочное приложение на electron. Но проблема Promise
не решается при открытии установщика, она решается только в том случае, если я закрою установщик или если установка завершена.
Этот установщик является файлом обновления, поэтому я должен закрыть приложение electron при открытии установщика.
Вот мой код
let oppened = false;
if (process.platform === "win32") {
oppened = await openExe(path);
}
if (oppened) app.exit();
const openExe = async (path: string): Promise<any> => {
return await new Promise(async (resolve, reject) => {
exec(`${path}`, function (error, stdout, stderr) {
if (error !== null) {
console.log(error);
resolve(false);
} else {
resolve(true);
}
});
});
};
Ответ №1:
Вы можете spawn
detached
выполнить процесс вместо использования exec
const openExe = (exe: string, args: string[] = []) => {
return new Promise((resolve, reject) => {
try {
const process = child_process.spawn(exe, args, {
detached: true,
stdio: "ignore"
});
process.on("error", error => {
reject(error);
});
process.unref();
if (process.pid !== undefined) {
resolve(true);
}
} catch (error) {
reject(error);
}
});
}