Тесты приложения, перенесенного из классического приложения для Windows

мост для классических приложений приложения (см. статью "Создание пакета MSIX из кода") — классические приложения Windows, преобразованные в приложения универсальная платформа Windows (UWP) с помощью мост для классических приложений. После преобразования классическое приложение для Windows упаковывается, обслуживается и развертывается в виде пакета приложения UWP (APPX или APPXBUNDLE), предназначенного для Windows 10 Desktop.

Обязательные и необязательные тесты

Для приложений, созданный с помощью моста для классических приложений, существуют необязательные тесты, которые носят исключительно информационный характер и не будут использоваться для оценки приложения при выставлении в Microsoft Store. Мы рекомендуем изучать результаты этих тестов для повышения качества приложений. Общие критерии допуска приложения к выставлению в Store определяются обязательными тестами, а результаты необязательных тестов при этом не учитываются.

Существующие необязательные тесты

1. Проверка файлов с цифровой подписью

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

Сведения о тесте
При выполнении теста просматриваются все переносимые исполняемые файлы в пакете, а их заголовки проверяются на наличие подписи. Мы рекомендуем, чтобы все переносимые исполняемые файлы имели цифровую подпись. Если какой-либо переносимый исполняемый файл не подписан, будет создано предупреждение.

Корректирующие действия
Рекомендуется, чтобы в пакете всегда содержались файлы с цифровой подписью. Дополнительные сведения см. в разделе Знакомство с подписыванием кода.

2. Команды сопоставления файлов

Основные сведения
При выполнении этого теста просматривается реестр пакета и проверяется, зарегистрированы ли в нем команды сопоставления файлов.

Сведения о тесте
Вы можете расширить возможности преобразованных классических приложений с помощью разных API среды выполнения Windows. Этот тест позволяет убедиться, что двоичные файлы UWP в приложении не вызывают API, не относящиеся к среде выполнения Windows. Для двоичных файлов UWP установлен флаг AppContainer.

Корректирующие действия
Ознакомьтесь с классическим мостом uWP: расширения приложений для объяснения этих расширений и их правильного использования.

3. Тест конфигурации отладки

Этот тест позволяет проверить, не является ли MSIX- или APPX-файл отладочной сборкой.

Основные сведения
Чтобы пройти сертификацию для Microsoft Store, приложения не должны быть скомпилированы для отладки и не должны ссылаться на отладочные версии исполняемого файла. Кроме того, необходимо создать код как оптимизированный для приложения, чтобы пройти этот тест.

Сведения о тесте
Протестируйте приложение, чтобы убедиться, что это не отладочная сборка и не связана с платформами отладки.

Корректирующие действия

  • Выполните сборку рабочего выпуска приложения, прежде чем отправлять его в Microsoft Store.
  • Убедитесь, что установлена правильная версия .NET Framework.
  • Убедитесь, что приложение не связывается с отладочными версиями платформы и что она строится с версией выпуска. Если это приложение содержит компоненты .NET, убедитесь, что установлена правильная версия платформы .NET.

4. Проверка работоспособности пакета

4.1 Использование архивных файлов

Основные сведения
Этот тест помогает создавать более качественные приложения, выполняемые на устройствах с Windows 10 S, с помощью моста для классических приложений.

Сведения о тесте
Проверяются все исполняемые файлы внутри архивных файлов или самоизвлекающегося содержимого. Поскольку исполняемые файлы внутри этого типа содержимого не подписываются во время регистрации в Microsoft Store, в системах Windows 10 S приложение может работать не так, как ожидается.

Корректирующие действия

  • Необходимо оценить файлы, отмеченные в ходе проверки, чтобы определить, влияют ли они на ваше приложение, выполняемое в среде Windows 10 S.
  • Если они влияют на ваше приложение, удалите исполняемые файлы из архивных и не используйте самоизвлекающиеся архивы для размещения исполняемых файлов на диске. Это позволит сохранить функциональность приложения.

4.2 Заблокированные исполняемые файлы

Основные сведения
Этот тест помогает создавать более качественные приложения, выполняемые на устройствах с Windows 10 S, с помощью моста для классических приложений.

Сведения о тесте
Проверяется, пытается ли приложение запустить исполняемые файлы (что запрещено в системах Windows 10 S). Приложения, которые используют эту возможность, могут выполняться в системах Windows 10 S не так, как ожидается.

