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

GitHub自动更新认证错误修复及客户端更新配置问询

Electron autoUpdater认证令牌错误修复与自动更新配置

当前使用Electron autoUpdater时出现认证令牌错误(提示需检查令牌正确性),相关配置如下:

认证令牌错误提示

main.ts错误监听代码

autoUpdater.on('error', e => {
  dialog.showMessageBox(win, { message: (e as Error).message });
});

package.json的build配置

"build": {
    "appId": "com.github.orgname.reponame",
    "win": {
      "target": "nsis",
      "icon": "dist/apps/frontend/assets/app"
    },
    "nsis": {
      "oneClick": false
    },
    "asar": true,
    "directories": {
      "output": "releases/"
    },
    "files": [
      "**/*",
      "!**/*.ts",
      "!*.map",
      "!package.json",
      "!package-lock.json",
      {
        "from": "../dist",
        "filter": ["**/*"]
      }
    ],
    "portable": {
      "splashImage": "dist/apps/frontend/assets/app/preloader.png"
    }
  }

解决方案

一、修复认证令牌错误

  • 确认令牌权限:必须生成带有repo完整权限的GitHub个人访问令牌(PAT),只读权限令牌无法访问私有仓库的更新资源。
  • 校验令牌有效性:检查令牌是否过期、被撤销,确保拼写完全正确,无多余空格或特殊字符。
  • 验证仓库访问权:确认令牌所属账号是目标GitHub仓库的成员(私有仓库需额外检查权限配置)。

二、配置客户端自动检测GitHub新版本

1. 完善autoUpdater核心逻辑

在main.ts中补充更新检查、下载、安装的完整监听代码:

import { autoUpdater } from 'electron-updater';
import { dialog, BrowserWindow } from 'electron';

// 配置更新源
autoUpdater.setFeedURL({
  provider: 'github',
  owner: '你的GitHub用户名/组织名',
  repo: '仓库名',
  private: true, // 私有仓库必须设为true
  token: '你的GitHub个人访问令牌'
});

// 监听更新可用事件
autoUpdater.on('update-available', () => {
  dialog.showMessageBox({
    type: 'info',
    title: '发现新版本',
    message: '检测到新版本,将自动下载并安装',
    buttons: ['确定']
  });
});

// 监听更新下载完成事件
autoUpdater.on('update-downloaded', () => {
  dialog.showMessageBox({
    type: 'info',
    title: '更新完成',
    message: '更新已下载完成,重启应用生效',
    buttons: ['立即重启', '稍后重启']
  }).then(result => {
    if (result.response === 0) {
      autoUpdater.quitAndInstall();
    }
  });
});

// 封装更新检查函数
export function checkForUpdates(win: BrowserWindow) {
  autoUpdater.checkForUpdates();
}

2. 启动时触发更新检查

在应用窗口创建完成后调用更新检查:

app.whenReady().then(() => {
  const win = createWindow();
  // 应用启动后立即检查更新
  checkForUpdates(win);
});

3. 补充package.json的publish配置

在build字段中添加发布源配置:

"build": {
  // 原有配置...
  "publish": {
    "provider": "github",
    "owner": "你的GitHub用户名/组织名",
    "repo": "仓库名",
    "private": true
  }
}

三、令牌的正确配置位置

  • 客户端代码(仅私有仓库可用):直接在autoUpdater.setFeedURL的token字段填写,但绝对不能提交到公开代码仓库,避免令牌泄露。
  • 环境变量(推荐):打包前设置环境变量,代码中读取:
    • Linux/macOS:export GH_TOKEN=你的令牌
    • Windows:set GH_TOKEN=你的令牌
    • 代码中读取:token: process.env.GH_TOKEN
  • 项目.env文件:在项目根目录创建.env文件,写入GH_TOKEN=你的令牌,electron-builder会自动读取该变量用于发布和更新验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:05:14