Skip to content

fix(macOS): 使用静态更新清单替代 GitHub REST API (测试阶段) - #206

Merged
1lck merged 4 commits into
preview/0.3.0from
fix/macos-static-update-manifest
Aug 21, 2026
Merged

fix(macOS): 使用静态更新清单替代 GitHub REST API (测试阶段)#206
1lck merged 4 commits into
preview/0.3.0from
fix/macos-static-update-manifest

Conversation

@arkleselect

Copy link
Copy Markdown
Collaborator

变更说明

修改 macOS 应用内更新依赖 GitHub 匿名 REST API,可能因共享公网 IP 配额耗尽而返回 HTTP 403 的问题。

  • 将更新检查地址改为 GitHub Release 静态资产 latest.json
  • 发布清单包含 schemaVersion、版本、Release 地址,以及 arm64 和 x86_64 两种架构的 DMG 地址和 SHA-256
  • 发布工作流根据已经校验的 DMG 和校验文件生成并上传清单
  • 串行化 macOS 与 Windows 的同版本发布流程,避免并发覆盖共享的 latest.json
  • 更新器校验清单格式、版本、HTTPS 地址和 SHA-256 元数据
  • 根据当前 Mac CPU 架构选择对应 DMG
  • 下载完成后执行 SHA-256 校验,并清理临时下载文件
  • 仅在清单获取、校验和架构选择成功后记录自动检查时间
  • 分别处理 API 限流、HTTP、TLS/代理、网络连接、异常响应、无效清单、未知 schema、缺少兼容资产和校验失败
  • 保留手动打开 GitHub Release 页面的兜底入口
  • 补充简体中文错误提示
  • 通过可注入网络传输层补充更新器测试

验证情况

  • ./scripts/test-macos.sh --filter UpdateCheckerTests
  • ./scripts/test-macos.sh --filter AppLocalizationTests
  • ruby scripts/test-macos-update-manifest.rb
  • ./scripts/verify-service-boundaries.sh
  • ./scripts/verify-windows-boundaries.sh
  • 本地完成 arm64 9.9.8 → 9.9.9 端到端更新测试,包括清单读取、架构选择、DMG 下载、SHA-256 校验、应用替换和重启

补充说明

更新检查不要求用户登录 GitHub,也没有在应用中内置 GitHub Token 或 OAuth 客户端密钥。

@arkleselect
arkleselect requested a review from 1lck as a code owner August 20, 2026 15:09
@1lck
1lck merged commit 73b43b2 into preview/0.3.0 Aug 21, 2026
5 checks passed
@1lck
1lck deleted the fix/macos-static-update-manifest branch August 21, 2026 03:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants