Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As extensões de pacotes expandem o modelo de extensão de aplicações ao permitir uma partilha mais ampla de conteúdos entre pacotes. Um host de extensões de pacotes pode aceitar extensões de qualquer pacote, tornando-o adequado para cenários de extensibilidade ao nível da plataforma.
Note
Extensões de pacotes requerem o Windows 11 e utilizam o uap17 namespace. Para uma abordagem compatível com versões anteriores, consulte as extensões de aplicação, que utilizam uap3.
Extensões de pacotes vs. extensões de aplicações
| Feature | Extensões de aplicação (uap3) |
Extensões de pacotes (uap17) |
|---|---|---|
| OS mínimo | Windows 10 1607 | Windows 11 |
| Scope | Por candidatura | Por embalagem |
| Partilha de conteúdos | Apenas pasta pública | Acesso ao conteúdo completo do pacote |
| Espaço de nomes manifesto | uap3:AppExtension |
uap17:PackageExtension |
Declarar um host de extensão de pacote
Adicione uma PackageExtensionHost declaração ao manifesto da aplicação anfitriã:
<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>
Declarar uma extensão de pacote
No manifesto do pacote de extensão:
<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>
Descobre extensões de pacotes
Use a mesma API AppExtensionCatalog para descobrir extensões de pacotes em tempo de execução. O nome do anfitrião corresponde ao Name declarado no manifesto:
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
}
Melhores práticas
- Use uma convenção de nomenclatura de domínio reverso para nomes de extensões (por exemplo,
com.company.app.extensions). - Adapte o seu protocolo de extensão para que as aplicações anfitriãs possam lidar com formatos de extensão antigos e novos.
- Valide o conteúdo das extensões antes de o usar — as extensões vêm de outros pacotes e não devem ser confiáveis cegamente.
Conteúdo relacionado
Windows developer