Files
update-client/Docs

客户端文档入口
==============

本目录用于保存 update-client 客户端子仓库的说明文档。

建议阅读顺序:

1. 客户端部署说明.md
   面向接入和部署,说明 SDK 是什么、怎么放到业务软件目录、app_config.json 怎么填、如何打包。

2. 第三方依赖说明.md
   面向编译环境,说明 Qt、OpenSSL、thirdparty/ 和 CMake 环境变量怎么配置。

3. ../i18n/ReadMe.txt
   面向国际化维护,说明新增 tr() 文案后如何更新 .ts、生成 .qm,以及 .qrc 如何内嵌翻译资源。

4. 本 ReadMe.txt
   记录客户端配置文件和打包脚本的简要说明。


客户端配置说明
==============


config/app_config.json 是部署配置源文件。Launcher / Updater / MainApp 启动时会把它同步到当前 Windows 用户的注册表,后续运行配置优先从注册表读取。
如果 config/app_config.json 内容被修改,下一次启动时会按解析后的 JSON 内容 SHA256 判断变化并重新导入注册表。
注册表位置:HKEY_CURRENT_USER\Software\Marsco\UpdateClientSDK\installations\<安装目录SHA256>\config。
如果检测到 app_config.json 发生变化,SDK 会删除 config/client_identity.dat 和 config/version_policy.dat,避免继续使用旧授权身份或旧策略;目录不可写时会弹出管理员权限确认框。
首次运行时如果该文件不存在且发现旧 client.ini,会自动迁移。


接入新软件时通常需要修改:



1. app_id、app_name、channel、current_version。

2. api_base_url、client_token、license_key、launch_token。

3. main_executable:团队业务主程序文件名。

4. launcher_executable、updater_executable、bootstrap_executable。

5. health_check_timeout_ms:升级后等待业务程序健康确认的毫秒数,最小 1000。



完整格式参考 update-client/config/app_config.example.json。
运行时生成的 client_identity.dat、local_state.json 等文件不得打入通用 SDK 模板。app_config.json 可以作为部署模板,但不要把某台机器运行后产生的临时状态混进去。


Windows 发布打包:



1. 使用 Release 配置编译全部客户端程序。

2. 先完成当前版本在线校验,确认 out/bin/update/manifest_cache 中存在对应的签名 Manifest。

3. 准备一份实际 app_config.json,确认其中包含正确的 License Key、当前版本和业务程序名。

4. 在 PowerShell 执行:

   powershell -ExecutionPolicy Bypass -File .\scripts\package-client.ps1 -ConfigFile .\config\app_config.json
5. 输出位于 dist/UpdateClient 和 dist/UpdateClient.zip。



脚本会拒绝 Debug DLL、PDB、嵌套重复主程序和缺少签名 Manifest 的发布源目录。