Пакеты приложений на основе плоских пакетов

Важно!

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

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

Flat Bundle Diagram

Еще одним преимуществом плоских пакетов является потребность в создании меньшего числа пакетов. Так как на файлы пакетов приложений ссылаются только две версии приложения, могут ссылаться на один и тот же файл пакета, если пакет не изменился в двух версиях. Это позволяет при создании пакетов для следующей версии вашего приложения создавать только изменившиеся пакеты приложений. По умолчанию плоские пакеты будут ссылаться на файлы пакета приложения в той же папке, что и сама по себе. Однако эту ссылку можно изменить, указав другие пути (относительные пути, сетевые папки и расположения http). Для этого необходимо напрямую указать BundleManifest при создании плоского пакета.

Как создать плоский пакет

Плоский пакет можно создать с помощью инструмента MakeAppx.exe или с помощью макета упаковки, чтобы определить структуру пакета.

Использование MakeAppx.exe

Чтобы создать плоский пакет с помощью MakeAppx.exe, используйте команду "пакет MakeAppx.exe", как обычно, но с параметром /fb для создания неструктурированного файла пакета приложений (который будет очень мал, так как он ссылается только на файлы пакета приложения и не содержит фактических полезных данных).

Ниже приводится пример синтаксиса команды:

MakeAppx bundle [options] /d <content directory> /fb /p <output flat bundle name>

Дополнительные сведения об использовании MakeAppx.exe см. в разделе Создание пакета приложения с помощью инструмента MakeAppx.exe.

Использование макета упаковки

Кроме того, создать плоский пакет можно с помощью макета упаковки. Для этого задайте для атрибута FlatBundle значение true в элементе PackageFamily Манифеста пакета приложения. Чтобы узнать больше о макете упаковки, см. раздел Создание пакета с использованием макета упаковки.

Развертывание плоского пакета

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

После подписания пакетов можно установить приложение с помощью одного из следующих вариантов:

  • Дважды щелкните файл пакета приложений, чтобы установить его с помощью установщика приложений.
  • Используйте командлет Add-AppxPackage в PowerShell и наведите указатель на файл пакета приложений (при условии, что пакеты приложений находятся там, где пакет приложений ожидает их).

Отдельные пакеты .appx/.msix не могут развертываться сами по себе. Их необходимо развернуть с помощью appxbundle/.msixbundle. Однако после первоначальной установки можно обновить отдельные пакеты .appx/.msix неструктурированного пакета. Если вы обновляете отдельный пакет .appx/.msix, вам также потребуется обновить манифест неструктурированного пакета.

Например, если плоский пакет версии 1 состоит из msixbundle, x86 .msix, x64 .msix и ресурса MSIX, и вы знаете, что пакет версии 2 только имеет изменения в пакете активов, то необходимо создать msixbundle и ресурс MSIX, чтобы иметь возможность установить обновление. Необходимо создать msixbundle для версии 2, так как пакет отслеживает все версии пакетов MSIX. Повысьв версию ресурса MSIX до версии 2, вам потребуется новый MSIXbundle с этой новой ссылкой. Msixbundle версии 2 может содержать ссылки на msix версии 1 x86 и x64 .msix; Пакеты MSIX неструктурированного пакета не должны иметь одинаковый номер версии.