从 Electron 进程分叉仅在 Windows 上从已安装的可执行文件失败

Forking from Electron process fails on Windows only from installed executable

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

这让我相信它与安装程序对可执行文件设置的权限有关。我玩过权限,但没有成功。我不确定 allowing/preventing 这种行为是由哪些权限造成的。

这是失败的可执行文件权限的屏幕截图

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

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