Tworzenie rozszerzeń pakietów dla aplikacji Zestaw SDK do aplikacji systemu Windows

Rozszerzenia pakietów rozszerzają model rozszerzenia aplikacji, umożliwiając szersze udostępnianie zawartości między pakietami. Host rozszerzenia pakietu może akceptować rozszerzenia z dowolnego pakietu, dzięki czemu jest odpowiedni dla scenariuszy rozszerzalności na poziomie platformy.

Note

Rozszerzenia pakietów wymagają systemu Windows 11 i korzystają z przestrzeni nazw uap17. Aby zastosować podejście zgodne z wcześniejszymi wersjami, zobacz Rozszerzenia aplikacji, które używają uap3.

Rozszerzenia pakietów vs. rozszerzenia aplikacji

Funkcja Rozszerzenia aplikacji (uap3) Rozszerzenia pakietu (uap17)
Minimalny system operacyjny Windows 10 1607 Windows 11
Scope Dla każdej aplikacji Na pakiet
Udostępnianie zawartości Tylko folder publiczny Pełny dostęp do zawartości pakietu
Przestrzeń nazw manifestu uap3:AppExtension uap17:PackageExtension

Deklarowanie hosta rozszerzenia pakietu

Dodaj deklarację PackageExtensionHost do manifestu aplikacji hosta:

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

Deklarowanie rozszerzenia pakietu

W manifeście pakietu rozszerzenia:

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

Odnajdywanie rozszerzeń pakietów

Użyj tego samego interfejsu API appExtensionCatalog , aby odnaleźć rozszerzenia pakietów w czasie wykonywania. Nazwa hosta odpowiada elementowi Name zadeklarowanemu w manifeście:

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
}

Najlepsze praktyki

  • Użyj konwencji nazewnictwa odwrotnej domeny dla nazw rozszerzeń (na przykład com.company.app.extensions).
  • Przesuń protokół rozszerzenia, aby aplikacje hosta mogły obsługiwać stare i nowe formaty rozszerzeń.
  • Zweryfikuj zawartość rozszerzenia przed użyciem — rozszerzenia pochodzą z innych pakietów i nie należy im bezkrytycznie ufać.