Créer et convertir un plan de contenu de groupe source

Pour préparer votre application pour l’installation du streaming, vous devez créer une carte de groupe de contenu. Cet article vous aidera sur les spécificités de la création et de la conversion d’un mappage de groupe de contenu tout en fournissant des conseils et des astuces en cours de route.

Création du mappage de groupe de contenu source

Vous devez créer un fichier SourceAppxContentGroupMap.xml, puis utiliser Visual Studio ou l’outil MakeAppx.exe pour convertir ce fichier dans la version finale : AppxContentGroupMap.xml. Il est possible d’ignorer une étape en créant le AppxContentGroupMap.xml à partir de zéro, mais il est recommandé (et généralement plus facile) de créer le et de le SourceAppxContentGroupMap.xml et de le convertir, car les caractères génériques ne sont pas autorisés dans le AppxContentGroupMap.xml (et ils sont vraiment utiles).

Passons à travers un scénario simple où l’installation de streaming d’applications est bénéfique.

Supposons que vous avez créé un jeu, mais que la taille de votre application finale est supérieure à 100 Go. Le téléchargement à partir du Microsoft Store prendra beaucoup de temps, ce qui peut être gênant. Si vous choisissez d’utiliser l’installation de streaming d’applications, vous pouvez spécifier l’ordre dans lequel les fichiers de votre application sont téléchargés. En indiquant au Windows Store de télécharger d’abord les fichiers essentiels, l’utilisateur peut s’engager avec votre application plus tôt, tandis que d’autres fichiers non essentiels sont téléchargés en arrière-plan.

Remarque

L’utilisation de l’installation de streaming d’applications s’appuie fortement sur l’organisation de fichiers de votre application. Nous vous recommandons à la disposition du contenu de votre application en ce qui concerne l’installation de streaming d’applications dès que possible pour simplifier la segmentation des fichiers de votre application..

Tout d’abord, nous allons créer un SourceAppxContentGroupMap.xml fichier.

Avant d’entrer dans les détails, voici un exemple de fichier SourceAppxContentGroupMap.xml simple et complet :

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

Il existe deux composants main à un mappage de groupe de contenu : la section requise, qui contient le groupe de contenu requis et la section automatique, qui peut contenir plusieurs groupes de contenu automatiques.

Groupe de contenu requis

Le groupe de contenu requis est un groupe de contenu unique au sein de l’élément <Required> du SourceAppxContentGroupMap.xml. Un groupe de contenu requis doit contenir tous les fichiers essentiels nécessaires au lancement de l’application avec l’expérience utilisateur minimale. En raison de .NET Native compilation, tout le code (l’exécutable de l’application) doit faire partie du groupe requis, laissant les ressources et autres fichiers pour les groupes automatiques.

Par exemple, si votre application est un jeu, le groupe requis peut inclure des fichiers utilisés dans le menu main ou l’écran d’accueil du jeu.

Voici l’extrait de code de notre exemple de fichier d’origine SourceAppxContentGroupMap.xml :

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

Voici quelques points importants à noter :

  • Dans <ContentGroup> l’élément<Required> doit être nommé." Ce nom est réservé uniquement au groupe de contenu requis et ne peut pas être utilisé avec d’autres <ContentGroup> dans le mappage de groupe de contenu final.
  • Il n’y a qu’un<ContentGroup>. Cela est intentionnel, car il ne doit y avoir qu’un seul groupe de fichiers essentiels.
  • Le fichier de cet exemple est un fichier unique .exe. Un groupe de contenu requis n’est pas limité à un seul fichier, il peut y en avoir plusieurs.

Un moyen simple de commencer à écrire ce fichier consiste à ouvrir une nouvelle page dans votre éditeur de texte favori, à effectuer un rapide « Enregistrer sous » de votre fichier dans le dossier projet de votre application et à nommer votre fichier SourceAppxContentGroupMap.xml nouvellement créé.

Important

Si vous développez une application C++, vous devez ajuster les propriétés de fichier de votre SourceAppxContentGroupMap.xml. Définissez la Content propriété sur true et la File Type propriété sur fichier XML.

Lorsque vous créez le SourceAppxContentGroupMap.xmlfichier , il est utile de tirer parti de l’utilisation de caractères génériques dans les noms de fichiers. Pour plus d’informations, consultez la section Conseils et astuces pour utiliser des caractères génériques.

Si vous avez développé votre application à l’aide de Visual Studio, il est recommandé de l’inclure dans votre groupe de contenu requis :

<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>

L’ajout du nom de fichier générique unique inclut les fichiers ajoutés au répertoire du projet à partir de Visual Studio, tels que l’exécutable de l’application ou des DLL. Les dossiers WinMetadata et Properties doivent inclure les autres dossiers générés par Visual Studio. Les caractères génériques Assets sont de sélectionner les images Logo et SplashScreen nécessaires à l’installation de l’application.

