MSIX-pakkettypen

MSIX ondersteunt vier pakkettypen: Main, Framework, Resource en Optional. MSIX biedt ook ondersteuning voor bundelpakketten, die distributiecontainers zijn voor een of meer MSIX-pakketten.

Een pakkettype definieert een combinatie van uitrol-, afhankelijkheids-, uitvoerings- en onderhoudsgedrag. Sommige gedragingen zijn inherent aan het type, terwijl een manifestdeclaratie andere standaardinstellingen kan overschrijven.

Type Primair doel manifest- of identiteitsindicator
Hoofd Primair pakket voor een applicatie Geen declaratie voor een ander pakkettype
Framework Gedeelde bibliotheken, onderdelen of runtime-inhoud <Framework>true</Framework>
Resource Taal-, schaal- of kwalificeerderspecifieke bronnen <ResourcePackage>true</ResourcePackage>
Optioneel Aanvullende inhoud die is gekoppeld aan één hoofdpakket <uap3:MainPackageDependency>
Bundel Distributiecontainer voor meerdere MSIX-pakketten Bundelmanifest en een ResourceId waarde van ~

Hoofdpakketten

Een Main-pakket vertegenwoordigt het primaire pakket voor een toepassing. Het kan toepassingen, mogelijkheden, afhankelijkheden, extensies en out-of-process-servers declareren.

Het manifest bevat geen expliciete Main-package-markering. Een pakket is een hoofdpakket wanneer het zichzelf niet als een ander pakkettype definieert.

Framework-pakketten

Een Framework-pakket biedt gedeelde bibliotheken, onderdelen, resources of andere runtime-inhoud. Andere pakketten of processen voegen het Framework-pakket toe aan hun pakketgrafiek voordat de inhoud ervan wordt geladen.

Framework-pakketten bieden ondersteuning voor versies naast elkaar, zodat toepassingen onafhankelijk van elkaar kunnen overstappen op nieuwere versies. Een pakket declareert dit type door het manifestelement Framework in te stellen op true.

Zie De dynamische afhankelijkheids-API gebruiken voor informatie over het gebruik van Framework-pakketten van verpakte en uitgepakte processen.

Resourcepakketten

Een resourcepakket houdt taal-, weergaveschaal- of andere kwalificatiespecifieke resources gescheiden van een hoofd- of optioneel pakket. Windows installeert alleen de resourcepakketten die van toepassing zijn op een apparaat of gebruiker.

Resourcepakketten mogen standaard niet worden uitgevoerd. Een pakket kan deze standaardwaarde overschrijven met uap6:AllowExecution. Een pakket declareert het resourcetype door ResourcePackage in te stellen op true.

Optionele pakketten

Een optioneel pakket bevat aanvullende inhoud voor een specifiek hoofdpakket. Een toepassing kan bijvoorbeeld downloadbare kaarten, assets met hoge resolutie of optionele hulpprogramma's in afzonderlijke pakketten plaatsen.

In tegenstelling tot een Framework-pakket is een optioneel pakket gekoppeld aan één hoofdpakketfamilie. Het declareert die relatie via uap3:MainPackageDependency.

Zie Optionele pakketten en gerelateerde sets voor vereisten voor het ontwerpen en gerelateerde sets.

Bundelpakketten

Een MSIX-bundel (.msixbundle) bevat een of meer MSIX-pakketten. Een bundel biedt één distributieartefact, terwijl Windows alleen de architectuur en resourcepakketten kan installeren die van toepassing zijn op het doelapparaat.

Alle pakketten in een bundel behoren tot dezelfde pakketfamilie. Een bundel is een container in plaats van een vijfde implementeerbaar pakkettype.

Pakkettypen in code identificeren

De klasse Windows.ApplicationModel.Package stelt eigenschappen beschikbaar waarmee een pakkettype wordt geïdentificeerd:

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";
}

Pakkettypen identificeren met PowerShell

Standaard worden door Get-AppxPackage Main- en Framework-pakketten geretourneerd. Gebruik -PackageTypeFilter om andere typen toe te voegen:

Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
    Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle

Het uitvoerobject stelt geen eigenschap IsOptional beschikbaar. Gebruik het filter om optionele pakketten op te nemen en hun manifest- of pakketrelatie te inspecteren wanneer u deze moet onderscheiden.