Creare bundle flat di pacchetti dell'appFlat bundle app packages

Importante

Se si intende inviare l'app allo Store, è necessario contattare il supporto tecnico Windows Developer per l'approvazione per l'uso di bundle flat.If you intend to submit your app to the Store, you need to contact Windows developer support for approval to use flat bundles.

I bundle Flat sono un modo migliorato per aggregare i file del pacchetto dell'app.Flat bundles are an improved way to bundle your app’s package files. Un file di bundle dell'app Windows tipico usa una struttura di creazione pacchetti a più livelli in cui i file del pacchetto dell'app devono essere contenuti all'interno del bundle, i bundle Flat rimuovono questa esigenza facendo riferimento solo ai file del pacchetto dell'app, consentendo loro di essere esterni al bundle dell'app.A typical Windows app bundle file uses a multi-level packaging structure in which the app package files need to be contained within the bundle, flat bundles remove this need by only referencing the app package files, allowing them to be outside of the app bundle. Poiché i file del pacchetto dell'app non sono più contenuti nel bundle, possono essere elaborati in parallelo, con conseguente riduzione del tempo di caricamento, pubblicazione più veloce (poiché ogni file del pacchetto dell'app può essere elaborato allo stesso tempo) e infine più veloci iterazioni dello sviluppo.Since the app package files are no longer contained in the bundle, they can be parallel processed, which results in reduced uploading time, faster publishing (since each app package file can be processed at the same time), and ultimately faster development iterations.

Diagramma bundle Flat

Un altro vantaggio dei bundle Flat è la necessità di creare meno pacchetti.Another benefit of flat bundles is the need to create less packages. Poiché si fa riferimento ai file del pacchetto dell'app, due versioni dell'app possono fare riferimento allo stesso file di pacchetto se il pacchetto non è stato modificato nelle due versioni.Since app package files are only referenced, two versions of the app can reference the same package file if the package did not change across the two versions. Ciò consente di creare solo i pacchetti dell'app che sono stati modificati quando si compilano i pacchetti per la versione successiva dell'app.This allows you to have to create only the app packages that have changed when building the packages for the next version of your app. Per impostazione predefinita, i bundle Flat faranno riferimento ai file del pacchetto dell'app all'interno della stessa cartella.By default, the flat bundles will reference app package files within the same folder as itself. Tuttavia, questo riferimento può essere modificato in altri percorsi (percorsi relativi, condivisioni di rete e posizioni http).However, this reference can be changed to other paths (relative paths, network shares, and http locations). A tale scopo, è necessario fornire direttamente un BundleManifest durante la creazione del bundle flat.To do this, you must directly provide a BundleManifest during the flat bundle creation.

Come creare un bundle FlatHow to create a flat bundle

È possibile creare un bundle Flat usando lo strumento MakeAppx.exe o il layout di packaging per definire la struttura del bundle.A flat bundle can be created using the MakeAppx.exe tool, or by using the packaging layout to define the structure of your bundle.

Uso di MakeAppx.exeUsing MakeAppx.exe

Per creare un bundle Flat usando MakeAppx.exe, usare il comando "MakeAppx.exe bundle" come di consueto, ma con l'opzione/FB per generare il file di bundle dell'app Flat, che sarà estremamente piccolo perché fa riferimento solo ai file del pacchetto dell'app e non contiene payload effettivi.To create a flat bundle using MakeAppx.exe, use the “MakeAppx.exe bundle” command as usual but with the /fb switch to generate the flat app bundle file (which will be extremely small since it only references the app package files and does not contain any actual payloads).

Di seguito è riportato un esempio della sintassi del comando:Here's an example of the command syntax:

MakeAppx bundle [options] /d <content directory> /fb /p <output flat bundle name>

Per altre informazioni sull'uso di MakeAppx.exe, vedere creare un pacchetto dell'app con lo strumento MakeAppx.exe.For more information on using MakeAppx.exe, see Create an app package with the MakeAppx.exe tool.

