feat: 实现 Client 在线更新与安全回退 (#93)
This commit is contained in:
@@ -134,6 +134,7 @@ Client 应执行:
|
||||
2. **Android 设备:**ADB 地址、拼多多包名、设备测试连接。
|
||||
3. **自动化:**轮询周期、任务超时、最大重试次数和演练模式。
|
||||
4. **安全与诊断:**价格允许偏差、最大购买数量、日志目录、截图/XML 保留周期。
|
||||
5. **软件更新:**当前版本、HTTPS 更新清单地址、检查按钮和稳定状态文字。
|
||||
|
||||
密码和访问令牌不得以明文写入普通 SQLite 设置或日志。
|
||||
|
||||
@@ -211,7 +212,19 @@ CMAutoBuy/ 整个文件夹拷到任何机器都能用
|
||||
|
||||
每次构建在 `client/release/` 生成更新包、完整便携包和
|
||||
`autobuy——manifest.json`。清单至少记录版本、文件名、字节大小和 SHA256;SHA256
|
||||
用于发现下载损坏,不等同于发布者身份认证。联网更新和清单签名必须另建工单。
|
||||
用于发现下载损坏,不等同于发布者身份认证。
|
||||
|
||||
**在线更新:**操作人员在设置页填写完整 HTTPS 清单地址并主动检查。发现新版本后
|
||||
必须由用户确认下载;下载、校验和安全解压在后台线程完成,只写入
|
||||
`data/update/`。程序不会强制退出,用户下次通过 `Launcher.exe` 启动时才替换
|
||||
`app/`。Launcher 保留一份 `app.old/`,目录移动失败或新版本没有写入健康标记时
|
||||
恢复旧版本。更新包必须与清单同源;重定向后仍必须是 HTTPS;不允许忽略 TLS
|
||||
证书错误,也不在更新地址中保存账号密码。
|
||||
更新地址还不得包含查询参数或片段,避免 token 一类凭据被持久化。
|
||||
|
||||
`0.1.0` 的 Launcher 没有应用在线更新的能力,因此第一次升级到带在线更新的
|
||||
`0.2.0` 仍需人工替换一次完整程序;从 `0.2.0` 开始才可使用上述流程。当前没有
|
||||
清单数字签名,发布服务器整体失陷不在 SHA256 的保护范围内,签名需要另建工单。
|
||||
|
||||
**已知风险点**(打包工单必须逐项验证):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user