Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las extensiones de paquete expanden el modelo de extensión de aplicación al permitir un uso compartido de contenido más amplio entre paquetes. Un host de extensión de paquete puede aceptar extensiones de cualquier paquete, lo que lo convierte en adecuado para escenarios de extensibilidad de nivel de plataforma.
Note
Las extensiones de paquete requieren Windows 11 y usan el uap17 espacio de nombres . Para obtener un enfoque compatible con versiones anteriores, consulte Extensiones de aplicación que usan uap3.
Extensiones de paquete vs. app extensiones
| Feature | Extensiones de aplicación (uap3) |
Extensiones del paquete (uap17) |
|---|---|---|
| Sistema operativo mínimo | Windows 10 1607 | Windows 11 |
| Ámbito | Por aplicación | Por paquete |
| Uso compartido de contenido | Solo carpeta pública | Acceso completo al contenido del paquete |
| Espacio de nombres del manifiesto | uap3:AppExtension |
uap17:PackageExtension |
Declarar un host de extensión de paquete
Agregue una PackageExtensionHost declaración al manifiesto de la aplicación host:
<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>
Declaración de una extensión de paquete
En el manifiesto del paquete de extensión:
<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>
Descubrir extensiones de paquetes
Use la misma API AppExtensionCatalog para detectar extensiones de paquete en tiempo de ejecución. El nombre de host coincide con el Name declarado en el manifiesto:
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
}
Prácticas recomendadas
- Use una convención de nomenclatura de dominio inverso para los nombres de extensión (por ejemplo,
com.company.app.extensions). - Versione el protocolo de extensión para que las aplicaciones host puedan controlar los formatos de extensión antiguos y nuevos.
- Valide el contenido de la extensión antes de usarlo: las extensiones proceden de otros paquetes y no deben confiar ciegamente.