Condividi tramite


Scegliere un modello di impacchettamento per l'app di Windows

Annotazioni

Creazione di una nuova app WinUI 3? Per impostazione predefinita, l'utente è già incluso nel pacchetto. Questa pagina è destinata agli sviluppatori che devono effettuare una scelta esplicita, in genere durante la conversione di un'app esistente, la distribuzione nei computer aziendali o l'aggiunta di funzionalità di Windows a un'app che non è stata originariamente inserita in un pacchetto.

Le app di Windows possono essere pacchettizzate, non pacchettizzate, o una via di mezzo. La scelta giusta dipende da due aspetti: come si distribuisce l'app e quali funzionalità di Windows sono necessarie.

Inizia con il tuo scenario

Sono uno sviluppatore indipendente che pubblica sul Microsoft Store.

Usare un'applicazione MSIX pacchettizzata. Lo Store richiede pacchetti MSIX. Le app WinUI 3 create in Visual Studio sono incluse in pacchetti per impostazione predefinita. Non è necessario apportare modifiche. Si ottiene un'installazione pulita, gli aggiornamenti automatici e l'accesso a tutte le funzionalità di package-identity-gated, ad esempio notifiche e attività in background.

Distribuire l'app in pacchetto


"Sto creando un'app aziendale distribuita tramite Intune o Configuration Manager"

Avvia il pacchetto; considera un percorso esterno se hai un programma di installazione già esistente.

  • Se si sta creando una nuova app, usare MSIX. Si integra in modo pulito con Intune e SCCM/ConfigMgr e offre un'identità completa del pacchetto.
  • Se hai un'app esistente con il proprio programma di installazione che non puoi sostituire, usa la creazione di pacchetti con la posizione esterna. In questo modo, la tua app acquisisce un'identità del pacchetto e l'accesso a funzionalità come le notifiche e le attività in background, senza cambiare il modo o il luogo in cui viene distribuita.
  • Se la tua app non ha realmente bisogno delle funzionalità che richiedono un'identità Windows e gestisci l'ambiente di distribuzione, lavorare senza pacchetto funziona, ma incontrerai difficoltà la prima volta che cercherai di aggiungere notifiche o funzionalità di intelligenza artificiale.

Distribuire app pacchettizzate (Windows App SDK)
Concedere l'identità del pacchetto tramite impacchettamento con localizzazione esterna


Sono un ISV che distribuisce un download diretto con il proprio programma di installazione.

Usare imballaggio con posizione esterna (in precedenza denominati pacchetti diradati).

Questo è il punto ideale per le app Win32/WPF/WinForms esistenti che vengono fornite tramite il proprio programma di installazione (NSIS, WiX, InstallShield e così via) e non vogliono sostituirlo con MSIX. Si registra un pacchetto di identità leggero insieme al programma di installazione esistente, i file binari rimangono dove si trovano e si sblocca il set completo di funzionalità di Windows con controllo dell'identità del pacchetto.

Gli utenti non vedranno alcuna modifica nel modo in cui installano o aggiornano l'app. Si ottengono le funzionalità di Windows; ottengono un'esperienza familiare.

Concedere l'identità del pacchetto tramite creazione di pacchetti con posizione esterna
Aggiungere un pacchetto di identità in Visual Studio


"Sto creando uno strumento interno o un'utilità per sviluppatori"

Unpackaged va bene, con avvertenze.

Le app non in pacchetto sono la più semplice da compilare e distribuire: xcopy, robocopy o uno script semplice è tutto ciò che serve. Windows App SDK funziona in app non incluse in pacchetti tramite NuGet. Tuttavia, alcune funzionalità non saranno disponibili e, se successivamente si decide che sono necessarie, l'integrazione dell'identità del pacchetto sarà complessa.

Prima di impegnarsi a non confezionato, confrontare la tabella delle funzionalità seguente rispetto alla vostra roadmap. Se le notifiche, le attività in background o le API di intelligenza artificiale sono imminenti, prendere in considerazione di iniziare con un approccio confezionato.


Modelli di packaging in sintesi

Modello Identità del pacchetto Installatore Store idoneo Ideale per
Pacchettizzato (MSIX) ✅ Sì MSIX sostituisce il programma di installazione ✅ Sì Nuove app, pubblicazione nello Store, MDM aziendale
Creazione di pacchetti con posizione esterna ✅ Sì Programma di installazione esistente ❌ No App esistenti con programma di installazione proprio, ISV
Non confezionato ❌ No XCopy/script ❌ No Strumenti interni, utilità di sviluppo, scenari semplici

Funzionalità che richiedono l'identità del pacchetto

Queste funzionalità di Windows funzionano solo nelle app con identità del pacchetto, tramite pacchetti MSIX completi o pacchetti con posizione esterna.

Feature Note
Notifiche dell'app (toast) AppNotificationManager richiede l'identità del pacchetto
Attività in background La registrazione richiede l'identità del pacchetto
API windows per intelligenza artificiale (Phi Silica, OCR e così via) La maggior parte delle API di intelligenza artificiale Windows richiede l'identità del pacchetto
Notifiche push (WNS) La registrazione del canale richiede l'identità del pacchetto
Condividi destinazione Dichiarato nel manifesto del pacchetto
Estensioni del menu di scelta rapida personalizzate Dichiarato nel manifesto del pacchetto
Associazioni di tipo e protocollo di file Le associazioni ricche richiedono l'identità del pacchetto
Attività di avvio Richiede l'identità del pacchetto
Servizi app Richiede l'identità del pacchetto

Suggerimento

Se il pacchetto non è installato e si verificano errori E_ILLEGAL_METHOD_CALL o APPMODEL_ERROR_NO_PACKAGE quando si chiamano le API di Windows, ciò è dovuto al requisito di identità del pacchetto. Vedere l'imballaggio con ubicazione esterna come la soluzione con meno attrito.

Confezionamento con ubicazione esterna

La creazione di pacchetti con una posizione esterna (denominata anche pacchetti sparse) consente di registrare un piccolo pacchetto di identità insieme all'app esistente, senza modificare il programma di installazione, i percorsi binari o il processo di aggiornamento. È stato introdotto in Windows 10 versione 2004 (build 19041).

Fornisci:

  • Un manifesto del pacchetto (file XML che descrive l'identità dell'app)
  • Oggetto firmato .msix contenente solo il manifesto (nessun file binario)

Il programma di installazione esistente registra questo pacchetto di identità e Windows considera l'applicazione come avente l'identità di pacchetto a partire da quel momento.

Questo è diverso dal pacchetto MSIX completo:

MSIX Posizione esterna
Sostituisce il programma di installazione No
File binari all'interno del pacchetto Nessuno (esterno)
Store idoneo No
Identità del pacchetto
Meccanismo di aggiornamento Aggiornamento MSIX Il meccanismo esistente

procedura dettagliata completa: Concedere l'identità del pacchetto tramite creazione di pacchetti con posizione esterna

Distribuzione dipendente dal framework vs distribuzione autonoma

Separatamente dal modello di creazione del pacchetto, le app che usano Windows App SDK scelgono come gestire le dipendenze di runtime:

  • Dipendente dal framework: il runtime di Windows App SDK deve essere installato nel computer dell'utente. Footprint dell'app più piccola; si basa sul runtime presente o installazione automatica.
  • Indipendente: tutti i file binari di Windows App SDK vengono forniti con l'app. Footprint più grande; nessun requisito di runtime esterno. Valido per gli ambienti aziendali bloccati.

Distribuire app autonome