发布和更新
学习目标
如果你一直在跟随学习,这是本教程的最后一步!在这一部分,你将把你的应用程序发布到 GitHub 发布版本,并将自动更新集成到你的应用程序代码中。
使用 update.electronjs.org
Electron 维护者在 https://update.electronjs.org 提供了一个免费的开源应用程序自动更新服务。它的要求是:
- 你的应用程序在 macOS 或 Windows 上运行
- 你的应用程序有一个公开的 GitHub 存储库
- 构建发布到 GitHub 发布版本
- 构建已 代码签名 (仅限 macOS)
此时,我们将假设你已经将所有代码推送到公共 GitHub 存储库。
如果你使用的是替代存储库主机(例如 GitLab 或 Bitbucket),或者你需要保持代码存储库私有,请参阅我们关于托管自己的 Electron 更新服务器的分步指南。
发布 GitHub 发布版本
Electron Forge 具有可以自动化将打包的应用程序分发到各种源的发布器插件。在本教程中,我们将使用 GitHub 发布器,它将允许我们将代码发布到 GitHub 发布版本。
生成个人访问令牌
未经许可,Forge 无法发布到 GitHub 上的任何存储库。你需要传入一个经过身份验证的令牌,该令牌授予 Forge 访问你的 GitHub 发布版本的权限。最简单的方法是创建一个新的具有 public_repo
作用域的个人访问令牌 (PAT),该作用域授予你对公共存储库的写入访问权限。请务必将此令牌保密。
设置 GitHub 发布器
安装模块
Forge 的 GitHub 发布器是一个需要在你项目的 devDependencies
中安装的插件
- npm
- Yarn
npm install --save-dev @electron-forge/publisher-github
yarn add --dev @electron-forge/publisher-github
在 Forge 中配置发布器
安装后,你需要在 Forge 配置中进行设置。 Forge 的 PublisherGitHubConfig
API 文档中记录了完整的选项列表。
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
}
请注意,你已将 Forge 配置为将你的发布版本发布为草稿。这将允许你查看带有其生成的工件的发布版本,而无需将其实际发布给你的最终用户。你可以在编写发布说明并仔细检查你的可分发文件是否正常工作后,通过 GitHub 手动发布你的发布版本。
设置身份验证令牌
你还需要让发布器知道你的身份验证令牌。默认情况下,它将使用存储在 GITHUB_TOKEN
环境变量中的值。
运行发布命令
将 Forge 的 发布命令添加到你的 npm 脚本中。
//...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...
此命令将运行你配置的生成器,并将输出的可分发文件发布到新的 GitHub 发布版本。
- npm
- Yarn
npm run publish
yarn run publish
默认情况下,这只会为你的主机操作系统和架构发布一个可分发文件。你可以通过将 --arch
标志传递给你的 Forge 命令来为不同的架构发布。
此发布版本的名称将与你项目 package.json 文件中的 version
字段相对应。
可选地,你还可以在 Git 中标记你的发布版本,以便你的发布版本与代码历史中的标记点相关联。 npm 附带一个方便的 npm version
命令,它可以为你处理版本提升和标记。
奖励:在 GitHub Actions 中发布
本地发布可能很麻烦,特别是由于你只能为你的主机操作系统创建可分发文件(即你无法从 macOS 发布 Windows .exe
文件)。
对此的解决方案是通过自动化工作流程(例如 GitHub Actions)发布你的应用程序,该工作流程可以在 Ubuntu、macOS 和 Windows 的云中运行任务。这正是 Electron Fiddle 采用的方法。你可以参考 Fiddle 的 构建和发布管道和 Forge 配置以了解更多详细信息。
检测你的更新器代码
现在,我们有了一个通过 GitHub 发布版本运行的发布系统,我们现在需要告诉我们的 Electron 应用程序在有新版本发布时下载更新。Electron 应用程序通过 autoUpdater 模块执行此操作,该模块从更新服务器源读取以检查是否有可下载的新版本。
update.electronjs.org 服务提供一个与更新器兼容的源。例如,Electron Fiddle v0.28.0 将检查 https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 处的端点,以查看是否有较新的 GitHub 版本可用。
将你的发布版本发布到 GitHub 后,update.electronjs.org 服务应适用于你的应用程序。剩下的唯一步骤是使用 autoUpdater 模块配置源。
为了简化此过程,Electron 团队维护了 update-electron-app
模块,该模块在一个函数调用中为 update.electronjs.org 设置 autoUpdater 样板代码 —— 无需配置。此模块将搜索与你项目的 package.json "repository"
字段匹配的 update.electronjs.org 源。
首先,将模块作为运行时依赖项安装。
- npm
- Yarn
npm install update-electron-app
yarn add update-electron-app
然后,导入模块并在主进程中立即调用它。
require('update-electron-app')()
这就是全部了!打包你的应用程序后,它将为每个你发布的新 GitHub 版本自动更新自身。
总结
在本教程中,我们配置了 Electron Forge 的 GitHub 发布器,以将你应用程序的可分发文件上传到 GitHub 发布版本。由于可分发文件并非总是在平台之间生成,如果你没有访问机器的权限,我们建议在持续集成管道中设置构建和发布流程。
Electron 应用程序可以通过将 autoUpdater 模块指向更新服务器源来自我更新。 update.electronjs.org 是 Electron 为发布在 GitHub 发布版本上的开源应用程序提供的免费更新服务器。将你的 Electron 应用程序配置为使用此服务与安装和导入 update-electron-app
模块一样简单。
如果你的应用程序不符合 update.electronjs.org 的使用条件,你应该部署自己的更新服务器并自行配置 autoUpdater 模块。
至此,你已经正式完成了我们的 Electron 教程。请随意浏览我们文档的其余部分,祝你开发愉快!如果你有任何问题,请访问我们的社区 Discord 服务器。