Skip to content

Подводные камни Store #1: Зависимость моего приложения установила «фантомный» ярлык в меню «Пуск»

2026-05-28

Теги: Windows · MSIX · Microsoft Store · Подводные камни Store


Публикация приложений для Windows в Microsoft Store не всегда проходит гладко. Эта серия документирует реальные подводные камни, с которыми я столкнулся — по одному на пост, кратко и по делу.

Вот первый из них.

Предыстория

RDP Heartbeat начинался как инструмент на Python + Tkinter — крошечная пульсирующая точка, показывающая, активен ли ваш RDP-сеанс. Он работал, но упаковка десктопного приложения на Python для Microsoft Store стала настоящей сагой: исходный код Python → exe через PyInstaller → установщик Inno Setup → пакет MSIX. Мы описали весь этот путь.

Поэтому я переписал приложение с нуля на нативном WinUI 3 с использованием Windows App SDK 2.0.1. Нативный путь должен был быть простым — никаких больше акробатических трюков с упаковкой Python. Так и было, вплоть до сертификации в Store.

«Пройдено с обязательным исправлением»

Пришёл результат сертификации:

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.

Пройдено — но с предупреждением. Что-то лишнее появилось в меню «Пуск», и это было не моё приложение.

Фантомная запись

В отчёте о сертификации говорилось, что в меню «Пуск» появилось что-то лишнее. Я посмотрел — и, честно говоря, ничего необычного. Моё меню «Пуск» выглядело именно так, как ожидалось, без лишних плиток.

Я проверил весь проект: просмотрел манифест пакета, изучил выходные данные сборки, сравнил с другими моими приложениями в Store. Никаких лишних пакетов, никаких подозрительных расширений, ничего не бросалось в глаза.

Но было одно отличие. Мои другие приложения — EnvStudio, GhostWin, QuickGUID — все используют Windows App SDK 1.8.x. RDP Heartbeat — единственное приложение на SDK 2.0.1. Это единственная изменившаяся переменная.

Приложения WinUI 3 зависят от runtime Windows App SDK, который распространяется в виде пакетов MSIX, устанавливаемых как общие системные зависимости. Единственный подозреваемый, на которого я могу указать — это runtime SDK 2.x: каким-то образом, в тестовой среде Microsoft (но не на моей машине), его развёртывание создаёт видимую плитку в меню «Пуск». Почему именно — не знаю.

Что с этим можно сделать?

И вот самая раздражающая часть: вы не можете это напрямую исправить. Пакеты runtime созданы Microsoft — у вас нет контроля над тем, как они отображаются в меню «Пуск».

Ваши практические варианты:

  1. Принять и задокументировать — Добавьте примечание к отправке в Store, объясняющее, что дополнительная плитка — это зависимость runtime от Microsoft, а не отдельный продукт. Именно так я и поступил, и сертификация прошла.
  2. Перейти на автономное развёртывание — Встройте runtime непосредственно в пакет приложения, установив <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> в вашем .csproj. Это полностью устраняет DEPN, но добавляет ~40 МБ на каждую архитектуру к размеру загрузки.

Вывод

Если вы разрабатываете с использованием Windows App SDK 2.x для Microsoft Store:

  • Имейте в виду, что зависимость runtime может создать видимую плитку в меню «Пуск»
  • Это побочный эффект runtime 2.x, а не баг в вашем приложении
  • Задокументируйте это в примечаниях к отправке, чтобы избежать задержек сертификации
  • Если фантомная запись неприемлема, автономное развёртывание — самое чистое решение

Часть серии Подводные камни Store.