Electron项目使用electron-updater与UpgradeLink接入参考

Electron项目使用electron-updater与UpgradeLink接入参考

一、官方组件electron-updater介绍

Electron官方提供的electron-updater组件支持通过更新服务器或静态文件实现应用程序的自动更新,核心功能包括:

  • 兼容Electron更新协议的版本检查
  • 跨平台的安装包下载与安装流程
  • 灵活的更新策略配置

核心资源

整体逻辑 :通过调用UpgradeLink提供的API获取升级策略,由electron-updater组件执行具体的更新流程,实现与官方更新体系的无缝对接。

接入流程图

二、接入核心步骤

可用来参考的 electron-demo项目地址

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完全兼容官方规范,可直接替换使用。

以上是接入指南。如果需要调整内容详略或补充特定场景说明,欢迎告知具体需求。

相关推荐
风骏时光牛马7 分钟前
大模型综合能力评测:多维度性能与对齐效果对比
前端
winfredzhang12 分钟前
从零手写一个毛玻璃风格的页面搭建台:单文件 HTML 实现组件放置、面板磁吸与图层管理
前端·html
OxYGC13 分钟前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
小徐不徐说16 分钟前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso30 分钟前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
李纲明32 分钟前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
葡萄城技术团队9 小时前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
第九序言T9 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
excel10 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
龙亘川10 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化