将桌面应用程序交付给用户只是成功的一半——真正的挑战在于将应用程序打包、签名并在三个操作系统上发布。Electron Builder(electron-userland/electron-builder)是解决此问题最广泛采用的工具,为 macOS、Windows 和 Linux 的 Electron 应用程序打包提供全方位解决方案。
由 Electron 生态系统维护者创建,Electron Builder 已成为 Electron 应用程序发布的事实标准。从小型工具到企业 SaaS 产品,成千上万的生产应用程序都在使用它,处理从安装程序创建到代码签名再到自动更新的一切事务。
Electron Builder 之所以不可或缺,在于其配置驱动的方法。您无需为每个操作系统编写特定平台的打包脚本,而是在单一的 electron-builder.yml 文件中定义构建目标、签名身份和更新配置。该工具随后会在所有目标平台上协调整个流程。
Electron Builder 如何简化跨平台打包?
Electron Builder 抽象化了在每个操作系统上创建适当安装程序所需的深层平台特定知识。开发者无需分别学习 Windows 安装程序、macOS 捆绑包和 Linux 打包格式的细节,只需使用统一的配置模式即可。
graph LR
A[Electron 应用程序\n源代码] --> B[electron-builder.yml\n配置]
B --> C[构建流程]
C --> D[macOS 构建\n.DMG / .PKG]
C --> E[Windows 构建\n.NSIS / .MSI]
C --> F[Linux 构建\n.AppImage / .Snap]
D --> G[代码签名与\n公证]
E --> H[Authenticode\n签名]
G --> I[发布产物]
H --> I
F --> I
该流程在单次处理中处理依赖检测(原生模块、系统库)、资源优化(特定操作系统的图标、文件关联)以及特定平台的行为(如 macOS 强化运行时权利)。
Electron Builder 支持哪些安装程序格式?
每个平台都有其偏好的安装程序格式,Electron Builder 支持所有三个平台的主要选项。
| 平台 | 安装程序格式 | 使用场景 |
|---|---|---|
| macOS | DMG、PKG、MAS(Mac App Store) | DMG 用于直接下载,PKG 用于企业部署,MAS 用于 App Store 发布 |
| Windows | NSIS、MSI、AppX、可移植 | NSIS 用于自定义安装程序,MSI 用于企业组策略,AppX 用于 Windows Store |
| Linux | AppImage、Snap、Flatpak、deb、rpm | AppImage 用于通用 Linux,Snap 用于 Canonical 生态系统,Flatpak 用于 Fedora |
| 全部 | ZIP、7z、tar.xz | 供高级用户和 CI 环境使用的可移植压缩包 |
每种安装程序类型都可以通过平台特定选项进行自定义,例如许可协议文件、自定义安装程序图标、文件关联和运行时依赖。
Electron Builder 中的代码签名如何工作?
代码签名是桌面应用程序发布中最关键——也是最容易出错——的环节之一。Electron Builder 自动化证书管理和签名工作流程。
| 签名任务 | macOS | Windows |
|---|---|---|
| 证书来源 | Apple Developer 账户、钥匙串 | Authenticode 证书文件或 Azure Key Vault |
| 公证 | 通过 altool 内置公证 | 不适用 |
| CI 配置 | CSC_LINK + CSC_KEY_PASSWORD 环境变量 | WIN_CSC_LINK + WIN_CSC_KEY_PASSWORD 环境变量 |
| 强化运行时 | 自动权利生成 | 不适用 |
| 时间戳 | Apple 时间戳服务器 | RFC 3161 时间戳服务器 |
该工具在单一构建命令中处理签名和公证,确保 macOS 应用程序通过 Gatekeeper 检查,Windows 应用程序避免 SmartScreen 警告。
Electron Builder 提供哪些自动更新功能?
Electron Builder 与 electron-updater 深度集成,提供无缝的应用程序更新。更新系统支持多种发布后端和高级功能。
| 功能 | 说明 |
|---|---|
| 差异更新 | 仅下载版本之间更改的文件 |
| 多种提供者 | GitHub Releases、S3、通用 HTTP(S)、GitLab、Bitbucket |
| 频道管理 | 稳定版、测试版、Alpha 版发布频道 |
| 强制更新 | 通过版本范围强制执行必要更新 |
| 发布说明 | 应用程序内显示更新日志和升级信息 |
自动更新系统专为生产环境的可靠性而设计,具有下载重试、通过 SHA 校验和进行完整性验证,以及在差异更新失败时回退到完整更新等特性。
常见问题
什么是 Electron Builder? Electron Builder (electron-userland/electron-builder) 是一套完整、集成的解决方案,用于打包和构建适用于 macOS、Windows 和 Linux 发布的 Electron 应用程序。它在单一配置驱动的工具链中处理代码签名、自动更新生成、安装程序创建和 CI/CD 集成。
Electron Builder 如何处理代码签名? Electron Builder 支持 macOS(通过 Apple Developer 证书和公证)和 Windows(通过 Authenticode 证书)的自动化代码签名。它与 GitHub Actions、CircleCI 和 Travis CI 等 CI 环境集成,无需手动干预即可签署构建版本。
Electron Builder 支持哪些安装程序格式? Electron Builder 支持多种安装程序格式:DMG 和 PKG 用于 macOS;NSIS 和 MSI 用于 Windows;AppImage、Snap 和 Flatpak 用于 Linux;以及跨平台格式如可移植可执行文件和压缩包(ZIP、7z、tar.xz)。
Electron Builder 的自动更新如何工作? Electron Builder 与 electron-updater 集成以提供自动应用程序更新。它支持通过 GitHub Releases、S3、通用 HTTP 服务器和自定义更新服务器进行更新发布。更新可以是差异更新以减少带宽使用。
Electron Builder 可以在 CI/CD 流程中使用吗? 是的,Electron Builder 专为 CI/CD 集成而设计。它具有官方 Docker 镜像、支持环境变量注入,可与 GitHub Actions、CircleCI、Travis CI、Jenkins 和 GitLab CI 配合使用,并提供无头构建模式。
延伸阅读
- Electron Builder GitHub 仓库 – 源代码、问题和社区讨论
- Electron Builder 文档 – 包含配置参考和指南的官方文档
- Electron 打包指南 – Electron 官方打包与发布指南
- 代码签名最佳实践 – Apple 官方公证文档
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!