Appearance
Go 更新检查与安装
系统概览
GitHub Release 更新检查与安装拉起的 Go 侧实现(update.go,331 行)。CheckForUpdate 拉取仓库最新 Release,按平台匹配资产;DownloadAndRunInstaller / DownloadApk 下载后拉起安装流程(ADR-179 按平台分级)。版本比较用语义化三段解析,防 1.10 < 1.9 类字符串比较坑。
核心职责
CheckForUpdate()— 查询最新版 + 平台资产匹配,返回UpdateCheckResult。DownloadAndRunInstaller()/DownloadApk()— 下载并拉起(返回InstallResult)。latestGitHubRelease(repo)— 调 GitHub API 解析 tag/assets。matchDesktopAsset/matchAndroidAsset/matchPlatformAsset— 平台资产选择。downloadFile(url, dest, expectedSize)— 带大小校验下载。compareVersion/splitVersion/isNewer— 语义化版本比较。
对外 API(节选)
CheckForUpdate() (*UpdateCheckResult, error)— 绑定CheckForUpdate。DownloadAndRunInstaller() (*InstallResult, error)— 桌面安装器拉起。DownloadApk() (*InstallResult, error)— 安卓 APK 下载。
与其他子系统关系
- 前端设置 → 关于页(
settings-about.ts)调用CheckForUpdate。 - 依赖
go-app.md的配置(repo/版本注入)。
前端接入入口
- 设置 → 关于 → 检查更新(
settings-about.ts)。
不变量
- 版本解析必须
compareVersion,禁止裸字符串>比较。 - 下载完成必须校验大小匹配,否则视为失败重新下载/提示。
- 安装拉起是异步返回,前端负责提示进度/结果。
验证入口
- 测试:
internal/app/update_test.go。 - 命令:
go test ./internal/app/ -run "Update|Version"。