Creare e convertire un mapping del gruppo di contenuti di origine

Per pre-installare l'app in streaming, è necessario creare una mappa del gruppo di contenuto. Questo articolo illustra le specifiche per la creazione e la conversione di una mappa del gruppo di contenuto, fornendo al tempo stesso alcuni suggerimenti e consigli.

Creazione della mappa del gruppo di contenuto di origine

È necessario creare un file e quindi usare Visual Studio o lo strumentoMakeAppx.exeper convertire il SourceAppxContentGroupMap.xml file nella versione finale: AppxContentGroupMap.xml . È possibile ignorare un passaggio creando da zero, ma è consigliabile (e in genere più semplice) crearlo e convertirlo, poiché i caratteri jolly non sono consentiti in (e sono molto AppxContentGroupMap.xml SourceAppxContentGroupMap.xml AppxContentGroupMap.xml utili).

Verrà ora descritto uno scenario semplice in cui l'installazione dello streaming di app è utile.

Si consiglia di creare un gioco, ma le dimensioni dell'app finale sono superiori a 100 GB. Il download dal Microsoft Store, che può essere poco pratico. Se si sceglie di usare l'installazione dello streaming di app, è possibile specificare l'ordine in cui vengono scaricati i file dell'app. Indicando 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 dell'installazione dello streaming di app si basa in larga parte sull'organizzazione di file dell'app. È consigliabile pensare al layout del contenuto dell'app per quanto riguarda l'installazione dello streaming di app il prima possibile per semplificare la segmentazione dei file dell'app.

Prima di tutto, si creerà un SourceAppxContentGroupMap.xml file.

Prima di accedere ai dettagli, ecco un esempio di file semplice e SourceAppxContentGroupMap.xml completo:

<?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 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 richiesto

Il gruppo di contenuto richiesto è un singolo gruppo di contenuto all'interno <Required> dell'elemento di SourceAppxContentGroupMap.xml . Un gruppo di contenuto obbligatorio deve contenere tutti i file essenziali necessari per avviare l'app con un'esperienza utente minima. A causa .NET Native compilazione, tutto il codice (l'eseguibile dell'applicazione) deve far 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 i file usati nel menu principale o nella schermata iniziale del gioco.

Ecco il frammento del file di SourceAppxContentGroupMap.xml esempio originale:

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

Ecco alcuni aspetti importanti da notare:

  • <ContentGroup>All'interno <Required> dell'elemento deve essere denominato "Required". Questo nome è riservato solo al gruppo di contenuto richiesto e non può essere usato con altri utenti nella <ContentGroup> mappa finale del gruppo di contenuto.
  • È presente un solo <ContentGroup> oggetto . Si tratta di un'operazione intenzionale, perché deve essere presente un solo gruppo di file essenziali.
  • Il file in questo esempio è un .exe singolo file. Un gruppo di contenuto obbligatorio non è limitato a un solo file, ma ne possono essere presenti diversi.

Un modo semplice per iniziare a scrivere questo file è 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 assegnare un nome al file appena creato: SourceAppxContentGroupMap.xml .

Importante

Se si sviluppa un'app C++, è necessario modificare le proprietà del file di SourceAppxContentGroupMap.xml . Impostare la Content proprietà su true e la proprietà su File Type File XML.

Quando si crea , è utile sfruttare i vantaggi dell'uso dei caratteri jolly nei nomi di file. Per altre informazioni, vedere la sezione Suggerimenti e consigli sull'uso dei caratteri SourceAppxContentGroupMap.xml jolly.

Se l'app è stata sviluppata 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 Visual Studio generate. I caratteri jolly Assets devono 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, poiché ciò avrà esito negativo quando si tenta di eseguire la conversione SourceAppxContentGroupMap.xml all'oggetto AppxContentGroupMap.xml finale.

È 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 in 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. Contengono eventuali file aggiuntivi non essenziali per l'avvio dell'app. Ad esempio, è possibile suddividere i gruppi di contenuto automatici in a livelli diversi, definendo ogni livello come gruppo di contenuto separato. Come specificato nella sezione relativa al gruppo di contenuto richiesto: a causa della compilazione .NET Native, tutto il codice (eseguibile dell'applicazione) deve far parte del gruppo richiesto, lasciando asset e altri file per i gruppi automatici.

Di seguito viene illustrato in dettaglio il gruppo di contenuto automatico SourceAppxContentGroupMap.xml dell'esempio:

<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 disponibili 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 del gruppo di contenuto richiesto.
  • Un gruppo di contenuto automatico può contenere file presenti 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 dei file per le mappe dei gruppi di contenuto è sempre relativo alla cartella radice del progetto.

In questo esempio i caratteri jolly vengono usati all'interno di entrambi gli elementi per recuperare tutti i file all'interno di un livello <ContentGroup> di file "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 vuole includere ogni file nella cartella "Assets" con un nome file che contiene "Level2", è possibile usare un nome simile al seguente:

<ContentGroup Name="Level2">
    <File Name="Assets\*Level2*"/>
</ContentGroup>

Convertire SourceAppxContentGroupMap.xml in AppxContentGroupMap.xml

Per convertire nella versione finale, , è possibile usare Visual Studio SourceAppxContentGroupMap.xml AppxContentGroupMap.xml 2017 o lo MakeAppx.exe della riga di comando.

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

  1. Aggiungere alla SourceAppxContentGroupMap.xml cartella del progetto
  2. Modificare l'azione di compilazione di in SourceAppxContentGroupMap.xml "AppxSourceContentGroupMap" nel 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 (Archivia -> converte il file di mapping del gruppo di contenuto)

Se l'app non è stata sviluppata in Visual Studio o se si preferisce solo usare la riga di comando, usare lo strumentoMakeAppx.exeper convertire SourceAppxContentGroupMap.xml .

Un semplice MakeAppx.exe comando 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 la directory da usare per l'espansione dei caratteri jolly del nome file, in questo caso la directory del progetto dell'app.

Per altre informazioni sulle opzioni che è possibile usare conMakeAppx.exe, aprire un prompt dei comandi, passare a MakeAppx.exe e immettere:

MakeAppx convertCGM /?

È tutto ciò che serve per prepararsi AppxContentGroupMap.xml all'app finale. C'è ancora molto da fare prima che l'app sia completamente pronta per l'Microsoft Store. Per altre informazioni sul processo completo di aggiunta dell'installazione in streaming all'app, vedere questo post di blog.