# Launch 应用接入包

Launch **0.1.6** 为全部**九种语言**内置官方 Licentivo SDK **0.11.6**。只安装所用语言的 Launch 包，已包含实现、默认适配器、许可证声明和 SDK 链接配置。TypeScript 声明属于 JavaScript；受信 Go Web 后端是额外示例。公开源码、注册表安装命令和各语言可用状态维护在 [Launch SDK 仓库](https://github.com/spf86/licentivo-launch-sdk)及其[发布状态](https://github.com/spf86/licentivo-launch-sdk/blob/main/docs/registry-status.json)中。

0.1.6 更新包含上游 C/C++ CMake 对 curl 配置包和 FindCURL 使用方的修复。授权协议、应用 API 和账号生命周期不变。现有应用可升级 Launch 包并重新构建，无需改变接入代码。[0.1.6 发布记录](https://github.com/spf86/licentivo-launch-sdk/blob/main/docs/publication-0.1.6.md)分别记录公开可用状态、干净安装验证和本地构建。

| 语言 | 单一 Launch 交付包 | 包源码 / API 指南 |
| --- | --- | --- |
| Go | 自包含模块 ZIP | [pkg/launchclient](https://github.com/spf86/licentivo-launch/blob/main/pkg/launchclient/README.md) |
| Python | licentivo_launch-0.1.6-py3-none-any.whl | [sdk/python](https://github.com/spf86/licentivo-launch/blob/main/sdk/python/README.md) |
| C# / .NET 8 | Licentivo.Launch.0.1.6.nupkg | [sdk/csharp](https://github.com/spf86/licentivo-launch/blob/main/sdk/csharp/README.md) |
| Java 17 | launch-client-0.1.6.jar 和 POM | [sdk/java](https://github.com/spf86/licentivo-launch/blob/main/sdk/java/README.md) |
| JavaScript / Node.js | licentivo-launch-0.1.6.tgz | [sdk/javascript](https://github.com/spf86/licentivo-launch/blob/main/sdk/javascript/README.md) |
| Rust | licentivo-launch-0.1.6.crate 或源码 ZIP | [sdk/rust](https://github.com/spf86/licentivo-launch/blob/main/sdk/rust/README.md) |
| Ruby | 对应平台的 Launch gem 或源码 gem | [sdk/ruby](https://github.com/spf86/licentivo-launch/blob/main/sdk/ruby/README.md) |
| C | Launch 原生 CMake 安装 ZIP | [sdk/native](https://github.com/spf86/licentivo-launch/blob/main/sdk/native/README.md) |
| C++ | 同一原生压缩包，C++17 API | [sdk/native](https://github.com/spf86/licentivo-launch/blob/main/sdk/native/README.md) |

## 从公开注册表安装

0.1.6 的九种语言公开安装检查均通过：Go、Python、C#、Java、Node.js/TypeScript、Rust、Ruby、C 和 C++。下列注册表命令与原生下载均已公开，并在独立使用方项目中验证。发布状态记录精确的包校验值、安装结果和平台限制。

```sh
go get github.com/spf86/licentivo-launch-sdk/pkg/launchclient@v0.1.6
python -m pip install licentivo-launch==0.1.6
npm install @licentivo/launch@0.1.6
dotnet add package Licentivo.Launch --version 0.1.6
cargo add licentivo-launch@=0.1.6
gem install licentivo-launch --version 0.1.6
```

Java 使用 Maven/Gradle 坐标 `com.licentivo.launch:launch-client:0.1.6`。
C/C++ 使用[对应版本的 GitHub 发布包](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6)中兼容 ABI 的原生压缩包。
注册表传播和验证结果参见发布状态。

## 安装已下载的分发包

使用 integration-packages.json 标识的交付包。各语言均记录 sdk_managed: true 和 requires_separate_official_sdk: false。安装前验证 SHA256SUMS。

```powershell
python -m pip install ./licentivo_launch-0.1.6-py3-none-any.whl
npm install ./licentivo-launch-0.1.6.tgz
dotnet add YOUR_PROJECT package Licentivo.Launch --version 0.1.6 --source YOUR_LOCAL_FEED
gem install --local ./licentivo-launch-0.1.6-x64-mingw-ucrt.gem
```

Java 的 classpath 只使用 Launch JAR；其 POM 不依赖官方 SDK。Go 离线使用方可解压模块 ZIP，为 `github.com/spf86/licentivo-launch-sdk` 设置本地 require/replace。Rust 离线使用方可解压 crate 或源码 ZIP，并添加本地 licentivo-launch 路径依赖。不需要官方 SDK 包或源码检出。

C/C++ 应解压原生安装 ZIP，将其前缀加入 CMake，并使用：

```cmake
find_package(LicentivoLaunch CONFIG REQUIRED)
add_executable(myapp main.c)
licentivo_launch_link(myapp)
# C++17 target: licentivo_launch_link(myapp CXX)
```

Launch 自行解析其 SDK、传递依赖和随包 Windows DLL。Rust 的 build.rs 编译内置 C 核心，并将随包 DLL 复制到 Cargo 可执行文件旁。Ruby 平台 gem 包含私有原生核心和运行库；源码 gem 会自动编译核心。

仍需正常的语言工具链和普通依赖：pip 解析 cryptography，NuGet 解析 BouncyCastle.Cryptography，Cargo 解析普通 Rust crate。原生压缩包覆盖 Windows amd64 GNU 和 Linux amd64。Windows 分发包包含 curl。其他操作系统使用完整源码、C11 编译器和系统常规 curl/OpenSSL 开发库。SDK 0.11.6 的 Windows 原生核心要求 GNU/MinGW。

## 初始化应用

在 Launch 中选择已有软件。系统自动读取当前商户 URL、已有套餐与产品映射及官方签名公钥，提供已填充的连接函数。将此函数复制到应用中，无需手填内部 ID 或生成配置文件。服务端启动仍使用私有 config.yaml，绝不能随应用发布。

使用包入口，如 launchclient.Connect、Python Application.connect、C# Application.Connect 或 Node Application.connect。内置工厂创建并管理 SDK。自定义工厂只是可选的测试或接入扩展钩子，不是安装步骤。精确 API 见各包 README 和示例。

Launch 处理账号登录、限定范围凭据、有界的待处理重试和恢复。内置 SDK 验证签名并授权每次受保护操作。普通关闭、账号退出和设备释放保持不同。Web 应用在受信后端检查权限；Node/Electron 代码放在主进程或服务端进程。

手动开发说明仍位于 [manual-integration.md](/zh/launch-documents/manual-integration/) 和各语言 README。后台 AI 接入页为同一直接初始化流程生成英文说明，不包含密码、管理密钥和运行时客户或设备凭据，也不会调用 AI 服务。参见 [AI 接入](/zh/launch-documents/ai-integration/)。

## 维护者构建分发包

只有更新内置 SDK 的维护者才需要经审核的上游源码。使用方可跳过此节。

```powershell
./scripts/prepare-examples.ps1 -Source 'C:\path\to\reviewed-sdk\sdk'
./scripts/build-integration-packages.ps1 -Output artifacts/NEW_DIRECTORY -BuildRustCrate -BuildNative -CurlRoot PATH_TO_CURL -CCompiler PATH_TO_GCC
```

按需通过 -Python、-DotNet、-JavaHome、-Ruby、-Cargo 和 -CMake 提供工具路径。构建器验证上游清单，随后 prepare-managed-sdk.mjs 内置源码，并在 sdk/managed-sdk-manifest.json 中记录来源与目标 SHA-256。必要时调整模块位置和导入路径；加密验证仍由经审核的实现负责。每份内置副本均附带 MIT 许可证和声明。

每次构建创建新目录，包含各语言交付包、源码压缩包、合并源码包、清单和校验值。-SourceOnly 明确只生成源码交付物；跳过的目标不能视为经过测试的二进制发行版。合并包保留包、示例、文档和测试路径，无需 examples/vendor。

## 验证安装和行为

scripts/test-managed-installations.ps1 将分发包安装到全新的使用方项目。验证全部九种目标，无需独立官方 SDK 包、SDK 源码路径、手动复制适配器或配置 SDK 链接。编译并执行精确生成的直接连接代码，包括经过转义的公开数据，并报告 configuration_files_required: false。其报告与运行时测试套件独立。

scripts/test-integration-packages.ps1 运行生命周期回归及本地签名的真实 SDK 测试夹具。提供工具路径和已配置的原生测试构建：

```powershell
./scripts/test-integration-packages.ps1 -Python python -DotNet dotnet -JavaHome $env:JAVA_HOME -Ruby ruby -Cargo cargo -NativeBuildDirectory .cache/launch-native-build
```

仓库源码构建使用系统常规原生依赖；Windows 维护者可提供 LICENTIVO_CURL_ROOT。这是源码构建工具设置，不是单独安装 SDK。Rust/C++ 使用不同 MinGW 安装时，-NativeRuntimeDirectories 将 C++ DLL 目录限定于原生检查。缺少前置条件时，对应目标失败。all_nine_passed 要求九项检查全部通过。

## 存储与验收

会话默认只存内存。记住登录要求受保护的存储。AES-GCM 存储要求从操作系统保险库取得 32 字节密钥，绝不能与密文放在一起。密码从不持久保存。Go、Python、C# 和原生 C/C++ 提供 Windows 当前用户 DPAPI；Java、Node、Rust 和 Ruby 提供由调用方管理密钥的加密存储。

SDK 设备文件保留上游格式。会话加密不代表全部 SDK 文件都被加密。限制按账号、产品和环境分隔的缓存目录访问，并从安装包、日志和版本管理中排除。身份或配置改变后，不能复用另一账号的缓存。

明确的会话或权益拒绝不能离线回退。只有传输失败或 HTTP 5xx 才可在签名策略范围内使用已通过加密验证的现有授权。首次激活、浮动席位和禁止离线的策略仍要求联网。

本地报告绝不证明真实付款、签发或外部激活。该环境已延期，参见 [acceptance.md](/zh/launch-documents/acceptance/)。注册表发布和非 Windows 发行版验收需要独立工作与证据。
