更新应用程序
GitHub 的 Electron 团队维护 update.electronjs.org,一个免费开源的网络服务,可以让 Electron 应用使用自动更新。 这个服务是设计给那些满足以下标准的 Electron 应用:
- 应用运行在 macOS 或者 Windows
- 应用有公开的 GitHub 仓库
- 编译的版本发布在 GitHub Releases
- 编译的版本已代码签名
使用这个服务最简单的方法是安装 ,一个预配置好的 Node.js 模块来使用 update.electronjs.org。
安装模块
从你的应用的 main process 文件调用这个更新:
require('update-electron-app')()
如果你需要定制化你的配置,你可以 将配置设置传递给 update-electron-app
或者 。
如果你开发的是一个私有的 Electron 应用程序,或者你没有在 GitHub Releases 中公开发布,你可能需要运行自己的更新服务器。
根据你的需要,你可以从下方选择:
- Nuts-同样使用, 但得在磁盘上缓存应用程序更新并支持私有存储库.
- electron-release-server – 提供一个用于处理发布的仪表板,并且不需要在GitHub上发布发布。
- – 一个由Atlassian维护的 Electron 应用程序的完整更新服务器。 支持多种应用程序和渠道; 使用静态文件存储来降低服务器成本.
一旦你部署了更新服务器, 继续导入你所需要的代码模块. 下列代码可能因不同的服务器软件而变化, but it works like described when using Hazel.
下一步, 构建更新服务器的URL并且通知:
const server = 'https://your-deployment-url.com'
const feed = `${server}/update/${process.platform}/${app.getVersion()}`
最后一步, 检查更新. 下面的例子将每分钟检查一次:
应用程序被packaged后, 它将接收你每次发布在上的的更新。
现在您已经为应用程序配置了基本的更新机制, 您需要确保在更新时通知用户. 这可以使用autoUpdater API events来实现:
autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => {
const dialogOpts = {
buttons: ['Restart', 'Later'],
title: 'Application Update',
message: process.platform === 'win32' ? releaseNotes : releaseName,
}
dialog.showMessageBox(dialogOpts).then((returnValue) => {
if (returnValue.response === 0) autoUpdater.quitAndInstall()
})