MSIX 提审前测试指南:别让打包问题拖到商店认证才发现
2026-06-01
Tags: Windows · Microsoft Store · MSIX · 商店踩坑
在商店踩坑 #4里,我们遇到了 .NET 裁剪导致 WinUI 3 功能静默失效的问题——本地 Debug 跑得好好的,Release 包提交上去就被拒了。这类问题的共同点是:如果提审前能在本地验证一下打包后的产物,很多坑是可以提前踩到的。当然,不是所有问题都能提前发现(比如依赖包导致的幽灵开始菜单条目就很难本地复现),但至少能拦截一大部分。
这篇文章整理了一套 MSIX 提审前的本地验证流程,涵盖 WACK 认证、自签名证书安装、依赖安装和干净虚拟机测试。
第一步:跑 WACK(Windows 应用认证工具包)
WACK 是微软提供的本地预认证工具,它会在你的包上跑一系列检查,模拟 Store 认证中的部分测试项。
几个要点:
- 只能验证 Release 包,Debug 包不行——这也恰好倒逼你必须测 Release 构建
- WACK 已被微软标记为弃用(不再维护),但仍可用于可选的本地预提交检查;正式认证在提交 Store 后会自动执行
- WACK 通过不代表一定能过 Store 审核,但它能帮你拦截大量基础问题(API 合规性、性能、安全等)
使用方式:在 Visual Studio「打包和发布」向导的「选择和配置包」步骤中,勾选最下面的「生成项目以使用 Windows 应用认证工具包验证应用」,打包完成后会出现「启动 Windows 应用认证工具包」按钮。或者在开始菜单搜索 Windows App Certification Kit 手动启动。
第二步:打带自签名证书的 Test 包
这一步比较绕。
MSIX 包必须签名才能安装。开发时 Visual Studio 用的是临时证书,但打出来的 MSIX 包本身不一定带着可用的证书。实际流程是这样的:
先用旁加载模式打一次包
- 右键项目 → 打包和发布
- 选择 旁加载(不要选 Microsoft Store)
- 选择签名证书,完成打包
再用 Store 模式打 Test 包
- 再次 打包和发布,这次选 Microsoft Store(由 PublisherName 提供的 AppName)
- 这样打出来的 Test 包(在
AppPackages目录下的_Test文件夹)才会带上自签名证书
如果不走第 1-3 步直接打 Store 包,出来的 MSIX 证书是空的——一个很坑的细节。
第三步:安装证书
拿到带证书的 Test 包后:
安装证书
- 右键
.msix文件 → 属性 → 数字签名 选项卡 - 选择签名 → 详细信息 → 查看证书
- 安装证书 → 选择 本地计算机 → 放入 受信任人(Trusted People) 存储
注意:证书的 Publisher(CN)必须和 Package.appxmanifest 中的 <Publisher> 一致,否则安装会失败。
第四步:安装依赖和 MSIX 包
如果你的 Windows App SDK 项目是 framework-dependent 模式(默认就是),应用运行依赖 Windows App Runtime 运行时。Store 分发时会自动处理依赖,但本地测试需要手动安装。
好消息是,Test 包的 _Test 文件夹里自带了 Dependencies 子目录,里面按架构分好了依赖包:
AppPackages/
MyApp_1.0.0.0_x64_Test/
Dependencies/
x64/
Microsoft.WindowsAppRuntime.1.8.msix
...
MyApp_1.0.0.0_x64.msix安装顺序:先装 Dependencies 里的运行时,再装应用本体。
如果是 self-contained 模式(在 .csproj 中设置了 <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>),则不需要额外安装依赖,运行时已经打包在应用里了。
第五步:干净虚拟机全流程验证
开发机装了太多东西——各种 SDK、运行时、缓存——你的应用能跑不代表用户能跑。建议在干净环境里走一遍完整流程。
虚拟机方案
两种都可以:
- Hyper-V Quick Create:微软官方推荐的方案,在开始菜单搜索「Hyper-V Quick Create」,选择 MSIX Packaging Tool Environment 即可创建
- VMware:我自己实际在用的方案,创建一个干净的 Windows 10/11 虚拟机,拍个快照,每次测试前恢复到干净状态
不管用哪个,核心诉求只有一个:尽量接近用户的首装环境。
在干净 VM 上验证什么
- 安装自签名证书(第三步的流程)
- 安装依赖包(第四步)
- 安装应用本体
- 启动应用,验证核心功能是否正常
- 检查开始菜单、任务栏托盘、卸载等是否正常
检查清单
提交 Store 前,对照这个清单走一遍:
- [ ] 用 Release 配置打 Test 包
- [ ] 跑 WACK,确认无严重错误
- [ ] 确认 Test 包带有自签名证书(旁加载模式先打一次)
- [ ] 安装证书到 Local Machine → Trusted People
- [ ] 在干净虚拟机上全流程验证:装证书 → 装依赖 → 装应用 → 测功能
- [ ] framework-dependent 模式下,确认依赖包能正常安装
- [ ] 应用启动正常,核心功能可用,开始菜单/卸载等表现正常
本文属于商店踩坑系列的延伸阅读。