docs(config): require publisher-supplied release license
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
* 通过 CMake 导入目标发现的 OpenSSL
|
* 通过 CMake 导入目标发现的 OpenSSL
|
||||||
* Qt Installer Framework for `package_installer`;和
|
* Qt Installer Framework for `package_installer`;和
|
||||||
* 父仓库中批准的 `3rdparty` 包或由调用者明确提供的 CMake 包提示。
|
* 父仓库中批准的 `3rdparty` 包或由调用者明确提供的 CMake 包提示。
|
||||||
|
* 未跟踪的 `config/config.json`,其中包含真实 API 端点和已签发、非空的 `initial_state.license_key`。
|
||||||
|
|
||||||
仓库的 CMake 文件不得包含指向工作站的绝对路径,强制 调用者的生成器或架构,或手动选择 Debug 和 Release 库目录。依赖项发现必须生成导入的目标,例如 `Qt5::Core`、`OpenSSL::SSL` 和 `OpenSSL::Crypto`。
|
仓库的 CMake 文件不得包含指向工作站的绝对路径,强制 调用者的生成器或架构,或手动选择 Debug 和 Release 库目录。依赖项发现必须生成导入的目标,例如 `Qt5::Core`、`OpenSSL::SSL` 和 `OpenSSL::Crypto`。
|
||||||
|
|
||||||
@@ -65,6 +66,8 @@ cmake --build --preset SimCAE-release --target package_installer
|
|||||||
|
|
||||||
服务器发布仍然是一个显式的发布操作。构建安装程序不会创建或发布服务器版本、策略、清单或许可证。
|
服务器发布仍然是一个显式的发布操作。构建安装程序不会创建或发布服务器版本、策略、清单或许可证。
|
||||||
|
|
||||||
|
`package_installer` 会在 staging 之前校验所选产品配置,并拒绝示例端点、空授权或明显的授权占位符。新增或修改 `config/config.json` 后必须重新运行 CMake configure,使 Release 构建选择并嵌入该文件,再执行打包目标。真实授权值只能存在于受控且未跟踪的发布输入中。
|
||||||
|
|
||||||
## 独立开发者构建
|
## 独立开发者构建
|
||||||
|
|
||||||
一个独立的更新客户端构建对于集中编译和演示测试很有用。它不是最终用户包。
|
一个独立的更新客户端构建对于集中编译和演示测试很有用。它不是最终用户包。
|
||||||
@@ -95,6 +98,7 @@ cmake --build out/build/update-client-release --config Release `
|
|||||||
* 运行时依赖闭包来源于配置的 Release 包;没有 DLL 或共享库解析到开发工作站路径。
|
* 运行时依赖闭包来源于配置的 Release 包;没有 DLL 或共享库解析到开发工作站路径。
|
||||||
* 受保护的文件与已签名的当前版本清单文件匹配。如果支持离线首次启动,其已签名的策略和清单缓存都存在且有效。
|
* 受保护的文件与已签名的当前版本清单文件匹配。如果支持离线首次启动,其已签名的策略和清单缓存都存在且有效。
|
||||||
* 开发机器上的可变状态不存在。
|
* 开发机器上的可变状态不存在。
|
||||||
|
* 所选发布配置包含已签发的初始授权,且安装树中没有可编辑的授权配置文件。
|
||||||
* 在 `Launcher` 旁边放置一个伪造的 `app_config.json` 文件无法更改应用程序身份、渠道、端点、可执行策略或票务验证。
|
* 在 `Launcher` 旁边放置一个伪造的 `app_config.json` 文件无法更改应用程序身份、渠道、端点、可执行策略或票务验证。
|
||||||
* 安装、启动、更新、回滚和卸载均从真实安装位置执行。
|
* 安装、启动、更新、回滚和卸载均从真实安装位置执行。
|
||||||
|
|
||||||
@@ -120,4 +124,4 @@ cmake --build out/build/update-client-release --config Release `
|
|||||||
|
|
||||||
### 更新应用程序回滚
|
### 更新应用程序回滚
|
||||||
|
|
||||||
检查更新事务的诊断信息,并确认候选进程在配置的超时时间之前已写入请求的健康标记。绝不要强制提交未经验证的候选进程。
|
检查更新事务的诊断信息,并确认候选进程在配置的超时时间之前已写入请求的健康标记。绝不要强制提交未经验证的候选进程。
|
||||||
|
|||||||
@@ -37,6 +37,8 @@
|
|||||||
|
|
||||||
所选的源也包含一个 `initial_state` 对象。它仅提供以下可变键的首次运行默认值。它不会将这些键变为不可变策略,之后的运行时更改仍保留在本地状态存储中。
|
所选的源也包含一个 `initial_state` 对象。它仅提供以下可变键的首次运行默认值。它不会将这些键变为不可变策略,之后的运行时更改仍保留在本地状态存储中。
|
||||||
|
|
||||||
|
发布者必须在未跟踪的 `config/config.json` 中提供已签发且非空的 `initial_state.license_key`。示例配置中的空值只支持开发构建;父级 `package_installer` 会拒绝缺失、空值或明显占位符。该值会作为首次运行默认状态嵌入二进制文件,并由 Launcher 写入系统级状态,不会作为可编辑的安装目录 JSON 交付。
|
||||||
|
|
||||||
这些值可能在不同构建之间有所不同,但安装的文件不得覆盖它们。在可执行文件旁边放置名为 `app_config.json`、`client.ini` 或 `config.json` 的文件,不是受支持的运行时覆盖。
|
这些值可能在不同构建之间有所不同,但安装的文件不得覆盖它们。在可执行文件旁边放置名为 `app_config.json`、`client.ini` 或 `config.json` 的文件,不是受支持的运行时覆盖。
|
||||||
|
|
||||||
可执行文件路径必须是相对的、规范化的,并且限定在批准的安装根目录内。它们不得包含遍历段,也不得指向产品外部的任意可执行文件。
|
可执行文件路径必须是相对的、规范化的,并且限定在批准的安装根目录内。它们不得包含遍历段,也不得指向产品外部的任意可执行文件。
|
||||||
@@ -129,7 +131,8 @@ API 客户端令牌和启动票据材料是客户端凭证。服务器端点仍
|
|||||||
## 操作指南
|
## 操作指南
|
||||||
|
|
||||||
* 请将特定版本的 `config/config.json` 保留在版本控制之外,并通过受控的构建环境提供。
|
* 请将特定版本的 `config/config.json` 保留在版本控制之外,并通过受控的构建环境提供。
|
||||||
|
* 每次发布都要在该文件中配置已签发的 `initial_state.license_key`;不要把真实授权值写入示例、文档或版本控制。
|
||||||
* 限制对发布构建输入的访问,但不要将客户端侧的值描述为不可提取的秘密。
|
* 限制对发布构建输入的访问,但不要将客户端侧的值描述为不可提取的秘密。
|
||||||
* 通过明确的发布流程轮换服务器签名密钥和客户端令牌。
|
* 通过明确的发布流程轮换服务器签名密钥和客户端令牌。
|
||||||
* 在原生后端和权限边界处诊断状态写入失败。不要使安装目录广泛可写。
|
* 在原生后端和权限边界处诊断状态写入失败。不要使安装目录广泛可写。
|
||||||
* 将更改的端点、频道、可执行文件名称或启动票据密钥视为新的二进制配置,需要重新构建和包验证。
|
* 将更改的端点、频道、可执行文件名称或启动票据密钥视为新的二进制配置,需要重新构建和包验证。
|
||||||
|
|||||||
Reference in New Issue
Block a user