1

我正在使用 Electron 开发一个桌面应用程序。我在单独的进程中执行某些任务以避免锁定渲染器进程。我通过调用require('child_process').fork. 这可以在所有平台(linux、windows、osx)上按预期工作。但是,当我使用生成的 NSIS 安装程序打包应用electron-builder程序并执行安装的二进制文件时,fork 失败。我已经从命令行启动了这个二进制文件以查看任何错误输出,但这并没有帮助。发生这种情况时,派生子进程的父进程会收到exit带有退出代码 1 的回调。这只是 NSIS 安装程序安装的可执行文件的问题。如果我运行electron-builderwith--dir选项并从解压缩目录运行可执行文件,它工作正常。

这让我相信它与安装程序在可执行文件上设置的权限有关。我玩过权限,但没有任何成功。我不确定哪些权限负责允许/防止这种行为。

这是失败的可执行文件的权限截图 在此处输入图像描述

4

1 回答 1

0

我弄清楚了这个问题。它与可执行文件权限或 asar 打包无关。

据我所知,问题在于我打包原生模块的方式。分叉的进程正在加载本机模块。但是打包时我只选择打包build/目录,避免分发专有源代码。这导致了分叉进程的失败。package.json当我也开始将本机模块的文件与目录一起打包时build/,分叉的进程运行正常。

于 2017-01-01T14:02:00.663 回答