更新应用程序

    GitHub 的 Electron 团队维护 update.electronjs.org,一个免费开源的网络服务,可以让 Electron 应用使用自动更新。 这个服务是设计给那些满足以下标准的 Electron 应用:

    • 应用运行在 macOS 或者 Windows
    • 应用有公开的 GitHub 仓库
    • 编译的版本发布在 GitHub Releases
    • 编译的版本已代码签名

    使用这个服务最简单的方法是安装 ,一个预配置好的 Node.js 模块来使用 update.electronjs.org。

    安装模块

    从你的应用的 main process 文件调用这个更新:

      如果你需要定制化你的配置,你可以 将配置设置传递给 update-electron-app 或者 。

      如果你的app是通过electron-builder打包那么你可以使用模块, 它不依赖任何服务器并且可以从S3, GitHub或者任何其它静态文件存储更新. 这避开了 Electron 内置的更新机制,这意味着本文档的其余部分不适用于此 electron-builder的更新程序。

      如果你开发的是一个私有的 Electron 应用程序,或者你没有在 GitHub Releases 中公开发布,你可能需要运行自己的更新服务器。

      根据你的需要,你可以从下方选择:

      • Hazel – 用于私人或开源应用的更新服务器,可以在 上免费部署。 它从GitHub Releases中拉取更新文件,并且利用 GitHub CDN 的强大性能。
      • -同样使用GitHub Releases, 但得在磁盘上缓存应用程序更新并支持私有存储库.
      • – 提供一个用于处理发布的仪表板,并且不需要在GitHub上发布发布。
      • Nucleus – 一个由Atlassian维护的 Electron 应用程序的完整更新服务器。 支持多种应用程序和渠道; 使用静态文件存储来降低服务器成本.

      重要: 请确保下面的代码只在打包的应用程序, 而不是开发中. 你可以使用检查当前环境.

      下一步, 构建更新服务器的URL并且通知autoUpdater:

      1. const feed = `${server}/update/${process.platform}/${app.getVersion()}`
      2. autoUpdater.setFeedURL(feed)

      最后一步, 检查更新. 下面的例子将每分钟检查一次:

      应用程序被后, 它将接收你每次发布在GitHub Release上的的更新。

      1. autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => {
      2. type: 'info',
      3. buttons: ['Restart', 'Later'],
      4. message: process.platform === 'win32' ? releaseNotes : releaseName,
      5. detail: 'A new version has been downloaded. Restart the application to apply the updates.'
      6. }
      7. dialog.showMessageBox(dialogOpts, (response) => {
      8. if (response === 0) autoUpdater.quitAndInstall()

      同时要确保错误被. 这是一个例子它将记录到stderr: