主题
Electron 项目使用官方组件 electron-updater 接入参考
一、官方组件electron-updater介绍
Electron官方提供的electron-updater
组件支持通过更新服务器或静态文件实现应用程序的自动更新,核心功能包括:
- 兼容Electron更新协议的版本检查
- 跨平台的安装包下载与安装流程
- 灵活的更新策略配置
核心资源
整体逻辑:通过调用UpgradeLink提供的API获取升级策略,由electron-updater
组件执行具体的更新流程,实现与官方更新体系的无缝对接。
二、接入核心步骤
1. 安装官方更新组件
2. 阅读官方动态更新服务器文档,了解接入流程。 文档地址
UpgradeLink 提供了 获取更新 api,完全兼容了官方要求的请求参数与返回结构。可以进行无缝的替换。
3. 添加 dev-update.yml 文件,用来配置出 更新包下载地址
provider: generic
updaterCacheDirName: electron-demo-updater # 下载目录
4. 代码替换, 调整检查更新 方法。
基于官方提供的 检查更新 代码,我们只需要在官方提供的 checkForUpdates 方法中,替换为 UpgradeLink 提供的接口地址即可。
// 打印相关参数
console.log(app.getVersion());
console.log(process.platform);
console.log(process.arch);
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// 打印返回结果
console.log("result: ",result);
4.代码替换, 调整 下载并更新 方法, 调整下载地址为检查更新接口返回的地址。
const FeedURL = `https://api.upgrade.toolsetlink.com/v1/electron/upgrade?electronKey=kPUtUMDIjBhS48q5771pow&versionName=${app.getVersion()}&appointVersionName=&devModelKey=&devKey=&platform=${process.platform}&arch=${process.arch}`;
autoUpdater.setFeedURL({
url: FeedURL,
provider: 'generic',
});
autoUpdater.requestHeaders = {
'X-AccessKey': 'mui2W50H1j-OC4xD6PgQag',
};
const result = await autoUpdater.checkForUpdates();
// 打印检查更新接口返回结果
console.log(result);
autoUpdater.setFeedURL({
url: result.updateInfo.path,
provider: 'generic',
});
console.log('[流程] 下载更新开始,URL:', result.updateInfo.path);
try {
await autoUpdater.downloadUpdate();
console.log('[流程] 下载更新完成');
} catch (e) {
console.error('[流程] 下载更新失败:', e);
console.error('[DEBUG] 错误堆栈:', e.stack);
throw e;
}
更新协议的请求参数(如platform
、arch
)和响应结构,UpgradeLink完全兼容官方规范,可直接替换使用。
以上是接入指南。如果需要调整内容详略或补充特定场景说明,欢迎告知具体需求。