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

Pour préparer votre application pour l’installation de streaming, vous devez créer une carte de groupe de contenu. Cet article vous aidera à comprendre les spécificités de la création et de la conversion d’une carte 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 MakeAppx.exe pour convertir ce fichier en version finale : AppxContentGroupMap.xml Il est possible d’ignorer une étape en créant à AppxContentGroupMap.xml partir de zéro, mais il est recommandé (et généralement plus facile) de créer et SourceAppxContentGroupMap.xml de le convertir, car les caractères génériques ne sont pas autorisés dans le AppxContentGroupMap.xml (et ils sont vraiment utiles).

Examinons un scénario simple dans lequel 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. Cela va prendre beaucoup de temps pour télécharger à partir du Microsoft Store, ce qui peut être inconvenient. 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 sera en mesure d’interagir avec votre application plus tôt, tandis que d’autres fichiers non essentiels sont téléchargés en arrière-plan.

Notes

L’utilisation de l’installation de streaming d’applications s’appuie fortement sur l’organisation de 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’applications dès que possible pour simplifier le segment des fichiers de votre application.

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

Avant d’accéder aux détails, 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 d’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 dans l’élément <Required> de l’élément SourceAppxContentGroupMap.xml. Un groupe de contenu requis doit contenir tous les fichiers essentiels nécessaires pour lancer l’application avec l’expérience utilisateur minimale. En raison de .NET Native compilation, tout le code (exécutable de l’application) doit faire partie du groupe requis, en laissant des ressources et d’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 exemple de fichier d’origine SourceAppxContentGroupMap.xml :

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

Voici quelques éléments importants à noter :

  • L’élément <ContentGroup><Required>doit être nommé « Obligatoire ». Ce nom est réservé au groupe de contenu requis uniquement et ne peut pas être utilisé avec n’importe quel autre <ContentGroup> mappage de groupe de contenu final.
  • Il n’y en 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 seul .exe fichier. Un groupe de contenu requis n’est pas limité à un fichier, il peut y avoir plusieurs.

Un moyen facile 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 de projet de votre application et à nommer votre fichier nouvellement créé : SourceAppxContentGroupMap.xml

Important

Si vous développez une application C++, vous devez ajuster les propriétés du 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 d’utiliser des caractères génériques dans les noms de fichiers, pour plus d’informations, voir les Astuces 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é d’inclure cela 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 des 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 Visual Studio générés. Les caractères génériques des ressources doivent sélectionner les images Logo et SplashScreen nécessaires à l’installation de l’application.

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

Il est également important de noter que les fichiers d’empreinte (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) ne doivent pas être inclus dans la carte du 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 seront ignorés.

Groupes de contenu automatiques

Les groupes de contenu automatiques sont les ressources 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 tous les fichiers supplémentaires qui ne sont pas essentiels pour lancer l’application. Par exemple, vous pouvez décomposer 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 requis : en raison de la compilation .NET Native, tout le code (exécutable de l’application) doit faire partie du groupe requis, en laissant des ressources et d’autres fichiers pour les groupes automatiques.

Examinons de plus près le groupe de contenu automatique à partir 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, avec quelques exceptions :

  • Il existe plusieurs groupes de contenu.
  • Les groupes de contenu automatiques peuvent avoir des noms uniques à l’exception du nom « Obligatoire » 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 seront téléchargés 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 à votre dossier racine de 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 au sein d’un niveau de fichier « Assets\Level2 » ou « Assets\Level3 ». Si vous utilisez une structure de dossiers plus approfondie, 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 ceci :

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

Convertir SourceAppxContentGroupMap.xml en AppxContentGroupMap.xml

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

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

  1. Ajouter le SourceAppxContentGroupMap.xml dossier de votre projet
  2. Modifiez l’action de génération de la SourceAppxContentGroupMap.xmlvaleur « AppxSourceContentGroupMap » dans le Fenêtre Propriétés
  3. Cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions
  4. Accéder au magasin -> 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 utiliser la ligne de commande, utilisez l’outil MakeAppx.exe pour convertir votre SourceAppxContentGroupMap.xml.

Une commande deMakeAppx.exe simple 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 SourceAppxContentGroupMap.xmlau fichier , et /f spécifie le chemin d’accès au AppxContentGroupMap.xmlfichier . L’option finale, /d, spécifie le répertoire à utiliser pour développer des 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 que vous aurez besoin d’obtenir votre dernière AppxContentGroupMap.xml préparation pour 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 l’ajout d’une installation de streaming à votre application, consultez cette page.