用途:为 WinUI 3 应用完成 MSIX 打包、代码签名与分发,需 WinApp CLI 0.7+。
主要能力与常用命令:发布打包并签名 winapp package .\MyApp.csproj --arch x64 --cert .\devcert.pfx;多架构无签名包(重复 --arch)winapp package .\MyApp.csproj --arch x64 --arch arm64 --no-sign;生成开发证书 winapp cert generate --manifest .\Package.appxmanifest(默认密码 password);管理员信任证书 winapp cert install ./devcert.pfx;签名已有文件 winapp sign ./app.msix ./devcert.pfx;自包含打包加 --self-contained。
使用方式:传入明确的项目文件而非 . 或猜测的 bin 目录。打包采用 SDK 原生 dotnet publish,默认 Release,保留项目 AOT 设置。Native AOT 需在项目设 <PublishAot>true</PublishAot> 并修复 IL/CsWinRT 警告,另需 MSVC C++ 工具链(无 --aot 参数)。项目打包拒绝 WindowsPackageType=None。不要为产出发布物而运行/注册开发包;SDK 原生打包不要传 --manifest、--executable、--skip-pri 等布局覆盖参数。生产时间戳签名先用 --no-sign 产出再 winapp sign --timestamp http://timestamp.digicert.com(--timestamp 属 sign,不属 package)。CI 中在装有 CLI 0.7+、.NET SDK 及 AOT 工具链的 Windows runner 上执行打包并以构件步骤归档输出;签名材料走审批的密钥存储,另行受保护步骤签名,勿提交 PFX 或仅为构建安装开发根证书。
注意事项:--self-contained 只设 WindowsAppSDKSelfContained=true,并非 .NET SelfContained;完全自包含 JIT 应用需在项目中同时设 <SelfContained>true</SelfContained> 与 <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>。Native AOT 覆盖 .NET 运行时但仍需选择 Windows App SDK;WinUI 运行时不保证单文件 EXE,部分 API 仍需额外 MSIX 依赖。Store 提交需关联 Partner Center 身份并遵循其提交要求,winapp package 只产出包,不发布到 Store。常见错误包括 Publisher mismatch(重跑 cert generate --manifest)、证书不受信任(管理员 cert install)、Access denied(需提权)、证书已存在(--if-exists overwrite 或 skip)等。
限制:具体收费、完整平台支持与版本兼容细节暂未提供,请自行核实官方文档。