Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ć.