Files
update-client/updater打包成SDK.md

3.7 KiB

Updater 打包成 SDK

本文只说明如何从 SIMCAE/update-client 生成给 SIMCAE 打包流程使用的更新客户端 SDK。SIMCAE 如何拿这个 SDK 打客户安装器和交付包,见当前目录《SIMCAE打包上传.md》。

一、SDK 包含什么

SDK 用来把 Hub 更新客户端接入 SIMCAE 安装包。

内容 作用
Launcher.exe 客户日常启动入口,检查整包更新并启动主程序
Updater.exe 拉取 Manifest、下载发布包、校验 SHA-256、准备安装
Bootstrap.exe 替换运行中文件时接管安装
Qt 运行库 可选,给没有单独 Qt 运行环境的接入方使用
SIMCAE打包上传.md 给 SIMCAE 发布人员看的打包、交付包组装和上传说明

SDK 不包含最终客户配置文件,例如 app_config.jsonserver_config.jsonserver_config.qrcmanifest_public_key.pem。这些文件由服务端在上传客户软件包或 Qt IFW 交付包时生成或注入。

打包后的 SDK 根目录只放 SIMCAE打包上传.md 这一份使用说明。本文是维护者打 SDK 的说明,不随 SDK 一起交给接入方。

二、编译 Release

先进入 SIMCAE 仓库下的 update-client 目录。如果当前已经在 SIMCAE 仓库根目录:

cd .\update-client

然后执行:

cmake --preset x64-release -DSIMCAE_OPENSSL_ROOT="C:\Program Files\OpenSSL-Win64"
cmake --build --preset x64-release

如果 OpenSSL 安装在其他目录,只改 SIMCAE_OPENSSL_ROOT 这一项。

编译完成后,Release 产物通常位于 out/bin/Release

检查核心程序:

Test-Path .\out\bin\Release\Launcher.exe
Test-Path .\out\bin\Release\Updater.exe
Test-Path .\out\bin\Release\Bootstrap.exe

预期都返回 True

三、打包不带 Qt 运行库的 SDK

适用于接入方已经有 Qt 运行环境,或希望自己控制 Qt DLL 的情况。

.\scripts\package-sdk.ps1 `
  -SourceDir .\out\bin\Release `
  -OutputDir .\dist\UpdateClientSDK `
  -ZipFile .\dist\UpdateClientSDK.zip `
  -SdkVersion 0.1.0

输出:

输出 说明
dist\UpdateClientSDK 不带 Qt 运行库的 SDK 展开目录
dist\UpdateClientSDK.zip 不带 Qt 运行库的 SDK 压缩包

四、打包带 Qt 运行库的 SDK

适用于接入方不想单独准备 Qt DLL,或者希望拿到后能直接放进安装包。

.\scripts\package-sdk.ps1 `
  -SourceDir .\out\bin\Release `
  -OutputDir .\dist\UpdateClientSDK-With-QtDll `
  -ZipFile .\dist\UpdateClientSDK-With-QtDll.zip `
  -SdkVersion 0.1.0 `
  -IncludeQtRuntime

这里的 With-QtDll 表示包里带的是运行所需的 Qt DLL,不是完整 Qt SDK。

输出:

输出 说明
dist\UpdateClientSDK-With-QtDll 带 Qt 运行库 DLL 的 SDK 展开目录
dist\UpdateClientSDK-With-QtDll.zip 推荐交给 SIMCAE 开发者的 SDK 压缩包

五、打包后检查

Test-Path .\dist\UpdateClientSDK-With-QtDll\bin\Launcher.exe
Test-Path .\dist\UpdateClientSDK-With-QtDll\bin\Updater.exe
Test-Path .\dist\UpdateClientSDK-With-QtDll\bin\Bootstrap.exe
Test-Path .\dist\UpdateClientSDK-With-QtDll\SIMCAE打包上传.md
Test-Path .\dist\UpdateClientSDK-With-QtDll.zip

预期都返回 True

六、不要提交的内容

当前仓库的 .gitignore 已忽略这些本地内容:

  • thirdparty/
  • out/
  • dist/
  • *.exe
  • *.dll
  • *.zip
  • config/app_config.json
  • config/client_identity.dat
  • config/local_state.json
  • config/version_policy.dat

提交前看一下:

git status --short

不要把本地依赖、编译产物、SDK ZIP、客户配置和运行状态提交进仓库。