Корректирующие действия

  • Определите, какие из записей, отмеченных в ходе проверки, представляют собой вызов запуска исполняемого файла, который не является частью вашего приложения, и удалите эти вызовы.
  • Если отмеченные файлы являются частью вашего приложения, предупреждение можно игнорировать.

Существующие обязательные тесты

1. Тест возможностей приложений (специальные возможности использования)

Основные сведения
Специальные возможности использования предназначены для очень конкретных сценариев. Эти возможности разрешены использовать только учетные записи компании.

Сведения о тесте
Проверьте, объявляет ли приложение любой из следующих возможностей:

  • EnterpriseAuthentication
  • SharedUserCertificates
  • DocumentsLibrary

Если объявлены какие-либо из этих возможностей, тест отобразит предупреждение пользователю.

Корректирующие действия
Рассмотрите возможность специального использования, если приложение не требует его. Кроме того, согласно политике размещения приложений использование этих возможностей дополнительно анализируется при размещении.

2. Тесты ресурсов манифеста приложения

2.1 Проверка ресурсов приложения

Приложение может не установиться надлежащим образом, если в манифесте приложения объявлены неправильные строки или изображения. Если при установке приложения возникают такие ошибки, логотип приложения или другие изображения могут отображаться неправильно.

Сведения о тесте
Проверяет ресурсы, определенные в манифесте приложения, чтобы убедиться, что они присутствуют и допустимы.

Корректирующее действие
Руководствуйтесь следующей таблицей.

