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

Важно!

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

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

Flat Bundle Diagram

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

Создание плоского пакета

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

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

Чтобы создать неструктурированный пакет с помощью MakeAppx.exe, используйте команду "MakeAppx.exe package" как обычно, но с параметром /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 для неструктурированного пакета не должны иметь одинаковый номер версии.