Architettura di distribuzione e panoramica per le app dipendenti dal framework

Questo articolo illustra un'architettura generale della distribuzione di SDK per app di Windows. I concetti seguenti si applicano principalmente alle app dipendenti dal framework SDK per app di Windows. Un'app dipendente dal framework dipende dal runtime di SDK per app di Windows presente nel computer di destinazione.

Esistono due opzioni principali per distribuire un'app dipendente dal framework:

Metodo di distribuzione di app Requisiti
Incluso nel pacchetto - Deve dichiarare la dipendenza dal pacchetto Framework nel manifesto del pacchetto.
- L'API di distribuzione è necessaria per le app distribuite in Microsoft Store e consigliate per le app distribuite non nello Store per garantire l'installazione delle dipendenze di runtime.
Pacchetto con percorso esterno o senza pacchetto - Deve distribuire il runtime usando il programma di installazione o installando direttamente i pacchetti MSIX necessari.
- Requisiti di runtime aggiuntivi: deve inizializzare l'accesso al runtime SDK per app di Windows tramite l'API Bootstrap.

Per altre informazioni su questi requisiti, vedere gli articoli seguenti:

Termini importanti

Le sezioni seguenti definiscono i termini chiave per SDK per app di Windows distribuzione e dettagli aggiuntivi su alcuni di questi pacchetti.

Termine Definizione
runtime di SDK per app di Windows Pacchetti MSIX richiesti da un'app per usare il SDK per app di Windows. Questi pacchetti includono: Framework, Main, Singleton e DDLM. A seconda delle funzionalità usate e del metodo di distribuzione dell'app, è necessario un determinato set di questi pacchetti nel computer di destinazione.
Pacchetto framework Contiene i file binari usati in fase di esecuzione dalle app (la maggior parte delle funzionalità di SDK per app di Windows). Il framework include un componente del programma di avvio automatico che consente alle app di installare automaticamente la versione più recente del SDK per app di Windows, che verrà aggiornata a intervalli regolari di rilascio.
Pacchetto main Pacchetto che contiene attività in background per tenere traccia delle dipendenze dinamiche e abilita gli aggiornamenti automatici per il pacchetto Framework da Microsoft Store.
Pacchetto Singleton Contiene attività in background, servizi, estensioni dell'app e altri componenti non inclusi nel pacchetto framework, ad esempio Notifiche push. Si tratta in genere di un singolo processo a esecuzione prolungata negoziata tra le app.
Pacchetto DDLM (Dynamic Dependency Lifetime Manager) Impedisce al sistema operativo di eseguire aggiornamenti di manutenzione per i pacchetti MSIX mentre è in uso un pacchetto con posizione esterna o un'app non in pacchetto.
Programma di avvio automatico Un file binario locale dell'app usato dal pacchetto con la posizione esterna e le app non in pacchetto per individuare e caricare la corrispondenza migliore SDK per app di Windows versione in base alle esigenze dell'app.
Provisioning Il processo di installazione e registrazione di pacchetti (inclusi file e chiavi del Registro di sistema) a livello di sistema per eliminare la necessità di installazione ripetuta da parte degli altri utenti. Può essere eseguita come parte del sistema operativo o eseguita durante l'installazione di un'app.
Programma di installazione Fa riferimento al programma di installazione .exe che distribuisce i pacchetti Framework, Main, Singleton e DDLM.
MSIX Tecnologia di installazione moderna che consente agli utenti di installare in modo sicuro un'app per utente, direttamente da Microsoft Store o da un sito Web. Nei PC aziendali o condivisi, le app possono essere installate per tutti gli utenti tramite PowerShell e MDM.

Pacchetto framework

Quando crei un'app che usa il SDK per app di Windows, l'app fa riferimento a un set di componenti di runtime SDK per app di Windows distribuiti agli utenti finali tramite un pacchetto framework. Il pacchetto framework consente alle app in pacchetto di accedere ai componenti Windows App SDK tramite una singola origine condivisa nel dispositivo dell'utente, invece di raggrupparle nel pacchetto dell'app. Il pacchetto framework include anche le proprie risorse, ad esempio DLL e definizioni api (registrazioni COM e Windows Runtime). Queste risorse vengono eseguite nel contesto dell'app, quindi ereditano le funzionalità e i privilegi dell'app e non asseriscono alcuna funzionalità o privilegi propri. Per altre informazioni sulle dipendenze dei pacchetti framework, vedere pacchetti framework MSIX e dipendenze dinamiche.

