用途:仅用于 WinUI 3 应用的 MSIX 打包、签名与发布准备。判断标准是项目含 <UseWinUI>true</UseWinUI> 或使用 Microsoft.UI.Xaml;仅引用 Windows App SDK 的 WPF、WinForms、Electron 等不属于 WinUI,不适用。需要 WinApp CLI 0.7+。
主要能力:Release 打包并签名、无签名多架构捆绑、生成开发证书、信任证书、签名已有文件、捆绑 Windows App SDK 运行时。命令行示例: winapp package .\MyApp.csproj --arch x64 --cert .\devcert.pfx winapp package .\MyApp.csproj --arch x64 --arch arm64 --no-sign winapp cert generate / winapp cert install ./devcert.pfx winapp sign ./app.msix ./devcert.pfx
使用方式:传入明确的项目文件,不用 . 或猜测的 bin 目录;默认 Release,保留项目 AOT 设置。生成证书时用 --manifest 匹配 Publisher。签名策略二选一:--cert 接 PFX(主体需匹配 Identity.Publisher),或 --no-sign 交由外部签名。带时间戳的生产签名先用 winapp sign .\MyApp.msix .\prod.pfx --timestamp http://timestamp.digicert.com。CI 中在 Windows runner 上运行 --no-sign 打包并归档产出的 .msix/.msixbundle。
限制与注意:WinApp CLI 本身不向 Store 发布,商店提交需按 Partner Center 要求走 SDK/Visual Studio 工作流。Native AOT 需在项目设 <PublishAot>true</PublishAot> 并修复 IL/CsWinRT 警告,且需 MSVC C++ 工具链,无 --aot 参数。--self-contained 只设 WindowsAppSDKSelfContained=true,不等同 .NET 单文件,完整自包含需同时设 <SelfContained>true</SelfContained>。项目打包拒绝 WindowsPackageType=None,不接受 --manifest、--executable、--skip-pri 等布局覆盖。PFX 与密码不得入库;证书安装需管理员权限和授权,仅为构建无需安装证书。时间戳属于 winapp sign 而非 package。