Skip to content

商店踩坑 #1:我的應用程式依賴裝了一個幽靈開始功能表項目

2026-05-28

標籤:Windows · MSIX · Microsoft Store · 商店踩坑


把 Windows 應用程式發佈到 Microsoft Store 並不總是一帆風順。這個系列記錄了我在實際中遇到的各種坑——每篇一個,簡短實用。

這是第一篇。

背景

RDP Heartbeat 最初是用 Python + Tkinter 寫的小工具——螢幕角落的一個呼吸燈,用來告訴你 RDP 連線是不是還活著。能用是能用,但把 Python 桌面應用打包上架 Microsoft Store 可真是一波三折:Python 原始碼 → PyInstaller exe → Inno Setup 安裝程式 → MSIX 套件。我們專門寫了一篇文章記錄整個過程。

所以我用原生 WinUI 3Windows App SDK 2.0.1 從頭重寫了它。走原生路線本該一帆風順——再也不用折騰 Python 打包了。確實如此,直到提交到商店認證。

「通過,但需要修改」

認證結果回來了:

Status: Pass with required fix

10.1.1.11 On Device Tiles: Your submission installs multiple components to the device. Please make sure the additional installed components that are visible in the Start Menu have a unique name that clearly identifies which item is the main product.

通過了——但帶了個警告。開始功能表裡多出了個什麼東西,而且那不是我的應用程式。

幽靈項目

認證報告說開始功能表裡多了一個東西。我一看——說實話,沒什麼異常。我的開始功能表完全符合預期,沒有多餘的磚塊。

我把整個專案過了一遍:檢查了套件清單、查看了建置輸出、跟其他已上架的應用程式做了對比。沒有多餘的套件,沒有可疑的擴充功能,一切都正常。

但有一個區別。我的其他應用程式——EnvStudioGhostWinQuickGUID——都用的 Windows App SDK 1.8.x。只有 RDP Heartbeat 用的是 SDK 2.0.1。這是唯一的變化變數。

WinUI 3 應用程式依賴 Windows App SDK 執行階段,它以 MSIX 套件的形式作為共用系統依賴安裝。我唯一能懷疑的就是 SDK 2.x 執行階段——不知為何,在微軟的測試環境(但不是在我的機器上),它的部署產生了一個可見的開始功能表磚塊。具體原因,我也不清楚。

你能怎麼辦?

最讓人頭痛的部分來了:你沒辦法直接修復它。執行階段套件是微軟出的——你完全無法控制它們在開始功能表裡的呈現方式。

實際可行的方案:

  1. 接受它並做好說明——在商店提交說明中加一條備註,解釋多出來的磚塊是微軟提供的執行階段依賴,不是獨立產品。我就是這麼做的,認證通過了。
  2. 改用獨立部署——在 .csproj 中設定 <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>,把執行階段直接打包進你的應用程式套件。這樣完全消除了 DEPN,但每個架構會增加約 40 MB 的下載大小。

小結

如果你在用 Windows App SDK 2.x 開發上架 Microsoft Store 的應用程式:

  • 注意執行階段依賴可能會建立一個可見的開始功能表磚塊
  • 這是 2.x 執行階段的副作用,不是你應用程式的 Bug
  • 在提交說明中寫清楚這一點,避免認證被耽擱
  • 如果無法接受幽靈項目,獨立部署是最乾淨的解決方案

本文屬於商店踩坑系列。