Créer et convertir un plan de contenu de groupe sourceCreate and convert a source content group map

Pour préparer votre application en vue d’une installation en continu, vous devez créer un mappage de groupe de contenu.To get your app ready for streaming install, you'll need to create a content group map. Cet article vous aidera à déterminer 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.This article will help you with the specifics of creating and converting a content group map while providing some tips and tricks along the way.

Création du mappage de groupe de contenu sourceCreating the source content group map

Vous devez créer un SourceAppxContentGroupMap.xml fichier, puis utiliser Visual Studio ou l’outil MakeAppx.exe pour convertir ce fichier dans la version finale : AppxContentGroupMap.xml .You'll need to create a SourceAppxContentGroupMap.xml file, and then either use Visual Studio or the MakeAppx.exe tool to convert this file to the final version: 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 et de le SourceAppxContentGroupMap.xml convertir, car les caractères génériques ne sont pas autorisés dans le AppxContentGroupMap.xml (et ils sont très utiles).It's possible to skip a step by creating the AppxContentGroupMap.xml from scratch, but it's recommended (and generally easier) to create the SourceAppxContentGroupMap.xml and convert it, since wildcards are not allowed in the AppxContentGroupMap.xml (and they're really helpful).

Examinons un scénario simple dans lequel l’installation de la diffusion en continu d’applications est bénéfique.Let's walk through a simple scenario where app streaming install is beneficial.

Imaginons que vous avez créé un jeu, mais que la taille de votre application finale est supérieure à 100 Go.Say you've created a game, but the size of your final app is over 100 GB. Cela va prendre beaucoup de temps à télécharger à partir de la Microsoft Store, ce qui peut être gênant.That's going to take a long time to download from the Microsoft Store, which can be inconvenient. Si vous choisissez d’utiliser l’installation de diffusion en continu d’applications, vous pouvez spécifier l’ordre dans lequel les fichiers de votre application sont téléchargés.If you choose to use app streaming install, you can specify the order in which your app's files are downloaded. En indiquant au magasin de télécharger les fichiers essentiels en premier, l’utilisateur pourra s’associer à votre application plus tôt, tandis que d’autres fichiers non essentiels seront téléchargés en arrière-plan.By telling the Store to download essential files first, the user will be able to engage with your app sooner while other non-essential files are downloaded in the background.

Notes

L’utilisation de l’installation de streaming d’application s’appuie fortement sur l’Organisation des fichiers de votre application.Using app streaming install heavily relies on your app's file organization. Il est recommandé de réfléchir à la disposition du contenu de votre application en ce qui concerne l’installation de streaming d’application dès que possible pour simplifier le segmentation des fichiers de votre application.It's recommended that you think about your app's content layout with respect to app streaming install as soon as possible to make segmenting your app's files simpler.

Tout d’abord, nous allons créer un SourceAppxContentGroupMap.xml fichier.First, we'll create a SourceAppxContentGroupMap.xml file.

Avant d’aller plus en détail, voici un exemple de fichier simple et complet SourceAppxContentGroupMap.xml :Before we get in to the details, here's an example of a simple, complete SourceAppxContentGroupMap.xml file:

<?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 principaux pour une carte 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.There are two main components to a content group map: the required section, which contains the required content group, and the automatic section, which can contain multiple automatic content groups.

Groupe de contenu requisRequired content group

Le groupe de contenu requis est un groupe de contenu unique au sein <Required> de l’élément du SourceAppxContentGroupMap.xml .The required content group is a single content group within the <Required> element of the 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.A required content group should contain all of the essential files necessary to launch the app with the minimal user experience. En raison de la compilation .NET Native, tout le code (l’exécutable de l’application) doit faire partie du groupe requis, ce qui laisse les ressources et autres fichiers pour les groupes automatiques.Due to .NET Native compilation, all code (the application executable) must be part of the required group, leaving assets and other files for the automatic groups.

Par exemple, si votre application est un jeu, le groupe requis peut inclure des fichiers utilisés dans le menu principal ou l’écran d’accueil du jeu.For example, if your app is a game, the required group may include files used in the main menu or game home screen.

Voici l’extrait de code de notre SourceAppxContentGroupMap.xml exemple de fichier d’origine :Here's the snippet from our original SourceAppxContentGroupMap.xml example file:

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

