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

Pour préparer votre application en vue d’une installation en continu, vous devez créer un mappage de groupe de contenu. 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.

Création du mappage de groupe de contenu source

vous devez créer un SourceAppxContentGroupMap.xml fichier, puis utiliser Visual Studio ou l’outil SourceAppxContentGroupMap.xml 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 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).

Examinons un scénario simple dans lequel l’installation de la diffusion en continu d’applications est bénéfique.

Imaginons que vous avez créé un jeu, mais que la taille de votre application finale est supérieure à 100 Go. cela va prendre beaucoup de temps à télécharger à partir de la Microsoft Store, ce qui peut être gênant. 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. 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.

Notes

L’utilisation de l’installation de streaming d’application s’appuie fortement sur l’Organisation des fichiers de votre application. 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.

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

Avant d’aller plus en détail, voici un exemple de fichier simple et complet 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>

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.

Groupe de contenu requis

Le groupe de contenu requis est un groupe de contenu unique au sein <Required> de l’élément 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 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.

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.

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

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

Voici quelques points importants à noter :

  • Le au <ContentGroup> sein de l' <Required> élément <ContentGroup> être nommé « 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.
  • Il n’y en a qu’un seul <ContentGroup> . Cela est intentionnel, car il ne doit y avoir qu’un seul groupe de fichiers essentiels.
  • Dans cet exemple, le fichier est un .exe fichier unique. 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 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 .

Important

Si vous développez une application C++, vous devrez ajuster les propriétés du fichier de votre SourceAppxContentGroupMap.xml . Affectez Content à la propriété la Content et à la propriété la valeur File TypeFile Type.

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 SourceAppxContentGroupMap.xml .

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 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. les dossiers WinMetadata et Properties doivent inclure les autres dossiers que Visual Studio génère. 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.

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 .

Il est également important de noter que les fichiers d’encombrement (AppxManifest.xml, AppxSignature. p7x, Resources. PRI, etc.) ne doit pas être inclus dans le mappage de groupe de contenus. 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.

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. Celles-ci contiennent des fichiers supplémentaires qui ne sont pas essentiels au lancement de l’application. 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. 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.

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

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

Astuces 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 <ContentGroup> éléments pour récupérer tous les fichiers 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 tous les fichiers de votre dossier « ressources » avec un nom de fichier contenant « D’isolement2 », vous pouvez utiliser ce qui suit :

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

Convertir SourceAppxContentGroupMap.xml en 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 SourceAppxContentGroupMap.xml .

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

  1. Ajouter le SourceAppxContentGroupMap.xml à votre dossier de projet
  2. Modifiez l’action de génération du SourceAppxContentGroupMap.xml en « AppxSourceContentGroupMap » dans le fenêtre Propriétés
  3. Cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions
  4. Naviguer vers le Store- > convertir le 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 l’outil MakeAppx.exe pour convertir votre .

Une commande de MakeAppx.exe simple peut se présenter comme suit :

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

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 avez besoin pour AppxContentGroupMap.xml préparer votre application. Il reste encore plus à faire avant que votre application soit entièrement prête pour le Microsoft Store. Pour plus d’informations sur le processus complet d’ajout de l’installation de streaming à votre application, consultez ce billet de blog.