У меня есть клиент NodeJS (Electron), который выполняет следующий код:
child = spawn("powershell.exe",['-ExecutionPolicy', 'ByPass', '-File', require("path").resolve(__dirname, '../../../../updater.ps1')]);
child.on("exit",function(){
require('electron').remote.getCurrentWindow().close();
});
Открываемый файл является файлом powershell, который загружает и распаковывает обновление. Если я запускаю этот файл вручную, я получаю консоль PowerShell, которая показывает мне индикатор выполнения загрузки и распаковки. Однако при запуске из кода, подобного приведенному выше, консоль не отображается.
Как я могу сделать так, чтобы мой код отображал консоль PowerShell во время выполнения? Мне сложно сформулировать условия поиска, чтобы найти ответ на этот вопрос.
Вещи, которые я пробовал:
- Добавление
'-NoExit'
в мой второй массив параметров
- Добавление
{ windowsHide: false }
параметр
- Добавление
'-WindowStyle', 'Maximized'
во второй массив параметров
Я также пытался переключиться на exec
.
exec('powershell -ExecutionPolicy Bypass -File ' + updater_path, function callback(error, stdout, stderr){
console.log(error);
});
Который запускает файл, но по-прежнему не показывает консоль.
Ответ предпочтительно разрешит мне запускать файлы powershell, не присоединенные к клиенту NodeJS, а также покажет консоль powershell во время работы.
Вот мой текущий код:
updater = spawn("powershell.exe",['-ExecutionPolicy', 'ByPass', '-File', remote.app.getAppPath() + '\\app\\files\\scripts\\' + data.type + '_updater.ps1'], { detached: true, stdio: 'ignore' });
updater.unref();
Что на самом деле ничего не делает, даже не похоже, что он вообще запускает скрипт.
Я пробовал то же самое, используя командный файл, он никогда не открывался.
updater = spawn("cmd",[remote.app.getAppPath() + '\\app\\files\\scripts\\launch_updater.bat'], { detached: true, stdio: ['ignore', 'ignore', 'ignore'] });
updater.unref();