当前位置: 首页 > news >正文

electron-updater实现自动更新

electron-updater 是一个专为 Electron 应用设计的自动更新工具,能够帮助开发者轻松实现跨平台的自动更新功能。它支持 Windows、macOS 和 Linux 系统,通过简单的配置即可集成到 Electron 应用中,自动检查应用的最新版本并在后台完成更新。electron-updater 提供了灵活的更新策略,比如自动下载更新、静默安装,以及在下次启动时应用更新,从而确保用户始终使用最新版本的应用程序。

安装依赖

npm install electron-updater --save

配置 package.json

在 package.json 中添加 build 配置,指定更新服务器的地址:

{"build": {"nsis": {"allowElevation": true,"oneClick": false,"perMachine": true,"allowToChangeInstallationDirectory": true,"installerIcon": "build/icon.ico","uninstallerIcon": "build/icon.ico","createDesktopShortcut": true,"createStartMenuShortcut": true,"differentialPackage": false},"publish": [{"provider": "generic","url": "http://your-update-server-url/","useMultipleRangeRequest": false}]}
}

这里的 url 是更新服务器地址,可以是本地服务器或远程服务器。

主进程代码

在主进程中配置 autoUpdater 模块,监听更新事件并处理更新逻辑:

const { app, BrowserWindow } = require('electron');
const { autoUpdater } = require('electron-updater');let mainWindow;function createWindow() {mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true}});mainWindow.loadURL('http://localhost:9080');
}autoUpdater.allowPrerelease = true;    //允许更新到预发布版本
autoUpdater.allowDowngrade = true;     //允许应用从高版本降级到低版本
autoUpdater.forceDevUpdateConfig = true;    //强制使用开发环境的更新配置
autoUpdater.useMultipleRangeRequest = false;    //是否使用多个范围请求(Range Requests)来下载更新包
autoUpdater.differentialPackage = false;        //是否使用差异更新包
autoUpdater.setFeedURL({provider: 'generic',url: 'http://your-update-server-url/'
});// 配置自动更新
autoUpdater.on('checking-for-update', () => {console.log('Checking for updates...');
});autoUpdater.on('update-available', () => {console.log('Update available');
});autoUpdater.on('update-not-available', () => {console.log('No updates available');
});autoUpdater.on('error', (error) => {console.error('Error in auto-updater', error);
});autoUpdater.on('download-progress', (progressObj) => {console.log(`Download progress: ${progressObj.percent}%`);
});autoUpdater.on('update-downloaded', (info) => {console.log('Update downloaded');autoUpdater.quitAndInstall();
});app.whenReady().then(() => {createWindow();// 检查更新autoUpdater.checkForUpdates();
});

打包应用

使用 electron-builder 打包应用:

npm run build
electron-builder

这会生成一个 .exe 安装包以及相关的元数据文件(如 latest.yml),这些文件用于更新检测。

部署更新

将生成的 .exe 文件和 latest.yml 文件上传到更新服务器中。latest.yml 文件中包含版本信息,用于判断是否有新版本可用。

测试更新

安装生成的 .exe 文件后,启动应用。应用会自动检查更新,如果有新版本,会下载并提示用户重启以完成更新。

注意事项

  • 确保更新服务器的地址和配置正确。

  • 如果需要自定义更新逻辑,可以监听 autoUpdater 的事件并实现相应的处理。

  • 在开发环境中,可以通过模拟更新服务器来测试更新流程。

  • 生产环境:保持默认值(allowPrerelease = false,allowDowngrade = false)以确保稳定性。

  • 测试环境:启用 allowPrerelease = true 和 allowDowngrade = true 以方便测试。

  • 开发环境:启用 forceDevUpdateConfig = true 以调试更新流程。

相关文章:

  • 学习ros过程中常用指令
  • Nacos简介—1.Nacos使用简介
  • 力扣热题100题解(c++)—子串、普通数组(不包含困难)
  • Matlab 复合多层结构的隔声研究
  • 手搓箱图并输出异常值(MATLAB)
  • 海量数据笔试题--Top K 高频词汇统计
  • [MERN 项目实战] MERN Multi-Vendor 电商平台开发笔记(v2.0 从 bug 到结构优化的工程记录)
  • RabbitMQ 中的队列声明
  • 循环神经网络RNN(示例代码LSTM预测股价示例)
  • 2025年3月AGI技术月评|技术突破重构数字世界底层逻辑
  • 旋转磁体产生的场-对导航姿态的影响
  • 算法时代的“摩西十诫”:AI治理平台重构数字戒律
  • HTML字符实体和转义字符串
  • 某城乡老旧房屋试点自动化监测服务项目
  • Uniapp-小程序从入门到精通
  • gitlab-ce容器镜像源(国内)
  • 【霍夫变换】图像处理(OpenCV)-part11
  • 【修复】Django收到请求报Json解析错误
  • R语言中的常用内置函数
  • 汽车自动驾驶介绍
  • 著名茶叶专家谢丰镐逝世,享年95岁
  • 山西省援疆前方指挥部总指挥刘鹓已任忻州市委副书记
  • 上海五五购物节首次推出商圈精品推广节,9个商圈近百个商场参与促销
  • “80后”阿伯丁大学法学硕士朱江已任四川泸州市副市长
  • 复旦大学校友夫妇一次性捐赠10亿元,成立学敏高等研究院
  • “听公交时听一听”,上海宝山街头遍布“有声图书馆”