Сообщение об ошибке Комментарии
Изображение {имя изображения} определяет квалификаторы Scale и TargetSize; за раз можно определить только один квалификатор. Изображения можно настроить для разных разрешений. В фактическом сообщении {image name} содержит имя изображения с ошибкой. Убедитесь, что каждое изображение определяет масштаб или targetSize в качестве квалификатора.
Не удалось ограничить размер изображения {image name}. Убедитесь, что все изображения приложений соответствуют соответствующим ограничениям размера. В фактическом сообщении {image name} содержит имя изображения с ошибкой.
Изображение {имя образа} отсутствует в пакете. Отсутствует обязательный образ. В фактическом сообщении {image name} содержит имя отсутствующих изображений.
Образ {имя изображения} не является допустимым файлом образа. Убедитесь, что все изображения приложений соответствуют соответствующим ограничениям типа формата файла. В фактическом сообщении {image name} содержит имя недопустимого изображения.
Изображение "BadgeLogo" имеет значение ABGR {value} в позиции (x, y), недопустимое. Пиксель должен быть белым (##FFFFFF) или прозрачным (00######) Логотип эмблемы — это изображение, которое отображается рядом с уведомлением о значке, чтобы определить приложение на экране блокировки. Это изображение должно быть монохромным (оно может содержать только белые и прозрачные пиксели). В фактическом сообщении {value} содержит значение цвета в изображении, которое недопустимо.
Изображение "BadgeLogo" имеет значение ABGR {value} в позиции (x, y), недопустимое для белого изображения высокой контрастности. Пиксель должен быть (##2A2A2A) или темнее или прозрачным (00######). Логотип эмблемы — это изображение, которое отображается рядом с уведомлением о значке, чтобы определить приложение на экране блокировки. Так как в режиме светлой схемы с высокой контрастностью логотип отображается на белом фоне, нужно использовать темную версию логотипа. В белом цвете с высокой контрастностью логотип эмблемы может содержать только пиксели, которые темнее (##2A2A2A) или прозрачны. В фактическом сообщении {value} содержит значение цвета в изображении, которое недопустимо.
Изображение должно определить по крайней мере один вариант без квалификатора TargetSize. Он должен определить квалификатор масштабирования или оставить scale и TargetSize не указано, что по умолчанию имеет значение Scale-100. Дополнительные сведения см. в руководствах по адаптивному дизайну и ресурсам приложения.
Пакет отсутствует файл resources.pri. Если в манифесте приложения есть локализуемое содержимое, убедитесь, что пакет приложения содержит допустимый файл resources.pri.
Файл resources.pri должен содержать карту ресурсов с именем, которое соответствует имени пакета {package full name}. Вы можете увидеть эту ошибку, если манифест изменился, а имя карты ресурсов в файле resources.pri не соответствует имени пакета в манифесте. В фактическом сообщении {полное имя пакета} содержит имя пакета, которое должен содержать resources.pri. Чтобы устранить ошибку, необходимо перестроить файл resources.pri, причем самым простым способом может стать перестройка пакета приложения.
Файл resources.pri не должен включать AutoMerge. MakePRI.exe поддерживает параметр с названием AutoMerge. По умолчанию параметр AutoMerge отключен. Когда параметр AutoMerge включен, ресурсы языкового пакета приложения объединяются в единый файл resources.pri во время выполнения. Мы не рекомендуем использовать этот параметр в приложениях, предназначенных для распространения через Microsoft Store. Файл resources.pri приложения, распространяемого через Microsoft Store, должен находиться в корневом каталоге пакета приложения и содержать все настройки языка, поддерживаемые приложением.
Строка {string} не удалось ограничить максимальную длину символов {number}. Ознакомьтесь с требованиями к пакету приложения. В фактическом сообщении {string} заменяется строкой с ошибкой и {number} содержит максимальную длину.
Строка {string} не должна содержать пробелы в начале и конечных строках. Схема элементов в манифесте приложения не разрешает начальные или конечные символы пробелов. В фактическом сообщении {string} заменяется строкой ошибкой. Убедитесь, что ни один из локализованных значений полей манифеста в resources.pri не имеет начальных или конечных символов пробелов.
Строка должна быть непустой (больше нуля в длину) Дополнительные сведения см. в разделе "Требования к пакету приложений".
В файле resources.pri не указан ресурс по умолчанию. Дополнительные сведения см. в руководстве по ресурсам приложений. В конфигурации сборки по умолчанию при генерации наборов Visual Studio включает в пакет приложения только ресурсы изображений scale-200. Другие ресурсы помещаются в пакет ресурсов. Вам необходимо либо включить ресурсы изображений scale-200, либо настроить проект таким образом, чтобы он включал имеющиеся ресурсы.
В файле resources.pri не указано значение ресурса. Убедитесь, что манифест приложения имеет допустимые ресурсы, определенные в resources.pri.
Размер файла изображения {filename} должен быть меньше 204 800 байт. Уменьшите размер указанных изображений.
Файл {filename} не должен содержать раздел обратного сопоставления. Хотя обратная карта создается во время отладки Visual Studio F5 при вызове makepri.exe, его можно удалить, выполнив makepri.exe без параметра /m при создании файла pri.

2.2 Проверка фирменной символики

Основные сведения
Приложения, созданные с помощью моста для классических приложений, должны быть завершенными и полностью работоспособными. Приложения, использующие образы по умолчанию (из шаблонов или примеров пакетов SDK), представляют плохой пользовательский интерфейс и не могут быть легко идентифицированы в каталоге магазинов.

Сведения о тесте
Тест проверяет, являются ли образы, используемые приложением, не являются ли образы по умолчанию из примеров пакета SDK или из Visual Studio.

Корректирующие действия
Замените изображения по умолчанию более уникальными и репрезентативными.

3. Тесты соответствия пакетам

3.1 Манифест приложения

Проверяет содержание манифеста приложения, чтобы убедиться в его правильности.

Основные сведения
Приложения должны иметь правильный формат манифеста приложения.

Сведения о тесте
Проверяет манифест приложения, чтобы проверить правильность содержимого, как описано в требованиях к пакету приложения. В этом тесте выполняются описанные ниже проверки.

  • Расширения файлов и протоколы
    Приложение может объявлять типы файлов, с которыми оно может быть сопоставлено. Объявление большого количества редких типов файлов ухудшает взаимодействие с пользователем. Этот тест позволяет ограничить количество расширений файлов, которые можно сопоставить с приложением.
  • Правило зависимости платформы
    В этом тесте реализуется требование того, чтобы приложения объявляли надлежащие зависимости для UWP. Если существует неуместная зависимость, этот тест завершится ошибкой. При выявлении несоответствия между версией ОС, в которой должно выполняться приложение, и заданными в нем зависимостями платформы тест считается непройденным. Тест также завершается ошибкой, если приложение ссылается на любую из предварительных версий библиотек DLL платформы.
  • Проверка межпроцессного взаимодействия
    В этом тесте реализуется требование, запрещающее приложениям, созданным с помощью моста для классических приложений, передавать данные за пределы контейнера приложения компонентам рабочего стола. Взаимодействие между процессами предназначено только для загруженных на стороне приложений. Приложения, в которых задан атрибут ActivatableClassAttribute с именем DesktopApplicationPath, не пройдут этот тест.

Корректирующее действие
Просмотрите манифест приложения в соответствии с требованиями, описанными в требованиях к пакету приложений.

3.2 Число приложений

Этот тест позволяет убедиться, что пакет приложений (например, APPX) содержит одно приложение.

Основные сведения
Тест реализован согласно политике Microsoft Store.

Сведения о тесте
Этот тест позволяет убедиться в том, что общее количество пакетов APPX в наборе меньше 512 и в наборе есть только один "основной" пакет. В ходе теста также проверяется, имеет ли номер версии набора значение 0.

Корректирующие действия
Убедитесь, что пакет приложения и набор соответствуют требованиям, приведенным в разделе Сведения о тесте.

3.3 Проверки реестра

Основные сведения
Этот тест позволяет проверить, устанавливает и обновляет ли приложение какие-либо новые службы или драйверы.

Сведения о тесте
Тест позволяет проверить содержимое файла registry.dat на наличие обновлений определенных разделов реестра, указывающих на регистрацию новой службы или драйвера. Если приложение пытается установить драйвер или службу, тест не будет пройден.

Корректирующие действия
Просмотрите ошибки и удалите соответствующие службы или драйверы, если они не нужны. Если приложение зависит от них, необходимо изменить такое приложение, чтобы зарегистрировать его в Store.

4. Тест соответствующих файлов платформы

Приложения, устанавливающие смешанные двоичные файлы, могут аварийно завершаться или работать неправильно в зависимости от архитектуры процессора пользователя.

Основные сведения
Этот тест позволяет проверить двоичные файлы в пакете приложения на предмет конфликтов с архитектурой. Пакет приложения не должен содержать двоичные файлы, которые нельзя использовать в архитектуре процессора, указанной в манифесте. Включение неподдерживаемых двоичных файлов может привести к сбою приложения или ненужным увеличением размера пакета приложения.

Сведения о тесте
Проверяет соответствие разрядности для каждого файла в заголовке PE архитектуре процессора, объявленной в пакете приложения.

Корректирующие действия
Следуйте этим рекомендациям, чтобы убедиться, что пакет приложения содержит только файлы, поддерживаемые архитектурой, указанной в манифесте приложения:

  • Если целевая архитектура процессора для приложения не зависит от типа процессора, пакет приложения не должен включать двоичные файлы и файлы образов типов x86, x64 и ARM.
  • Если для приложения используется архитектура целевого процессора x86, пакет приложения должен содержать только файлы двоичного файла или типа образа x86. Если пакет содержит двоичные файлы или файлы образов типов x64 или ARM, он не пройдет тестирование.
  • Если для приложения используется архитектура целевого процессора x64, пакет приложения должен содержать файлы двоичного файла или типа образа x64. Обратите внимание, что в этом случае пакет также может включать файлы x86, но основной интерфейс приложения должен использовать двоичный файл x64. Если пакет содержит двоичные файлы или файлы образов типа ARM либо двоичные файлы или файлы образов только типа x86, он не пройдет тест.
  • Если в качестве целевой архитектуры процессора для приложения выбрана архитектура ARM, пакет приложения должен включать только двоичные файлы и файлы образов типа ARM. Если пакет содержит файлы двоичного файла x64 или x86 или типа образа, он завершится сбоем теста.

5. Поддерживаемый тест API

Позволяет убедиться, что в приложении не используются несовместимые API.

Основные сведения
Приложения, созданные с помощью моста для классических приложений, могут использовать некоторые устаревшие API Win32 вместе с современными API (компонентами UWP). Этот тест позволяет выявить управляемые двоичные файлы, которые используют неподдерживаемые API.

Сведения о тесте
Этот тест позволяет проверить все компоненты UWP в приложении следующим образом:

  • Позволяет убедиться, что ни один управляемый двоичный файл в пакете приложения не использует зависимость от API Win32, который не поддерживается для разработки приложений UWP. Для этого проверяется таблица адресов импорта для двоичного файла.
  • Проверяет, что каждый управляемый двоичный файл в пакете приложения не имеет зависимости от функции вне утвержденного профиля.

Корректирующие действия
Это можно исправить, выполнив компиляцию приложения в виде сборки выпуска, а не отладочной сборки.

Примечание.

Отладочная сборка приложения не пройдет этот тест, даже если в приложении используются только API для приложений UWP. Проверьте сообщения об ошибках, чтобы выявить имеющийся API, который не разрешен для приложений UWP.

Примечание.

Приложения на C++ в конфигурации отладки не пройдут этот тест, даже если в конфигурации используются только API из пакета Windows SDK для приложений UWP. Дополнительные сведения об этом см. в статье Альтернативы API Windows в приложениях UWP.

6. Проверка контроля учетных записей пользователей (UAC)

Основные сведения
Позволяет убедиться, что приложение не запрашивает контроль учетных записей во время выполнения.

Сведения о тесте
Приложение не может запрашивать повышение прав администратора или доступ UIAccess согласно политике Microsoft Store. Повышение разрешений безопасности не поддерживается.

Корректирующие действия
Приложения должны запускаться от имени текущего пользователя. Подробные сведения см. в статье Обзор системы безопасности модели автоматизации пользовательского интерфейса.

7. проверка метаданных среда выполнения Windows

Основные сведения
Гарантирует, что компоненты, отправляемые в приложении, соответствуют системе типов UWP.

Сведения о тесте
В ходе этого теста возвращается ряд флагов, связанных с надлежащим использованием типов.

Корректирующие действия

  • Атрибут ExclusiveTo
    Убедитесь, что классы UWP не реализуют интерфейсы, отмеченные как ExclusiveTo для другого класса.
  • Правильность общих метаданных
    Убедитесь, что компилятор, который вы применяете для создания типов, использует последнюю версию спецификаций UWP.
  • Свойства
    Убедитесь, что для всех свойств в классе UWP имеется метод get (методы setнеобязательны). Убедитесь, что тип, возвращаемый методом get, совпадает с типом входного параметра метода set.
  • Расположение типов
    Убедитесь, что метаданные для всех типов UWP находятся в WINMD-файле с самым длинным именем, соответствующим пространству имен, в пакете приложения.
  • Чувствительность к регистру имени типа
    Убедитесь, что в пакете приложения все типы UWP имеют уникальные имена без учета регистра. Кроме того, убедитесь, что имя типа UWP также не используется в качестве имени пространства имен в пакете приложения.
  • Правильность имен типов
    Убедитесь, что в глобальном пространстве имен или в пространстве имен Windows верхнего уровня отсутствуют типы UWP.

8. Тесты функций безопасности Windows

Изменение защиты безопасности Windows по умолчанию может поставить клиентов под повышенный риск.

8.1 Анализатор запрещенных файлов

Основные сведения
Для некоторых файлов улучшена безопасность, надежность и внесены другие важные улучшения. Приложения, созданные с помощью моста для классических приложений, должны содержать последние версии этих файлов, так как устаревшие версии представляют угрозу. Комплект сертификации приложений для Windows блокирует эти файлы, чтобы все приложения гарантированно пользовались текущей версией.

Сведения о тесте
На данный момент в комплекте сертификации приложений для Windows проверяется наличие следующих запрещенных файлов:

  • Bing.Maps.JavaScript\js\veapicore.js
    Обычно этот тест не удается пройти, если приложение использует версию файла "Release Preview" вместо последнего официального выпуска.

Корректирующие действия
Используйте последнюю версию пакета SDK Карт Bing для приложений UWP.

8.2 Подписывание частного кода

Проверяет наличие двоичных файлов подписывания частного кода в пакете приложения.

Основные сведения
Файлы подписывания частного кода должны быть закрытыми, так как они могут использоваться для вредоносных целей в случае, если они скомпрометированы.

Сведения о тесте
Проверяет наличие в пакете приложения файлов с расширениями PFX и SNK, которые указывают на наличие ключей подписывания частного кода.

Корректирующие действия
Удалите из пакета все ключи подписывания частного кода (например, файлы PFX и SNK).