0

私はElectronを使用してデスクトップアプリケーションを開発しています。レンダラープロセスをロックしないように、別のプロセスで特定のタスクを実行します。私はrequire('child_process').forkと呼んでこれを達成します。これはすべてのプラットフォーム(linux、windows、osx)で期待どおりに動作します。しかし、私はelectron-builderを使用してアプリケーションをパッケージ化し、生成されたNSISインストーラをインストールし、インストールされたバイナリを実行すると、フォークは失敗します。私はエラー出力を見るためにコマンドラインからこのバイナリを起動しましたが、それは役に立ちませんでした。このとき、子プロセスをフォークする親プロセスは、終了コード1でexitコールバックを取得します。これは、NSISインストーラによってインストールされた実行可能ファイルにのみ問題があります。 electron-builder--dirオプションで実行し、展開されたディレクトリから実行可能ファイルを実行すると正常に動作します。電子プロセスからのフォークは、インストールされた実行可能ファイルからのみWindows上で失敗します

これは、インストーラによって実行可能ファイルに設定されている権限と関係があると私に信じてくれました。私は権限を持って遊んだが、成功しなかった。どのようなアクセス許可がこの動作を許可/防止するのかはわかりません。

は、ここで私はこの問題を考え出し enter image description here

+0

ASARパッケージングステップをスキップしてください。これは[電子ビルダーで切り替える]ことができます(https://github.com/electron-userland/electron-builder/wiki/Options#build)。 –

+0

良い提案。私は試しましたが、助けにはなりません。 – Jayesh

答えて

0

失敗し、実行のパーミッションのスクリーンショットです。実行可能ファイルのアクセス許可やasarパッケージとは関係ありませんでした。

私が理解している限り、問題は私がネイティブモジュールをパッケージ化する方法でした。フォークされたプロセスがネイティブモジュールをロードしています。しかし、パッケージ化するうちに私は専有ソースコードの配布を避けるために、build/ディレクトリをパッケージ化することのみを選択しました。これは、フォークされたプロセスの失敗を引き起こしていました。ネイティブモジュールのpackage.jsonファイルをbuild/ディレクトリと一緒にパッケージングすると、フォークされたプロセスが正しく実行されました。

関連する問題