有没有办法从 ELECTRON 的安装程序向导中捕获子进程事件?
Is there a Way to capture Child Process Events from Installer Wizard in ELECTRON?
我的子进程是一个安装程序向导,我想在安装程序向导(子进程 exec)打开时关闭主应用程序(父进程),但目前我只在完成该进程时得到输出,而不是什么时候开放。
此代码负责打开向导:
exec("${filePath}"
,(错误,标准输出,标准错误)=>{
.....回调处理程序
});
但打开后它不会触发任何事件来捕获安装程序向导已打开只有在我同意完成安装或我取消时才会执行回调处理程序。
如 Node.js documentation on child_process.exec ()
所述,您提供的回调函数仅在您生成的进程退出时调用,即已完成其任务。
要在运行时捕获子进程的输出,您可以使用 child_process.spawn ()
:
const child_process = require ("child_process");
var child = child_process.spawn (`"${filePath}"`);
child.stdout.on ("data", (data) => console.log (data)); // regular output
child.stderr.on ("data", (data) => console.error (data)); // error output
child.on ("exit", (code) => { /* ... */ }); // child process finished
但是,除非您调用的进程在打开 window 后向其 stdout
(标准输出)输出特定的可识别行,否则您无法确定 window 已打开。但是,一旦 spawn
完成,该过程就是 运行。
我的子进程是一个安装程序向导,我想在安装程序向导(子进程 exec)打开时关闭主应用程序(父进程),但目前我只在完成该进程时得到输出,而不是什么时候开放。
此代码负责打开向导:
exec("${filePath}"
,(错误,标准输出,标准错误)=>{
.....回调处理程序
});
但打开后它不会触发任何事件来捕获安装程序向导已打开只有在我同意完成安装或我取消时才会执行回调处理程序。
如 Node.js documentation on child_process.exec ()
所述,您提供的回调函数仅在您生成的进程退出时调用,即已完成其任务。
要在运行时捕获子进程的输出,您可以使用 child_process.spawn ()
:
const child_process = require ("child_process");
var child = child_process.spawn (`"${filePath}"`);
child.stdout.on ("data", (data) => console.log (data)); // regular output
child.stderr.on ("data", (data) => console.error (data)); // error output
child.on ("exit", (code) => { /* ... */ }); // child process finished
但是,除非您调用的进程在打开 window 后向其 stdout
(标准输出)输出特定的可识别行,否则您无法确定 window 已打开。但是,一旦 spawn
完成,该过程就是 运行。