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

Electron-builder自动更新时HTTPS请求生成错误文件名的问题咨询

Electron-builder自动更新下载URL版本号错误问题解答

问题描述

基于Electron开发应用,实现electron-builder的autoUpdate功能时遇到以下问题:

  • 采用私有源码仓库+公开更新产物仓库的配置,更新流程为:安装v1版本 → 构建v2版本 → GitHub发布v2版本 → 打开v1版本触发更新
  • 应用能识别到GitHub上的v2新版本,但下载URL错误,请求https://github.com/user/repo/releases/download/v2/application-1-universal-mac.zip返回404,实际已上传的文件是application-2-universal-mac.zip,请求中误用了旧版本号
  • 修改package.json的build配置(如下)能改变构建产物的文件名,但更新请求始终使用默认格式node-app-${version}.${ext}:
"build": {
   "artifactName": "appName.${ext}",
   "executableName": "lol",
   "buildVersion": "400",
   "productName": "app",  
 }

疑问:electron-builder生成请求文件名时参考的是哪个变量?

核心原因与解决方案

electron-builder的autoUpdate模块在生成下载URL时,优先读取更新元数据(比如GitHub Release的latest.yml/latest.json文件)中的文件名,而非本地package.json的配置。

你遇到的问题本质是:发布v2版本时生成的更新元数据文件里,文件名还是旧版本的命名格式,导致v1版本客户端读取元数据后,用错误的文件名拼接下载URL。

解决步骤:

  • 确保构建v2版本时,artifactName配置正确生效,生成的产物文件名包含正确的v2版本标识
  • 发布v2版本到GitHub时,要确保electron-builder自动生成的latest.yml(或对应平台的元数据文件)里,url字段指向的是正确的v2版本产物文件名
  • 如果是手动维护元数据文件,必须同步更新其中的文件名和版本信息,保证和实际上传的产物一致

另外需要注意:buildVersion字段主要用于Windows平台的版本号,不影响更新时的文件名匹配;artifactName的配置必须在构建新版本时就正确设置,这样生成的产物和元数据文件才会对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:50:22