Vytváření rozšíření balíčků pro aplikace Windows App SDK

Rozšíření balíčků rozšiřují model rozšíření aplikace tím, že umožňují širší sdílení obsahu mezi balíčky. Hostitel rozšíření balíčku může přijímat rozšíření z libovolného balíčku, takže je vhodný pro scénáře rozšiřitelnosti na úrovni platformy.

Note

Rozšíření balíčků vyžadují Windows 11 a používají jmenný prostor uap17. Informace o dřívějším kompatibilním přístupu najdete v tématu Rozšíření aplikací , která používají uap3.

Rozšíření balíčků vs. rozšíření aplikací

funkce Rozšíření aplikací (uap3) Rozšíření balíčků (uap17)
Minimální operační systém Windows 10 1607 Windows 11
Scope Pro jednotlivé aplikace Jednotlivé balíčky
Sdílení obsahu Pouze veřejná složka Úplný přístup k obsahu balíčku
Jmenný prostor manifestu uap3:AppExtension uap17:PackageExtension

Deklarujte hostitele rozšíření pro balíček

PackageExtensionHost Přidejte deklaraci do manifestu hostitelské aplikace:

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

Deklarace rozšíření balíčku

V manifestu balíčku rozšíření:

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

Vyhledat rozšíření balíčků

Ke zjišťování rozšíření balíčků za běhu použijte stejné rozhraní API AppExtensionCatalog . Název hostitele odpovídá Name deklarovanému v manifestu:

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
}

Osvědčené postupy

  • Pro názvy rozšíření (například com.company.app.extensions) použijte konvenci pojmenování reverzní domény.
  • Verze vašeho rozšiřujícího protokolu, aby hostitelské aplikace mohly zpracovávat staré a nové formáty rozšíření.
  • Před použitím ověřte obsah rozšíření – rozšíření pocházejí z jiných balíčků a neměli byste jim slepě důvěřovat.