Как решить Node.js Обещание exec на electron в Windows после открытия приложения .exe?

#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);
    }
  });
}