打包、分发与自动更新
开发时用 electron . 启动,代码来自项目目录。发给用户时,要把 Electron 二进制、你的代码和资源打成安装包。
代码怎么进安装包
业务代码通常打进 app.asar。这是只读归档,Electron 会把它看成虚拟目录,require 和 fs.readFile 可以直接读里面的文件。asar 可以减少 Windows 长路径问题,也避免用户随手打开目录就看到源码,但它不是加密,asar extract 可以解出内容。
原生模块(.node)和必须由操作系统按真实路径打开的可执行文件,要从 asar 里解出,配置项一般叫 asarUnpack。
安装包
常见工具是 electron-builder 和 Electron Forge。它们负责:
- macOS 的
.app和 dmg - Windows 的 NSIS 或 MSI
- Linux 的 AppImage、deb 等
macOS 分发需要 Developer ID 签名和公证(notarization)。Windows 需要代码签名,否则 SmartScreen 会拦截不熟悉的安装包。
自动更新
Electron 自带的 autoUpdater 面向 Squirrel。使用 NSIS 等安装包时,项目里更常见的是 electron-updater:应用去拉取 latest.yml,比较版本,下载安装包并在退出时安装。Windows 还可以根据 blockmap 只下载变化的块。
更新包必须和当前安装的应用使用同一套签名,否则系统或更新器会拒绝替换。