Skip to content

Electron 发布与自动更新

本页是维护者发版 runbook。桌面端版本来源是 desktop/package.json,正式发布必须让版本号、Git tag 和 release-notes/vX.Y.Z.md 严格一致。

更新链路

应用内更新由 electron-updater 驱动,发布产物托管在 GitHub Releases:

平台安装/更新目标Metadata
macOS arm64/x64dmg 用于首次安装,zip 用于 Squirrel.Mac 更新latest-mac.yml
Windows x64NSIS .exelatest.yml
Linux x64.AppImage,同时发布 .deb 供手动安装latest-linux.yml
Linux arm64.AppImage,同时发布 .deb 供手动安装latest-linux-arm64.yml

Release workflow 会先在各平台 matrix 中生成 latest*.yml,把同名 metadata 临时改名为 latest-<platform>.yml,最后由 scripts/release-update-metadata.ts 合并回 electron-updater 期望的标准文件名。不要改成 matrix job 直接发布 GitHub Release,否则 metadata 可能互相覆盖。

Signing Secrets

macOS signed/notarized release 依赖 GitHub Actions repository secrets:

text
MACOS_CERTIFICATE
MACOS_CERTIFICATE_PASSWORD
APPLE_ID
APPLE_APP_SPECIFIC_PASSWORD
APPLE_TEAM_ID

MACOS_CERTIFICATE 是 Developer ID Application .p12 的 base64 内容。当前项目不发布 .pkg,不需要 Developer ID Installer 证书。

Windows signing secrets 是可选项:

text
WINDOWS_CERTIFICATE
WINDOWS_CERTIFICATE_PASSWORD

缺少 Windows 签名时 NSIS 自动更新仍可工作,但用户可能看到 SmartScreen 提示。

v0.4.3 首次切换

v0.4.3 是从旧 unsigned macOS 发布迁移到 Developer ID 签名/notarization 的第一个版本时,建议不要直接依赖旧版本自动更新:

  1. 用 release workflow 产出 signed/notarized v0.4.3
  2. 在一台未安装开发证书的 macOS 机器上手动下载 Claude-Code-Haha-0.4.3-mac-arm64.dmg
  3. 不执行 xattr -dxattr -cr,直接安装并打开。
  4. 确认只出现标准下载来源确认,不出现无法验证开发者、文件损坏或 unidentified developer。
  5. 再把后续 v0.4.4 作为自动更新验证目标。

v0.4.4 自动更新验证

发布 v0.4.4 时至少验证一条真实更新链路:

  1. 安装 GitHub Release 中的 v0.4.3 正式包。
  2. 发布 v0.4.4 tag,让 Release Desktop workflow 完整通过。
  3. 打开 v0.4.3 应用,等待启动后自动检查,或进入 Settings 手动检查更新。
  4. 确认应用提示 v0.4.4,下载完成后点击安装并重启。
  5. 重启后确认 About/Settings 中版本为 0.4.4

平台重点:

  • macOS:确认 Release job 使用 Build signed macOS Electron release artifacts,且 Verify macOS launch policy 通过。
  • Windows:确认 latest.yml.exe.exe.blockmap 都在 GitHub Release 中;未签名时 SmartScreen 不代表 updater 失败。
  • Linux:优先用 AppImage 验证自动更新;.deb 继续作为手动安装包发布。

发版前检查

发版前至少运行:

bash
bun run scripts/release.ts 0.4.3 --dry
bun test scripts/pr/release-workflow.test.ts scripts/release-update-metadata.test.ts scripts/quality-gate/package-smoke/index.test.ts
bun run check:policy

正式调用 bun run scripts/release.ts 0.4.3 前,先确认对应 release-notes/v0.4.3.md 已经存在。

Released under the MIT License.