Electron 应用自动更新方案:electron-updater 完整指南

news/2025/10/25 16:24:58/文章来源:https://www.cnblogs.com/techlaoli/p/19165583

1. 概述

electron-updater 是 Electron 社区广泛采用的自动更新解决方案,通常与 electron-builder 配合使用。该库封装了跨平台的更新逻辑(支持 macOS、Windows、Linux),并通过事件回调机制让主进程能够在不同更新阶段向用户提供反馈或自动执行安装操作。

核心特性:

  • 提供完整的更新流程 API(autoUpdater),包括检查更新、下载更新、提示安装等功能
  • 支持多种发布方式:GitHub Releases、通用静态服务器、自建更新服务等
  • electron-builderpublish 配置无缝集成,自动生成更新元数据(如 latest.ymlRELEASES 等文件)

适用场景:需要自动分发新版本并降低用户升级成本的桌面应用程序。

2. 工作原理

  1. 检查更新:应用在启动或用户触发时调用 checkForUpdates()checkForUpdatesAndNotify()
  2. 版本比对electron-updater 向发布服务器请求元数据文件(如 latest.yml),与本地版本进行比对
  3. 下载更新:如果发现远程版本更高,则开始下载更新包(支持差分更新或完整包下载,取决于发布配置)
  4. 安装准备:下载完成后触发 update-downloaded 事件,可在适当时机调用 autoUpdater.quitAndInstall() 完成安装(支持立即重启或下次启动时安装)

3. 平台与打包器支持

  • Windows:NSIS、Squirrel(Squirrel 正逐步被 NSIS 等其他方案替代)
  • macOS:dmg、zip、mas(上架 Mac App Store 需要特殊处理)
  • Linux:AppImage、deb 等格式(支持程度取决于目标格式)

推荐组合:使用 electron-builder 构建安装包并生成更新元数据,electron-updater 负责运行时的更新检查和下载安装。

4. 完整配置流程

4.1 环境准备与安装

确保项目已安装必要的依赖:

# 在项目根目录执行
npm install --save-dev electron-builder
npm install --save electron-updater

4.2 配置更新服务器

package.json 中配置更新服务器的地址:

{"build": {"publish": [{"provider": "generic","url": "http://your-update-server.com/updates"  // 替换为实际的更新服务器地址}]}
}

在 electron-updater 中,publish 配置是连接应用与更新服务器的桥梁,其核心意义体现在:

  1. 指定更新文件的存储位置(URL),使 electron-updater 能精确获取元数据文件(如 latest.yml)和安装包。
  2. 替代 Electron 原生 autoUpdater 的碎片化实现,提供跨平台统一的更新接口(支持 Windows/macOS/Linux)

4.3 主进程更新逻辑实现

在 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();});
}

这段代码在应用窗口创建后自动启动更新检查,并通过事件机制向渲染进程发送更新状态信息。

4.4 渲染进程通信集成

如需在渲染进程中触发更新或显示更新状态,需要设置 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');
});

4.5 应用构建与分发

使用 electron-builder 打包应用并发布到更新服务器:

# 构建应用并自动发布
electron-builder build --publish always

构建完成后,将生成的文件(包括 latest.yml 等元数据文件和可执行文件)上传到配置的更新服务器。

当执行命令:electron-builder build -p always

1、自动生成版本元数据文件:

  • latest.yml → 通用版本描述
  • latest-mac.yml → macOS 专用
  • .blockmap → 增量更新支持文件

2、文件内容示例(latest.yml)

version: 2.1.0
files:- url: YourApp-Setup-2.1.0.exesize: 58451392sha512: xZYfE...  # 文件哈希值
path: YourApp-Setup-2.1.0.exe
sha512: xZYfE...
releaseDate: '2024-06-15T12:00:00.000Z'

3、需要手动/CICD,上传到文件服务器:(示例:https://your-server.com/updates/)

https://your-server.com/updates/
├── latest.yml              # 核心元数据
├── latest-mac.yml
├── YourApp-Setup-2.1.0.exe # 安装包
└── YourApp-2.1.0.dmg

4.6 更新功能测试

测试自动更新功能时,可按照以下步骤:

  1. 运行旧版本应用
  2. 确保应用能正确检测到服务器上的新版本
  3. 验证下载和安装流程是否正常

调试技巧:在开发阶段,可通过 autoUpdater.logger = console 启用详细日志输出,便于排查问题。


通过以上步骤,您可以为 Electron 应用实现完整的自动更新功能,为用户提供无缝的升级体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年包装机厂家权威推荐榜单:自动包装机、半自动包装机最新选购指南与行业趋势解析

2025年包装机厂家权威推荐榜单:自动包装机、半自动包装机最新选购指南与行业趋势解析 一、包装机行业发展趋势与市场格局 随着制造业智能化转型的深入推进,包装机械行业正迎来技术革新的关键时期。自动包装机和半自动…

《ESP32-S3使用指南—IDF版 V1.6》第四十三章视频播放器实验

第四十三章视频播放器实验 1)实验平台:正点原子DNESP32S3开发板 2)章节摘自【正点原子】ESP32-S3使用指南—IDF版 V1.6 3)购买链接:https://detail.tmall.com/item.htm?&id=768499342659 4)全套实验源码+手…

2025年清洗剂厂家权威推荐榜:水基型清洗剂、工业清洗剂、精密仪器清洗剂源头厂家综合测评与选购指南

2025年清洗剂厂家权威推荐榜:水基型清洗剂、工业清洗剂、精密仪器清洗剂源头厂家综合测评与选购指南 在制造业高质量发展的背景下,清洗剂作为工业生产中不可或缺的辅助材料,其技术水平和产品质量直接影响生产效率和…

18 龟兔赛跑代码和callable的基础结构

