03 electron更新
一、用户如何获取到实际软件,这应出于实际项目出发,考虑如何分发软件安装包给用户,
如,用户从官网下载,或者各类途径分享可下载此软件安装包的链接,可以参考常见的应用如:QQ、微信、百度网盘等。
二、项目更新,可有多种实现手段,如请求某个接口,对比用户本地版本和服务器端最新版本,
如有不同,那么提示用户升级,同样应处于实际项目出发,如拥有云服务器,可将新版本放置服务器指定路径,
根据指定规则进行升级。或使用现成的electron官方的 update-electron-app 工具
如没有自己的服务器,可以考虑 update-electron-app + github 仓库的解决方案,
但是需要注意的是,如果使用 update-electron-app + github的方案,
要考虑到部分地区、部分运营商、部分场景下的用户会有无法访问 github的情况。
由于 update-electron-app 实现 应用程序的更新需要较多流程和技术手段,同学可参考electron官方提供的文档https://www.electronjs.org/zh/docs/latest/tutorial/更新
Electron
要实现 Electron 应用的打包和发布更新,可以按照以下步骤进行:
1. 打包应用
使用 Electron 打包工具(如 electron-builder 或 electron-forge)将应用打包为可安装的格式。确保在打包配置中正确设置应用的版本号和其他必要信息。
2. 选择更新服务器
根据你的需求选择更新服务器:
- 使用公开的 GitHub 仓库:如果你的应用是开源的,可以使用
update.electronjs.org提供的免费更新服务。 - 私有更新服务器:如果你的应用是私有的,或者需要更复杂的更新管理,可以部署自己的更新服务器,例如使用
Hazel、electron-release-server或其他自定义解决方案。
3. 发布更新
使用 GitHub Releases
- 配置 GitHub Publisher:
- 安装
@electron-forge/publisher-github插件。 - 在
forge.config.js中配置发布目标。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'github-user-name',
name: 'github-repo-name'
},
prerelease: false,
draft: true
}
}
]
} - 安装
- 生成 GitHub 访问令牌:创建一个个人访问令牌(PAT),并将其存储在环境变量
GITHUB_TOKEN中。 - 运行发布命令:
JSON复制运行1
2
3"scripts": {
"publish": "electron-forge publish"
}npm run publish将打包后的应用发布到 GitHub Releases。
使用自定义更新服务器
- 上传更新文件:将打包后的安装包和更新元数据(如
latest.yml或RELEASES文件)上传到你的服务器。 - 配置更新路径:在应用的主进程中设置
autoUpdater的更新源。1
2
3
4const { app, autoUpdater } = require('electron');
const server = 'https://your-update-server.com';
const url = `${server}/update/${process.platform}/${app.getVersion()}`;
autoUpdater.setFeedURL({ url });
4. 配置自动更新
在应用的主进程中使用 autoUpdater 模块来检查和应用更新。
1 | autoUpdater.on('checking-for-update', () => console.log('Checking for update...')); |
5. 测试更新流程
在非开发环境下运行应用,模拟更新过程以确保一切正常。这包括检查更新、下载更新和安装更新等步骤。
注意事项
- 安全性:确保使用 HTTPS 进行通信,并对更新包进行签名验证。
- 用户体验:尽量使更新过程对用户透明且无缝。
- 签名:在 macOS 上,应用必须签名后才能使用自动更新功能。
通过以上步骤,你可以实现 Electron 应用的打包、发布和自动更新功能。