docs: initialize Online Updater module design

This commit is contained in:
LukeMackin committed 2026-10-23 12:06:17 +08:00
1 parent 9eec4ee8e4
commit e6f98f8002
1 file changed
+41
+41
View File
@@ -0,0 +1,41 @@
# Online Updater
本目录用于 Tendra 更新器的设计与后续实现,开发分支为 `online-updater`。当前仅初始化模块文档,尚未提供可执行更新器。
## 目标平台与语言
- Windows / Linux:Go 更新核心与独立更新助手,分别构建平台与架构版本。
- Android:Kotlin 更新模块,使用系统安装器;共享发布清单与验证规则。
- 配置用于渠道、检查周期、维护窗口和本机受限安装目标,平台执行机制由代码实现。
## 更新来源
从本仓库的 Gitea Releases 获取发布候选与附件。附件包含签名更新清单、平台程序包和受管资源包。更新器内置信任根,不依赖 Git 工作树进行安装;不得内置发布写入令牌或签名私钥。
## 服务端
主程序管理更新器升级,独立更新器更新主程序。分别保留上一可用版本,使用更新锁串行执行,并保留不依赖新主程序或新更新器成功启动的恢复入口。
## 客户端
客户端负责更新页面,独立助手在程序退出或允许的维护时机安装。Android 应用安装遵循系统授权流程,不承诺静默安装或任意 APK 降级。资源文件可独立版本化与恢复。
## 更新事务
发现版本 → 验证签名清单 → 下载与校验 → 兼容性和磁盘检查 → 暂存版本 → 停止目标 → 切换文件集合 → 重启 → 健康检查 → 提交。失败时恢复上一可用版本,记录并通知;中断后依据持久化事务恢复。
程序目录与配置、密钥和用户数据分离。数据库迁移须保持兼容或有明确恢复方案,禁止回退时静默覆盖新增用户数据。更新清单只能请求预定义动作,不能执行任意脚本或修改任意系统路径。
## 初期交付计划
1. 定义签名发布清单、组件兼容性和更新状态。
2. 实现 Gitea 自动检查、下载、验签与全量包处理。
3. 实现 Windows / Linux 安装、重启、健康检查和回退。
4. 验证更新器自身升级、断电与崩溃恢复。
5. 接入 Android 安装流程与受管资源更新。
以上均为待实现事项。
## 公开仓库要求
只提交脱敏源码、通用文档与虚构配置模板。真实配置、凭据、私钥、个人数据、日志和备份禁止进入公开目录或发布附件,临时文件亦适用。