electron-builder 打包报错踩坑必读

写这个文章前我看了网上其他编友遇到的各种问题的记录和解决方案,结合我司项目打包时 遇到的问题 总结了以下几点坑和解决思路:

一.npm一些依赖 由于网络环境问题 导致安装失败,

解决思路:使用cnpm  淘宝镜像之类 可以解决 具体怎么弄 网上教程很多,这里就不一一阐述了。

二.因为网络环境问题(懂的都懂 /狗头)winCodeSign nsis和nsis-resources无法下载 

解决思路: 自己手动去下载下来放在本地缓存中

下载地址 Index of electron-builder-binaries-local

1.electron-(version)(下载)

文件放入位置:C:\Users\asus\AppData\Local\electron\Cache

2.winCodeSign(新建)

文件放入位置:C:\Users\asus\AppData\Local\electron-builder\Cache

在winCodeSign里面再新建一个文件夹 取名  winCodeSign-(version),version看报错下载哪个版本失败就去下载哪个版本 下载下来的东西解压到这个带版本的文件夹里面

3.nsis(新建) 类似第二点winCodeSign

文件放入位置:C:\Users\asus\AppData\Local\electron-builder\Cache

在nsis里面再新建一个文件夹 取名  nsis-(version),version看报错下载哪个版本失败就去下载哪个版本 下载下来的东西解压到这个带版本的文件夹里面

4.nsis-resources(新建) 类似第三点不过要在刚新建的nsis文件里面新建

文件放入位置:C:\Users\asus\AppData\Local\electron-builder\Cache\nsis

在nsis里面再新建一个文件夹 取名  nsis-resources-(version),version看报错下载哪个版本失败就去下载哪个版本 下载下来的东西解压到这个带版本的文件夹里面

三.nsis打包的路径包含中文,导致一些文件路径乱码 无法识别 出现的各种 could not find: 问题

解决思路:

1.路径中出现的中文全部改掉,挪动文件夹,更改电windows账户名之类的原始方法

2.想办法让打包插件支持文中,修改依赖文件

在node_module/app-builder-lib/out/targets/nsis/NsisTarget.js文件里面 找到executeMakensis方法。添加支持中文编码的代码 截图中使用红色框 框起来的 源码469行

代码如下:

async executeMakensis(defines, commands, script) {
        const args = this.options.warningsAsErrors === false ? [] : ["-WX"];

        // 只需要加下面这一行即可
        args.push("-INPUTCHARSET", "UTF8");
        
        for (const name of Object.keys(defines)) {
            const value = defines[name];
            if (value == null) {
                args.push(`-D${name}`);
            }
            else {
                args.push(`-D${name}=${value}`);
            }
        }
        for (const name of Object.keys(commands)) {
            const value = commands[name];
            if (Array.isArray(value)) {
                for (const c of value) {
                    args.push(`-X${name} ${c}`);
                }
            }
            else {
                args.push(`-X${name} ${value}`);
            }
        }
        args.push("-");
        if (this.packager.debugLogger.isEnabled) {
            this.packager.debugLogger.add("nsis.script", script);
        }
        const nsisPath = await nsisUtil_1.NSIS_PATH();
        const command = path.join(nsisPath, process.platform === "darwin" ? "mac" : process.platform === "win32" ? "Bin" : "linux", process.platform === "win32" ? "makensis.exe" : "makensis");
        // if (process.platform === "win32") {
        // fix for an issue caused by virus scanners, locking the file during write
        // https://github.com/electron-userland/electron-builder/issues/5005
        await ensureNotBusy(commands["OutFile"].replace(/"/g, ""));
        // }
        await builder_util_1.spawnAndWrite(command, args, script, {
            // we use NSIS_CONFIG_CONST_DATA_PATH=no to build makensis on Linux, but in any case it doesn't use stubs as MacOS/Windows version, so, we explicitly set NSISDIR
            env: { ...process.env, NSISDIR: nsisPath },
            cwd: nsisUtil_1.nsisTemplatesDir,
        });
    }

以上都配置好后 出现运行打包命令 然后出现下面这样 那么就恭喜你已经打包成功

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用electron-builder打包Linux桌面程序,你可以使用以下命令: ``` electron-builder --linux ``` 这个命令会使用electron-builder打包你的electron项目,并生成适用于Linux系统的安装包。\[2\]在运行这个命令之前,你需要确保你的项目已经完备,并且已经安装了electron-builder的依赖。你可以通过全局安装electron-builder来安装依赖,使用命令`npm install -g electron-builder`。\[3\]另外,你也可以在项目中安装electron-builder的依赖,使用命令`npm install electron-builder`。一旦依赖安装完成,你就可以使用上述命令来打包Linux桌面程序了。 #### 引用[.reference_title] - *1* *3* [electron-builder打包Electron桌面应用程序](https://blog.csdn.net/HTongi/article/details/113726323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Electron打包桌面应用程序](https://blog.csdn.net/weixin_43561201/article/details/124616088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值