发布和更新
:::info 跟随教程
这是 Electron 教程的第 6 部分。
:::
学习目标¶
如果你一直在跟随教程,这是教程的最后一步!在本部分中, 你将把你的应用发布到 GitHub releases,并在你的应用代码中集成自动更新。
使用 update.electronjs.org¶
Electron 维护者为开源应用提供了一个免费的自动更新服务, 位于 https://update.electronjs.org。其要求是:
- 你的应用运行在 macOS 或 Windows 上
- 你的应用有一个公开的 GitHub 仓库
- 构建产物发布到 GitHub releases
- 构建产物经过代码签名 (仅限 macOS)
在此阶段,我们假设你已经将所有代码 推送到一个公开的 GitHub 仓库。
:::info 其他更新服务
如果你使用的是其他仓库托管服务(例如 GitLab 或 Bitbucket),或者 你需要保持代码仓库私有,请参阅我们的 分步指南,了解如何托管你自己的 Electron 更新服务器。
:::
发布 GitHub release¶
Electron Forge 提供了 Publisher 插件,可以自动化地将 打包好的应用分发到各种来源。在本教程中,我们将 使用 GitHub Publisher,它允许我们将 代码发布到 GitHub releases。
生成个人访问令牌¶
Forge 没有权限就无法发布到 GitHub 上的任何仓库。你
需要传入一个经过身份验证的令牌,使 Forge 能够访问
你的 GitHub releases。最简单的方法是
创建一个新的个人访问令牌(PAT),
并授予 public_repo 范围,该范围可写入你的公开仓库。
请确保将此令牌保密。
配置 GitHub Publisher¶
安装模块¶
Forge 的 GitHub Publisher 是一个插件,
需要安装在你项目的 devDependencies 中:
```sh npm2yarn npm install --save-dev @electron-forge/publisher-github
#### 在 Forge 中配置 publisher {#configuring-the-publisher-in-forge}
安装完成后,你需要在 Forge
配置中设置它。完整选项列表记录在 Forge 的
[`PublisherGitHubConfig`][] API 文档中。
```js title='forge.config.js'
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
}
:::tip 在发布前创建草稿 release
注意,你已经配置 Forge 将你的 release 作为草稿发布。 这将允许你在不实际发布给最终用户的情况下,查看带有生成产物的 release。你可以在编写 release 说明并 仔细检查可分发文件是否正常工作后,通过 GitHub 手动 发布你的 release。
:::
设置身份验证令牌¶
你还需要让 Publisher 知道你的身份验证令牌。
默认情况下,它会使用存储在 GITHUB_TOKEN 环境变量中的值。
运行 publish 命令¶
将 Forge 的 publish command 添加到你的 npm scripts 中。
```json {6} title='package.json' //... "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish" }, //...
默认情况下,这只会为你的宿主操作系统和
架构发布单个可分发文件。你可以通过向 Forge 命令传入 --arch 标志来为不同架构发布。
此 release 的名称将对应于你项目 package.json 文件中的 version 字段。
:::tip 为 release 打标签
可选地,你还可以在 Git 中为你的 release 打标签,以便你的
release 与代码历史中标记的某个点相关联。npm 附带了一个方便的 npm version
命令,可以帮你处理版本递增和打标签。
:::
附加内容:在 GitHub Actions 中发布¶
本地发布可能很麻烦,尤其是因为你只能为你的宿主操作系统创建可分发文件
(即你无法从 macOS 发布 Windows .exe 文件)。
一种解决方案是通过自动化工作流发布你的应用, 例如 GitHub Actions,它可以在云中的 Ubuntu、macOS 和 Windows 上运行任务。这正是 Electron Fiddle 采用的方法。 你可以参考 Fiddle 的 Build and Release pipeline 和 Forge configuration 了解更多详情。
为更新器代码添加埋点¶
现在,我们已经通过 GitHub releases 拥有了一个可用的 release 系统,我们需要告诉我们的 Electron 应用每当有新 release 时下载更新。Electron 应用通过 autoUpdater 模块完成此操作,该模块从更新服务器 feed 读取,以检查是否有新版本 可供下载。
update.electronjs.org 服务提供了一个与更新器兼容的 feed。例如,Electron Fiddle v0.28.0 会检查 https://update.electronjs.org/electron/fiddle/darwin/v0.28.0 端点, 以查看是否有更新的 GitHub release 可用。
在你的 release 发布到 GitHub 后,update.electronjs.org 服务应该 可以适用于你的应用。剩下的唯一步骤是使用 autoUpdater 模块配置 feed。
为了简化这个过程,Electron 团队维护了 [update-electron-app][] 模块,
它在一个函数调用中为 update.electronjs.org 设置 autoUpdater 样板代码
—— 无需配置。此模块将搜索与你的项目 package.json "repository" 字段匹配的 update.electronjs.org
feed。
首先,将该模块作为运行时依赖项安装。
```sh npm2yarn npm install update-electron-app
仅此而已!一旦你的应用完成打包,它就会针对你发布的每个新 GitHub 发布版本自动更新自身。
总结¶
在本教程中,我们配置了 Electron Forge 的 GitHub Publisher,将你的应用可分发文件上传到 GitHub 发布版本。由于可分发文件并不总能跨平台生成,如果你无法访问相应机器,我们建议将构建和发布流程配置在持续集成流水线中。
Electron 应用可以通过将 autoUpdater 模块指向更新服务器源来实现自动更新。
update.electronjs.org 是 Electron 为发布在 GitHub 发布版本上的开源应用提供的免费更新服务器。
配置你的 Electron 应用使用该服务,只需安装并导入 update-electron-app 模块即可。
如果你的应用不符合 update.electronjs.org 的条件,则应改为部署自己的更新服务器,并自行配置 autoUpdater 模块。
:::info 🌟 完成了!
从这里开始,你已正式完成了我们的 Electron 教程。欢迎继续浏览其余文档,祝你开发愉快!
:::
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron