node.js - 仅从已安装的可执行文件在 Windows 上从 Electron 进程 fork 失败

标签 node.js windows file-permissions electron electron-builder

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

这让我相信这与安装程序对可执行文件设置的权限有关。我已经尝试了权限,但没有成功。我不确定哪些权限负责允许/阻止此行为。

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

最佳答案

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

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

关于node.js - 仅从已安装的可执行文件在 Windows 上从 Electron 进程 fork 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41332009/

相关文章:

macos - 如何挂载容器可写的主机目录?

javascript - 如何在 Nestjs 中扩展多个 dto 类

linux - 进程间实内存页读取?

windows - 从 Windows Docker 主机连接到 dockerized postgres

linux - 如何检测文件系统是否支持权限?

xcode - myProject 已锁定无法编辑,您可能无法保存更改?

javascript - 如何每天在特定时间运行node.js cron?

node.js - 从 Node.js 调用 C++ 库 (Node addons/node-ffi)

javascript - 当Key包含两部分标识符时获取对象的长度

python - 如何使用 Python 在 Windows 上创建带有嵌入式斜线的文件?