
electron-updater 是 Electron 社区广泛采用的自动更新解决方案,通常与 electron-builder 配合使用。该库封装了跨平台的更新逻辑(支持 macOS、Windows、Linux),并通过事件回调机制让主进程能够在不同更新阶段向用户提供反馈或自动执行安装操作。
核心特性:
autoUpdater),包括检查更新、下载更新、提示安装等功能electron-builder 的 publish 配置无缝集成,自动生成更新元数据(如 latest.yml、RELEASES 等文件)适用场景:需要自动分发新版本并降低用户升级成本的桌面应用程序。
checkForUpdates() 或 checkForUpdatesAndNotify()electron-updater 向发布服务器请求元数据文件(如 latest.yml),与本地版本进行比对update-downloaded 事件,可在适当时机调用 autoUpdater.quitAndInstall() 完成安装(支持立即重启或下次启动时安装)推荐组合:使用 electron-builder 构建安装包并生成更新元数据,electron-updater 负责运行时的更新检查和下载安装。
确保项目已安装必要的依赖:
# 在项目根目录执行
npm install --save-dev electron-builder
npm install --save electron-updater在 package.json 中配置更新服务器的地址:
{
"build": {
"publish": [{
"provider": "generic",
"url": "http://your-update-server.com/updates" // 替换为实际的更新服务器地址
}]
}
}在 electron-updater 中,publish 配置是连接应用与更新服务器的桥梁,其核心意义体现在:
在 Electron 的主进程文件(如 main.js)中实现更新检测与处理逻辑:
const { autoUpdater } = require('electron-updater');
// 在窗口创建后调用更新检测
function createWindow() {
mainWindow = new BrowserWindow({ /* 窗口配置 */ });
setupAutoUpdater(); // 初始化自动更新
}
function setupAutoUpdater() {
// 自动检查更新并通知用户
autoUpdater.checkForUpdatesAndNotify();
// 监听更新可用事件
autoUpdater.on('update-available', () => {
mainWindow.webContents.send('update-status', '检测到新版本,正在下载...');
});
// 监听更新下载完成事件
autoUpdater.on('update-downloaded', () => {
mainWindow.webContents.send('update-status', '更新下载完成,准备安装');
// 退出应用并安装更新
autoUpdater.quitAndInstall();
});
}这段代码在应用窗口创建后自动启动更新检查,并通过事件机制向渲染进程发送更新状态信息。
如需在渲染进程中触发更新或显示更新状态,需要设置 IPC 通信:
主进程添加事件监听:
// main.js
const { ipcMain } = require('electron');
// 监听渲染进程的更新请求
ipcMain.on('trigger-update', (event) => {
setupAutoUpdater(); // 调用更新函数
});渲染进程发送事件:
// 在 Vue 组件或普通 HTML 页面中
const { ipcRenderer } = require('electron');
// 为更新按钮添加点击事件
document.getElementById('update-button').addEventListener('click', () => {
ipcRenderer.send('trigger-update');
});使用 electron-builder 打包应用并发布到更新服务器:
# 构建应用并自动发布
electron-builder build --publish always构建完成后,将生成的文件(包括 latest.yml 等元数据文件和可执行文件)上传到配置的更新服务器。
当执行命令:electron-builder build -p always
1、自动生成版本元数据文件:
2、文件内容示例(latest.yml)
version: 2.1.0
files:
- url: YourApp-Setup-2.1.0.exe
size: 58451392
sha512: xZYfE... # 文件哈希值
path: YourApp-Setup-2.1.0.exe
sha512: xZYfE...
releaseDate: '2024-06-15T12:00:00.000Z'3、需要手动/CICD,上传到文件服务器:
服务器文件结构
├── latest.yml # 核心元数据
├── latest-mac.yml
├── YourApp-Setup-2.1.0.exe # 安装包
└── YourApp-2.1.0.dmg测试自动更新功能时,可按照以下步骤:
调试技巧:在开发阶段,可通过 autoUpdater.logger = console 启用详细日志输出,便于排查问题。
通过以上步骤,您可以为 Electron 应用实现完整的自动更新功能,为用户提供无缝的升级体验。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。