发布和更新

    这是 Electron 教程的 第六部分

    1. 基本要求
    2. 使用预加载脚本
    3. 发布和更新

    请注意,这是本教程的最后一步! 在这一部分,你将发布应用到 GitHub 版本中心,并将自动更新功能整合到应用代码中。

    Electron 官方在 上为开源应用程序提供了免费的自动更新服务。 使用它有以下几点要求:

    • 你的应用在 macOS 或 Windows 上运行
    • 你的应用有一个公开的 GitHub 仓库
    • 应用程序需要发布到 GitHub releases
    • 应用程序需要完成

    至此,我们假设你已将所有代码推送到公开的 GitHub 仓库。

    替代更新服务

    如果您使用了其他存储库主机 (例如 GitLab 或 Bitbucket),或者如果您你的代码仓库不能公开,请参阅 更新应用程序 教程以托管您自己的 Electron 更新服务器。

    Electron Forge 的 Publisher 插件可以自动将打包的应用程序分发到各种来源。 在本教程中,我们将演示使用 GitHub Publisher 将代码发布到 GitHub releases 中。

    未经许可,Forge无法向GitHub 上的任何仓库发布。 你需要通过一个认证令牌,授权 Forge 使用 GitHub 的发布功能。 最简单的方法是 创建一个新的个人访问令牌 (PAT) 范围为 , 它将给你的公共资源库提供写访问权限。 请确保此令牌不外泄。

    安装模块

    Forge 的 是一个插件, 它需要被安装到你的项目的 devDependencies 里面去:

    • npm
    • Yarn
    1. yarn add --dev @electron-forge/publisher-github

    在 Forge 中配置发布者

    一旦安装完毕,你需要在 Forge 配置中设置它。 完整的选项列表在 Forge 的 API 文档中。

    forge.config.js

    1. module.exports = {
    2. publishers: [
    3. {
    4. name: '@electron-forge/publisher-github',
    5. config: {
    6. repository: {
    7. name: 'github-repo-name',
    8. },
    9. prerelease: false,
    10. draft: true,
    11. },
    12. },
    13. ],
    14. }

    请注意,你已配置 Forge 来发布你的项目作为草稿版本。 这将使您能够看到其生成的结果而无需实际发布给你的最终用户。 当你写下版本说明和并多次检查分发的工作内容后, 就可以手动在 Github 上发布你的应用.

    设置身份验证 token

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

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

    package.json

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

    • npm
    • Yarn
    1. npm run publish
    1. yarn run publish

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

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

    发布和更新 - 图4发布时打上标签

    可选的, 你也可以 , 这样你的版本将关联到一个代码历史中的标签点. npm附带了一个方便的 npm version 命令,可以为你处理版本碰撞或打标签.

    小技巧:在 GitHub Actions 中发布

    本地发布的版本可能很单一,因为只能为你的主机操作系统创建一种版本 (比如, 你不能从 macOS 系统上发布 Window 系统的 .exe 文件)。

    一种解决方案是通过自动化工作流来发布你的应用比如 GitHub Actions, 通过它可以在各种云系统内包括 Ubuntu, macOS 和 Windows 上运行任务. 这是 采用的精确方法. 你可以参考 Fiddle 的 构建和发布一条龙 以及 了解更多详情。

    网址是 update.electronjs.org 的服务器提供了一个兼容更新源. 比如, Electron Fiddle v0.28.0 将会检查接口 来查看是否有新的 GitHub 版本可用.

    一旦你的发布版本被推送到 GitHub, 对应的更新服务 update.electronjs.org 将会自动对接你的应用. 剩下的唯一步骤是使用 autoUpdater 模块配置源。

    为了让整个过程更加简单, Electron 团队维护 update-electron-app 模块, 它在一次函数调用中为 update.electronjs.org 设置了 autoUpdater 样板,无需配置。 这个模块将搜索 update.electronjs.org 源中与项目内 package.json 的"repository" 字段匹配的部分。

    首先,安装模块作为运行时的依赖项

    • npm
    • Yarn
    1. yarn add update-electron-app

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

    main.js

      这是需要做的事情! 一旦你的应用程序被打包,它将在你发布每个新的 GitHub 版本时更新自己。

      在这个教程中,我们配置 Electron Forge 的 GitHub Publisher 来上传你的应用的 发行版到 GitHub releases。 由于可分发文件不能总是在不同的平台之间生成 构建和发布流程,如果你不能访问机器,我们建议将你的构建和发布流程设置在持续集成管道中。

      Electron 应用程序可以通过将 autoUpdater 模块指向一个更新服务器来进行自我更新。 update.electronjs.org 是一个 Electron 为开源应用程序 免费提供的更新服务器,发布在 GitHub Releases 上。 配置你的Electron应用来使用这个服务是很容易的,就像 安装并导入 模块一样。

      如果你的应用程序不适合使用 update.electronijs.org,你应该自己部署 一个更新服务器,并配置自己的自动 autoUpdater 模块。

      🌟 你完成了