fix(launcher): bootstrap release state and signed manifest
This commit is contained in:
@@ -118,6 +118,8 @@
|
||||
|
||||
带签名的 JSON 合约必须使用确定性序列化,从已签名的负载中省略签名字段,标识算法和密钥 ID,并支持受控的公钥轮换窗口。验证失败将导致系统关闭。
|
||||
|
||||
首次安装可能尚无当前版本的本地清单缓存。当设备在线、当前版本已在服务器显式发布且没有更高目标版本时,Launcher 会通过与 Updater 相同的校验逻辑获取当前版本清单,验证签名和身份后写入缓存,再执行完整文件校验。服务器未发布当前版本、返回无效版本 ID、清单签名无效或缓存写入失败时,启动保持关闭失败。此流程不会自动创建或发布服务器版本。
|
||||
|
||||
## 运行时布局
|
||||
|
||||
父安装程序拥有最终的布局。预期的可执行文件关系为:
|
||||
@@ -157,4 +159,4 @@ config/
|
||||
* 频道选择和禁止降级行为;
|
||||
* 中断更新恢复;
|
||||
* 候选失败和成功回滚;
|
||||
* 从实际安装位置启动并更新,通过正常的最终用户交互并需要提升权限。
|
||||
* 从实际安装位置启动并更新,通过正常的最终用户交互并需要提升权限。
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
所选的源也包含一个 `initial_state` 对象。它仅提供以下可变键的首次运行默认值。它不会将这些键变为不可变策略,之后的运行时更改仍保留在本地状态存储中。
|
||||
|
||||
发布者必须在未跟踪的 `config/config.json` 中提供已签发且非空的 `initial_state.license_key`。示例配置中的空值只支持开发构建;父级 `package_installer` 会拒绝缺失、空值或明显占位符。该值会作为首次运行默认状态嵌入二进制文件,并由 Launcher 写入系统级状态,不会作为可编辑的安装目录 JSON 交付。
|
||||
发布者必须在未跟踪的 `config/config.json` 中提供已签发且非空的 `initial_state.license_key`。示例配置中的空值只支持开发构建;父级 `package_installer` 会拒绝缺失、空值或明显占位符。该值会作为初始状态嵌入二进制文件,并在系统级授权状态缺失或为空时由 Launcher 写入;已有的非空机器授权不会被构建默认值覆盖。授权不会作为可编辑的安装目录 JSON 交付。
|
||||
|
||||
这些值可能在不同构建之间有所不同,但安装的文件不得覆盖它们。在可执行文件旁边放置名为 `app_config.json`、`client.ini` 或 `config.json` 的文件,不是受支持的运行时覆盖。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user