Вводные сведения о пакетах ресурсов

Важно!

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

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

Схема объединения пакета активов

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

Как пакеты активов влияют на публикацию?

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

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

Нужно ли использовать пакеты активов?

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

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

Создание пакета активов

Самый простой способ создания пакетов активов — использование макета упаковки. Однако пакеты активов также можно создать вручную с помощью MakeAppx.exe. Чтобы указать, какие файлы включить в пакет активов, необходимо создать файл сопоставления. В этом примере единственный файл в пакете активов — Video.mp4, однако указать здесь необходимо все файлы пакета активов. Обратите внимание, что описатель ResourceDimensions в ResourceMetadata пропущен для пакетов активов (по сравнению с файлом сопоставления для пакетов ресурсов).

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

Используйте одну из этих команд для создания пакета ресурсов с помощью MakeAppx.exe (для MSIX и appx).

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

Следует отметить, что все файлы, на которые есть ссылка в AppxManifest (файлы логотипа), невозможно переместить в пакеты активов, эти файлы необходимо продублировать в пакетах архитектуры.

Пакеты активов также не должны содержать файл resources.pri; использовать MRT для доступа к файлам пакета активов невозможно. Чтобы узнать больше о том, как осуществлять доступ к файлам пакета активов и почему пакеты активов требуют установки приложения на диск NTFS, изучите раздел Разработка с использованием пакетов активов и сворачивания пакетов.

Чтобы проконтролировать, возможно ли выполнение пакета активов, можно воспользоваться командой uap6:AllowExecution в элементе Properties манифеста AppxManifest. Кроме того, необходимо добавить uap6 к элементу верхнего уровня Package, чтобы получить следующее:

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Если не указано, значение по умолчанию для AllowExecution — true. Задайте это значение равным false для пакетов активов без выполняемых файлов, чтобы ускорить публикацию.