Notez que vous ne pouvez pas utiliser le double carte générique, « ** », à la racine de la structure de fichier pour inclure chaque fichier dans le projet, car cela échoue lors de la tentative de conversion de SourceAppxContentGroupMap.xml en AppxContentGroupMap.xml final.

Il est également important de noter que les fichiers d’empreinte (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) ne doivent pas être inclus dans le mappage de groupe de contenu. Si les fichiers d’empreinte sont inclus dans l’un des noms de fichiers génériques que vous spécifiez, ils sont ignorés.

Groupes de contenu automatiques

Les groupes de contenu automatiques sont les ressources qui sont téléchargées en arrière-plan pendant que l’utilisateur interagit avec les groupes de contenu déjà téléchargés. Ils contiennent tous les fichiers supplémentaires qui ne sont pas essentiels au lancement de l’application. Par exemple, vous pouvez diviser les groupes de contenu automatiques dans à différents niveaux, en définissant chaque niveau comme un groupe de contenu distinct. Comme indiqué dans la section du groupe de contenu obligatoire : en raison de .NET Native compilation, tout le code (l’exécutable de l’application) doit faire partie du groupe requis, en laissant les ressources et autres fichiers pour les groupes automatiques.

Examinons de plus près le groupe de contenu automatique à partir de notre exemple SourceAppxContentGroupMap.xml :

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

La disposition du groupe automatique est assez similaire au groupe requis, à quelques exceptions près :

  • Il existe plusieurs groupes de contenu.
  • Les groupes de contenu automatiques peuvent avoir des noms uniques, à l’exception du nom « Obligatoire », qui est réservé au groupe de contenu requis.
  • Les groupes de contenu automatiques ne peuvent pas contenir de fichiers provenant du groupe de contenu requis.
  • Un groupe de contenu automatique peut contenir des fichiers qui se trouvent également dans d’autres groupes de contenu automatiques. Les fichiers ne seront téléchargés qu’une seule fois et seront téléchargés avec le premier groupe de contenu automatique qui les contient.

Conseils et astuces pour l’utilisation de caractères génériques

La disposition des fichiers pour les mappages de groupes de contenu est toujours relative au dossier racine de votre projet.

Dans notre exemple, les caractères génériques sont utilisés dans les deux éléments <ContentGroup> pour récupérer tous les fichiers au sein d’un niveau de fichier « Assets\Level2 » ou « Assets\Level3 ». Si vous utilisez une structure de dossiers plus profonde, vous pouvez utiliser le double caractère générique :

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

Vous pouvez également utiliser des caractères génériques avec du texte pour les noms de fichiers. Par exemple, si vous souhaitez inclure chaque fichier dans votre dossier « Ressources » avec un nom de fichier qui contient « Level2 », vous pouvez utiliser quelque chose comme suit :

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

Convertir SourceAppxContentGroupMap.xml en AppxContentGroupMap.xml

Pour convertir SourceAppxContentGroupMap.xml en version finale, AppxContentGroupMap.xml vous pouvez utiliser Visual Studio 2017 ou l’outil en ligne de commande MakeAppx.exe.

Pour utiliser Visual Studio pour convertir votre mappage de groupe de contenu :

  1. Ajouter le SourceAppxContentGroupMap.xml au dossier de votre projet.
  2. Modifiez l’action de génération de SourceAppxContentGroupMap.xml en « AppxSourceContentGroupMap » dans la fenêtre Propriétés
  3. Faites un clic droit sur le projet dans l’Explorateur de solutions
  4. Accédez à Store -> Convertir un fichier de mappage de groupe de contenu

Si vous n’avez pas développé votre application dans Visual Studio, ou si vous préférez simplement utiliser la ligne de commande, utilisez MakeAppx.exe pour convertir votre SourceAppxContentGroupMap.xml.

Une simple MakeAppx.exe peut ressembler à ceci :

MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\

L’option /s spécifie le chemin d’accès au SourceAppxContentGroupMap.xml et /f spécifie le chemin d’accès AppxContentGroupMap.xml. La dernière option, /d, spécifie le répertoire qui doit être utilisé pour développer les caractères génériques de nom de fichier. Dans ce cas, il s’agit du répertoire du projet d’application.

Pour plus d’informations sur les options que vous pouvez utiliser avec MakeAppx.exe, ouvrez une invite de commandes, accédez MakeAppx.exe et entrez :

MakeAppx convertCGM /?

C’est tout ce dont vous aurez besoin pour préparer votre AppxContentGroupMap.xml pour votre application ! Il reste encore beaucoup à faire avant que votre application ne soit entièrement prête pour le Microsoft Store. Pour plus d’informations sur l’ajout de l’installation de streaming à votre application, case activée page.