You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron应用通过auto-updater更新后仍加载旧版本问题求助

Electron自动更新后重启仍显示旧版本的解决方案
  • 校验版本号读取逻辑
    确保读取应用版本号的方式是调用app.getVersion(),或者读取打包后正确更新的package.json中的version字段,禁止使用硬编码的固定版本值。打包时要确认构建工具已将新版本号同步到输出文件中。

  • 检查更新安装路径
    Windows默认路径为C:\Users\<用户名>\AppData\Local\<应用名>,macOS为/Applications/<应用名>.app,Linux为/opt/<应用名>。手动检查目标路径下的应用文件是否为新版本,确认更新包是否完整覆盖了旧文件。

  • 清理auto-updater缓存
    auto-updater的缓存可能导致重启后误检测旧版本,可在应用启动时主动清理:

    const { autoUpdater } = require('electron-updater');
    autoUpdater.clearCache();
    

    或在更新完成后调用autoUpdater.removePendingUpdate()移除待处理更新记录。

  • 确认更新触发时机
    避免在应用初始化阶段提前触发更新检查,应放在app.whenReady()之后执行:

    app.whenReady().then(() => {
      autoUpdater.setFeedURL({
        provider: 'github', // 或你的更新源类型
        repo: '你的仓库名',
        owner: '你的用户名'
      });
      autoUpdater.checkForUpdates();
    });
    
  • 使用官方重启方法
    更新完成后必须调用autoUpdater.quitAndInstall()重启应用,禁止自定义重启逻辑,该方法会确保更新包生效后再重启:

    autoUpdater.on('update-downloaded', (info) => {
      dialog.showMessageBox({
        type: 'info',
        title: '更新完成',
        message: '新版本已下载,重启应用生效',
        buttons: ['重启', '稍后']
      }).then((result) => {
        if (result.response === 0) {
          autoUpdater.quitAndInstall();
        }
      });
    });
    
  • 验证安装包签名与完整性
    Windows平台需确保安装包已正确签名,避免系统拦截导致更新不完整;macOS需开启硬化运行时并完成公证。以electron-builder为例,在package.json中配置:

    "build": {
      "win": {
        "certificateFile": "证书路径",
        "certificatePassword": "证书密码"
      },
      "mac": {
        "hardenedRuntime": true,
        "entitlements": "entitlements.plist"
      }
    }
    
  • 检查更新源版本信息
    确认更新源(如GitHub Releases)中的latest.yml/latest.json文件版本号与安装包版本完全一致,避免版本号不匹配导致重复检测更新。

内容的提问来源于stack exchange,提问作者santosh kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:06:19