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

Важно!

Если вы планируете отправить приложение в Магазин, обратитесь в службу поддержки разработчика Windows и получите утверждение об использовании пакетов ресурсов.

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

Asset Package Bundle Diagram

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

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

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

При создании пакета активов можно указать, должен ли пакет выполняться. Так как пакеты ресурсов должны содержать только не зависящие от архитектуры файлы, они обычно не содержат 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, чтобы стать следующим элементом пакета пакета верхнего уровня:

<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 для пакетов ресурсов без исполняемых файлов, чтобы ускорить публикацию.