feat(update): add transactional external updater

This commit is contained in:
chengma
2026-07-13 12:07:59 +08:00
parent 3ad9ffd239
commit bab2609a85
9 changed files with 578 additions and 2 deletions
+2
View File
@@ -178,6 +178,8 @@ T-615 不改变客户端行为:T-544 仍只打开浏览器下载。客户端
T-616 提供无Qt依赖的安全下载暂存层 `app/update_installer.py`。它只接受受信任域名的HTTPS,下载到 `<安装目录>/.cmshopee-update/downloads/`,完成大小与zip SHA-256校验后安全解压到同盘 `staging/`;路径穿越、符号链接、大小写重复、Windows保留名、ADS、异常压缩比、文件数/解压总量超限,以及manifest缺失或逐文件hash不一致都会拒绝。完整验证后才原子写 `pending.json`,当前程序目录和 `data/` 不变。
T-617 增加独立 `cmshopee-updater.exe`。构建脚本用 `cmshopee-updater.spec` 生成无控制台单文件更新器并放进release和manifest。执行更新前,主程序把它复制到系统临时目录;更新器有上限地等待主程序退出,再按manifest白名单将旧程序根项目整体移动到 `.cmshopee-update/backup/`,把已验证暂存根项目移入安装目录。每一步写事务journal,移动或新版启动失败时逆序恢复;`data/` 与安装根未知文件不扫描、不移动、不删除。
## 四、绝不打包的本地数据
发布包里不能包含以下本地数据、密钥、业务数据或登录态: