商店踩坑 #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 3 和 Windows 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.
通过了——但带了个警告。开始菜单里多出了个什么东西,而且那不是我的应用。
幽灵条目
认证报告说开始菜单里多了一个东西。我一看——说实话,没什么异常。我的开始菜单完全符合预期,没有多余的磁贴。
我把整个项目过了一遍:检查了包清单、查看了构建输出、跟其他已上架的应用做了对比。没有多余的包,没有可疑的扩展,一切都正常。
但有一个区别。我的其他应用——EnvStudio、GhostWin、QuickGUID——都用的 Windows App SDK 1.8.x。只有 RDP Heartbeat 用的是 SDK 2.0.1。这是唯一的变化变量。
WinUI 3 应用依赖 Windows App SDK 运行时,它以 MSIX 包的形式作为共享系统依赖安装。我唯一能怀疑的就是 SDK 2.x 运行时——不知为何,在微软的测试环境(但不是在我的机器上),它的部署产生了一个可见的开始菜单磁贴。具体原因,我也不清楚。
你能怎么办?
最让人头疼的部分来了:你没法直接修复它。运行时包是微软出的——你完全无法控制它们在开始菜单里的呈现方式。
实际可行的方案:
- 接受它并做好说明——在商店提交说明中加一条备注,解释多出来的磁贴是微软提供的运行时依赖,不是独立产品。我就是这么做的,认证通过了。
- 改用独立部署——在
.csproj中设置<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>,把运行时直接打包进你的应用包。这样完全消除了 DEPN,但每个架构会增加约 40 MB 的下载体积。
小结
如果你在用 Windows App SDK 2.x 开发上架 Microsoft Store 的应用:
- 注意运行时依赖可能会创建一个可见的开始菜单磁贴
- 这是 2.x 运行时的副作用,不是你应用的 Bug
- 在提交说明中写清楚这一点,避免认证被耽搁
- 如果无法接受幽灵条目,独立部署是最干净的解决方案
本文属于商店踩坑系列。