Uso del layout di packagingUsing packaging layout

In alternativa, è possibile creare un bundle Flat usando il layout di compressione.Alternatively, you can create a flat bundle using the packing layout. A tale scopo, impostare l'attributo FlatBundle su true nell'elemento PackageFamily del manifesto del bundle dell'app.To do this, set the FlatBundle attribute to true in the PackageFamily element of your app bundle manifest. Per altre informazioni sul layout del pacchetto, vedere creazione di pacchetti con il layout di assemblaggio.To learn more about the packaging layout, see Package creation with the packaging layout.

Come distribuire un bundle FlatHow to deploy a flat bundle

Prima di poter distribuire un bundle Flat, ogni pacchetto dell'app (oltre al bundle dell'app) deve essere firmato con lo stesso certificato.Before a flat bundle can be deployed, each of the app packages (in addition to the app bundle) must be signed with the same certificate. Questo perché tutti i file del pacchetto dell'app (con estensione appx/msix) sono ora file indipendenti e non sono più contenuti nel file del bundle dell'app (con estensione appxbundle/msixbundle).This is because all of the app package files (.appx/.msix) are now independent files and are no longer contained within the app bundle (.appxbundle/.msixbundle) file.

Dopo la firma dei pacchetti, è possibile installare l'app tramite una di queste opzioni:After the packages are signed, you can install the app via one of these options:

  • Fare doppio clic sul file del bundle dell'app per installare con il programma di installazione dell'app.Double click the app bundle file to install with App Installer.
  • Usare il cmdlet Add-APPXPACKAGE in PowerShell e puntare al file del bundle dell'app (presupponendo che i pacchetti dell'app siano quelli previsti dal bundle dell'app).Use the Add-AppxPackage cmdlet in PowerShell and point to the app bundle file (assuming app packages are where the app bundle expects them to be).

Non è possibile distribuire autonomamente i singoli pacchetti. appx/. msix di un bundle flat.You cannot deploy the individual .appx/.msix packages of a flat bundle by themselves. Devono essere distribuiti tramite il appxbundle/msixbundle.They must be deployed through the .appxbundle/.msixbundle. È tuttavia possibile aggiornare singoli pacchetti. appx/. msix di un bundle Flat dopo l'installazione iniziale.However, you can update individual .appx/.msix packages of a flat bundle after the initial install. Se si aggiorna il pacchetto Single. appx/. msix, sarà necessario aggiornare anche il manifesto del bundle flat.If you do update individual .appx/.msix package, you will also need to update the flat bundle's manifest.

Ad esempio, se il bundle Flat V1 è costituito da un msixbundle, un x86. msix, un x64. msix e un asset. msix e si è certi che il bundle v2 include solo modifiche al pacchetto di asset, è necessario compilare solo i msixbundle e asset. msix per poter installare l'aggiornamento.For example, if your v1 flat bundle is composed of an .msixbundle, an x86 .msix, an x64 .msix, and an asset .msix, and you know that your v2 bundle only has changes to the asset package, then you only need to build the .msixbundle and the asset .msix to be able to install the update. È necessario compilare il. msixbundle per V2 perché il bundle tiene traccia di tutte le versioni dei pacchetti. msix.You must build the .msixbundle for v2 because the bundle keeps track of all the versions of its .msix packages. Se si urta la versione di asset. msix alla versione V2, è necessario un nuovo oggetto. msixbundle con questo nuovo riferimento.By bumping the version of the asset .msix to v2, you need a new .msixbundle that has this new reference. V2. msixbundle può contenere riferimenti alla versione V1 x86. msix e x64. msix; non è necessario che i pacchetti. msix di un bundle Flat abbiano lo stesso numero di versione.The v2 .msixbundle can contain references to the v1 x86 .msix and x64 .msix; the .msix packages of a flat bundle does not need to have the same version number.