Windows App Certification Kit (WACK) — это официальная утилита проверки от Microsoft, которая запускается перед публикацией приложения в Microsoft Store и выявляет нарушения требований сертификации: неподдерживаемые API, проблемы с производительностью, ошибки манифеста пакета. Если при сборке проекта в Visual Studio вы встретили пункт «Create App Packages» с предложением запустить сертификационные тесты — речь идёт именно об этом компоненте.
Инструмент входит в состав Windows SDK и устанавливается вместе с ним, отдельно скачивать его не требуется. Разработчики сталкиваются с WACK на этапе подготовки пакета MSIX или APPX, а обычные пользователи могут заметить его процесс в диспетчере задач после установки средств разработки. Дальше разберём, зачем нужна эта проверка, как её запустить и что делать с ошибками в отчёте.
Что такое Windows App Certification Kit и зачем он нужен
Windows App Certification Kit выполняет автоматизированное тестирование приложения по набору критериев Microsoft. Цель — убедиться, что программа корректно установится, запустится и удалится на компьютерах пользователей, не будет использовать запрещённые функции и не нарушит стабильность системы. Без прохождения этих проверок пакет не пройдёт предварительную валидацию при загрузке в Partner Center.
Проверка делится на несколько категорий тестов. Среди них — анализ используемых API, проверка манифеста пакета, тестирование запуска и завершения работы, контроль производительности и безопасности. Результат сохраняется в виде отчёта, где каждый непройденный тест сопровождается описанием проблемы.
- 🔍 Проверка API — поиск вызовов функций, запрещённых для приложений из Store;
- 📦 Валидация манифеста — корректность объявленных возможностей (capabilities) и расширений;
- ⚡ Производительность — время запуска и отзывчивость интерфейса;
- 🛡️ Безопасность — проверка цифровой подписи и флагов компиляции.
Как установить и где находится утилита
Отдельной загрузки у Windows App Certification Kit нет — компонент ставится вместе с Windows Software Development Kit (SDK). При установке Visual Studio достаточно выбрать рабочую нагрузку разработки под Windows, и SDK подтянется автоматически вместе с инструментами сертификации.
После установки исполняемый файл обычно располагается в каталоге средств SDK. Типичный путь выглядит так:
C:\Program Files (x86)\Windows Kits\10\App Certification Kit\appcert.exe
Точный путь зависит от версии установленного SDK, поэтому при необходимости проверьте содержимое папки Windows Kits на вашем диске. Запустить утилиту можно и через графический интерфейс, и из командной строки — второй вариант удобен для автоматизации сборки.
Как запустить проверку приложения
Удобнее всего запускать тесты прямо из Visual Studio: при создании пакета приложения через мастер Проект → Store → Create App Packages в конце предлагается кнопка запуска Windows App Certification Kit. Мастер сам подставит собранный пакет и покажет результаты в окне отчёта.
Второй способ — ручной запуск через графический интерфейс утилиты. Откройте appcert.exe, выберите тип проверки (например, настольное приложение или упакованный пакет), укажите путь к файлу .msix, .appx или установленной программе и дождитесь завершения тестов. Процесс может занять заметное время, особенно на слабых машинах.
Третий вариант — командная строка, полезная в CI/CD-конвейерах:
appcert.exe test -apptype windowsapp -appxpackagepath "C:\Builds\MyApp.msix" -reportoutputpath "C:\Reports\report.html"
☑️ Подготовка к запуску WACK
⚠️ Внимание: тесты проверяйте на релизной сборке, а не на Debug. Отладочная конфигурация почти гарантированно провалит проверки производительности и может использовать отладочные API, которые запрещены в Store.
Какие тесты выполняет комплект
Набор проверок зависит от версии SDK и типа приложения, но основные группы тестов устойчивы. Понимание этих категорий помогает заранее устранить типовые проблемы ещё до запуска сертификации.
| Категория теста | Что проверяется | Типичная причина провала |
|---|---|---|
| Поддерживаемые API | Отсутствие вызовов запрещённых функций Win32 | Использование недокументированных или устаревших API |
| Манифест пакета | Корректность capabilities, расширений, ресурсов | Объявлены возможности, которые приложение не использует |
| Запуск и завершение | Приложение стартует и закрывается без зависаний | Блокировка главного потока при старте |
| Безопасность | Наличие подписи, флаги защиты бинарных файлов | Отсутствие цифровой подписи пакета |
| Производительность | Время запуска, отзывчивость UI | Тяжёлые операции в потоке интерфейса |
Обратите внимание: проверка манифеста часто завершается ошибкой из-за избыточных возможностей — например, если в манифесте заявлен доступ к микрофону или местоположению, а код приложения их не использует. Лишние декларации стоит убирать до сборки релизного пакета.
Типичные ошибки и способы их устранения
Отчёт WACK формируется в формате HTML и содержит разделы «Passed», «Failed» и «Warnings». Проваленные тесты блокируют сертификацию, предупреждения — нет, но их лучше изучить. Каждая ошибка сопровождается ссылкой на описание требования в документации Microsoft.
Наиболее частые проблемы, с которыми сталкиваются разработчики:
- ❌ Использование запрещённых API — замените вызов на разрешённый аналог или пересмотрите архитектуру функции;
- ❌ Отсутствие подписи пакета — подпишите пакет сертификатом, доверенным на тестовой машине;
- ❌ Медленный запуск — отложите инициализацию тяжёлых компонентов после отрисовки первого экрана;
- ❌ Некорректный манифест — сверьте объявленные возможности с реально используемыми функциями.
⚠️ Внимание: не пытайтесь «обойти» проверку API, скрывая вызовы через динамическую загрузку библиотек. При публикации в Store пакет проходит дополнительный анализ на серверах Microsoft, и такие приёмы приводят к отклонению приложения или блокировке учётной записи разработчика.
Чем WACK отличается от сертификации в Microsoft Store
Локальная проверка и сертификация на стороне магазина — не одно и то же. WACK запускается на вашей машине и ловит технические нарушения, которые можно выявить автоматически. Сертификация в Partner Center включает те же автоматические тесты плюс проверку контента, возрастных рейтингов и политик магазина.
Практический вывод прост: пройденный локально тест не гарантирует публикацию, но резко снижает шанс отклонения по техническим причинам. Поэтому запускать комплект стоит перед каждой отправкой новой версии — это дешевле, чем ждать результатов проверки и получать отказ.
Можно ли проверить классическое Win32-приложение?
Да, в графическом интерфейсе appcert.exe есть отдельный тип проверки для настольных приложений. Это полезно при упаковке классической программы в MSIX через Desktop Bridge — комплект покажет несовместимости ещё до конвертации пакета.
Часто задаваемые вопросы
Windows App Certification Kit — это вирус или системный процесс?
Нет, это легитимный компонент Windows SDK от Microsoft. Если вы не устанавливали средства разработки, а процесс появился — проверьте, не ставились ли Visual Studio или SDK вместе с другим ПО. При сомнениях проверьте цифровую подпись файла appcert.exe в его свойствах.
Нужен ли WACK обычному пользователю, а не разработчику?
Обычному пользователю инструмент не нужен: он предназначен исключительно для проверки приложений перед публикацией. Если компонент занимает место и не используется, его можно удалить вместе с Windows SDK через установщик Visual Studio или список установленных программ.
Сколько времени занимает проверка приложения?
Длительность зависит от размера пакета и производительности машины: небольшие приложения проверяются за несколько минут, крупные — заметно дольше. Прерывать процесс не стоит, иначе отчёт окажется неполным.
Что делать, если тест провален, но приложение работает нормально?
Откройте HTML-отчёт и прочитайте описание конкретного теста — там указано нарушенное требование. Работоспособность на вашей машине не отменяет нарушения: например, запрещённый API может работать сейчас, но сломаться в будущих версиях Windows, поэтому Microsoft его блокирует.
Можно ли опубликовать приложение, не проходя WACK локально?
Да, локальный запуск не обязателен — те же проверки выполнятся на серверах Microsoft при загрузке пакета. Однако при провале вы потеряете время на цикл отправки и отклонения, поэтому предварительная локальная проверка считается хорошей практикой.