# 自动升级 — 任务规划 > 创建时间:2026-05-28 ## 阶段一:版本基础设施 - [ ] `main.go` 增加版本变量,`-ldflags` 编译注入 - [ ] `config.go` 增加 `update_url`、`auto_check_update`、`skip_version` 字段 - [ ] `updater.go` 实现版本检查函数 `checkUpdate()` ## 阶段二:升级弹窗 - [ ] `web/update.html` 升级弹窗页面(右下角气泡 + 居中弹窗两种模式) - [ ] Go 端创建无边框 WebView2 弹窗窗口 - [ ] 弹窗内容渲染:版本号、更新说明、按钮 - [ ] 根据 `force` 字段切换弹窗位置和按钮 ## 阶段三:升级器程序 - [ ] `updater/main.go` 独立程序骨架 - [ ] HTTP 下载安装包 + 进度日志 - [ ] SHA256 校验 - [ ] 备份旧版本 - [ ] 替换 + 启动新版本 - [ ] 启动失败自动回滚 - [ ] 日志写入 `updater.log` ## 阶段四:主程序集成 - [ ] 主程序释放 updater.exe 到临时目录 - [ ] 构造命令行参数启动 updater - [ ] 主程序退出 - [ ] 托盘菜单增加"检查更新" ## 阶段五:发布流程 - [ ] 构建脚本同时构建 u-desktop.exe + updater.exe - [ ] publish 技能自动生成 version.json(版本号 + SHA256 + 下载 URL) - [ ] 上传 version.json 和安装包到 c.1216.top ## 阶段六:验证 - [ ] 手动模拟版本更新,测试弹窗流程 - [ ] 测试 updater 下载 + 替换 + 重启 - [ ] 测试回滚机制 - [ ] 测试强制升级流程 ## 技术要点 - 版本号通过 `-ldflags "-X main.version=x.x.x"` 注入 - updater.exe 通用设计,参数化驱动,不含业务逻辑 - 弹窗用 WebView2 无边框窗口,风格与设置窗口一致 - version.json 放 c.1216.top,静态文件