Csomagbővítmények létrehozása Windows App SDK alkalmazásokhoz

A csomagbővítmények kibővítik az alkalmazásbővítmény-modellt azáltal, hogy szélesebb körű tartalommegosztást tesz lehetővé a csomagok között. A csomagbővítmény-gazdagépek bármilyen csomagból elfogadhatnak bővítményeket, így alkalmasak platformszintű bővíthetőségi forgatókönyvekre.

Note

A csomagbővítmények használatához Windows 11 és a uap17 névtér használata szükséges. Korábbi kompatibilis megközelítésért tekintse meg a használt uap3.

Csomagbővítmények vs. app bővítmények

Funkció Alkalmazásbővítmények (uap3) Csomagbővítmények (uap17)
Operációs rendszer minimális száma Windows 10 1607 Windows 11
Scope Alkalmazásonként Csomagonként
Tartalommegosztás Csak nyilvános mappa Teljes csomagtartalom-hozzáférés
Manifesztum névtér uap3:AppExtension uap17:PackageExtension

Csomagbővítmény-gazdagép deklarálása

Adjon hozzá egy PackageExtensionHost deklarációt a gazdaalkalmazás jegyzékfájljához:

<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>

Csomagbővítmény deklarálása

A bővítménycsomag jegyzékfájljában:

<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>

Csomagbővítmények felderítése

Használja ugyanazt az AppExtensionCatalog API-t a csomagbővítmények futásidejű felderítéséhez. A gazdagép neve megegyezik a manifesztumban deklarált Name értékkel:

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
}

Bevált gyakorlatok

  • Használjon fordított tartománynév-konvenciót a bővítménynevekhez (például com.company.app.extensions).
  • Verziószámozza a bővítményprotokollt, hogy a gazdagépalkalmazások kezelni tudják a régi és az új bővítményformátumokat.
  • Használat előtt ellenőrizze a bővítmény tartalmát – a bővítmények más csomagokból származnak, és nem szabad vakon megbízhatónak lenniük.