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 模式下,確認相依性套件能正常安裝
- [ ] 應用程式啟動正常,核心功能可用,開始功能表/解除安裝等表現正常
本文屬於商店踩坑系列的延伸閱讀。