前提
- Electronでバイナリを組み込んでspawnやexecで実行してる
- Electron Builderを使っている
問題
- バイナリをアプリ内に組み込む必要
- バイナリのパスを解決する必要
解決
以下のissueが参考になる。
https://github.com/electron-userland/electron-builder/issues/751
最後の方のコメントにあるようにextraResourcesの指定とNODE_ENVによるバイナリパスの分岐をする。
例
1.app/bin/some_cmdにバイナリ配置
2.package.jsonのbuild.extraResoucesに以下のように指定
{
"build": {
"extraResources": [
"app/bin/"
],
//...
}
}
3.NODE_ENVで分岐
app/src/main/index.js
const cmd = process.env.NODE_ENV === 'development'
? path.join(__dirname, '../../bin/some_cmd')
: path.join(process.resourcesPath, 'app/bin/some_cmd')