Voici quelques points importants à noter :There are a few important things to notice here:

  • Le au <ContentGroup> sein de l' <Required> élément doit être nommé « required ».The <ContentGroup> within the <Required> element must be named "Required." Ce nom est réservé au groupe de contenu requis uniquement et ne peut pas être utilisé avec un autre <ContentGroup> dans le mappage de groupe de contenu final.This name is reserved for the required content group only, and cannot be used with any other <ContentGroup> in the final content group map.
  • Il n’y en a qu’un seul <ContentGroup> .There's only one <ContentGroup>. Cela est intentionnel, car il ne doit y avoir qu’un seul groupe de fichiers essentiels.This is intentional, since there should be only one group of essential files.
  • Dans cet exemple, le fichier est un .exe fichier unique.The file in this example is a single .exe file. Un groupe de contenu requis n’est pas limité à un seul fichier, il peut y en avoir plusieurs.A required content group isn't restricted to one file, there can be several.

Un moyen simple de commencer à écrire ce fichier consiste à ouvrir une nouvelle page dans l’éditeur de texte de votre choix, à effectuer un « enregistrement sous » rapide de votre fichier dans le dossier de projet de votre application et à nommer le fichier nouvellement créé : SourceAppxContentGroupMap.xml .An easy way to get started writing this file is to open up a new page in your favorite text editor, do a quick "Save As" of your file to your app's project folder, and name your newly created file: SourceAppxContentGroupMap.xml.

Important

Si vous développez une application C++, vous devrez ajuster les propriétés du fichier de votre SourceAppxContentGroupMap.xml .If you are developing a C++ app, you will need to adjust the file properties of your SourceAppxContentGroupMap.xml. Affectez Content à la propriété la valeur true et à la propriété la valeur File Type fichier XML.Set the Content property to true and the File Type property to XML File.

Lorsque vous créez le SourceAppxContentGroupMap.xml , 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 trucs et astuces pour l’utilisation des caractères génériques .When you're creating the SourceAppxContentGroupMap.xml, it's helpful to take advantage of using wildcards in file names, for more info, see the Tips and tricks for using wildcards section.

Si vous avez développé votre application à l’aide de Visual Studio, il est recommandé de l’inclure dans votre groupe de contenu requis :If you developed your app using Visual Studio, it's recommended that you include this in your required content group:

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

L’ajout du nom de fichier de caractère 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 les dll.Adding the single wildcard file name will include files added to the project directory from Visual Studio, such as the app executable or DLLs. Les dossiers WinMetadata et Properties doivent inclure les autres dossiers générés par Visual Studio.The WinMetadata and Properties folders are to include the other folders Visual Studio generates. Les caractères génériques des ressources sont de sélectionner le logo et les images SplashScreen nécessaires à l’installation de l’application.The Assets wildcards are to select the Logo and SplashScreen images that are necessary for the app to be installed.

Notez que vous ne pouvez pas utiliser le double caractère générique, « * * », à la racine de la structure de fichiers pour inclure tous les fichiers dans le projet, car cette opération échoue lors de la tentative de conversion SourceAppxContentGroupMap.xml vers la version finale AppxContentGroupMap.xml .Note that you cannot use the double wild card, "**", at the root of the file structure to include every file in the project since this will fail when attempting to convert SourceAppxContentGroupMap.xml to the final AppxContentGroupMap.xml.

Il est également important de noter que les fichiers d’encombrement (AppxManifest.xml, AppxSignature. p7x, Resources. PRI, etc.) ne doivent pas être inclus dans le mappage de groupe de contenus.It's also important to note that footprint files (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) should not be included in the content group map. Si des fichiers d’encombrement sont inclus dans l’un des noms de fichiers génériques que vous spécifiez, ils seront ignorés.If footprint files are included within one of the wildcard file names you specify, they will be ignored.

Groupes de contenu automatiquesAutomatic content groups

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.Automatic content groups are the assets that are downloaded in the background while the user is interacting with the already downloaded content groups. Celles-ci contiennent des fichiers supplémentaires qui ne sont pas essentiels au lancement de l’application.These contain any additional files that are not essential to launching the app. Par exemple, vous pouvez diviser des groupes de contenu automatiques dans différents niveaux, en définissant chaque niveau en tant que groupe de contenu distinct.For example, you could break up automatic content groups in to different levels, defining each level as a separate content group. Comme indiqué dans la section du groupe de contenu requis : en raison de la compilation .NET Native, tout le code (l’exécutable de l’application) doit faire partie du groupe requis, ce qui laisse les ressources et autres fichiers pour les groupes automatiques.As noted in the required content group section: due to .NET Native compilation, all code (the application executable) must be part of the required group, leaving assets and other files for the automatic groups.

Examinons de plus près le groupe de contenu automatique de notre SourceAppxContentGroupMap.xml exemple :Let's take a closer look at the automatic content group from our SourceAppxContentGroupMap.xml example:

