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.
Questo articolo illustra come creare un'estensione del pacchetto di Windows 11 e ospitarla in un'app. Le estensioni dei pacchetti sono supportate nelle app UWP e nelle app desktop in pacchetto.
Le estensioni del pacchetto sono come l'estensione dell'app, ma sono dotate di maggiore flessibilità. Qualsiasi pacchetto con una dichiarazione di estensione può ora condividere facilmente contenuto ed eventi di distribuzione con un'app host. Questa funzionalità si estende oltre i pacchetti dell'app, includendo pacchetti principali, facoltativi, framework e risorse. Mentre le estensioni del pacchetto vengono dichiarate con un set diverso di elementi XML, l'implementazione, la gestione e il debug delle estensioni del pacchetto sono le stesse estensioni dell'applicazione. Per altre informazioni sulle estensioni dell'applicazione, vedere Creare e ospitare un'estensione dell'app.
L'estensione del pacchetto è ora disponibile in Windows 11 Server e sarà disponibile per Windows 11 in una versione futura.
Dichiarare un pacchetto come host di estensione
Un'app si identifica come host di estensione del pacchetto dichiarando l'elemento <PkgExtensionHost> nel file Package.appxmanifest.
Di seguito viene illustrata una dichiarazione di estensione del pacchetto di esempio in un file Package.appxmanifest.
<Package
...
xmlns:uap17="http:schemas.microsoft.com/appx/manifest/uap/windows10/17"
IgnorableNamespaces="uap uap17">
...
<Extensions>
<uap17:Extension Category="windows.packageExtensionHost">
<uap17:PackageExtensionHost>
<uap17:Name>com.microsoft.mathext</uap17:Name>
</uap17:PackageExtensionHost>
</uap17:Extension>
</Extensions>
...
</Package>
Nota il xmlns:uap17="http://..." e la presenza di uap17 in IgnorableNamespaces. Questi sono necessari perché si usa lo spazio dei nomi uap17.
<uap17:Extension Category="windows.packageExtensionHost"> identifica questo pacchetto come host di estensione.
L'elemento Name in <uap17:PackageExtensionHost> è il nome del contratto di estensione. Quando un'estensione specifica lo stesso nome del contratto di estensione, l'host sarà in grado di trovarlo. Per convenzione, è consigliabile creare il nome del contratto di estensione usando l'app o il nome dell'editore per evitare potenziali conflitti con altri nomi di contratto di estensione.
È possibile definire più host e più estensioni nello stesso pacchetto. In questo esempio viene dichiarato un host. L'estensione è definita in un altro pacchetto.
Dichiarare un pacchetto come estensione
Un pacchetto si identifica come estensione del pacchetto dichiarando l'elemento <uap17:PackageExtension> nel file Package.appxmanifest. L'esempio seguente mostra un pacchetto di esempio dichiarandosi come estensione
<Package
...
xmlns:uap17="http:schemas.microsoft.com/appx/manifest/uap/windows10/17"
IgnorableNamespaces="uap uap17">
...
<Extensions>
<uap17:Extension Category="windows.packageExtension">
<uap17:PackageExtension Name="com.microsoft.ai.aiexplorer.model"
Id="power"
DisplayName="x^y"
PublicFolder="Public"
Description="Exponent">
<uap17:Properties>
<Service>com.microsoft.powservice</Service>
</uap17:Properties>
</uap17:PackageExtension>
</uap17:Extension>
</Extensions>
...
</Package>
Anche in questo caso, notare la xmlns:uap17="http://..." riga e la presenza di uap17 in IgnorableNamespaces. Questi sono necessari perché si usa lo spazio dei nomi uap17.
<uap17:Extension Category="windows.packageExtension"> identifica questo pacchetto come estensione.
Il significato degli <uap17:PackageExtension> attributi è il seguente
<uap17:Properties> è un elemento facoltativo che contiene metadati personalizzati che gli host possono leggere in fase di esecuzione.
Nell'esempio di codice, l'estensione viene implementata come servizio app in modo che l'host richieda un modo per ottenere il nome del servizio app in modo che possa chiamarlo.
Il nome del servizio app è definito nell'elemento <Service>, che abbiamo definito (avremmo potuto chiamarlo in qualsiasi modo volessimo).
L'host nell'esempio di codice cerca questa proprietà in fase di esecuzione per apprendere il nome del servizio app.
Osservazioni:
In questo argomento viene fornita un'introduzione alle estensioni dei pacchetti. L'implementazione, la gestione e il debug dell'estensione del pacchetto sono simili a quelli dell'estensione dell'app e si può fare riferimento a qui. Le cose chiave da notare sono la creazione dell'host e contrassegnarlo come tale nel file Package.appxmanifest, creando l'estensione e contrassegnandolo come tale nel file Package.appxmanifest, determinando come implementare l'estensione (ad esempio un servizio app, un'attività in background, un server COM o WinRT o altri mezzi), definendo come l'host comunicherà con le estensioni, e usando l'API PackageExtensions per accedere e gestire le estensioni.