Skip to content

Руководство по предварительному тестированию MSIX: как выявить проблемы упаковки до сертификации в Store

2026-06-01

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


В статье Подводные камни Store #4 мы столкнулись с ситуацией, когда .NET-тримминг незаметно ломал функциональность WinUI 3 — всё отлично работало в локальных Debug-сборках, но Release-пакет был отклонён при сертификации в Store. У этих проблем есть общая черта: если проверять упакованный результат локально перед отправкой, многие из них можно выявить заранее. Разумеется, не всё можно отловить наперёд (например, призрачный элемент в меню «Пуск» из-за пакета зависимостей сложно воспроизвести локально), но вы можете как минимум устранить целый класс проблем.

В этой статье описывается локальный процесс проверки MSIX-пакетов перед отправкой в Store: сертификация WACK, установка самоподписанного сертификата, установка зависимостей и тестирование на чистой виртуальной машине.

Шаг 1: Запустите WACK (Windows App Certification Kit)

WACK — это локальный инструмент предварительной сертификации от Microsoft. Он выполняет ряд проверок вашего пакета, имитируя некоторые тесты, проводимые при сертификации в Store.

Ключевые моменты:

  • Работает только с Release-сборками, не с Debug — это заодно заставляет тестировать конфигурацию Release
  • Microsoft объявила WACK устаревшим (больше не поддерживается), но его всё ещё можно использовать для необязательных локальных проверок перед отправкой; формальная сертификация запускается автоматически после отправки в Store
  • Успешное прохождение WACK не гарантирует успешную сертификацию в Store, но помогает выявить множество базовых проблем (совместимость API, производительность, безопасность и т.д.)

Как использовать: В мастере Visual Studio «Package and Publish» на шаге «Select and Configure Package» отметьте опцию внизу «Build project to validate app with Windows App Certification Kit». После завершения упаковки появится кнопка «Launch Windows App Certification Kit». Кроме того, можно вручную найти Windows App Certification Kit в меню «Пуск».

Шаг 2: Создайте тестовый пакет с самоподписанным сертификатом

Этот шаг несколько запутан.

MSIX-пакеты должны быть подписаны для установки. Во время разработки Visual Studio использует временный сертификат, но сам полученный MSIX-пакет не обязательно содержит рабочий сертификат. Реальный процесс выглядит так:

Сначала упакуйте в режиме Sideload

  1. Щёлкните правой кнопкой по проекту → Package and Publish
  2. Выберите Sideload (не выбирайте Microsoft Store)
  3. Выберите сертификат для подписи и завершите упаковку

Затем создайте тестовый пакет в режиме Store

  1. Снова запустите Package and Publish, на этот раз выберите Microsoft Store (AppName provided by PublisherName)
  2. Полученный тестовый пакет (в папке _Test внутри каталога AppPackages) теперь будет содержать самоподписанный сертификат

Если пропустить шаги 1–3 и сразу создавать пакет для Store, то в полученном MSIX-файле окажется пустой сертификат — довольно неприятный сюрприз.

Шаг 3: Установите сертификат

Когда у вас есть тестовый пакет с сертификатом:

Установка сертификата

  1. Щёлкните правой кнопкой по файлу .msixСвойства → вкладка Цифровые подписи
  2. Выберите подпись → ПодробнееПросмотр сертификата
  3. Установить сертификат → выберите Локальный компьютер → поместите в хранилище Доверенные лица

Примечание: издатель сертификата (CN) должен совпадать со значением <Publisher> в файле Package.appxmanifest, иначе установка не удастся.

Шаг 4: Установка зависимостей и MSIX-пакета

Если ваш проект Windows App SDK находится в режиме зависимостей от платформы (framework-dependent mode, используется по умолчанию), приложению требуется среда выполнения Windows App Runtime. Распространение через Store обрабатывает зависимости автоматически, но для локального тестирования их нужно устанавливать вручную.

Хорошая новость в том, что папка _Test в тестовом пакете содержит подкаталог Dependencies с пакетами зависимостей, разбитыми по архитектурам:

AppPackages/
  MyApp_1.0.0.0_x64_Test/
    Dependencies/
      x64/
        Microsoft.WindowsAppRuntime.1.8.msix
        ...
    MyApp_1.0.0.0_x64.msix

Порядок установки: сначала установите зависимости среды выполнения, затем само приложение.

Если вы используете самодостаточный режим (установив <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> в .csproj), дополнительные зависимости не требуются — среда выполнения уже включена в пакет приложения.

Шаг 5: Полная проверка на чистой виртуальной машине

На вашей машине разработчика установлены всевозможные SDK, среды выполнения и кеши — то, что приложение работает там, не означает, что оно будет работать у пользователей. Настоятельно рекомендуется пройти полный процесс в чистом окружении.

Варианты виртуальных машин

Подойдёт любой из следующих вариантов:

  • Hyper-V Quick Create: рекомендованный Microsoft подход. Найдите «Hyper-V Quick Create» в меню «Пуск» и выберите среду MSIX Packaging Tool Environment для создания виртуальной машины
  • VMware: то, что использую лично я. Создайте чистую виртуальную машину с Windows 10/11, сделайте снимок и восстанавливайте чистое состояние перед каждым циклом тестирования

Независимо от выбранного варианта, основное требование одно и то же: максимально приблизиться к окружению чистого первого запуска у пользователя.

Что проверять на чистой виртуальной машине

  1. Установите самоподписанный сертификат (следуя процедуре из Шага 3)
  2. Установите пакеты зависимостей (Шаг 4)
  3. Установите само приложение
  4. Запустите приложение и убедитесь, что основные функции работают корректно
  5. Проверьте, что элементы в меню «Пуск», значок в панели задач и удаление приложения работают правильно

Контрольный список

Перед отправкой в Store пройдите по этому списку:

  • [ ] Соберите тестовый пакет в конфигурации Release
  • [ ] Запустите WACK и убедитесь в отсутствии критических ошибок
  • [ ] Проверьте, что тестовый пакет содержит самоподписанный сертификат (сначала соберите Sideload-пакет)
  • [ ] Установите сертификат в Локальный компьютер → Доверенные лица
  • [ ] Выполните полную проверку на чистой виртуальной машине: установите сертификат → установите зависимости → установите приложение → протестируйте функциональность
  • [ ] В режиме зависимостей от платформы убедитесь, что пакеты зависимостей устанавливаются корректно
  • [ ] Приложение запускается нормально, основные функции работают, меню «Пуск» / удаление работают как ожидается

Эта статья входит в серию Подводные камни Store.