Skip to main content

打 Window 包

当所有业务都写完之后,我们就要开始打包发布了,打包的环节我们是有权限造一些轮子让自己在每次打包时都只需等待即可,根据我的实践,打包流程能实现全流程自动化,我们不需要做额外操作。


1. 构建前端代码生成 网页静态目录。

使用 Webpack Vite 等等打前端包即可,打包完毕可以进行后续操作。


2. 对 Nodejs 代码进行压缩混淆。

使用第三方包可以对 源码进行压缩混淆,因为 asar 文件并不是加密文件,可以通过 asar 工具解压,那如果不希望看我们的源码或者该我们的逻辑在压缩回去就要混淆代码。


3. 根据 forge.config.js 配置 使用 electron-forge 打包 32 位应用程序生成安装文件即可。

之所以用 electron-forge 是因为它对 C++ 兼容性更好,配置也很全面,它打包时会把所有用到的 .node 文件都单独放到 app.asar.unpacked 目录中,为了之后能够扩展 C++ 插件,最好直接用 electron-forge

  • 我们可以在配置中设置 排除 node_modules 内哪些只有前端才用的包,毕竟包体越小越好。

4. 将生成的相关 exe 文件都附加数字签名(主程序和插件)。

添加数字签名这个环节是为了避免被杀毒软件针对,我们不仅要添加数字签名还要送去 360 软件开发中心审核,这样可以保证大多数时候杀毒软件不去干扰我们的软件。 数字签名是需要专业机构开具的,他会给我们提供命令行工具和可视化工具,可以很方便的循环添加和剔除签名。 缺少这一环也没什么问题,可能我们的软件会直接被删除,或者弹出未知来源等等,需要用户手动添加信任或者自行忽略安全弹窗。


5. 使用 NSIS 安装包美化工具再次打包安装包。

NSIS 安装包美化只是其中一个环节,更重要的还是安装体验,比如:

  • 要设置默认的安装路径最好不要安装到 C:\Program Files (x86) 虽然我们后续路径可以支持空格,但还是会有其他问题,如果用户电脑还有其他本地盘符,还是要安装到其他盘符。
  • 判断用户选择的盘符是否是插入的 U 盘,如果用户按到 U 盘内,U 盘拔了之后会启动不了程序。
  • 点击安装时最新判断的应该是 用户选择的盘符或者默认盘符空间够不够,不够要提示用户。
  • 安装时最好添加一个自定义伪协议,放便我们在浏览器内唤起应用 diy:// ,不过会被杀毒软件警告。
  • 当我们软件有代理,应该循环打安装包,不要在 NSIS 内切换不同代理商。
  • 安装包美化不仅可以美化界面,当有高分辨率用户(3200 分辨率缩放 200%)的时候原始的安装界面会变得很小很小,根本看不清,NSIS 切换不同的 UI 图可以解决这个问题。
  • 卸载时注册表记得清理。
  • 安装包程序会找注册表,如果之前安装过则默认还会安装在相同目录下。
  • 要设置是否管理员启动,一般我会设置为当前用户运行,这样可以避免让用户选择是为所有用户安装还是当前用户安装。

step.jpg


6. 将安装包添加数字签名

sign.jpg


7. 根据配置参数将需要增量更新的文件按照对应目录层级压缩。

我们更新时可以自定一个配置文件,可以设置本次更新的信息,比如:

  • 版本号
  • 需要重新安装的最低版本号
  • 下载网址
  • 本次增量更新需要打包的文件名和路径
  • 安装包上传 FTP 配置信息
  • 网页上传 FTP 配置信息
  • 其他

8. 将所有更新文件包括跟新配置文件统一放在一个文件夹内,放便后续上传发布(我一般是把目录放在桌面,好找)。


9. 将最新安装包额外复制到桌面一份备用。

桌面上存的安装包一定是最新的,可以直接发送给售后或其他人。


10. 其他操作

如果出现了 打包配置不足以应对的业务,我们可以通过轮子代码执行操作,还需根据业务具体分析。