feat: LAN auto-update launcher script (stage 3)
scripts/update.ps1: check manifest, stage+verify the new version, swap it in alongside the running one (versions\<ver> + current.txt pointer), then launch with CMBOT_DATA_DIR. Degrades to the local version on any failure; never overwrites the running version. Rollback = edit current.txt. Verified against a fake versioned layout: update, idempotent re-run, unreachable source, no source, corrupt download (marker missing), malformed manifest. Not yet wired into a real install layout (build.ps1 still ships flat onedir). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -872,6 +872,27 @@
|
||||
- [x] GUI 实测:配置可达更新源 + 高版本 manifest → 启动后显示横幅,点击打开目录
|
||||
- [x] GUI 实测:更新源不可达 → 正常启动、无横幅、无卡顿
|
||||
|
||||
### 17.17 局域网更新 · 阶段③:自动安装启动器(脚本)
|
||||
|
||||
前置阅读:
|
||||
|
||||
- `docs/10-lan-update.md`(§3 架构、§8 流程、§16 阶段③)
|
||||
|
||||
说明:
|
||||
|
||||
- 实现 PowerShell 启动器 `scripts/update.ps1`,跑通「检查 → staging → 校验 → 原子切换 → 启动 → 降级」整条链路。先以脚本验证流程,后续再决定是否编译为 `Launcher.exe`。
|
||||
|
||||
任务:
|
||||
|
||||
- [x] `scripts/update.ps1`:读 `current.txt` 与 `data\config\app_config.json` 的 `update_source`
|
||||
- [x] 读远端 `manifest.json`、语义化版本比较,仅当远端更高才更新
|
||||
- [x] robocopy 拷到 `staging\<ver>.tmp` → 校验 `marker` → 重命名进 `versions\<ver>` → 原子写 `current.txt`(ascii 无 BOM)
|
||||
- [x] 启动 `versions\<current>\CMBot.exe` 并设 `CMBOT_DATA_DIR`
|
||||
- [x] 降级:源不可达 / robocopy 失败 / marker 缺失 / 坏 manifest 一律启动本地现版本
|
||||
- [x] 假版本目录验证 6 个用例(更新、幂等、源不可达、未配置源、下载损坏、坏 manifest)全过
|
||||
- [ ] 接入真实安装结构:`build.ps1` 或新增安装步骤产出 `%LOCALAPPDATA%\CMBot\versions\<ver>\` 版本并排布局
|
||||
- [ ] 真实内网双机实测
|
||||
|
||||
## 18. 后续暂缓任务
|
||||
|
||||
以下任务第一阶段暂不做,后续需要时再新增设计文档:
|
||||
|
||||
Reference in New Issue
Block a user