sublime Text 不是 electron 开发环境,静默自动更新需集成 electron-updater:安装 electron-builder,主进程配置 autoUpdater.autoInstallOnappQuit = true、autoDownload = true,并在 update-downloaded 后调用 quitAndInstall(true, true);构建时确保 publish 配置正确、含 latest.yml、代码签名及正规安装包。

sublime text 本身不是 Electron 应用开发环境,它只是一个代码编辑器;真正需要自动更新的是你用 Electron 开发的桌面应用。要实现“静默安装”式自动更新(即用户无感知、不弹窗、后台下载并安装),核心是正确集成 electron-updater 并配置为静默模式。下面直接讲关键点和实操步骤。
确认使用 electron-updater 而非 electron-auto-updater
electron-auto-updater 已停止维护,官方推荐且当前活跃的是 electron-updater(来自 electron-builder 生态)。它支持 gitHub、gitlab、Generic http 服务器等多种发布源,并原生支持静默更新逻辑。
- 安装:运行
npm install --save-dev electron-builder(自动包含electron-updater) - 确保你的项目已用
electron-builder打包(electron-updater依赖其生成的latest.yml和签名信息) - 不要手动 require
autoUpdaterfrom Electron ——electron-updater提供自己的AutoUpdater实例
主进程配置静默检查与安装
静默更新的关键在于:不调用 dialog.showMessageBox,不等待用户点击“重启”,而是由代码控制整个流程。需在主进程中初始化并监听事件:
- 导入:
import { autoUpdater } from 'electron-updater'; - 设置静默行为:
autoUpdater.autoInstallOnAppQuit = true;(退出时自动安装) - 禁用默认提示:
autoUpdater.autoDownload = true;(自动下载,不询问) - 监听
'update-downloaded'后立即调用autoUpdater.quitAndInstall(true, true):
第一个true表示不带对话框(silent),第二个true表示安装后立即重启
渲染进程触发检查(可选但推荐)
虽然可设定时自动检查,但更友好做法是在应用启动或菜单中加一个“检查更新”按钮,由用户主动触发(仍保持静默安装):
- 主进程暴露 IPC 接口:
ipcMain.handle('check-for-update', () => autoUpdater.checkForUpdates()); - 渲染进程调用:
await ipcRenderer.invoke('check-for-update'); - 注意:即使用户点击,整个过程也不弹窗 —— 因为你没调任何 dialog,且
quitAndInstall是静默的
构建与发布必须匹配配置
静默更新失败,80% 出在构建环节。务必检查:
-
package.json中build.publish指向正确的更新服务器(如{"provider": "generic", "url": "https://your-domain.com/update/"}) - 发布目录必须包含:
latest.yml(由electron-builder自动生成)、应用安装包(如MyApp Setup 1.2.3.exe)、以及对应哈希校验 - windows 下需代码签名(否则更新可能被系统拦截,静默失败);macOS 需 hardened runtime + notarization
- 首次安装必须通过
electron-builder生成的 installer(.exe/.dmg/.pkg),不能直接运行 .asar
基本上就这些。静默不是“完全没人知道”,而是“不打断用户”,该提示进度可以用托盘/状态栏小图标反馈,但绝不阻塞操作。配置对了,用户打开应用时可能已经跑着新版了。