Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le estensioni del pacchetto espandono il modello di estensione dell'app consentendo una condivisione di contenuto più ampia tra i pacchetti. Un host di estensione del pacchetto può accettare estensioni da qualsiasi pacchetto, rendendolo adatto per scenari di estendibilità a livello di piattaforma.
Note
Le estensioni del pacchetto richiedono Windows 11 e usano lo spazio dei nomi uap17. Per un approccio compatibile con le versioni precedenti, vedere Estensioni dell'app che usano uap3.
Estensioni del pacchetto vs. estensioni dell'app
| Feature | Estensioni dell'app (uap3) |
Estensioni del pacchetto (uap17) |
|---|---|---|
| Sistema operativo minimo | Windows 10 1607 | Windows 11 |
| Scope | Per singola applicazione | Per pacchetto |
| Condivisione di contenuti | Solo cartella pubblica | Accesso completo al contenuto del pacchetto |
| Spazio dei nomi manifesto | uap3:AppExtension |
uap17:PackageExtension |
Dichiarare un host di estensione del pacchetto
Aggiungi una dichiarazione PackageExtensionHost al manifest dell'app 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>
Dichiarare un'estensione del pacchetto
Nel manifesto del pacchetto di estensione:
<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>
Individuare le estensioni dei pacchetti
Usare la stessa API AppExtensionCatalog per individuare le estensioni del pacchetto in fase di esecuzione. Il nome host corrisponde a Name dichiarato nel manifest:
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
}
Procedure consigliate
- Usare una convenzione di denominazione di dominio inverso per i nomi di estensione , ad esempio
com.company.app.extensions. - Versione del protocollo di estensione in modo che le app host possano gestire formati di estensione precedenti e nuovi.
- Convalidare il contenuto dell'estensione prima di usarlo: le estensioni provengono da altri pacchetti e non devono essere ciecamente attendibili.