跳到主要内容

发布和更新

按照本教程进行操作

学习目标

如果你一直在关注本教程,这是最后一步! 在这一部分中,你将把你的应用程序发布到 GitHub 发布版本,并将自动更新集成到你的应用程序代码中。

使用 update.electronjs.org

Electron 维护人员在 https://update.electronjs.org 提供一个免费的自动更新服务,供开源应用使用。 它的要求是

  • 你的应用程序在 macOS 或 Windows 上运行
  • 你的应用程序有一个公共 GitHub 仓库
  • 构建版本发布到 GitHub 发布版本
  • 构建版本已进行代码签名(仅限 macOS)

在这一点上,我们将假设你已经将所有代码推送到公共 GitHub 仓库。

替代更新服务

如果你使用其他存储库主机(例如,GitLab 或 Bitbucket),或者需要保持代码存储库的私有性,请参阅我们关于托管你自己的 Electron 更新服务器的逐步指南

发布 GitHub 版本

Electron Forge 具有 Publisher 插件,可以自动将你打包的应用程序分发到各种来源。 在本教程中,我们将使用 GitHub Publisher,它允许我们将代码发布到 GitHub 发布版本。

生成个人访问令牌

如果没有权限,Forge 无法发布到 GitHub 上的任何存储库。 你需要传入一个经过身份验证的令牌,该令牌授予 Forge 访问你的 GitHub 发布版本的权限。 最简单的方法是创建一个新的个人访问令牌 (PAT),其作用域为 public_repo,这会授予你公共存储库的写入权限。 务必对此令牌保密。

设置 GitHub Publisher

安装模块

Forge 的 GitHub Publisher 是一个插件,需要在你项目的 devDependencies 中安装

npm install --save-dev @electron-forge/publisher-github

在 Forge 中配置发布者

安装完成后,你需要在 Forge 配置中对其进行设置。 Forge 的 PublisherGitHubConfig API 文档中记录了完整的选项列表。

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
}
}
]
}
在发布之前起草版本

请注意,你已将 Forge 配置为将你的版本作为草稿发布。 这将允许你查看包含其生成工件的版本,而无需实际将其发布给最终用户。 在编写发行说明并仔细检查你的可分发文件是否有效后,你可以通过 GitHub 手动发布你的版本。

设置你的身份验证令牌

你还需要让 Publisher 知道你的身份验证令牌。 默认情况下,它将使用存储在 GITHUB_TOKEN 环境变量中的值。

运行发布命令

将 Forge 的 发布命令 添加到你的 npm 脚本中。

package.json
  //...
"scripts": {
"start": "electron-forge start",
"package": "electron-forge package",
"make": "electron-forge make",
"publish": "electron-forge publish"
},
//...

此命令将运行你配置的 makers,并将输出的可分发文件发布到新的 GitHub 版本。

npm run publish

默认情况下,这只会为你的主机操作系统和架构发布单个可分发文件。 你可以通过将 --arch 标志传递给你的 Forge 命令来为不同的架构发布。

此版本的名称将与项目 package.json 文件中的 version 字段相对应。

标记版本

你可以选择在 Git 中标记你的版本,以便你的版本与代码历史记录中的标记点相关联。 npm 带有一个方便的 npm version 命令,它可以为你处理版本更新和标记。

奖励:在 GitHub Actions 中发布

在本地发布可能会很痛苦,特别是由于你只能为你的主机操作系统创建可分发文件(即,你无法从 macOS 发布 Windows .exe 文件)。

一种解决方案是通过自动化工作流程(例如 GitHub Actions)发布你的应用程序,该工作流程可以在 Ubuntu、macOS 和 Windows 上的云中运行任务。 这正是 Electron Fiddle 采用的方法。 你可以参考 Fiddle 的 Build and Release 管道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 install update-electron-app

然后,导入模块并在主进程中立即调用它。

main.js
require('update-electron-app')()

这就是所有需要做的事情! 打包你的应用程序后,它将为你发布的每个新 GitHub 版本自行更新。

总结

在本教程中,我们配置了 Electron Forge 的 GitHub Publisher,以将你的应用程序的可分发文件上传到 GitHub 发布版本。 由于无法始终在平台之间生成可分发文件,因此如果你无权访问计算机,我们建议在持续集成管道中设置你的构建和发布流程。

Electron 应用程序可以通过将 autoUpdater 模块指向更新服务器订阅源来自行更新。 update.electronjs.org 是 Electron 提供的一个免费更新服务器,适用于在 GitHub 版本上发布的开源应用程序。 将你的 Electron 应用程序配置为使用此服务就像安装和导入 update-electron-app 模块一样简单。

如果你的应用程序不符合 update.electronjs.org 的条件,你应该改为部署你自己的更新服务器并自行配置 autoUpdater 模块。

🌟 你完成了!

从这里开始,你已正式完成我们的 Electron 教程。 随意浏览我们的其余文档,并祝你开发愉快! 如果你有任何问题,请访问我们的社区 Discord 服务器