Node.js electron builder在jenkins上失败,原因是:enoint:没有这样的文件或目录,copyfile elevate.exe
我开始研究一个旧的基于电子的应用程序。作为这项工作的一部分,我需要更新许多包,包括electron builder 在对所有软件包版本等进行了多次调整之后,我在本地机器上构建了应用程序,即windows 10 当我将构建推送到jenkins,并尝试进行electron构建时,我得到以下错误:enoint:没有这样的文件或目录,copyfile'/root/.cache/electron builder/nsis/nsis-3.0.3.2/elevate.exe'->'/home/jenkins/workspace/MYAPP\u MYAPP-client\u master-BZL24OQAMKV5LCPISXOCH6VJELCMS26NKBSHJ6R43G746JVMSVBQ/electron packager/win32-x64/MYAPP-win32-x64/resources/elevate.exe' 我知道这意味着这个文件根本不存在?我不明白这是怎么发生的,因为同一个构建配置是用以前版本的electron builder构建应用程序的,但现在不是了。我已经使用了最新版本的electron builder,并开始在没有运气的情况下重新使用这些版本 jenkins服务器是CentOS,使用了docker葡萄酒容器。我不能控制实际的构建服务器,我只能提交我的构建 生成错误:Node.js electron builder在jenkins上失败,原因是:enoint:没有这样的文件或目录,copyfile elevate.exe,node.js,jenkins,electron,Node.js,Jenkins,Electron,我开始研究一个旧的基于电子的应用程序。作为这项工作的一部分,我需要更新许多包,包括electron builder 在对所有软件包版本等进行了多次调整之后,我在本地机器上构建了应用程序,即windows 10 当我将构建推送到jenkins,并尝试进行electron构建时,我得到以下错误:enoint:没有这样的文件或目录,copyfile'/root/.cache/electron builder/nsis/nsis-3.0.3.2/elevate.exe'->'/home/jenkins/
"electron-builder": "21.2.0",
"electron-packager": "7.6.0",
"electron": "8.5.0",
{
"win": {
"icon": "app/ico/icon.ico"
},
"nsis": {
"oneClick": false,
"perMachine": true,
"include": "installer.nsh"
},
"directories": {
"output": "release"
}
}
electron builder--win--x64--ia32--pd=“electron packager/win32-x64/MYAPP-win32-x64”--config=builder.json
软件包版本:
"electron-builder": "21.2.0",
"electron-packager": "7.6.0",
"electron": "8.5.0",
{
"win": {
"icon": "app/ico/icon.ico"
},
"nsis": {
"oneClick": false,
"perMachine": true,
"include": "installer.nsh"
},
"directories": {
"output": "release"
}
}
Builder.json:
"electron-builder": "21.2.0",
"electron-packager": "7.6.0",
"electron": "8.5.0",
{
"win": {
"icon": "app/ico/icon.ico"
},
"nsis": {
"oneClick": false,
"perMachine": true,
"include": "installer.nsh"
},
"directories": {
"output": "release"
}
}
我使用调试器运行构建脚本,发现了一个标志,这是我解决该问题的方法 如前所述,该标志为
packElevateHelper
,除非您确实需要提升功能,否则您可以显式忽略它,从而完全避免复制文件的尝试
例如,您的配置应具有包括以下属性的NSIS选项:
"nsis": {
"packElevateHelper": false,
},
更新:
我刚刚确认了一种通过elevate.exe
复制的方法
确保已创建应用程序.exe
文件的二进制输出文件夹也包含资源
文件夹。试图将elevate.exe
复制到要安装的软件包中的resources
文件夹中的copyfile
调用无法确保此文件夹已存在
在我的例子中,使用将prepackaged
属性设置为binary build output文件夹的编程API,在创建目录后,我只调用了electron builder
build
函数:
fs.promises.mkdir(path.join(<path_to_binary_folder>, 'resources'));
fs.promises.mkdir(path.join(,'resources');
当文件夹存在时,“复制”命令工作正常。您能提供一个实际的例子吗?