Creare e convertire un mapping del gruppo di contenuti di origine

Per preparare l'installazione di streaming, è necessario creare una mappa del gruppo di contenuti. Questo articolo ti aiuterà con le specifiche della creazione e della conversione di una mappa del gruppo di contenuti, fornendo alcuni suggerimenti e trucchi lungo il percorso.

Creazione della mappa del gruppo di contenuto di origine

È necessario creare un SourceAppxContentGroupMap.xml file e quindi usare Visual Studio o lo strumento diMakeAppx.exe per convertire questo file nella versione finale: AppxContentGroupMap.xml. È possibile ignorare un passaggio creandolo AppxContentGroupMap.xml da 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).

Si esaminerà uno scenario semplice in cui l'installazione del flusso di app è utile.

Si supponga di aver creato un gioco, ma le dimensioni dell'app finale sono superiori a 100 GB. Questo richiede molto tempo per scaricare dalla Microsoft Store, che può essere scomodo. Se si sceglie di usare l'installazione di streaming delle app, è possibile specificare l'ordine in cui vengono scaricati i file dell'app. Dicendo allo Store di scaricare prima i file essenziali, l'utente sarà in grado di interagire con l'app prima mentre altri file non essenziali vengono scaricati in background.

Nota

L'uso dello streaming di app si basa fortemente sull'organizzazione file dell'app. È consigliabile considerare il layout del contenuto dell'app rispetto all'installazione di streaming delle app appena possibile per segmentare i file dell'app.

In primo luogo, verrà creato un SourceAppxContentGroupMap.xml file.

Prima di accedere ai dettagli, ecco un esempio di un 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 di una mappa del gruppo 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>SourceAppxContentGroupMap.xmldi . Un gruppo di contenuto obbligatorio deve contenere tutti i file essenziali necessari per avviare l'app con l'esperienza utente minima. A causa di .NET Native compilazione, tutto il codice (eseguibile dell'applicazione) deve essere parte del gruppo richiesto, lasciando asset e altri file per i gruppi automatici.

Ad esempio, se l'app è un gioco, il gruppo richiesto può includere file usati nel menu principale o nella schermata iniziale del gioco.

Ecco il frammento di codice dal file di esempio originale SourceAppxContentGroupMap.xml :

<Required>
    <ContentGroup Name="Required">
        <File Name="StreamingTestApp.exe"/>
    </ContentGroup>
</Required>

Ci sono alcune cose importanti da notare qui:

  • L'elemento <ContentGroup> all'interno <Required>deve essere denominato "Obbligatorio". Questo nome è riservato solo per il gruppo di contenuto richiesto e non può essere usato con qualsiasi altro <ContentGroup> nella mappa del gruppo di contenuto finale.
  • C'è solo un <ContentGroup>oggetto . 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 file, è possibile che ci siano diversi file.

Un modo semplice per iniziare a scrivere questo file consiste nell'aprire una nuova pagina nell'editor di testo preferito, eseguire una rapida "Salva con nome" del file nella cartella del progetto dell'app e assegnare un nome al file appena creato: SourceAppxContentGroupMap.xml.

Importante

Se si sta sviluppando un'app C++, è 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 si sta creando SourceAppxContentGroupMap.xml, è utile sfruttare l'uso di caratteri jolly nei nomi di file, per altre informazioni, vedere la sezione Suggerimenti e trucchi per l'uso di 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 nome del file con caratteri jolly singolo includerà i file aggiunti alla directory del progetto da Visual Studio, ad esempio l'eseguibile dell'app o le DLL. Le cartelle WinMetadata e Proprietà devono includere le altre cartelle Visual Studio genera. I caratteri jolly Asset sono per selezionare le immagini Logo e SplashScreen necessarie per l'installazione dell'app.

Si noti che non è possibile usare la doppia scheda jolly "**", nella radice della struttura di file per includere ogni file nel progetto poiché questo non riesce quando si tenta di convertire SourceAppxContentGroupMap.xml nell'ultimo 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 contenuto. Se i file di footprint sono inclusi all'interno di uno dei nomi di file jolly specificati, verranno ignorati.

Gruppi di contenuti automatici

I gruppi di contenuto automatici sono gli asset scaricati in background mentre l'utente interagisce con i gruppi di contenuti già scaricati. Questi contengono tutti i file aggiuntivi che non sono essenziali per avviare l'app. Ad esempio, è possibile suddividere i gruppi di contenuto automatici in diversi livelli, definendo ogni livello come gruppo di contenuto separato. Come indicato nella sezione del gruppo di contenuto richiesto: a causa di .NET Native compilazione, tutto il codice (eseguibile dell'applicazione) deve essere parte del gruppo richiesto, lasciando asset e altri file per i gruppi automatici.

Esaminiamo più in dettaglio il gruppo di contenuto automatico dall'esempio SourceAppxContentGroupMap.xml seguente:

<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:

  • Esistono 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 trucchi per l'uso di caratteri jolly

Il layout dei file per le mappe del gruppo di contenuto è sempre relativo alla cartella radice del progetto.

Nell'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 "Assets\Level2" o "Assets\Level3". Se si usa una struttura di cartelle più profonda, è 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 vuole includere ogni file nella cartella "Asset" con un nome file contenente "Level2" è possibile usare un valore 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.xmlpossibile usare Visual Studio 2017 o lo strumento della riga di comando MakeAppx.exe.

Per usare Visual Studio per convertire la mappa del gruppo di contenuti:

  1. Aggiungere l'oggetto SourceAppxContentGroupMap.xml alla cartella del progetto
  2. Modificare l'azione SourceAppxContentGroupMap.xmldi compilazione di in "AppxSourceContentGroupMap" nella Finestra Proprietà
  3. Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni
  4. Passare a Store -> Convert Content Group Map File

Se l'app non è stata sviluppata in Visual Studio o se si preferisce 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 dell'oggetto SourceAppxContentGroupMap.xmle /f specifica il percorso dell'oggetto AppxContentGroupMap.xml. L'opzione finale , /d, specifica quale directory deve essere usata per espandere i caratteri jolly 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 ciò che dovrai preparare per la tua AppxContentGroupMap.xml app! Prima che l'app sia completamente pronta per il Microsoft Store, è ancora più possibile eseguire altre operazioni. Per altre informazioni sull'aggiunta dell'installazione di streaming all'app, vedere questa pagina.