Il pacchetto del framework SDK per app di Windows è un pacchetto MSIX distribuito agli utenti finali tramite Microsoft Store. Può essere aggiornato facilmente e rapidamente con le versioni di manutenzione, che possono includere correzioni di sicurezza e affidabilità. Tutte le app dipendenti dal framework che usano il SDK per app di Windows hanno una dipendenza da un'istanza condivisa del pacchetto framework, come illustrato nel diagramma seguente.

Diagramma del modo in cui le app accedono al pacchetto framework SDK per app di Windows

Quando viene gestita una nuova versione del pacchetto framework SDK per app di Windows, tutte le app dipendenti dal framework vengono aggiornate alla nuova versione senza dover ridistribuire una copia. Gli aggiornamenti di Windows alla versione più recente dei framework non appena vengono rilasciati e le app fanno automaticamente riferimento alla versione più recente del pacchetto framework durante il riavvio. Le versioni precedenti del pacchetto framework non verranno rimosse dal sistema finché non vengono più in esecuzione o usate attivamente dalle app nel sistema.

Diagramma del modo in cui le app ottengono gli aggiornamenti del pacchetto framework SDK per app di Windows

Poiché la compatibilità delle app è importante per Microsoft e per le app che dipendono dal SDK per app di Windows, il pacchetto framework SDK per app di Windows segue le regole di controllo delle versioni semantiche 2.0.0. Ciò significa che dopo il rilascio della versione 1.0 del SDK per app di Windows, il pacchetto framework SDK per app di Windows garantirà la compatibilità tra le modifiche secondarie e della versione patch e le modifiche di rilievo si verificheranno solo tra gli aggiornamenti della versione principale.

Pacchetto Singleton

Il pacchetto singleton garantisce che un singolo processo a esecuzione prolungata possa gestire i servizi usati in più app, che possono essere eseguiti in versioni diverse del SDK per app di Windows.

Il singleton SDK per app di Windows è necessario per abilitare le notifiche push per le app non in pacchetto e le applicazioni Win32 in pacchetto che usano versioni di Windows inferiori alla 20H1, che non possono essere supportate dalla classe UWP PushNotificationTrigger e ToastNotificationActionTrigger esistente. Le future SDK per app di Windows funzionalità che non possono essere supportate dal pacchetto Framework verranno aggiunte al pacchetto Singleton.

Requisiti aggiuntivi per le app non in pacchetto

Programma di avvio automatico

Il programma di avvio automatico è una libreria che deve essere inclusa nel pacchetto con un percorso esterno o un'app non in pacchetto. Fornisce l'API del programma di avvio automatico (vedere Usare il runtime di SDK per app di Windows per le app in pacchetto con percorso esterno o senza pacchetti), che consente alle app non in pacchetto di eseguire queste attività importanti:

  • Inizializzare il Dynamic Dependency Lifetime Manager (DDLM) per il pacchetto framework di Windows App SDK.
  • Trovare e caricare il pacchetto framework di Windows App SDK nel grafico dei pacchetti dell'app.

Per eseguire queste attività, il pacchetto nuget sfrutta gli inizializzatori di modulo per collegare automaticamente il programma di avvio automatico. È sufficiente impostare <WindowsPackageType>None</WindowsPackageType> nel file di progetto. Negli scenari avanzati, se vuoi controllare l'inizializzazione, puoi chiamare l'API del programma di avvio automatico direttamente nel codice di avvio dell'app (vedere Esercitazione: Usare l'API del programma di avvio automatico in un'app in pacchetto con posizione esterna o senza pacchetti che usa il SDK per app di Windows) in modo che possa inizializzare correttamente il sistema per l'app non in pacchetto. L'app deve usare l'API del programma di avvio automatico prima di poter usare SDK per app di Windows funzionalità come WinUI, ciclo di vita dell'app, MRT Core e DWriteCore.

La libreria del programma di avvio automatico nella versione SDK per app di Windows 1.0 include:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ e C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (wrapper C#)

Dynamic Dependency Lifetime Manager (DDLM)

Lo scopo del DDLM è impedire la manutenzione del pacchetto framework SDK per app di Windows mentre è in uso da un'app non in pacchetto. Contiene un server che deve essere inizializzato dal programma di avvio automatico all'inizio dell'avvio di un'app per fornire tale funzionalità.

È disponibile un DDLM per ogni versione e architettura del pacchetto framework di Windows App SDK. Ciò significa che in un x64 computer, è possibile che sia una versione x86 e una versione x64 del DDLM a supportare app di entrambe le architetture.

Requisiti aggiuntivi