Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширения пакетов расширяют модель расширения приложения, позволяя расширить общий доступ к содержимому между пакетами. Хост расширений пакета может принимать расширения из любых пакетов, что делает его подходящим для сценариев расширения на уровне платформы.
Note
Расширения пакетов требуют Windows 11 и использования uap17 пространства имен. Подход для совместимости с более ранними версиями см. в расширениях приложений, в которых используется uap3.
Расширения пакетов и расширения приложений
| Функция | Расширения приложений (uap3) |
Расширения пакетов (uap17) |
|---|---|---|
| Минимальная ОС | Windows 10 1607 | Windows 11 |
| Объем | Отдельно для каждого приложения | По пакетам |
| Отправка контента | Только общедоступная папка | Полный доступ к содержимому пакета |
| Пространство имен манифеста | uap3:AppExtension |
uap17:PackageExtension |
Объявить хост расширения пакета
PackageExtensionHost Добавьте объявление в манифест ведущего приложения:
<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>
Объявление расширения пакета
В манифесте пакета расширения:
<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>
Обнаружение расширений пакетов
Используйте тот же API AppExtensionCatalog для обнаружения расширений пакетов во время выполнения. Имя узла соответствует объявленному Name в манифесте:
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
}
Лучшие практики
- Используйте соглашение об именовании обратного домена для имен расширений (например,
com.company.app.extensions). - Добавьте версионирование в протокол расширения, чтобы хост-приложения могли обрабатывать старые и новые форматы расширений.
- Проверяйте содержимое расширения перед использованием — расширения поступают из других пакетов, и им не следует слепо доверять.
Связанные материалы
Windows developer