Creare e convertire un mapping del gruppo di contenuti di origine
Per preparare l'installazione dell'app per lo streaming, è necessario creare una mappa del gruppo di contenuti. Questo articolo illustra le specifiche della creazione e della conversione di una mappa dei gruppi di contenuti fornendo alcuni suggerimenti e trucchi lungo la strada.
Creazione della mappa del gruppo di contenuto di origine
Sarà necessario creare un SourceAppxContentGroupMap.xml
file e quindi usare Visual Studio o lo strumento MakeAppx.exe per convertire il file nella versione finale: AppxContentGroupMap.xml
. È possibile ignorare un passaggio creando da AppxContentGroupMap.xml
zero, ma è consigliabile (e in genere più semplice) crearlo SourceAppxContentGroupMap.xml
e convertirlo, poiché i caratteri jolly non sono consentiti in AppxContentGroupMap.xml
(e sono davvero utili).
Esaminiamo un semplice scenario in cui l'installazione dello streaming di app è utile.
Si supponga di aver creato un gioco, ma le dimensioni dell'app finale sono superiori a 100 GB. Questo richiederà molto tempo per scaricare da Microsoft Store, che può essere scomodo. Se scegli di usare l'installazione dello streaming di app, puoi specificare l'ordine in cui vengono scaricati i file dell'app. Comunicando prima allo Store di scaricare i file essenziali, l'utente sarà in grado di interagire con la tua app prima mentre altri file non essenziali vengono scaricati in background.
Nota
L'uso dell'installazione di streaming di app si basa principalmente sull'organizzazione file dell'app. È consigliabile considerare il layout del contenuto dell'app rispetto all'installazione di streaming delle app appena possibile per semplificare la segmentazione dei file dell'app.
Prima di tutto, verrà creato un SourceAppxContentGroupMap.xml
file.
Prima di accedere ai dettagli, di seguito è riportato un esempio di file semplice e completo SourceAppxContentGroupMap.xml
:
<?xml version="1.0" encoding="utf-8"?>
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"
xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap">
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
</ContentGroupMap>
Esistono due componenti principali per una mappa dei gruppi di contenuto: la sezione obbligatoria , che contiene il gruppo di contenuto richiesto e la sezione automatica , che può contenere più gruppi di contenuto automatici.
Gruppo di contenuto obbligatorio
Il gruppo di contenuto richiesto è un singolo gruppo di contenuto all'interno dell'elemento <Required>
di SourceAppxContentGroupMap.xml
. Un gruppo di contenuto obbligatorio deve contenere tutti i file essenziali necessari per avviare l'app con l'esperienza utente minima. A causa della compilazione .NET Native, tutto il codice (eseguibile dell'applicazione) deve far parte del gruppo richiesto, lasciando gli asset e altri file per i gruppi automatici.
Ad esempio, se l'app è un gioco, il gruppo richiesto può includere i file usati nel menu principale o nella schermata iniziale del gioco.
Ecco il frammento di codice del file di esempio originale SourceAppxContentGroupMap.xml
:
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
Ecco alcuni aspetti importanti da notare:
- L'oggetto
<ContentGroup>
all'interno dell'elemento<Required>
deve essere denominato "Obbligatorio". Questo nome è riservato solo per il gruppo di contenuto richiesto e non può essere usato con altri<ContentGroup>
elementi nella mappa finale del gruppo di contenuto. - C'è un
<ContentGroup>
solo . Questo è intenzionale, poiché dovrebbe essere presente un solo gruppo di file essenziali. - Il file in questo esempio è un singolo
.exe
file. Un gruppo di contenuto obbligatorio non è limitato a un solo file, ma può essere presente più.
Un modo semplice per iniziare a scrivere questo file consiste nell'aprire una nuova pagina nell'editor di testo preferito, eseguire una rapida operazione "Salva con nome" del file nella cartella del progetto dell'app e denominare il file appena creato: SourceAppxContentGroupMap.xml
.
Importante
Se si sviluppa un'app C++, sarà necessario modificare le proprietà del file dell'oggetto SourceAppxContentGroupMap.xml
. Impostare la Content
proprietà su true e la File Type
proprietà su File XML.
Quando crei SourceAppxContentGroupMap.xml
, è utile usare caratteri jolly nei nomi di file. Per altre informazioni, vedi la sezione Suggerimenti e consigli per l'uso dei caratteri jolly.
Se l'app è stata sviluppata usando Visual Studio, è consigliabile includerla nel gruppo di contenuto richiesto:
<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>
L'aggiunta del singolo nome di file con caratteri jolly includerà i file aggiunti alla directory del progetto da Visual Studio, ad esempio l'eseguibile dell'app o le DLL. Le cartelle WinMetadata e Properties devono includere le altre cartelle generate da Visual Studio. I caratteri jolly Asset consentono di selezionare le immagini Logo e SplashScreen necessarie per l'installazione dell'app.
Si noti che non è possibile usare il doppio carattere jolly "**" nella radice della struttura di file per includere ogni file nel progetto perché questo errore avrà esito negativo quando si tenta di eseguire la conversione SourceAppxContentGroupMap.xml
nell'oggetto finale AppxContentGroupMap.xml
.
È anche importante notare che i file di footprint (AppxManifest.xml, AppxSignature.p7x, resources.pri e così via) non devono essere inclusi nella mappa del gruppo di contenuti. Se i file di footprint vengono inclusi all'interno di uno dei nomi di file con caratteri jolly specificati, verranno ignorati.
Gruppi di contenuto automatici
I gruppi di contenuto automatici sono gli asset scaricati in background mentre l'utente interagisce con i gruppi di contenuto già scaricati. Questi contengono eventuali file aggiuntivi che non sono essenziali per avviare l'app. Ad esempio, è possibile suddividere i gruppi di contenuto automatici in livelli diversi, definendo ogni livello come gruppo di contenuto separato. Come indicato nella sezione del gruppo di contenuto richiesto: a causa della compilazione .NET Native, tutto il codice (eseguibile dell'applicazione) deve far parte del gruppo richiesto, lasciando gli asset e altri file per i gruppi automatici.
Di seguito viene esaminato più in dettaglio il gruppo di contenuto automatico dell'esempio SourceAppxContentGroupMap.xml
:
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
Il layout del gruppo automatico è piuttosto simile al gruppo richiesto, con alcune eccezioni:
- Sono presenti più gruppi di contenuto.
- I gruppi di contenuto automatici possono avere nomi univoci, ad eccezione del nome "Obbligatorio", riservato al gruppo di contenuto richiesto.
- I gruppi di contenuto automatici non possono contenere file dal gruppo di contenuto richiesto.
- Un gruppo di contenuto automatico può contenere file che si trovano anche in altri gruppi di contenuto automatici. I file verranno scaricati una sola volta e verranno scaricati con il primo gruppo di contenuto automatico che li contiene.
Suggerimenti e consigli per l'uso dei caratteri jolly
Il layout del file per le mappe del gruppo di contenuto è sempre relativo alla cartella radice del progetto.
In questo esempio, i caratteri jolly vengono usati all'interno di entrambi <ContentGroup>
gli elementi per recuperare tutti i file all'interno di un livello di file di "Assets\Level2" o "Assets\Level3". Se si usa una struttura di cartelle più approfondita, è possibile usare il doppio carattere jolly:
<ContentGroup Name="Level2">
<File Name="Assets\Level2\**"/>
</ContentGroup>
È anche possibile usare caratteri jolly con testo per i nomi di file. Ad esempio, se si desidera includere ogni file nella cartella "Assets" con un nome file contenente "Level2", è possibile usare un codice simile al seguente:
<ContentGroup Name="Level2">
<File Name="Assets\*Level2*"/>
</ContentGroup>
Convertire SourceAppxContentGroupMap.xml in AppxContentGroupMap.xml
Per convertire l'oggetto SourceAppxContentGroupMap.xml
nella versione finale, è AppxContentGroupMap.xml
possibile usare Visual Studio 2017 o lo strumento da riga di comando MakeAppx.exe .
Per usare Visual Studio per convertire la mappa dei gruppi di contenuti:
- Aggiungere l'oggetto
SourceAppxContentGroupMap.xml
alla cartella del progetto - Modificare l'azione di compilazione di in
SourceAppxContentGroupMap.xml
"AppxSourceContentGroupMap" nel Finestra Proprietà - Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni
- Passare a Store -> Convert Content Group Map File
Se l'app non è stata sviluppata in Visual Studio o se si preferisce semplicemente usare la riga di comando, usare lo strumento MakeAppx.exe per convertire .SourceAppxContentGroupMap.xml
Un semplice comando MakeAppx.exe potrebbe essere simile al seguente:
MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\
L'opzione /s specifica il percorso di SourceAppxContentGroupMap.xml
e /f specifica il percorso di AppxContentGroupMap.xml
. L'opzione finale , /d, specifica quale directory deve essere usata per espandere i caratteri jolly del nome file, in questo caso è la directory del progetto dell'app.
Per altre informazioni sulle opzioni che è possibile usare con MakeAppx.exe, aprire un prompt dei comandi, passare a MakeAppx.exe e immettere:
MakeAppx convertCGM /?
Tutto questo è tutto quello che dovrai preparare per la tua AppxContentGroupMap.xml
app! Prima che l'app sia completamente pronta per Microsoft Store, è ancora più necessario. Per altre informazioni sull'aggiunta dell'installazione di streaming all'app, vedere questa pagina.