<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 :The layout of the automatic group is pretty similar to the required group, with a few exceptions:

  • Il existe plusieurs groupes de contenu.There are multiple content groups.
  • Les groupes de contenu automatiques peuvent avoir des noms uniques, à l’exception du nom « obligatoire », qui est réservé au groupe de contenu requis.Automatic content groups can have unique names except for the name "Required" which is reserved for the required content group.
  • Les groupes de contenu automatiques ne peuvent pas contenir de fichiers du groupe de contenu requis.Automatic content groups cannot contain any files from the required content group.
  • Un groupe de contenu automatique peut contenir des fichiers qui se trouvent également dans d’autres groupes de contenu automatiques.An automatic content group can contain files that are also in other automatic content groups. 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.The files will be downloaded only once, and will be downloaded with the first automatic content group that contains them.

Trucs et astuces pour l’utilisation des caractères génériquesTips and tricks for using wildcards

La disposition des fichiers pour les mappages de groupes de contenu est toujours relative au dossier racine de votre projet.The file layout for content group maps is always relative to your project root folder.

Dans notre exemple, les caractères génériques sont utilisés dans les deux <ContentGroup> éléments pour récupérer tous les fichiers d’un niveau de fichier « Assets\Level2 » ou « Assets\Level3. ».In our example, wildcards are used within both <ContentGroup> elements to retrieve all files within one file level of "Assets\Level2" or "Assets\Level3." Si vous utilisez une structure de dossiers plus profonde, vous pouvez utiliser le double caractère générique :If you're using a deeper folder structure, you can use the double wildcard:

<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.You can also use wildcards with text for file names. Par exemple, si vous souhaitez inclure tous les fichiers de votre dossier « ressources » avec un nom de fichier contenant « D’isolement2 », vous pouvez utiliser ce qui suit :For example, if you want to include every file in your "Assets" folder with a file name that contains "Level2" you can use something like this:

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

Convertir SourceAppxContentGroupMap.xml en AppxContentGroupMap.xmlConvert SourceAppxContentGroupMap.xml to AppxContentGroupMap.xml

Pour convertir le SourceAppxContentGroupMap.xml en version finale, AppxContentGroupMap.xml vous pouvez utiliser Visual Studio 2017 ou l’outil en ligne de commande MakeAppx.exe .To convert the SourceAppxContentGroupMap.xml to the final version, AppxContentGroupMap.xml, you can use Visual Studio 2017 or the MakeAppx.exe command line tool.

Pour utiliser Visual Studio pour convertir votre mappage de groupe de contenu :To use Visual Studio to convert your content group map:

  1. Ajouter le SourceAppxContentGroupMap.xml à votre dossier de projetAdd the SourceAppxContentGroupMap.xml to your project folder
  2. Modifiez l’action de génération du SourceAppxContentGroupMap.xml en « AppxSourceContentGroupMap » dans le fenêtre PropriétésChange the Build Action of the SourceAppxContentGroupMap.xmlto "AppxSourceContentGroupMap" in the Properties window
  3. Cliquez avec le bouton droit sur le projet dans l’Explorateur de solutionsRight click the project in the solution explorer
  4. Accédez à Store-> convertir un fichier de mappage de groupe de contenuNavigate to Store -> Convert Content Group Map File

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 l’outil MakeAppx.exe pour convertir votre SourceAppxContentGroupMap.xml .If you didn't develop your app in Visual Studio, or if you just prefer using the command line, use the MakeAppx.exe tool to convert your SourceAppxContentGroupMap.xml.

Une commande de MakeAppx.exe simple peut se présenter comme suit :A simple MakeAppx.exe command might look something like this:

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

L’option/s spécifie le chemin d’accès à SourceAppxContentGroupMap.xml et/f spécifie le chemin d’accès au AppxContentGroupMap.xml .The /s option specifies the path to the SourceAppxContentGroupMap.xml, and /f specifies the path to the AppxContentGroupMap.xml. La dernière option,/d, spécifie le répertoire à utiliser pour le développement des caractères génériques de nom de fichier, dans le cas présent, il s’agit du répertoire du projet d’application.The final option, /d, specifies which directory should be used for expanding file name wildcards, in this case, its the app project directory.

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 :For more information about options you can use with MakeAppx.exe, open a command prompt, navigate to MakeAppx.exe and enter:

MakeAppx convertCGM /?

C’est tout ce dont vous avez besoin pour AppxContentGroupMap.xml préparer votre application.That's all you'll need to get your final AppxContentGroupMap.xml ready for your app! Il reste encore plus à faire avant que votre application soit entièrement prête pour le Microsoft Store.There's still more to do before your app is fully ready for the Microsoft Store. Pour plus d’informations sur le processus complet d’ajout de l’installation de streaming à votre application, consultez ce billet de blog.For more information on the complete process of adding streaming install to your app, check out this blog post.