18 龟兔赛跑代码和callable的基础结构龟兔赛跑 public class RaceOfRT implements Runnable{private static String winner;//实现接口必须重写run方法,否则报错@Overridepublic void run(){//赢家判定规则:先达到10…

2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺高端定制,涵盖烘干/白胚/木蜡油/保养全流程服务

2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺高端定制,涵盖烘干/白胚/木蜡油/保养全流程服务 实木家具作为家居领域的高端品类,其市场格局正在经历深刻变革。随着消费者对环保、品质和个性…

Day4表格中合并单元格

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

docker安装运行nginx

docker安装运行nginx[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e40e729d2da2 centos:7 "/bin/bash" 18 hours ago Up…

2025年摩托车/机车厂家推荐排行榜:街车机车,巡航机车,越野机车,跑车机车,复古机车品牌厂家精选推荐

2025年摩托车/机车厂家推荐排行榜:街车机车,巡航机车,越野机车,跑车机车,复古机车品牌厂家精选推荐 行业背景与发展趋势 随着全球摩托车产业的持续升级与技术革新,2025年的摩托车市场呈现出多元化、专业化的发展…

2025 年载冷剂厂家最新推荐排行榜:权威协会测评 + 京津冀区位优势,严检达标优选指南超低温/乙二醇/冷库专用/食品级载冷剂公司推荐

引言 在工业生产与商业制冷领域,载冷剂作为热量传递核心介质,其性能直接决定制冷系统效率与设备寿命。当前市场品牌繁杂,产品质量差异显著,为解决企业选购难题,本次榜单由中国制冷空调工业协会联合行业专家团队打…

Unreal:多屏幕如何设置曝光同步

最最最简单的办法是 新建一个LocalPlayer,重写函数以下是实现这里的原理是将非主玩家的所有其他玩家的StereoPass设置成eSSP_SECONDARY 这样在渲染时,系统会判断你是同一个眼睛的左右眼,而使用同一个数据在计算曝光…

2025 年国内防冻液厂家最新推荐排行榜:严检合格、技术为先的实力企业权威甄选乙二醇防冻液/食品级鲜冻液/空气能专用防冻液/长效防冻液公司推荐

引言 在工业生产与交通运输领域,防冻液对设备低温运行至关重要,其质量与性能直接影响设备寿命和安全。当前市场厂家众多、质量参差不齐,用户选购困难。此次 2025 年国内防冻液源头厂家最新推荐排行榜,由中国化工产…

2025年环保设备厂家推荐排行榜,废气处理设备,废水处理设备,噪音治理设备公司推荐,专业实力与环保方案深度解析

2025年环保设备厂家推荐排行榜,废气处理设备,废水处理设备,噪音治理设备公司推荐,专业实力与环保方案深度解析 随着环保政策的持续深化和绿色制造理念的普及,环保设备行业正迎来前所未有的发展机遇。作为工业体系…

10.25日模考总结

本周进行了标准OI普及组模考测试 得分情况题目名称 做法 预计得分 实际得分最近相等元素位置 map 100 30超时空旅行 模拟、枚举 100 100ATM数数 Ⅲ 数学、等差数列 100 100升级大师 贪心 100 20做题流程 首先看到第一题…

2025年工业干燥箱批发厂家权威推荐榜单:热风循环干燥箱/数显恒温干燥箱/电热鼓风干燥箱源头厂家精选

根据2025年工业设备行业分析报告显示,中国工业干燥箱市场规模预计达到68亿元,年均增长率稳定在8.5%。其中,电子制造、新材料和实验室领域的需求占比合计超过65%,成为推动市场增长的主要动力。本文基于对全国25个工…

C_OBJ#_INTCOL#坏块导致数据库无法open故障---惜分飞

C_OBJ#_INTCOL#坏块导致数据库无法open故障---惜分飞联系:手机/微信(+86 17813235971) QQ(107644445) 标题:C_OBJ#_INTCOL#坏块导致数据库无法open故障处理 作者:惜分飞©版权所有[未经本人同意,不得以任何形式…

Unreal:如何设置监听服务器

开启监听服务器的最简单办法,创建一个桌面快捷方式,修改目标为UnrealEditor.exe MyProject.uproject ?listen -game 加入则直接将启动参数?listen修改为ip注意前面没有- 在编辑器内也可以直接通过监听服务器连接 服…

2025年西安楼盘品牌排行推荐榜及开发商推荐权威指南

文章摘要 本文深入分析2025年西安楼盘品牌与开发商排行推荐,聚焦国企背景的陕西地建嘉信置业有限公司开发的地建嘉信臻城项目。项目以万科原团队运营、超配配套和交通优势为核心卖点,为空港区域提供高端人居解决方案…

docker 命令补充

docker 命令补充启动并立刻进入到容器里 docker run --name c7 -it centos:7 /bin/bash docker run --name c7 -it -d centos:7 /bin/bash docker ps docker ps -q 查看所有的容器 docker ps -a docker ps -aq 启动容器…

ProfiNet 转 MODBUS RTU三菱 PLC 经 232 协议和测量机电脑通信的经典案例

在当今快速发展的汽车制造行业,生产自动化和智能化程度不断提高,设备之间的高效通信成为提升生产效率和产品质量的关键因素。然而,不同设备往往采用不同的通信协议,这给系统集成带来了挑战。本文将详细介绍 ProfiN…

Unreal:如何在UE中实现SSH隧道,安全访问远程服务

前言 在UE项目开发中,经常需要访问远程服务器上的数据库、API或内网服务。直接暴露这些服务到公网存在安全风险,而SSH隧道(SSH Tunnel)提供了一种安全的解决方案:通过SSH加密通道转发本地端口到远程服务,既保证了数据传…