2026-07-10 02:45:13 +00:00
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
软件自动升级与版本控制系统开发设计文档
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
角色
|
|
|
|
|
|
|
|
|
|
|
|
编写
|
|
|
|
|
|
|
|
|
|
|
|
校对
|
|
|
|
|
|
|
|
|
|
|
|
校正
|
|
|
|
|
|
|
|
|
|
|
|
姓名
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
日期
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
修订记录
|
|
|
|
|
|
|
|
|
|
|
|
版本
|
|
|
|
|
|
|
|
|
|
|
|
日期
|
|
|
|
|
|
|
|
|
|
|
|
修订章节
|
|
|
|
|
|
|
|
|
|
|
|
修订内容
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
技术选型
|
|
|
|
|
|
|
|
|
|
|
|
明确客户端与服务端技术栈边界。
|
|
|
|
|
|
|
|
|
|
|
|
修订人
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
总体架构
|
|
|
|
|
|
|
|
|
|
|
|
梳理客户端、服务端和对象存储交互关
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
系。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
客户端目录结
|
|
|
|
|
|
|
|
|
|
|
|
将目录树整理为正式表格。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
构
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
本地配置文件
|
|
|
|
|
|
|
|
|
|
|
|
补充 app_config、client_identity、
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
设计
|
|
|
|
|
|
|
|
|
|
|
|
version_policy、local_state 字段说
|
|
|
|
|
|
|
|
|
|
|
|
明。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
Manifest 设计 补充全量清单、签名和文件完整性规则。 待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
启动票据设计 明确票据用途、校验规则和安全边界。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
客户端启动逻
|
|
|
|
|
|
|
|
|
|
|
|
新增 Visio 流程图和步骤表。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
辑
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
REST API 设计 明确设备身份接口非用户登录,补充管理
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
员登录仅用于后台。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
数据库设计
|
|
|
|
|
|
|
|
|
|
|
|
补充应用、通道、版本、策略、设备、授
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
权和审计日志表。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
对象存储目录
|
|
|
|
|
|
|
|
|
|
|
|
将对象存储目录整理为正式表格。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
设计
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
Hash 校验策略 明确更新可增量、校验必须全量。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
签名策略
|
|
|
|
|
|
|
|
|
|
|
|
补充签名算法、key_id 和稳定序列化要
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
求。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
限流策略
|
|
|
|
|
|
|
|
|
|
|
|
将限流规则整理为表格。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
回滚机制
|
|
|
|
|
|
|
|
|
|
|
|
补充事务状态机和失败恢复规则。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
Demo 开发里程
|
|
|
|
|
|
|
|
|
|
|
|
按阶段整理开发计划。
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
碑
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
Demo 验收用例 补充升级、回滚、禁用、预览版、离线等
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
验收用例。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
后续扩展方向 补充 License、灰度、多平台、日志上传
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
等扩展方向。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
设计范围与登
|
|
|
|
|
|
|
|
|
|
|
|
明确本期默认可用且不做普通用户登录校
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
录边界
|
|
|
|
|
|
|
|
|
|
|
|
验;管理员登录仅用于后台。
|
|
|
|
|
|
|
|
|
|
|
|
v0.1
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
本期范围
|
|
|
|
|
|
|
|
|
|
|
|
明确普通用户登录本期不做,默认可用;
|
|
|
|
|
|
|
|
|
|
|
|
待填写
|
|
|
|
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
|
|
|
|
后续可扩展权限和授权校验。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
目录
|
|
|
|
|
|
|
|
|
|
|
|
1 设计范围与登录边界 ............................................................................................................. 6
|
|
|
|
|
|
|
|
|
|
|
|
2 技术选型 ............................................................................................................................. 6
|
|
|
|
|
|
|
|
|
|
|
|
2.1 客户端技术栈 ..................................................................................................................... 6
|
|
|
|
|
|
|
|
|
|
|
|
2.2 服务端技术栈 ..................................................................................................................... 7
|
|
|
|
|
|
|
|
|
|
|
|
2.3 文件存储 ............................................................................................................................ 8
|
|
|
|
|
|
|
|
|
|
|
|
3 总体架构 .............................................................................................................................. 8
|
|
|
|
|
|
|
|
|
|
|
|
4 客户端目录结构 .................................................................................................................... 9
|
|
|
|
|
|
|
|
|
|
|
|
5 本地配置文件设计 .............................................................................................................. 11
|
|
|
|
|
|
|
|
|
|
|
|
5.1 app_config.json ................................................................................................................ 11
|
|
|
|
|
|
|
|
|
|
|
|
5.2 client_identity.dat ............................................................................................................. 11
|
|
|
|
|
|
|
|
|
|
|
|
5.3 version_policy.dat ............................................................................................................ 11
|
|
|
|
|
|
|
|
|
|
|
|
5.4 local_state.json ................................................................................................................ 12
|
|
|
|
|
|
|
|
|
|
|
|
6 Manifest 设计 .................................................................................................................... 13
|
|
|
|
|
|
|
|
|
|
|
|
7 启动票据设计 ..................................................................................................................... 14
|
|
|
|
|
|
|
|
|
|
|
|
8 客户端启动逻辑 .................................................................................................................. 15
|
|
|
|
|
|
|
|
|
|
|
|
8.1 Launcher 启动逻辑 ........................................................................................................... 16
|
|
|
|
|
|
|
|
|
|
|
|
8.2 MainApp 启动逻辑 ............................................................................................................ 18
|
|
|
|
|
|
|
|
|
|
|
|
8.3 Updater 升级逻辑 ............................................................................................................. 20
|
|
|
|
|
|
|
|
|
|
|
|
9 REST API 设计 .................................................................................................................... 21
|
|
|
|
|
|
|
|
|
|
|
|
9.1 检查更新接口 ................................................................................................................... 21
|
|
|
|
|
|
|
|
|
|
|
|
9.2 获取下载链接接口 ............................................................................................................ 24
|
|
|
|
|
|
|
|
|
|
|
|
9.3 升级结果上报接口 ............................................................................................................ 25
|
|
|
|
|
|
|
|
|
|
|
|
9.4 设备身份签发接口(非用户登录) .................................................................................... 26
|
|
|
|
|
|
|
|
|
|
|
|
9.5 管理后台管理员登录接口(非本期普通客户端用户登录) ................................................. 27
|
|
|
|
|
|
|
|
|
|
|
|
9.6 管理后台接口摘要 ............................................................................................................ 28
|
|
|
|
|
|
|
|
|
|
|
|
10 数据库设计 ....................................................................................................................... 29
|
|
|
|
|
|
|
|
|
|
|
|
10.1 应用表 apps ................................................................................................................... 29
|
|
|
|
|
|
|
|
|
|
|
|
10.2 版本通道表 channels ...................................................................................................... 29
|
|
|
|
|
|
|
|
|
|
|
|
10.3 版本表 versions .............................................................................................................. 30
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
10.4 版本文件表 version_files ................................................................................................. 31
|
|
|
|
|
|
|
|
|
|
|
|
10.5 版本策略表 version_policies ............................................................................................ 32
|
|
|
|
|
|
|
|
|
|
|
|
10.6 设备表 devices ............................................................................................................... 33
|
|
|
|
|
|
|
|
|
|
|
|
10.7 授权表 licenses .............................................................................................................. 33
|
|
|
|
|
|
|
|
|
|
|
|
10.8 下载日志表 download_logs ............................................................................................. 34
|
|
|
|
|
|
|
|
|
|
|
|
10.9 升级日志表 upgrade_logs ................................................................................................ 35
|
|
|
|
|
|
|
|
|
|
|
|
10.10 管理员表 admin_users .................................................................................................. 35
|
|
|
|
|
|
|
|
|
|
|
|
10.11 管理员操作日志表 admin_audit_logs ............................................................................. 36
|
|
|
|
|
|
|
|
|
|
|
|
11 对象存储目录设计 ............................................................................................................. 37
|
|
|
|
|
|
|
|
|
|
|
|
12 Hash 校验策略 ................................................................................................................. 38
|
|
|
|
|
|
|
|
|
|
|
|
13 签名策略 .......................................................................................................................... 38
|
|
|
|
|
|
|
|
|
|
|
|
14 限流策略 .......................................................................................................................... 41
|
|
|
|
|
|
|
|
|
|
|
|
15 回滚机制 .......................................................................................................................... 42
|
|
|
|
|
|
|
|
|
|
|
|
16 Demo 开发里程碑 ............................................................................................................. 45
|
|
|
|
|
|
|
|
|
|
|
|
16.1 第一阶段:基础框架 ....................................................................................................... 45
|
|
|
|
|
|
|
|
|
|
|
|
16.2 第二阶段:服务端基础能力 ............................................................................................ 45
|
|
|
|
|
|
|
|
|
|
|
|
16.3 第三阶段:在线更新 ....................................................................................................... 45
|
|
|
|
|
|
|
|
|
|
|
|
16.4 第四阶段:版本策略 ....................................................................................................... 46
|
|
|
|
|
|
|
|
|
|
|
|
16.5 第五阶段:离线能力 ....................................................................................................... 46
|
|
|
|
|
|
|
|
|
|
|
|
16.6 第六阶段:可靠性与安全 ................................................................................................ 46
|
|
|
|
|
|
|
|
|
|
|
|
17 Demo 验收用例 ................................................................................................................ 46
|
|
|
|
|
|
|
|
|
|
|
|
18 后续扩展方向 ................................................................................................................... 47
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
1 设计范围与登录边界
|
|
|
|
|
|
|
|
|
|
|
|
本设计文档用于说明软件自动升级与版本控制系统第一版 Demo
|
|
|
|
|
|
|
|
|
|
|
|
的技术方案。设计范围包括客户端启动器、主程序启动校验、独立升
|
|
|
|
|
|
|
|
|
|
|
|
级器、版本策略、manifest、签名校验、下载授权、离线运行、回滚机
|
|
|
|
|
|
|
|
|
|
|
|
制、管理后台和基础服务端接口。
|
|
|
|
|
|
|
|
|
|
|
|
本 期 普 通 客 户 端 用 户 默 认 可 以 使 用 软 件 , 不 需 要 登 录 账 号 。
|
|
|
|
|
|
|
|
|
|
|
|
Launcher 启动检查、MainApp 启动校验、Updater 下载与替换、离线
|
|
|
|
|
|
|
|
|
|
|
|
启动、离线更新包导入、版本禁用和降级控制均不做普通用户登录校
|
|
|
|
|
|
|
|
|
|
|
|
验,只使用设备身份、版本策略、manifest、启动票据和签名校验。
|
|
|
|
|
|
|
|
|
|
|
|
本期客户端侧不实现普通用户登录。所有客户端请求使用设备身
|
|
|
|
|
|
|
|
|
|
|
|
份凭证进行识别,设备身份凭证不代表用户账号,也不产生用户会话。
|
|
|
|
|
|
|
|
|
|
|
|
后续版本可以增加普通用户登录能力,用于用户权限校验、用户
|
|
|
|
|
|
|
|
|
|
|
|
授权状态判断,以及判断该用户是否可以使用该软件。该能力属于后
|
|
|
|
|
|
|
|
|
|
|
|
续扩展,不纳入本期 Demo 必做范围。
|
|
|
|
|
|
|
|
|
|
|
|
后续如增加普通用户登录,建议放在 Launcher 启动检查阶段或
|
|
|
|
|
|
|
|
|
|
|
|
MainApp 首次进入业务前,用于用户级授权状态判断。该能力不替代
|
|
|
|
|
|
|
|
|
|
|
|
设备身份、版本策略、manifest、启动票据和签名校验。
|
|
|
|
|
|
|
|
|
|
|
|
管理后台管理员登录属于本期范围,仅用于保护后台版本发布、
|
|
|
|
|
|
|
|
|
|
|
|
策略修改、设备管理、离线包生成和日志查看等管理操作。该登录不
|
|
|
|
|
|
|
|
|
|
|
|
是普通客户端用户登录,普通客户端用户不调用管理后台管理员登录
|
|
|
|
|
|
|
|
|
|
|
|
接口,也不持有后台访问令牌。
|
|
|
|
|
|
2 技术选型
|
|
|
|
|
|
2.1 客户端技术栈
|
|
|
|
|
|
|
|
|
|
|
|
客户端采用 Qt + C++ 开发。
|
|
|
|
|
|
|
|
|
|
|
|
客户端程序包括:
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
a) Launcher.exe
|
|
|
|
|
|
|
|
|
|
|
|
软件启动器。
|
|
|
|
|
|
|
|
|
|
|
|
b) MainApp.exe
|
|
|
|
|
|
|
|
|
|
|
|
主业务程序,用于 Demo 演示主软件启动、版本显示和 DLL 加载。
|
|
|
|
|
|
|
|
|
|
|
|
c) Updater.exe
|
|
|
|
|
|
|
|
|
|
|
|
独立升级器,负责下载、校验、替换、回滚和重启。
|
|
|
|
|
|
|
|
|
|
|
|
d) demo_plugin.dll
|
|
|
|
|
|
|
|
|
|
|
|
Demo 插件 DLL,用于验证 DLL 替换能力。
|
|
|
|
|
|
|
|
|
|
|
|
e) UpdateHelper.exe
|
|
|
|
|
|
|
|
|
|
|
|
可选辅助程序,用于后续处理 Updater 自身更新。
|
|
|
|
|
|
|
|
|
|
|
|
客户端推荐使用 Qt 模块:
|
|
|
|
|
|
|
|
|
|
|
|
a) QNetworkAccessManager:HTTP API 请求和文件下载。
|
|
|
|
|
|
|
|
|
|
|
|
b) QJsonDocument:JSON 解析。
|
|
|
|
|
|
|
|
|
|
|
|
c) QFile、QDir:文件操作。
|
|
|
|
|
|
|
|
|
|
|
|
d) QCryptographicHash:SHA-256 hash 计算。
|
|
|
|
|
|
|
|
|
|
|
|
e) QProcess:启动和关闭外部进程。
|
|
|
|
|
|
|
|
|
|
|
|
f) QTimer:定时检查版本。
|
|
|
|
|
|
|
|
|
|
|
|
g) QLockFile:防止重复启动升级器。
|
|
|
|
|
|
|
|
|
|
|
|
h) QSaveFile:安全写入本地配置文件。
|
|
|
|
|
|
|
|
|
|
|
|
i) QSettings:本地配置管理。
|
|
|
|
|
|
|
|
|
|
|
|
j) QTemporaryDir:临时目录管理。
|
|
|
|
|
|
|
|
|
|
|
|
2.2 服务端技术栈
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶段建议使用:
|
|
|
|
|
|
|
|
|
|
|
|
a) Python FastAPI。
|
|
|
|
|
|
|
|
|
|
|
|
b) SQLite。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
c) MinIO。
|
|
|
|
|
|
|
|
|
|
|
|
d) Redis 可选,用于限流。
|
|
|
|
|
|
|
|
|
|
|
|
正式阶段可选:
|
|
|
|
|
|
|
|
|
|
|
|
a) Python FastAPI + PostgreSQL + Redis + MinIO / OSS。
|
|
|
|
|
|
|
|
|
|
|
|
b) Go + PostgreSQL + Redis + MinIO / OSS。
|
|
|
|
|
|
|
|
|
|
|
|
接口采用 HTTP REST JSON 方式约定。
|
|
|
|
|
|
|
|
|
|
|
|
2.3 文件存储
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶段使用 MinIO。
|
|
|
|
|
|
|
|
|
|
|
|
正式阶段可使用:
|
|
|
|
|
|
|
|
|
|
|
|
a) 阿里云 OSS。
|
|
|
|
|
|
|
|
|
|
|
|
b) 腾讯云 COS。
|
|
|
|
|
|
|
|
|
|
|
|
c) 华为云 OBS。
|
|
|
|
|
|
|
|
|
|
|
|
d) AWS S3。
|
|
|
|
|
|
|
|
|
|
|
|
e) 私有化 MinIO。
|
|
|
|
|
|
|
|
|
|
|
|
f) 企业内网对象存储。
|
|
|
|
|
|
|
|
|
|
|
|
版本文件不建议直接存入数据库。数据库只存文件元数据、hash、
|
|
|
|
|
|
|
|
|
|
|
|
大小、存储路径和版本关系。
|
|
|
|
|
|
3 总体架构
|
|
|
|
|
|
|
|
|
|
|
|
系统总体架构如下:
|
|
|
|
|
|
|
|
|
|
|
|
客户端:
|
|
|
|
|
|
|
|
|
|
|
|
a) Launcher.exe
|
|
|
|
|
|
|
|
|
|
|
|
b) MainApp.exe
|
|
|
|
|
|
|
|
|
|
|
|
c) Updater.exe
|
|
|
|
|
|
|
|
|
|
|
|
d) 本地身份凭证
|
|
|
|
|
|
|
|
|
|
|
|
e) 本地版本策略缓存
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
f) 本地 manifest 缓存
|
|
|
|
|
|
|
|
|
|
|
|
g) staging 下载目录
|
|
|
|
|
|
|
|
|
|
|
|
h) backup 备份目录
|
|
|
|
|
|
|
|
|
|
|
|
i)
|
|
|
|
|
|
|
|
|
|
|
|
logs 日志目录
|
|
|
|
|
|
|
|
|
|
|
|
服务端:
|
|
|
|
|
|
|
|
|
|
|
|
a) API 服务。
|
|
|
|
|
|
|
|
|
|
|
|
b) 管理后台。
|
|
|
|
|
|
|
|
|
|
|
|
c) 数据库。
|
|
|
|
|
|
|
|
|
|
|
|
d) 对象存储。
|
|
|
|
|
|
|
|
|
|
|
|
e) Redis 限流模块。
|
|
|
|
|
|
|
|
|
|
|
|
f) 签名服务模块。
|
|
|
|
|
|
|
|
|
|
|
|
交互流程:
|
|
|
|
|
|
|
|
|
|
|
|
a) 客户端请求服务端 API。
|
|
|
|
|
|
|
|
|
|
|
|
b) 服务端验证设备身份。
|
|
|
|
|
|
|
|
|
|
|
|
c) 服务端返回版本策略。
|
|
|
|
|
|
|
|
|
|
|
|
d) 客户端根据策略判断是否允许运行或升级。
|
|
|
|
|
|
|
|
|
|
|
|
e) 需要升级时,客户端请求下载链接。
|
|
|
|
|
|
|
|
|
|
|
|
f) 服务端生成短期对象存储下载 URL。
|
|
|
|
|
|
|
|
|
|
|
|
g) 客户端下载文件并校验。
|
|
|
|
|
|
|
|
|
|
|
|
h) 客户端替换文件并上报结果。
|
|
|
|
|
|
|
|
|
|
|
|
4 客户端目录结构
|
|
|
|
|
|
|
|
|
|
|
|
建议客户端目录如下:
|
|
|
|
|
|
|
|
|
|
|
|
目录或文件
|
|
|
|
|
|
|
|
|
|
|
|
DemoApp/
|
|
|
|
|
|
|
|
|
|
|
|
Launcher.exe
|
|
|
|
|
|
|
|
|
|
|
|
MainApp.exe
|
|
|
|
|
|
|
|
|
|
|
|
用途
|
|
|
|
|
|
|
|
|
|
|
|
客户端安装根目录
|
|
|
|
|
|
|
|
|
|
|
|
默认启动入口,负责版本准入检查和启动票据生成
|
|
|
|
|
|
|
|
|
|
|
|
主业务程序
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
Updater.exe
|
|
|
|
|
|
|
|
|
|
|
|
UpdateHelper.exe
|
|
|
|
|
|
|
|
|
|
|
|
独立升级程序
|
|
|
|
|
|
|
|
|
|
|
|
可选辅助程序,用于处理 Updater 自身更新
|
|
|
|
|
|
|
|
|
|
|
|
plugins/demo_plugin.dll
|
|
|
|
|
|
|
|
|
|
|
|
Demo 插件 DLL,用于验证 DLL 替换能力
|
|
|
|
|
|
|
|
|
|
|
|
bin/
|
|
|
|
|
|
|
|
|
|
|
|
config/app_config.json
|
|
|
|
|
|
|
|
|
|
|
|
运行依赖目录
|
|
|
|
|
|
|
|
|
|
|
|
客户端基础配置
|
|
|
|
|
|
|
|
|
|
|
|
config/client_identity.dat
|
|
|
|
|
|
|
|
|
|
|
|
本地设备身份凭证
|
|
|
|
|
|
|
|
|
|
|
|
config/version_policy.dat
|
|
|
|
|
|
|
|
|
|
|
|
本地版本策略缓存
|
|
|
|
|
|
|
|
|
|
|
|
config/local_state.json
|
|
|
|
|
|
|
|
|
|
|
|
本地运行状态和防回滚状态
|
|
|
|
|
|
|
|
|
|
|
|
update/manifest_cache/
|
|
|
|
|
|
|
|
|
|
|
|
manifest 缓存目录
|
|
|
|
|
|
|
|
|
|
|
|
update/staging/
|
|
|
|
|
|
|
|
|
|
|
|
update/backup/
|
|
|
|
|
|
|
|
|
|
|
|
update/logs/
|
|
|
|
|
|
|
|
|
|
|
|
data/
|
|
|
|
|
|
|
|
|
|
|
|
cache/
|
|
|
|
|
|
|
|
|
|
|
|
logs/
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
|
|
|
|
|
|
|
|
|
|
|
更新文件下载临时目录
|
|
|
|
|
|
|
|
|
|
|
|
升级前备份目录
|
|
|
|
|
|
|
|
|
|
|
|
升级日志目录
|
|
|
|
|
|
|
|
|
|
|
|
用户数据目录,不纳入 hash 校验
|
|
|
|
|
|
|
|
|
|
|
|
缓存目录
|
|
|
|
|
|
|
|
|
|
|
|
运行日志目录
|
|
|
|
|
|
|
|
|
|
|
|
a) config/client_identity.dat:本地设备身份凭证。
|
|
|
|
|
|
|
|
|
|
|
|
b) config/version_policy.dat:本地版本策略。
|
|
|
|
|
|
|
|
|
|
|
|
c) update/manifest_cache:缓存 manifest。
|
|
|
|
|
|
|
|
|
|
|
|
d) update/staging:下载新文件的临时目录。
|
|
|
|
|
|
|
|
|
|
|
|
e) update/backup:升级前备份目录。
|
|
|
|
|
|
|
|
|
|
|
|
f) update/logs:升级日志。
|
|
|
|
|
|
|
|
|
|
|
|
g) plugins:插件 DLL 目录,需要进行白名单检查。
|
|
|
|
|
|
|
|
|
|
|
|
h) data:用户数据目录,不纳入 hash 校验。
|
|
|
|
|
|
|
|
|
|
|
|
i)
|
|
|
|
|
|
|
|
|
|
|
|
logs:运行日志目录,不纳入 hash 校验。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
5 本地配置文件设计
|
|
|
|
|
|
5.1 app_config.json
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
app_name
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
api_base_url
|
|
|
|
|
|
|
|
|
|
|
|
platform
|
|
|
|
|
|
|
|
|
|
|
|
arch
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
5.2 client_identity.dat
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
Marsco Demo App
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
https://api.example.com/api/v1
|
|
|
|
|
|
|
|
|
|
|
|
windows
|
|
|
|
|
|
|
|
|
|
|
|
x64
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
该文件由服务端签发,客户端只验证,不自行伪造。
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
issued_at
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
5.3 version_policy.dat
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
device_xxx
|
|
|
|
|
|
|
|
|
|
|
|
license_xxx
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
2026-12-31T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
|
|
False
|
|
|
|
|
|
|
|
|
|
|
|
False
|
|
|
|
|
|
|
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
2026-07-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
当前版本允许使用
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
|
|
|
|
|
|
allow_run
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
offline_allowed
|
|
|
|
|
|
|
|
|
|
|
|
issued_at
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
latest_version
|
|
|
|
|
|
|
|
|
|
|
|
min_supported_version
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
5.4 local_state.json
|
|
|
|
|
|
|
|
|
|
|
|
用于记录本地状态,防止策略回滚和系统时间回拨。
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
max_policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
last_success_run_at
|
|
|
|
|
|
|
|
|
|
|
|
last_online_verified_at
|
|
|
|
|
|
|
|
|
|
|
|
last_success_version
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T10:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T09:50:00Z
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
离线时间和策略回滚判断规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) max_policy_seq 只能递增,不能被旧策略覆盖。
|
|
|
|
|
|
|
|
|
|
|
|
b) 新读取的 version_policy.policy_seq 小于 max_policy_seq 时,客户
|
|
|
|
|
|
|
|
|
|
|
|
端应拒绝启动。
|
|
|
|
|
|
|
|
|
|
|
|
c) 当前系统时间早于 last_success_run_at 时,视为疑似时间回拨。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
d) 当前系统时间早于 last_online_verified_at 时,视为疑似时间回拨。
|
|
|
|
|
|
|
|
|
|
|
|
e) 离线启动时必须同时满足:策略签名正确、policy_seq 未倒退、
|
|
|
|
|
|
|
|
|
|
|
|
offline_allowed 为 true、当前时间未超过 valid_until、未检测到
|
|
|
|
|
|
|
|
|
|
|
|
明显时间回拨。
|
|
|
|
|
|
|
|
|
|
|
|
f) 联网校验成功后更新 last_online_verified_at 和本地缓存策略。
|
|
|
|
|
|
|
|
|
|
|
|
g) 每次成功启动后更新 last_success_run_at。
|
|
|
|
|
|
|
|
|
|
|
|
6 Manifest 设计
|
|
|
|
|
|
|
|
|
|
|
|
manifest 必须是当前版本的全量受控文件清单。
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
platform
|
|
|
|
|
|
|
|
|
|
|
|
arch
|
|
|
|
|
|
|
|
|
|
|
|
manifest_seq
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
files
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
|
|
|
|
|
|
规则:
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
windows
|
|
|
|
|
|
|
|
|
|
|
|
x64
|
|
|
|
|
|
|
|
|
|
|
|
3001
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
[{"path": "Launcher.exe", "sha256": "aaa", "size":
|
|
|
|
|
|
|
|
|
|
|
|
123456, "executable": true}, {"path": "MainApp.exe",
|
|
|
|
|
|
|
|
|
|
|
|
"sha256": "bbb", "size": 223456, "executable": true},
|
|
|
|
|
|
|
|
|
|
|
|
{"path": "Updater.exe", "sha256": "ccc", "size": 323456,
|
|
|
|
|
|
|
|
|
|
|
|
"executable": true}, {"path": "plugins/demo_plugin.dll",
|
|
|
|
|
|
|
|
|
|
|
|
"sha256": "ddd", "size": 423456, "executable": false}]
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
a) manifest 中列出的文件必须存在。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
b) manifest 中列出的文件 hash 必须一致。
|
|
|
|
|
|
|
|
|
|
|
|
c) 受控目录下未在 manifest 中出现的 exe、dll 文件应视为异常。
|
|
|
|
|
|
|
|
|
|
|
|
d) manifest 必须由服务端私钥签名。
|
|
|
|
|
|
|
|
|
|
|
|
e) 客户端使用内置公钥验证 manifest。
|
|
|
|
|
|
|
|
|
|
|
|
f) manifest 应支持版本号、通道、平台、架构。
|
|
|
|
|
|
|
|
|
|
|
|
7 启动票据设计
|
|
|
|
|
|
|
|
|
|
|
|
Launcher 启动 MainApp 时生成短期启动票据。
|
|
|
|
|
|
|
|
|
|
|
|
推荐方式:
|
|
|
|
|
|
|
|
|
|
|
|
a) Launcher 生成 ticket 文件。
|
|
|
|
|
|
|
|
|
|
|
|
b) ticket 文件存放到系统临时目录。
|
|
|
|
|
|
|
|
|
|
|
|
c) Launcher 启动 MainApp,并传入 ticket 文件路径。
|
|
|
|
|
|
|
|
|
|
|
|
d) MainApp 读取并验证 ticket。
|
|
|
|
|
|
|
|
|
|
|
|
e) MainApp 验证成功后删除 ticket 文件。
|
|
|
|
|
|
|
|
|
|
|
|
启动参数示例:
|
|
|
|
|
|
|
|
|
|
|
|
项目
|
|
|
|
|
|
|
|
|
|
|
|
启动参数
|
|
|
|
|
|
|
|
|
|
|
|
示例
|
|
|
|
|
|
|
|
|
|
|
|
MainApp.exe --ticket-
|
|
|
|
|
|
|
|
|
|
|
|
ticket 内容:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
payload
|
|
|
|
|
|
|
|
|
|
|
|
file=C:\Users\xxx\AppData\Local\Temp\marsco_ticket_xxx.json
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
{"app_id": "marsco_demo_app", "client_id":
|
|
|
|
|
|
|
|
|
|
|
|
"client_xxx", "device_id": "device_xxx", "version":
|
|
|
|
|
|
|
|
|
|
|
|
"1.0.0", "nonce": "uuid_xxx", "issued_at": "2026-06-
|
|
|
|
|
|
|
|
|
|
|
|
23T10:00:00Z", "expires_at": "2026-06-23T10:01:00Z"}
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
校验规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 签名正确。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
b) 未过期。
|
|
|
|
|
|
|
|
|
|
|
|
c) app_id 一致。
|
|
|
|
|
|
|
|
|
|
|
|
d) client_id 一致。
|
|
|
|
|
|
|
|
|
|
|
|
e) device_id 一致。
|
|
|
|
|
|
|
|
|
|
|
|
f) version 一致。
|
|
|
|
|
|
|
|
|
|
|
|
g) nonce 未重复使用。
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶段可由 Launcher 生成本地签名票据。正式阶段需要区分
|
|
|
|
|
|
|
|
|
|
|
|
启动票据和服务端版本策略,真正的版本准入仍以服务端签名策略为
|
|
|
|
|
|
|
|
|
|
|
|
准。
|
|
|
|
|
|
|
|
|
|
|
|
启动票据安全边界:
|
|
|
|
|
|
|
|
|
|
|
|
a) 启动票据只用于防止普通用户直接双击 MainApp 绕过 Launcher。
|
|
|
|
|
|
|
|
|
|
|
|
b) 启动票据不能替代 version_policy、manifest 和 client_identity 的
|
|
|
|
|
|
|
|
|
|
|
|
服务端签名校验。
|
|
|
|
|
|
|
|
|
|
|
|
c) 客户端不得保存服务端私钥。
|
|
|
|
|
|
|
|
|
|
|
|
d) Demo 阶段的本地票据签名密钥只用于本机进程间启动校验,不
|
|
|
|
|
|
|
|
|
|
|
|
用于签发版本策略、manifest 或设备身份。
|
|
|
|
|
|
|
|
|
|
|
|
e) 即使启动票据校验通过,MainApp 仍必须验证本地版本策略签名、
|
|
|
|
|
|
|
|
|
|
|
|
有效期、版本号和核心文件 hash。
|
|
|
|
|
|
|
|
|
|
|
|
8 客户端启动逻辑
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄8.1 Launcher 启动逻辑
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
图 1 Launcher 启动准入流程
|
|
|
|
|
|
|
|
|
|
|
|
流程步骤:
|
|
|
|
|
|
|
|
|
|
|
|
步骤
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
判断或处理
|
|
|
|
|
|
|
|
|
|
|
|
结果
|
|
|
|
|
|
|
|
|
|
|
|
启动 Launcher,读取
|
|
|
|
|
|
|
|
|
|
|
|
获得本地配置和设备身份
|
|
|
|
|
|
|
|
|
|
|
|
app_config 和 client_identity
|
|
|
|
|
|
|
|
|
|
|
|
验证 client_identity 签名
|
|
|
|
|
|
|
|
|
|
|
|
身份无效时拒绝继续
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
尝试请求 /update/check
|
|
|
|
|
|
|
|
|
|
|
|
联网成功时进入在线策略校验
|
|
|
|
|
|
|
|
|
|
|
|
验证服务端返回策略签名,更新
|
|
|
|
|
|
|
|
|
|
|
|
获得最新运行策略
|
|
|
|
|
|
|
|
|
|
|
|
version_policy
|
|
|
|
|
|
|
|
|
|
|
|
联网失败时读取本地
|
|
|
|
|
|
|
|
|
|
|
|
进入离线策略校验
|
|
|
|
|
|
|
|
|
|
|
|
version_policy
|
|
|
|
|
|
|
|
|
|
|
|
验证本地策略签名、
|
|
|
|
|
|
|
|
|
|
|
|
离线策略无效时拒绝启动
|
|
|
|
|
|
|
|
|
|
|
|
valid_until、offline_allowed
|
|
|
|
|
|
|
|
|
|
|
|
检查本地核心文件 hash
|
|
|
|
|
|
|
|
|
|
|
|
核心文件异常时进入更新或提示
|
|
|
|
|
|
|
|
|
|
|
|
判断是否允许运行
|
|
|
|
|
|
|
|
|
|
|
|
允许时生成启动票据并启动
|
|
|
|
|
|
|
|
|
|
|
|
MainApp
|
|
|
|
|
|
|
|
|
|
|
|
不允许运行或强制升级
|
|
|
|
|
|
|
|
|
|
|
|
启动 Updater 或提示用户更新
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄8.2 MainApp 启动逻辑
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
图 2 MainApp 启动校验流程
|
|
|
|
|
|
|
|
|
|
|
|
流程步骤:
|
|
|
|
|
|
|
|
|
|
|
|
步骤
|
|
|
|
|
|
|
|
|
|
|
|
判断或处理
|
|
|
|
|
|
|
|
|
|
|
|
结果
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
|
|
|
|
启动 MainApp,检查启动参数中
|
|
|
|
|
|
|
|
|
|
|
|
无票据时提示通过启动器启动并
|
|
|
|
|
|
|
|
|
|
|
|
是否存在 ticket-file
|
|
|
|
|
|
|
|
|
|
|
|
退出
|
|
|
|
|
|
|
|
|
|
|
|
读取 ticket
|
|
|
|
|
|
|
|
|
|
|
|
获得启动票据内容
|
|
|
|
|
|
|
|
|
|
|
|
验证 ticket 签名和有效期
|
|
|
|
|
|
|
|
|
|
|
|
票据无效时拒绝启动
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
验证 version_policy
|
|
|
|
|
|
|
|
|
|
|
|
策略无效时拒绝启动
|
|
|
|
|
|
|
|
|
|
|
|
验证当前版本是否允许运行
|
|
|
|
|
|
|
|
|
|
|
|
禁用版本或过期策略进入拦截
|
|
|
|
|
|
|
|
|
|
|
|
验证核心 DLL hash
|
|
|
|
|
|
|
|
|
|
|
|
核心文件异常时拒绝启动
|
|
|
|
|
|
|
|
|
|
|
|
校验通过
|
|
|
|
|
|
|
|
|
|
|
|
进入主界面
|
|
|
|
|
|
|
|
|
|
|
|
主界面运行期间
|
|
|
|
|
|
|
|
|
|
|
|
启动定时器,定期检查更新
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
8.3 Updater 升级逻辑
|
|
|
|
|
|
|
|
|
|
|
|
图 3 Updater 升级与回滚流程
|
|
|
|
|
|
|
|
|
|
|
|
流程步骤:
|
|
|
|
|
|
|
|
|
|
|
|
步骤
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
判断或处理
|
|
|
|
|
|
|
|
|
|
|
|
结果
|
|
|
|
|
|
|
|
|
|
|
|
启动 Updater,读取升级参数
|
|
|
|
|
|
|
|
|
|
|
|
获得目标版本和升级上下文
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
9 REST API 设计
|
|
|
|
|
|
9.1 检查更新接口
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
接口:
|
|
|
|
|
|
|
|
|
|
|
|
请求:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
请求 /update/check,获取目标
|
|
|
|
|
|
|
|
|
|
|
|
获得版本清单
|
|
|
|
|
|
|
|
|
|
|
|
版本 manifest
|
|
|
|
|
|
|
|
|
|
|
|
验证 manifest 签名
|
|
|
|
|
|
|
|
|
|
|
|
签名无效时停止升级
|
|
|
|
|
|
|
|
|
|
|
|
扫描本地文件并对比 manifest
|
|
|
|
|
|
|
|
|
|
|
|
生成待下载文件列表
|
|
|
|
|
|
|
|
|
|
|
|
全量 hash
|
|
|
|
|
|
|
|
|
|
|
|
请求临时下载 URL
|
|
|
|
|
|
|
|
|
|
|
|
获得短期下载地址
|
|
|
|
|
|
|
|
|
|
|
|
下载文件到 staging 并校验
|
|
|
|
|
|
|
|
|
|
|
|
下载文件可用于替换
|
|
|
|
|
|
|
|
|
|
|
|
hash
|
|
|
|
|
|
|
|
|
|
|
|
通知 MainApp 退出并等待完全退
|
|
|
|
|
|
|
|
|
|
|
|
进入文件替换窗口
|
|
|
|
|
|
|
|
|
|
|
|
出
|
|
|
|
|
|
|
|
|
|
|
|
备份旧文件到 backup
|
|
|
|
|
|
|
|
|
|
|
|
形成可回滚状态
|
|
|
|
|
|
|
|
|
|
|
|
替换新文件并执行安装后全量校
|
|
|
|
|
|
|
|
|
|
|
|
校验通过后启动 MainApp
|
|
|
|
|
|
|
|
|
|
|
|
验
|
|
|
|
|
|
|
|
|
|
|
|
上报升级成功
|
|
|
|
|
|
|
|
|
|
|
|
任一步骤失败
|
|
|
|
|
|
|
|
|
|
|
|
服务端记录升级结果
|
|
|
|
|
|
|
|
|
|
|
|
执行回滚并上报失败原因
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/update/check
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
device_xxx
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄license_id
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
|
|
|
|
|
|
target_version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
platform
|
|
|
|
|
|
|
|
|
|
|
|
arch
|
|
|
|
|
|
|
|
|
|
|
|
operation
|
|
|
|
|
|
|
|
|
|
|
|
返回:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
allow_run
|
|
|
|
|
|
|
|
|
|
|
|
action
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
|
|
|
|
|
|
latest_version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
license_xxx
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
windows
|
|
|
|
|
|
|
|
|
|
|
|
x64
|
|
|
|
|
|
|
|
|
|
|
|
check
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
|
|
optional_update
|
|
|
|
|
|
|
|
|
|
|
|
发现新版本
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
False
|
|
|
|
|
|
|
|
|
|
|
|
False
|
|
|
|
|
|
|
|
|
|
|
|
1025
|
|
|
|
|
|
|
|
|
|
|
|
policy_valid_until
|
|
|
|
|
|
|
|
|
|
|
|
2026-07-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
manifest_xxx
|
|
|
|
|
|
|
|
|
|
|
|
https://download.example.com/xxx
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
manifest_id
|
|
|
|
|
|
|
|
|
|
|
|
manifest_url
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
|
|
|
|
|
|
action 可选值:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
allow
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
optional_update
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
blocked
|
|
|
|
|
|
|
|
|
|
|
|
rollback_allowed
|
|
|
|
|
|
|
|
|
|
|
|
rollback_denied
|
|
|
|
|
|
|
|
|
|
|
|
license_invalid
|
|
|
|
|
|
|
|
|
|
|
|
device_invalid
|
|
|
|
|
|
|
|
|
|
|
|
policy_expired
|
|
|
|
|
|
|
|
|
|
|
|
operation 可选值:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
check
|
|
|
|
|
|
|
|
|
|
|
|
upgrade
|
|
|
|
|
|
|
|
|
|
|
|
downgrade
|
|
|
|
|
|
|
|
|
|
|
|
当 operation 为 downgrade 时,客户端必须传入 target_version。服务
|
|
|
|
|
|
|
|
|
|
|
|
端需要判断目标版本是否存在、是否属于当前通道、是否允许降级、
|
|
|
|
|
|
|
|
|
|
|
|
是否满足最低支持版本和数据兼容规则。
|
|
|
|
|
|
|
|
|
|
|
|
降级检查返回示例:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
allow_run
|
|
|
|
|
|
|
|
|
|
|
|
action
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
|
|
|
|
|
|
latest_version
|
|
|
|
|
|
|
|
|
|
|
|
target_version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
|
|
rollback_allowed
|
|
|
|
|
|
|
|
|
|
|
|
允许降级到 1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄force_update
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
False
|
|
|
|
|
|
|
|
|
|
|
|
True
|
|
|
|
|
|
|
|
|
|
|
|
1030
|
|
|
|
|
|
|
|
|
|
|
|
policy_valid_until
|
|
|
|
|
|
|
|
|
|
|
|
2026-07-23T00:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
manifest_id
|
|
|
|
|
|
|
|
|
|
|
|
manifest_url
|
|
|
|
|
|
|
|
|
|
|
|
manifest_1_0_0
|
|
|
|
|
|
|
|
|
|
|
|
https://download.example.com/manifest-1.0.0.json
|
|
|
|
|
|
|
|
|
|
|
|
signature
|
|
|
|
|
|
9.2 获取下载链接接口
|
|
|
|
|
|
|
|
|
|
|
|
base64_signature
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
接口:
|
|
|
|
|
|
|
|
|
|
|
|
请求:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
files
|
|
|
|
|
|
|
|
|
|
|
|
返回:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
expires_in
|
|
|
|
|
|
|
|
|
|
|
|
files
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/update/download-url
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
device_xxx
|
|
|
|
|
|
|
|
|
|
|
|
license_xxx
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
["MainApp.exe", "plugins/demo_plugin.dll"]
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
600
|
|
|
|
|
|
|
|
|
|
|
|
[{"path": "MainApp.exe", "url":
|
|
|
|
|
|
|
|
|
|
|
|
"https://oss.example.com/temp-url-1", "sha256":
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
"bbb", "size": 223456}, {"path":
|
|
|
|
|
|
|
|
|
|
|
|
"plugins/demo_plugin.dll", "url":
|
|
|
|
|
|
|
|
|
|
|
|
"https://oss.example.com/temp-url-2", "sha256":
|
|
|
|
|
|
|
|
|
|
|
|
"ddd", "size": 423456}]
|
|
|
|
|
|
|
|
|
|
|
|
9.3 升级结果上报接口
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
接口:
|
|
|
|
|
|
|
|
|
|
|
|
请求:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
from_version
|
|
|
|
|
|
|
|
|
|
|
|
to_version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
result
|
|
|
|
|
|
|
|
|
|
|
|
error_code
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
started_at
|
|
|
|
|
|
|
|
|
|
|
|
finished_at
|
|
|
|
|
|
|
|
|
|
|
|
result 可选:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
success
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/update/report
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
device_xxx
|
|
|
|
|
|
|
|
|
|
|
|
license_xxx
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
1.0.2
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
success
|
|
|
|
|
|
|
|
|
|
|
|
upgrade success
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T10:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T10:05:00Z
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
download_failed
|
|
|
|
|
|
|
|
|
|
|
|
hash_failed
|
|
|
|
|
|
|
|
|
|
|
|
signature_failed
|
|
|
|
|
|
|
|
|
|
|
|
replace_failed
|
|
|
|
|
|
|
|
|
|
|
|
rollback_success
|
|
|
|
|
|
|
|
|
|
|
|
rollback_failed
|
|
|
|
|
|
|
|
|
|
|
|
permission_failed
|
|
|
|
|
|
|
|
|
|
|
|
disk_space_not_enough
|
|
|
|
|
|
|
|
|
|
|
|
mainapp_restart_failed
|
|
|
|
|
|
9.4 设备身份签发接口(非用户登录)
|
|
|
|
|
|
|
|
|
|
|
|
该接口用于首次签发或刷新设备身份凭证,不是客户端用户登录
|
|
|
|
|
|
|
|
|
|
|
|
接口。
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶 段 可 不 暴 露 该 接 口 , 由 测 试 数 据 或 预 置 文 件 生 成
|
|
|
|
|
|
|
|
|
|
|
|
client_identity.dat。正式阶段如需启用,也应定位为设备激活/身份签
|
|
|
|
|
|
|
|
|
|
|
|
发能力,而不是用户名密码登录。
|
|
|
|
|
|
|
|
|
|
|
|
接口:
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
请求:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
activation_code
|
|
|
|
|
|
|
|
|
|
|
|
device_fingerprint
|
|
|
|
|
|
|
|
|
|
|
|
platform
|
|
|
|
|
|
|
|
|
|
|
|
arch
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/device/activate
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
marsco_demo_app
|
|
|
|
|
|
|
|
|
|
|
|
XXXX-XXXX-XXXX
|
|
|
|
|
|
|
|
|
|
|
|
device_hash_xxx
|
|
|
|
|
|
|
|
|
|
|
|
windows
|
|
|
|
|
|
|
|
|
|
|
|
x64
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄返回:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
identity_token
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
client_xxx
|
|
|
|
|
|
|
|
|
|
|
|
device_xxx
|
|
|
|
|
|
|
|
|
|
|
|
license_xxx
|
|
|
|
|
|
|
|
|
|
|
|
stable
|
|
|
|
|
|
|
|
|
|
|
|
{"valid_until": "2026-12-31T00:00:00Z", "signature":
|
|
|
|
|
|
|
|
|
|
|
|
"base64_signature"}
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶段可以简化为预置 client_id,不做复杂激活流程。
|
|
|
|
|
|
|
|
|
|
|
|
9.5 管理后台管理员登录接口(非本期普通客户端用户登录)
|
|
|
|
|
|
|
|
|
|
|
|
该接口仅用于管理后台管理员登录,与本期普通客户端用户无关。
|
|
|
|
|
|
|
|
|
|
|
|
普通客户端用户在本期客户端不登录,不调用该接口,也不持有该接
|
|
|
|
|
|
|
|
|
|
|
|
口返回的后台访问令牌。
|
|
|
|
|
|
|
|
|
|
|
|
后续如增加普通用户登录,应单独设计客户端用户登录接口、用
|
|
|
|
|
|
|
|
|
|
|
|
户授权模型和用户权限校验逻辑,不复用管理后台管理员登录接口。
|
|
|
|
|
|
|
|
|
|
|
|
Demo 阶段可使用单管理员账号。正式阶段可扩展为多管理员、角
|
|
|
|
|
|
|
|
|
|
|
|
色权限、双因素认证或企业单点登录。
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
接口:
|
|
|
|
|
|
|
|
|
|
|
|
请求:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
username
|
|
|
|
|
|
|
|
|
|
|
|
password
|
|
|
|
|
|
|
|
|
|
|
|
返回:
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/login
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
admin
|
|
|
|
|
|
|
|
|
|
|
|
password
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
jwt_or_session_token
|
|
|
|
|
|
|
|
|
|
|
|
Bearer
|
|
|
|
|
|
|
|
|
|
|
|
7200
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
access_token
|
|
|
|
|
|
|
|
|
|
|
|
token_type
|
|
|
|
|
|
|
|
|
|
|
|
expires_in
|
|
|
|
|
|
|
|
|
|
|
|
要求:
|
|
|
|
|
|
|
|
|
|
|
|
a) 密码不得明文存储。
|
|
|
|
|
|
|
|
|
|
|
|
b) 登录失败应记录审计日志。
|
|
|
|
|
|
|
|
|
|
|
|
c) 管理后台接口必须校验管理员 token。
|
|
|
|
|
|
|
|
|
|
|
|
d) Demo 阶段可不实现复杂角色权限,但必须区分未登录和已登录
|
|
|
|
|
|
|
|
|
|
|
|
管理员;该状态只存在于管理后台,不存在于本期普通客户端。
|
|
|
|
|
|
|
|
|
|
|
|
9.6 管理后台接口摘要
|
|
|
|
|
|
|
|
|
|
|
|
第一版 Demo 至少需要以下后台接口:
|
|
|
|
|
|
|
|
|
|
|
|
方法
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
POST
|
|
|
|
|
|
|
|
|
|
|
|
GET
|
|
|
|
|
|
|
|
|
|
|
|
GET
|
|
|
|
|
|
|
|
|
|
|
|
GET
|
|
|
|
|
|
|
|
|
|
|
|
路径
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/apps
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/channels
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/versions
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/versions/{version_id}/files
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/versions/{version_id}/publish
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/policies
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/policies/{policy_id}/force-update
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/policies/{policy_id}/block
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/policies/{policy_id}/rollback
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/download-logs
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/upgrade-logs
|
|
|
|
|
|
|
|
|
|
|
|
/api/v1/admin/audit-logs
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
后台接口规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 所有后台接口都需要管理员 token。
|
|
|
|
|
|
|
|
|
|
|
|
b) 发布版本时生成 manifest、计算文件 hash 并写入版本文件表。
|
|
|
|
|
|
|
|
|
|
|
|
c) 修改强制升级、禁用、降级策略时必须生成新的 policy_seq。
|
|
|
|
|
|
|
|
|
|
|
|
d) 每次关键操作必须写入管理员操作记录。
|
|
|
|
|
|
|
|
|
|
|
|
e) Demo 阶段可使用简化管理页面或 API 调试页面完成后台操作。
|
|
|
|
|
|
|
|
|
|
|
|
10 数据库设计
|
|
|
|
|
|
10.1 应用表 apps
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
app_name
|
|
|
|
|
|
|
|
|
|
|
|
description
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
10.2 版本通道表 channels
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
channel_name
|
|
|
|
|
|
|
|
|
|
|
|
enabled
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
示例:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
stable / 正式版
|
|
|
|
|
|
|
|
|
|
|
|
preview / 预览版
|
|
|
|
|
|
|
|
|
|
|
|
internal / 内测版
|
|
|
|
|
|
|
|
|
|
|
|
customer_a / 客户专版
|
|
|
|
|
|
10.3 版本表 versions
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
version_name
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
is_latest
|
|
|
|
|
|
|
|
|
|
|
|
release_notes
|
|
|
|
|
|
|
|
|
|
|
|
offline_allowed
|
|
|
|
|
|
|
|
|
|
|
|
offline_valid_days
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
rollback_targets
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
published_at
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
status 可选:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
draft
|
|
|
|
|
|
|
|
|
|
|
|
published
|
|
|
|
|
|
|
|
|
|
|
|
deprecated
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
blocked
|
|
|
|
|
|
|
|
|
|
|
|
archived
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
|
|
|
|
|
|
|
|
|
|
|
a) allow_rollback 表示该版本是否允许作为降级目标。
|
|
|
|
|
|
|
|
|
|
|
|
b) rollback_targets 可为空;为空时表示不允许主动降级到其他版本。
|
|
|
|
|
|
|
|
|
|
|
|
c) 如果需要精确控制降级目标,rollback_targets 记录允许降级到的
|
|
|
|
|
|
|
|
|
|
|
|
版本列表,或拆分为独立版本关系表。
|
|
|
|
|
|
|
|
|
|
|
|
10.4 版本文件表 version_files
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
version_id
|
|
|
|
|
|
|
|
|
|
|
|
relative_path
|
|
|
|
|
|
|
|
|
|
|
|
storage_key
|
|
|
|
|
|
|
|
|
|
|
|
sha256
|
|
|
|
|
|
|
|
|
|
|
|
size
|
|
|
|
|
|
|
|
|
|
|
|
file_type
|
|
|
|
|
|
|
|
|
|
|
|
is_required
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
10.5 版本策略表 version_policies
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
allow_run
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
rollback_targets
|
|
|
|
|
|
|
|
|
|
|
|
offline_allowed
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
min_supported_version
|
|
|
|
|
|
|
|
|
|
|
|
latest_version
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
说明:
|
|
|
|
|
|
|
|
|
|
|
|
a) 每次策略变更必须递增 policy_seq。
|
|
|
|
|
|
|
|
|
|
|
|
b) 客户端记录已见过的最大 policy_seq,检测到倒退时拒绝使用。
|
|
|
|
|
|
|
|
|
|
|
|
c) allow_rollback 表示当前策略是否允许降级。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
d) rollback_targets 用于限制允许降级的目标版本;未命中目标版本
|
|
|
|
|
|
|
|
|
|
|
|
时返回 rollback_denied。
|
|
|
|
|
|
|
|
|
|
|
|
10.6 设备表 devices
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
first_seen_at
|
|
|
|
|
|
|
|
|
|
|
|
last_seen_at
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
status 可选:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
active
|
|
|
|
|
|
|
|
|
|
|
|
disabled
|
|
|
|
|
|
|
|
|
|
|
|
suspicious
|
|
|
|
|
|
|
|
|
|
|
|
expired
|
|
|
|
|
|
10.7 授权表 licenses
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
customer_name
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
max_devices
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
10.8 下载日志表 download_logs
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
file_path
|
|
|
|
|
|
|
|
|
|
|
|
file_size
|
|
|
|
|
|
|
|
|
|
|
|
ip
|
|
|
|
|
|
|
|
|
|
|
|
user_agent
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
result
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
10.9 升级日志表 upgrade_logs
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel_code
|
|
|
|
|
|
|
|
|
|
|
|
from_version
|
|
|
|
|
|
|
|
|
|
|
|
to_version
|
|
|
|
|
|
|
|
|
|
|
|
result
|
|
|
|
|
|
|
|
|
|
|
|
error_code
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
started_at
|
|
|
|
|
|
|
|
|
|
|
|
finished_at
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
10.10 管理员表 admin_users
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
username
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
password_hash
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
last_login_at
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
status 可选:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
active
|
|
|
|
|
|
|
|
|
|
|
|
disabled
|
|
|
|
|
|
|
|
|
|
|
|
规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 密码只保存 hash,不保存明文。
|
|
|
|
|
|
|
|
|
|
|
|
b) Demo 阶段可预置一个管理员账号。
|
|
|
|
|
|
|
|
|
|
|
|
c) 正式阶段可扩展角色、权限、双因素认证和单点登录。
|
|
|
|
|
|
|
|
|
|
|
|
10.11 管理员操作日志表 admin_audit_logs
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
id
|
|
|
|
|
|
|
|
|
|
|
|
admin_user_id
|
|
|
|
|
|
|
|
|
|
|
|
action
|
|
|
|
|
|
|
|
|
|
|
|
target_type
|
|
|
|
|
|
|
|
|
|
|
|
target_id
|
|
|
|
|
|
|
|
|
|
|
|
before_data
|
|
|
|
|
|
|
|
|
|
|
|
after_data
|
|
|
|
|
|
|
|
|
|
|
|
ip
|
|
|
|
|
|
|
|
|
|
|
|
user_agent
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
需要记录的关键操作:
|
|
|
|
|
|
|
|
|
|
|
|
a) 登录成功和登录失败。
|
|
|
|
|
|
|
|
|
|
|
|
b) 创建或发布版本。
|
|
|
|
|
|
|
|
|
|
|
|
c) 上传版本文件。
|
|
|
|
|
|
|
|
|
|
|
|
d) 修改强制升级策略。
|
|
|
|
|
|
|
|
|
|
|
|
e) 禁用或恢复版本。
|
|
|
|
|
|
|
|
|
|
|
|
f) 修改降级策略。
|
|
|
|
|
|
|
|
|
|
|
|
g) 生成离线更新包。
|
|
|
|
|
|
|
|
|
|
|
|
h) 禁用或恢复设备。
|
|
|
|
|
|
|
|
|
|
|
|
11 对象存储目录设计
|
|
|
|
|
|
|
|
|
|
|
|
建议对象存储目录如下:
|
|
|
|
|
|
|
|
|
|
|
|
对象路径
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/
|
|
|
|
|
|
|
|
|
|
|
|
内容
|
|
|
|
|
|
|
|
|
|
|
|
应用根目录
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/
|
|
|
|
|
|
|
|
|
|
|
|
版本通道目录,例如 stable、
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/
|
|
|
|
|
|
|
|
|
|
|
|
preview
|
|
|
|
|
|
|
|
|
|
|
|
单个版本目录
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/manifest.json
|
|
|
|
|
|
|
|
|
|
|
|
当前版本 manifest
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/manifest.sig
|
|
|
|
|
|
|
|
|
|
|
|
manifest 签名
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/files/
|
|
|
|
|
|
|
|
|
|
|
|
版本文件目录
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/files/Launcher.exe
|
|
|
|
|
|
|
|
|
|
|
|
Launcher 可执行文件
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/files/MainApp.exe
|
|
|
|
|
|
|
|
|
|
|
|
主程序可执行文件
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/files/Updater.exe
|
|
|
|
|
|
|
|
|
|
|
|
升级器可执行文件
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/files/plugins/demo_plugin.dll Demo 插件 DLL
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/offline/
|
|
|
|
|
|
|
|
|
|
|
|
离线更新包目录
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
updates/{app_id}/{channel}/{version}/offline/{package}.upd
|
|
|
|
|
|
|
|
|
|
|
|
离线更新包
|
|
|
|
|
|
|
|
|
|
|
|
规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 已发布版本目录不可覆盖。
|
|
|
|
|
|
|
|
|
|
|
|
b) 如果要修复,应发布新版本号。
|
|
|
|
|
|
|
|
|
|
|
|
c) manifest 与 files 必须保持一致。
|
|
|
|
|
|
|
|
|
|
|
|
d) 离线包由同一套 manifest 生成。
|
|
|
|
|
|
|
|
|
|
|
|
e) 对象存储 bucket 正式环境应设置为私有。
|
|
|
|
|
|
|
|
|
|
|
|
12 Hash 校验策略
|
|
|
|
|
|
|
|
|
|
|
|
系统采用 SHA-256 作为文件 hash 算法。
|
|
|
|
|
|
|
|
|
|
|
|
规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 服务端发布时计算所有受控文件 hash。
|
|
|
|
|
|
|
|
|
|
|
|
b) manifest 包含全量受控文件 hash。
|
|
|
|
|
|
|
|
|
|
|
|
c) 客户端升级前扫描本地文件。
|
|
|
|
|
|
|
|
|
|
|
|
d) 客户端只下载缺失或 hash 不一致的文件。
|
|
|
|
|
|
|
|
|
|
|
|
e) 下载完成后校验下载文件 hash。
|
|
|
|
|
|
|
|
|
|
|
|
f) 文件替换完成后执行全量 hash 校验。
|
|
|
|
|
|
|
|
|
|
|
|
g) 启动时执行核心文件 hash 校验。
|
|
|
|
|
|
|
|
|
|
|
|
h) 插件目录执行白名单检查。
|
|
|
|
|
|
|
|
|
|
|
|
结论:
|
|
|
|
|
|
|
|
|
|
|
|
更新可以增量,校验必须全量。
|
|
|
|
|
|
|
|
|
|
|
|
13 签名策略
|
|
|
|
|
|
|
|
|
|
|
|
签名采用非对称签名机制。Demo 阶段建议使用 Ed25519;如果现
|
|
|
|
|
|
|
|
|
|
|
|
有技术栈不方便支持 Ed25519,可使用 RSA-2048 / SHA-256,但同一
|
|
|
|
|
|
|
|
|
|
|
|
套 Demo 中必须固定一种算法。
|
|
|
|
|
|
|
|
|
|
|
|
规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 服务端保存私钥。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
b) 客户端内置公钥。
|
|
|
|
|
|
|
|
|
|
|
|
c) version_policy 必须签名。
|
|
|
|
|
|
|
|
|
|
|
|
d) manifest 必须签名。
|
|
|
|
|
|
|
|
|
|
|
|
e) client_identity 必须签名。
|
|
|
|
|
|
|
|
|
|
|
|
f) 离线更新包必须签名。
|
|
|
|
|
|
|
|
|
|
|
|
g) 客户端验证签名失败时拒绝启动或拒绝安装。
|
|
|
|
|
|
|
|
|
|
|
|
客户端不得保存服务端私钥。
|
|
|
|
|
|
|
|
|
|
|
|
签名数据规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 被签名对象必须包含 signature_alg 和 key_id。
|
|
|
|
|
|
|
|
|
|
|
|
b) 计算签名前必须移除 signature 字段。
|
|
|
|
|
|
|
|
|
|
|
|
c) JSON 签名载荷必须使用稳定序列化规则:字段按字典序排序、无
|
|
|
|
|
|
|
|
|
|
|
|
多余空白、UTF-8 编码。
|
|
|
|
|
|
|
|
|
|
|
|
d) 时间字段统一使用 UTC ISO-8601 格式。
|
|
|
|
|
|
|
|
|
|
|
|
e) 客户端根据 key_id 选择内置公钥进行验签。
|
|
|
|
|
|
|
|
|
|
|
|
f) 公钥轮换时,客户端可同时内置当前公钥和上一个公钥。
|
|
|
|
|
|
|
|
|
|
|
|
g) 签名失败返回或记录 signature_failed。
|
|
|
|
|
|
|
|
|
|
|
|
version_policy 签名字段至少包括:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
policy_seq
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
current_version
|
|
|
|
|
|
|
|
|
|
|
|
allow_run
|
|
|
|
|
|
|
|
|
|
|
|
force_update
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
allow_rollback
|
|
|
|
|
|
|
|
|
|
|
|
rollback_targets
|
|
|
|
|
|
|
|
|
|
|
|
offline_allowed
|
|
|
|
|
|
|
|
|
|
|
|
issued_at
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
latest_version
|
|
|
|
|
|
|
|
|
|
|
|
min_supported_version
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
signature_alg
|
|
|
|
|
|
|
|
|
|
|
|
key_id
|
|
|
|
|
|
|
|
|
|
|
|
manifest 签名字段至少包括:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
version
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
platform
|
|
|
|
|
|
|
|
|
|
|
|
arch
|
|
|
|
|
|
|
|
|
|
|
|
manifest_seq
|
|
|
|
|
|
|
|
|
|
|
|
created_at
|
|
|
|
|
|
|
|
|
|
|
|
files
|
|
|
|
|
|
|
|
|
|
|
|
signature_alg
|
|
|
|
|
|
|
|
|
|
|
|
key_id
|
|
|
|
|
|
|
|
|
|
|
|
client_identity 签名字段至少包括:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
app_id
|
|
|
|
|
|
|
|
|
|
|
|
channel
|
|
|
|
|
|
|
|
|
|
|
|
issued_at
|
|
|
|
|
|
|
|
|
|
|
|
valid_until
|
|
|
|
|
|
|
|
|
|
|
|
signature_alg
|
|
|
|
|
|
|
|
|
|
|
|
key_id
|
|
|
|
|
|
14 限流策略
|
|
|
|
|
|
|
|
|
|
|
|
服务端需要支持多维度限流。
|
|
|
|
|
|
|
|
|
|
|
|
建议限流维度:
|
|
|
|
|
|
|
|
|
|
|
|
a) client_id。
|
|
|
|
|
|
|
|
|
|
|
|
b) device_id。
|
|
|
|
|
|
|
|
|
|
|
|
c) license_id。
|
|
|
|
|
|
|
|
|
|
|
|
d) IP。
|
|
|
|
|
|
|
|
|
|
|
|
e) app_id。
|
|
|
|
|
|
|
|
|
|
|
|
f) version。
|
|
|
|
|
|
|
|
|
|
|
|
g) file_path。
|
|
|
|
|
|
|
|
|
|
|
|
建议限流规则:
|
|
|
|
|
|
|
|
|
|
|
|
维度
|
|
|
|
|
|
|
|
|
|
|
|
client_id
|
|
|
|
|
|
|
|
|
|
|
|
device_id
|
|
|
|
|
|
|
|
|
|
|
|
license_id
|
|
|
|
|
|
|
|
|
|
|
|
IP
|
|
|
|
|
|
|
|
|
|
|
|
超限后返回:
|
|
|
|
|
|
|
|
|
|
|
|
限制
|
|
|
|
|
|
|
|
|
|
|
|
10 分钟内最多请求 10 次下载链接
|
|
|
|
|
|
|
|
|
|
|
|
1 小时内最多下载 3 次完整包
|
|
|
|
|
|
|
|
|
|
|
|
24 小时内最多下载指定额度
|
|
|
|
|
|
|
|
|
|
|
|
10 分钟内最多请求 200 次 API
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
RATE_LIMITED
|
|
|
|
|
|
|
|
|
|
|
|
请求过于频繁,请稍后再试。
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
code
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
15 回滚机制
|
|
|
|
|
|
|
|
|
|
|
|
升级失败时必须支持回滚。
|
|
|
|
|
|
|
|
|
|
|
|
流程:
|
|
|
|
|
|
|
|
|
|
|
|
a) 下载文件到 staging。
|
|
|
|
|
|
|
|
|
|
|
|
b) 校验 hash。
|
|
|
|
|
|
|
|
|
|
|
|
c) 备份当前版本到 backup。
|
|
|
|
|
|
|
|
|
|
|
|
d) 替换文件。
|
|
|
|
|
|
|
|
|
|
|
|
e) 替换完成后执行全量校验。
|
|
|
|
|
|
|
|
|
|
|
|
f) 启动 MainApp 验证。
|
|
|
|
|
|
|
|
|
|
|
|
g) 如果失败,使用 backup 回滚。
|
|
|
|
|
|
|
|
|
|
|
|
h) 回滚后再次校验旧版本文件。
|
|
|
|
|
|
|
|
|
|
|
|
i) 上报回滚结果。
|
|
|
|
|
|
|
|
|
|
|
|
升级事务状态文件:
|
|
|
|
|
|
|
|
|
|
|
|
Updater 应 在 update/ 目 录 下 维 护 事 务 状 态 文 件 , 例 如
|
|
|
|
|
|
|
|
|
|
|
|
update/upgrade_state.json。
|
|
|
|
|
|
|
|
|
|
|
|
字段:
|
|
|
|
|
|
|
|
|
|
|
|
字段
|
|
|
|
|
|
|
|
|
|
|
|
transaction_id
|
|
|
|
|
|
|
|
|
|
|
|
from_version
|
|
|
|
|
|
|
|
|
|
|
|
to_version
|
|
|
|
|
|
|
|
|
|
|
|
status
|
|
|
|
|
|
|
|
|
|
|
|
manifest_id
|
|
|
|
|
|
|
|
|
|
|
|
示例值
|
|
|
|
|
|
|
|
|
|
|
|
uuid_xxx
|
|
|
|
|
|
|
|
|
|
|
|
1.0.0
|
|
|
|
|
|
|
|
|
|
|
|
1.0.1
|
|
|
|
|
|
|
|
|
|
|
|
prepared
|
|
|
|
|
|
|
|
|
|
|
|
manifest_xxx
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T10:00:00Z
|
|
|
|
|
|
|
|
|
|
|
|
2026-06-23T10:01:00Z
|
|
|
|
|
|
|
|
|
|
|
|
update/staging/uuid_xxx
|
|
|
|
|
|
|
|
|
|
|
|
update/backup/uuid_xxx
|
|
|
|
|
|
|
|
|
|
|
|
started_at
|
|
|
|
|
|
|
|
|
|
|
|
updated_at
|
|
|
|
|
|
|
|
|
|
|
|
staging_dir
|
|
|
|
|
|
|
|
|
|
|
|
backup_dir
|
|
|
|
|
|
|
|
|
|
|
|
error_code
|
|
|
|
|
|
|
|
|
|
|
|
message
|
|
|
|
|
|
|
|
|
|
|
|
事务状态:
|
|
|
|
|
|
|
|
|
|
|
|
字段/取值
|
|
|
|
|
|
|
|
|
|
|
|
idle
|
|
|
|
|
|
|
|
|
|
|
|
prepared
|
|
|
|
|
|
|
|
|
|
|
|
downloading
|
|
|
|
|
|
|
|
|
|
|
|
downloaded
|
|
|
|
|
|
|
|
|
|
|
|
verified
|
|
|
|
|
|
|
|
|
|
|
|
waiting_mainapp_exit
|
|
|
|
|
|
|
|
|
|
|
|
backed_up
|
|
|
|
|
|
|
|
|
|
|
|
replacing
|
|
|
|
|
|
|
|
|
|
|
|
replaced
|
|
|
|
|
|
|
|
|
|
|
|
post_verify
|
|
|
|
|
|
|
|
|
|
|
|
committed
|
|
|
|
|
|
|
|
|
|
|
|
rollback_required
|
|
|
|
|
|
|
|
|
|
|
|
rolling_back
|
|
|
|
|
|
|
|
|
|
|
|
rolled_back
|
|
|
|
|
|
|
|
|
|
|
|
failed
|
|
|
|
|
|
|
|
|
|
|
|
状态规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) 下载前进入 prepared。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
b) 下载过程中进入 downloading。
|
|
|
|
|
|
|
|
|
|
|
|
c) 下载完成且 hash 校验通过后进入 verified。
|
|
|
|
|
|
|
|
|
|
|
|
d) MainApp 完全退出后才能进入 backed_up。
|
|
|
|
|
|
|
|
|
|
|
|
e) 备份完成后才能进入 replacing。
|
|
|
|
|
|
|
|
|
|
|
|
f) 替换完成后进入 post_verify 并执行全量 hash 校验。
|
|
|
|
|
|
|
|
|
|
|
|
g) 全量校验成功、MainApp 可启动后进入 committed。
|
|
|
|
|
|
|
|
|
|
|
|
h) 替换后校验失败、启动失败或异常中断时进入 rollback_required。
|
|
|
|
|
|
|
|
|
|
|
|
i) 回滚完成并校验旧版本成功后进入 rolled_back。
|
|
|
|
|
|
|
|
|
|
|
|
j) 回滚失败进入 failed,并提示用户重新安装或联系管理员。
|
|
|
|
|
|
|
|
|
|
|
|
异常恢复规则:
|
|
|
|
|
|
|
|
|
|
|
|
a) Updater 启动时先读取 upgrade_state.json。
|
|
|
|
|
|
|
|
|
|
|
|
b) 如果状态为 downloading、downloaded 或 verified,可以清理 staging
|
|
|
|
|
|
|
|
|
|
|
|
后重新下载。
|
|
|
|
|
|
|
|
|
|
|
|
c) 如果状态为 backed_up、replacing、replaced 或 post_verify,必须
|
|
|
|
|
|
|
|
|
|
|
|
优先尝试回滚。
|
|
|
|
|
|
|
|
|
|
|
|
d) 如果状态为 rollback_required 或 rolling_back,继续执行回滚。
|
|
|
|
|
|
|
|
|
|
|
|
e) 如果状态为 committed 或 rolled_back,可清理旧事务状态。
|
|
|
|
|
|
|
|
|
|
|
|
f) 清理 staging 和 backup 前必须确认事务已提交或已成功回滚。
|
|
|
|
|
|
|
|
|
|
|
|
需要处理的失败类型:
|
|
|
|
|
|
|
|
|
|
|
|
a) 下载失败。
|
|
|
|
|
|
|
|
|
|
|
|
b) hash 失败。
|
|
|
|
|
|
|
|
|
|
|
|
c) 签名失败。
|
|
|
|
|
|
|
|
|
|
|
|
d) 文件占用。
|
|
|
|
|
|
|
|
|
|
|
|
e) 权限不足。
|
|
|
|
|
|
|
|
|
|
|
|
f) 磁盘空间不足。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
g) 替换失败。
|
|
|
|
|
|
|
|
|
|
|
|
h) 启动失败。
|
|
|
|
|
|
|
|
|
|
|
|
i) 回滚失败。
|
|
|
|
|
|
16 Demo 开发里程碑
|
|
|
|
|
|
16.1 第一阶段:基础框架
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) 完成 Launcher、MainApp、Updater 三个 Qt 程序。
|
|
|
|
|
|
|
|
|
|
|
|
b) MainApp 能显示当前版本。
|
|
|
|
|
|
|
|
|
|
|
|
c) MainApp 能加载 demo_plugin.dll。
|
|
|
|
|
|
|
|
|
|
|
|
d) Launcher 能启动 MainApp。
|
|
|
|
|
|
|
|
|
|
|
|
e) MainApp 直接启动时能拒绝进入。
|
|
|
|
|
|
|
|
|
|
|
|
16.2 第二阶段:服务端基础能力
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) 搭建 FastAPI 或 Go API。
|
|
|
|
|
|
|
|
|
|
|
|
b) 搭建 SQLite 数据库。
|
|
|
|
|
|
|
|
|
|
|
|
c) 搭建 MinIO。
|
|
|
|
|
|
|
|
|
|
|
|
d) 实现应用、版本、通道基础数据。
|
|
|
|
|
|
|
|
|
|
|
|
e) 实现 /update/check。
|
|
|
|
|
|
|
|
|
|
|
|
f) 实现 manifest 返回。
|
|
|
|
|
|
16.3 第三阶段:在线更新
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) Updater 下载 manifest。
|
|
|
|
|
|
|
|
|
|
|
|
b) Updater 校验 manifest 签名。
|
|
|
|
|
|
|
|
|
|
|
|
c) Updater 对比本地 hash。
|
|
|
|
|
|
|
|
|
|
|
|
d) Updater 下载差异文件。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
e) Updater 替换 MainApp 和 DLL。
|
|
|
|
|
|
|
|
|
|
|
|
f) Updater 自动重启 MainApp。
|
|
|
|
|
|
|
|
|
|
|
|
16.4 第四阶段:版本策略
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) 支持强制升级。
|
|
|
|
|
|
|
|
|
|
|
|
b) 支持版本禁用。
|
|
|
|
|
|
|
|
|
|
|
|
c) 支持正式版和预览版。
|
|
|
|
|
|
|
|
|
|
|
|
d) 支持动态新增通道。
|
|
|
|
|
|
|
|
|
|
|
|
e) 支持允许降级和禁止降级。
|
|
|
|
|
|
|
|
|
|
|
|
16.5 第五阶段:离线能力
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) 本地缓存 version_policy。
|
|
|
|
|
|
|
|
|
|
|
|
b) 支持离线有效期。
|
|
|
|
|
|
|
|
|
|
|
|
c) 离线凭证未过期时允许启动。
|
|
|
|
|
|
|
|
|
|
|
|
d) 离线凭证过期时禁止启动。
|
|
|
|
|
|
|
|
|
|
|
|
e) 支持离线更新包导入。
|
|
|
|
|
|
16.6 第六阶段:可靠性与安全
|
|
|
|
|
|
|
|
|
|
|
|
目标:
|
|
|
|
|
|
|
|
|
|
|
|
a) 支持升级失败回滚。
|
|
|
|
|
|
|
|
|
|
|
|
b) 支持 policy_seq 防回滚。
|
|
|
|
|
|
|
|
|
|
|
|
c) 支持系统时间回拨检测。
|
|
|
|
|
|
|
|
|
|
|
|
d) 支持插件白名单检查。
|
|
|
|
|
|
|
|
|
|
|
|
e) 支持下载限流。
|
|
|
|
|
|
|
|
|
|
|
|
f) 支持升级日志和下载日志。
|
|
|
|
|
|
|
|
|
|
|
|
17 Demo 验收用例
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
a) 通过 Launcher 正常启动 MainApp。
|
|
|
|
|
|
|
|
|
|
|
|
b) 直接启动 MainApp 被拒绝。
|
|
|
|
|
|
|
|
|
|
|
|
c) MainApp 显示主程序版本和 DLL 版本。
|
|
|
|
|
|
|
|
|
|
|
|
d) 后台发布 1.0.1。
|
|
|
|
|
|
|
|
|
|
|
|
e) 客户端从 1.0.0 升级到 1.0.1。
|
|
|
|
|
|
|
|
|
|
|
|
f) 升级后 DLL 版本变化。
|
|
|
|
|
|
|
|
|
|
|
|
g) 升级后 MainApp 自动重启。
|
|
|
|
|
|
|
|
|
|
|
|
h) 手动篡改 DLL 后启动失败。
|
|
|
|
|
|
|
|
|
|
|
|
i) 手动篡改 version_policy 后启动失败。
|
|
|
|
|
|
|
|
|
|
|
|
j) 后台设置 1.0.0 强制升级后客户端无法继续使用。
|
|
|
|
|
|
|
|
|
|
|
|
k) 后台禁用 1.0.0 后客户端拒绝启动。
|
|
|
|
|
|
|
|
|
|
|
|
l) 后台开放预览版后 preview 客户端获取 preview 更新。
|
|
|
|
|
|
|
|
|
|
|
|
m) 后台关闭降级通道后客户端无法降级。
|
|
|
|
|
|
|
|
|
|
|
|
n) 离线凭证未过期时可以启动。
|
|
|
|
|
|
|
|
|
|
|
|
o) 离线凭证过期后拒绝启动。
|
|
|
|
|
|
|
|
|
|
|
|
p) 模拟升级失败后成功回滚。
|
|
|
|
|
|
|
|
|
|
|
|
18 后续扩展方向
|
|
|
|
|
|
|
|
|
|
|
|
后续可扩展:
|
|
|
|
|
|
|
|
|
|
|
|
a) 完整 License 系统。
|
|
|
|
|
|
|
|
|
|
|
|
b) 客户专版分发。
|
|
|
|
|
|
|
|
|
|
|
|
c) 灰度发布。
|
|
|
|
|
|
|
|
|
|
|
|
d) 多平台支持。
|
|
|
|
|
|
|
|
|
|
|
|
e) Windows 服务模式更新。
|
|
|
|
|
|
|
|
|
|
|
|
f) 管理员权限提权。
|
|
|
|
|
|
|
|
|
|
|
|
g) 代码签名证书。
|
|
|
|
|
|
|
|
|
|
|
|
h) 自动错误收集。
|
|
|
|
|
|
|
|
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO_内部
|
|
|
|
|
|
|
|
|
|
|
|
i) 客户端日志上传。
|
|
|
|
|
|
|
|
|
|
|
|
j) 增量二进制差分更新。
|
|
|
|
|
|
|
|
|
|
|
|
k) 多语言界面。
|
|
|
|
|
|
|
|
|
|
|
|
l) 企业内网镜像站点。
|
|
|
|
|
|
|
2026-07-09 09:17:30 +00:00
|
|
|
|
MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄MARSCO内部资料请勿外泄
|