flow-flow-flow

[Electron] Electronで外部アプリをキックするときに子プロセスではなく、別プロセスとしてキックしたい

f:id:thegriftsense:20210908231101j:plain

やりたいこと

Electronで作っているアプリで、自動アップデート機能を実装することになったので、アプリから普通にインストーラを起動したら、 イントール時にアプリが閉じてしまうみたいで、親プロセスが死んだ。親プロセスが死ねば必然、子プロセスで起動しているインストール処理も南無阿弥陀仏である。インストール処理は途中で中断されてしまう。 なのでインストーラを子プロセスとしてではなく、別プロセスとしてキックしたい。

調査

ググる

electronでアップデータを配布する簡単な方法 この記事のクライアントのコードにバチっといい感じのコードがあった。

解決策

const { spawn } = require('child_process');

// 外部アプリキック
const child = spawn(path, [], {
  stdio: 'ignore', 
  // 親プロセスが終了しても子プロセスが継続するようにする
  detached: true,
});
// 親プロセスが子プロセスから独立して終了できるようにする
child.unref()

参考