Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
MSIX поддерживает четыре типа пакетов: Main, Framework, Resource и Optional. MSIX также поддерживает пакеты Bundle, которые являются контейнерами распространения для одного или нескольких пакетов MSIX.
Тип пакета определяет сочетание поведения развертывания, зависимостей, выполнения и обслуживания. Некоторое поведение присуще типу, а объявление манифеста может переопределить другие значения по умолчанию.
| Type | Основная цель | Индикатор манифеста или идентификатор |
|---|---|---|
| Главная | Основной пакет для приложения | Нет объявления для другого типа упаковки |
| Framework | Разделяемые библиотеки, компоненты или содержимое среды выполнения | <Framework>true</Framework> |
| Ресурс | Ресурсы, зависящие от языка, масштаба или квалификатора | <ResourcePackage>true</ResourcePackage> |
| Необязательно | Дополнительный контент, связанный с одним основным пакетом | <uap3:MainPackageDependency> |
| Набор | Контейнер распространения для нескольких пакетов MSIX | Манифест пакета и значение ResourceId~ |
Основные пакеты
Основной пакет представляет собой основной пакет для приложения. Он может объявлять приложения, разрешения, зависимости, расширения и внешние серверы процесса.
Манифест не содержит явный маркер Main-package. Пакет является основным пакетом, если он не объявляет себя другим типом пакета.
Пакеты платформы
Пакет Framework предоставляет общие библиотеки, компоненты, ресурсы или другое содержимое среды выполнения. Другие пакеты или процессы добавляют пакет Framework в граф пакетов перед загрузкой его содержимого.
Пакеты Платформы поддерживают параллельные версии, чтобы приложения могли независимо переходить к более новым версиям. Пакет объявляет этот тип, задав для элемента манифеста Framework значение true.
Сведения об использовании пакетов Framework из упакованных и неупакованных процессов см. в разделе Использование API динамической зависимости.
Пакеты ресурсов
Пакет ресурсов отделяет ресурсы, зависящие от языка, масштаба отображения или других квалификаторов, от основного или необязательного пакета. Windows устанавливает только пакеты ресурсов, применяемые к устройству или пользователю.
Пакеты ресурсов по умолчанию не разрешают выполнение. Пакет может переопределить этот параметр по умолчанию с помощью uap6:AllowExecution. Пакет объявляет тип ресурса, задав ResourcePackage значение true.
Дополнительные пакеты
Необязательный пакет содержит дополнительное содержимое для конкретного основного пакета. Например, приложение может разместить загружаемые карты, ресурсы с высоким разрешением или необязательные инструменты в отдельных пакетах.
В отличие от пакета Framework, необязательный пакет связан с одним семейством основных пакетов. Он объявляет об этой связи через uap3:MainPackageDependency.
Сведения о подготовке и требованиях, связанных с набором, см. в разделе «Необязательные пакеты и создание связанных наборов».
Пакеты комплектов
Набор MSIX (.msixbundle) содержит один или несколько пакетов MSIX. Пакет предоставляет один артефакт распространения, позволяя Windows устанавливать только пакеты для соответствующей архитектуры и пакеты ресурсов, применимые к целевому устройству.
Все пакеты в наборе принадлежат одному семейству пакетов. Пакет — это контейнер, а не пятый тип развертываемого пакета.
Определите типы пакетов в коде
Класс Windows.ApplicationModel.Package предоставляет свойства, определяющие тип пакета:
static string GetPackageType(Windows.ApplicationModel.Package package)
{
if (package.IsBundle)
{
return "Bundle";
}
if (package.IsFramework)
{
return "Framework";
}
if (package.IsResourcePackage)
{
return "Resource";
}
if (package.IsOptional)
{
return "Optional";
}
return "Main";
}
Определить типы пакетов с помощью PowerShell
По умолчанию Get-AppxPackage возвращает пакеты Main и Framework. Используется -PackageTypeFilter для включения других типов:
Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle
Выходной объект не предоставляет свойство IsOptional. Используйте фильтр, чтобы включить необязательные пакеты и изучить их манифест или связь пакета, когда необходимо их различать.