b0987920016b36625516ddec6022d7620e0abff0
SimCAE 更新客户端
update-client 提供了 SimCAE 使用的受控启动和更新运行时。它是作为父 SimCAE 项目的一部分构建的,并不是一个独立的最终用户交付产品。
发布不变量
- 每个受支持的发布版本构建都通过
Launcher启动;直接启动应用程序必须被拒绝。 - 调试构建可能允许本地开发的直接启动,但它们绝不能打包给用户使用。
- 产品配置在配置时选择并嵌入到二进制文件中。安装的
app_config.json不是支持的配置机制。 - 可变的机器状态与产品策略分开保存,并不是授权的来源。
- 由服务器签名的策略、清单、设备凭证以及更新负载验证始终保持权威性。
- 用户可见的源文本是英文。其他语言仅通过本地化资源提供。
- 父级
package_installer目标是唯一支持的最终用户包路径。package_installer_qt已归档且不被支持。
运行时组件
| 组件 | 责任 |
|---|---|
| 启动器 | 验证启动策略、设备状态和已安装文件;检查更新;创建一次性启动凭证。 |
| 更新器 | 下载并验证更改的文件,管理更新事务,需要时请求引导替换,并提交或回滚。 |
| Bootstrap | 替换在更新过程中无法更新的文件,然后继续事务。 |
| 主应用 | 集成示例用于启动票的消费和更新健康报告。SimCAE 在其可执行文件中实现了相同的契约。 |
| 公共 | 共享产品配置、状态、HTTP、身份、策略、完整性以及票务支持。 |
支持的流程
从父级 SimCAE 仓库中进行配置、构建、测试和打包。正常的发布流程是:
git submodule update --init --recursive
cmake --preset SimCAE-release
cmake --build --preset SimCAE-release --target SimCAE
ctest --test-dir out/build/SimCAE-release -C Release --output-on-failure
cmake --build --preset SimCAE-release --target package_installer
不要使用已移除的 PowerShell SDK/客户端打包脚本。它们绕过了父安装规则,且不再代表交付的产品。
请参见 构建和打包 了解前提条件、独立开发者构建、包检查和输出所有权信息。
配置
配置时的源文件选择顺序如下:
config/config.json,如果存在的话。config/app_config.example.json,否则。
所选数据将被验证并嵌入。源文件不会被复制到安装目录中。安装目录中名为 app_config.json 或 client.ini 的文件仅为遗留输入,不得覆盖嵌入的策略。
文档说明
仓库规则
- 保持生产环境的 C、C++和 CMake 文件中不含汉字。添加或更新本地化 UI 文本的翻译资源。
- 通过 CMake 导入目标链接 Qt、OpenSSL 和其他依赖项。绝不要将开发机器的路径添加到仓库中。
- 将发布打包保留在父项目中。此子项目可能会暴露目标和安装规则,但不会生成竞争的安装程序。
- 不要将嵌入资源、本地设置或客户端令牌视为可以抵御机器管理员的机密信息。
- 没有可用启动器/更新运行时的平台必须导致发布配置或打包失败。它不得回退到直接启动。
仓库布局
Bootstrap/ 更新交接可执行文件
Common/ 共享运行时服务
Launcher/ 必要的产品入口点
MainApp/ 集成示例
Updater/ 事务性更新可执行文件
config/ 配置时模板和公共验证材料
docs/ 保持的架构和操作文档
Description
Languages
C++
84.6%
PowerShell
5.8%
Shell
5%
CMake
4.6%