electron 工程 打包

说明

这一套方案只是介绍了我在工程中用的一种解决方案,当然还有很多其他解决方案。

实现目的

把electron工程打包成一个安装包,在客户机器上安装完成之后可以直接使用,安装包中包含electron的运行环境,以及工程实现代码

完整流程

前端代码打包

web端代码编译、压缩、混淆代码。这个方案就不细说了,网上可以找到很多相关资料

electron-builder 生成绿色包

需要使用 electron-builder 模块来打包electron,electron-builder 具体使用细节可以参考官方文档,配置好基本参数例如:图标、是否压缩、源码目录等

在工程package.json中部分配置如下:

"build": {
        "directories": {
            "buildResources": "resource",
            "output": "dist"
        },
        "asar": false,
        "asarUnpack": [
            "*******"
        ],
        "compression": "maximum",
        "files": [
            "build",
            "resource"
        ],
        "forceCodeSigning": false,
        "mac": {
            "icon": "resource/mac/icon.icns",
            "compression": "maximum",
            "target": [
                "dir"
            ]
        },
        "win": {
            "icon": "resource/windows/icon.ico",
            "target": [
                "dir"
            ]
        }
    }

你也可以使用electron-package等模块完成类似工作

注意

electron可以加载asar压缩模块内容,但是有几中文件是不能放入asar中的

  • C++的 dll 库文件,在asar中无法运行,因为C++没办法加载asar中文件
  • C++中加载的资源文件,同上
  • objc 加载的资源文件,同上

最终electron 的资源resource 目录下可以变成

  • electron.asar electron本身自动的代码
  • app.asar 可以压缩的纯前端代码以及.node文件
  • app.asar.unpacked 如果模块中涉及到C++ dll,那么把整个模块移入到 app.asar.unpacked,当然也可以通过动态加载C++ dll 不需要全部移到这里

清理nodejs C++模块中无用文件,减少总体积

​ 具体实现参考electron编译文件清理 文章

拷贝相关license

​ 如果集成了第三方库或者功能,拷贝相应的license到 绿色包目录下

拷贝C++动态库

​ 目的是把包含C++ dll 或者dylib、framework 的模块 拷贝到 app.asar.unpacked 中,在windows和mac 下要注意不同的 资源路径

代码加密

electron代码加密

electron代码解密

代码签名

windows数字签名

macosx数字签名

压缩app目录为asar文件

# windows 实现

asar pack ./dist/win-ia32-unpacked/resources/app ./dist/win-ia32-unpacked/resources/app.asar;

# mac 实现 
asar pack ./dist/mac/$AppProductName.app/Contents/Resources/app ./dist/mac/$AppProductName.app/Contents/Resources/app.asar

把绿色包制作成安装包

在npm 上有很多相关的模块

windows 可以用 nsis、innosetup 脚本来定制化你的界面

mac 上有生成dmg、pkg的模块


所有图片均来自网络


   转载规则


《electron 工程 打包》 Smoking 采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
 上一篇
electron编译文件清理 electron编译文件清理
windows 平台清理垃圾文件对执行程序无用的垃圾文件有那些 C++工程编译的文件 mac 端才使用的模块文件 文档文件 例如 markdown、doc、excel 等这类开发文档文件 C++ 源代码文件,如 cpp、cc、h、hpp 等
2019-05-24
下一篇 
《这样读书就够了》读后感 《这样读书就够了》读后感
前提成人读书存在的问题 没时间、没精力 看不懂、记不住 看不下去 成人有效学习的五大公理 自我导向 关联经验 强调实践 聚焦于解决实际问题 内在驱动 《这样读书就够了》为解决上面的问题使用什么方法? 拆书法RIA=阅读拆页+
2019-05-22
  目录