Skapa pakettillägg för Windows App SDK appar

Pakettillägg expanderar apptilläggsmodellen genom att tillåta bredare innehållsdelning mellan paket. En pakettilläggsvärd kan acceptera tillägg från alla paket, vilket gör det lämpligt för utökningsscenarier på plattformsnivå.

Note

Pakettillägg kräver Windows 11 och använder uap17 namnområdet. En tidigare kompatibel metod finns i Apptillägg som använder uap3.

Pakettillägg vs. app tillägg

Feature Apptillägg (uap3) Pakettillägg (uap17)
Lägsta operativsystem Windows 10 1607 Windows 11
Scope Per applikation Per paket
Innehållsdelning Endast gemensam mapp Fullständig innehållsåtkomst för paket
Manifestnamnområde uap3:AppExtension uap17:PackageExtension

Deklarera en värd för pakettillägg

Lägg till en PackageExtensionHost deklaration i värdappens manifest:

<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
  <Applications>
    <Application ...>
      <Extensions>
        <uap17:Extension Category="windows.packageExtensionHost">
          <uap17:PackageExtensionHost>
            <uap17:Name>com.example.myplatform.extensions</uap17:Name>
          </uap17:PackageExtensionHost>
        </uap17:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

Deklarera ett pakettillägg

I tilläggspaketets manifest:

<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
  <Applications>
    <Application ...>
      <Extensions>
        <uap17:Extension Category="windows.packageExtension">
          <uap17:PackageExtension Name="com.example.myplatform.extensions"
                                   Id="MyExtension"
                                   DisplayName="My Extension"
                                   Description="Adds features to the platform">
            <uap17:Properties>
              <ExtensionType>content</ExtensionType>
              <Version>1.0</Version>
            </uap17:Properties>
          </uap17:PackageExtension>
        </uap17:Extension>
      </Extensions>
    </Application>
  </Applications>
</Package>

Identifiera pakettillägg

Använd samma AppExtensionCatalog-API för att identifiera pakettillägg vid körning. Värdnamnet matchar det Name deklarerade i manifestet:

var catalog = AppExtensionCatalog.Open("com.example.myplatform.extensions");
var extensions = await catalog.FindAllAsync();

foreach (var ext in extensions)
{
    System.Diagnostics.Debug.WriteLine(
        $"Found extension: {ext.DisplayName} ({ext.Id})");

    // Read custom properties
    var properties = await ext.GetExtensionPropertiesAsync();
    // Access properties as needed
}

Metodtips

  • Använd en namngivningskonvention för omvänd domän för tilläggsnamn (till exempel com.company.app.extensions).
  • Version ditt tilläggsprotokoll så att värdappar kan hantera gamla och nya tilläggsformat.
  • Verifiera tilläggsinnehåll innan du använder det – tillägg kommer från andra paket och bör inte vara blint betrodda.