跳至主要内容

发布和更新

学习目标

如果您一直都在按照教程操作,那么这是教程的最后一步!在本部分中,您将把您的应用程序发布到 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 版本。最简单的方法是 创建一个新的个人访问令牌 (PAT),其范围为 public_repo,这将赋予您对公共仓库的写入权限。请确保将此令牌保密。

设置 GitHub 发布程序

安装模块

Forge 的 GitHub 发布程序 是一个插件,需要在您的项目 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 手动发布您的版本。

设置您的身份验证令牌

您还需要让发布程序了解您的身份验证令牌。默认情况下,它将使用存储在 GITHUB_TOKEN 环境变量中的值。

运行发布命令

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

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

此命令将运行您配置的制作程序并将输出的可分发文件发布到新的 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 的 构建和发布管道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 发布者,以便将您的应用程序的可分发文件上传到 GitHub 版本。由于可分发文件不能总是在平台之间生成,因此如果您没有访问机器的权限,建议您在持续集成管道中设置构建和发布流程。

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

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

🌟 完成了!

从这里开始,您就正式完成了我们关于 Electron 的教程。您可以随意探索我们文档的其余部分,并祝您开发愉快!如果您有任何问题,请到我们的社区Discord 服务器