Création de packages facultatifs et d’ensembles associés

Les packages facultatifs ont un contenu qui peut être inclus dans un package principal. Ils sont utiles pour le contenu téléchargeable (DLC), la Division d’une grande application pour les restrictions de taille ou pour l’expédition de tout contenu supplémentaire distinct de votre application d’origine. Pour plus d’informations sur les packages facultatifs, consultez le billet de blog : étendre votre application à l’aide de packages facultatifs.

Les jeux associés sont une extension des packages facultatifs. Les jeux associés vous permettent d’appliquer un ensemble strict de versions sur des packages principaux et facultatifs. Les jeux associés peuvent avoir différents serveurs de publication de l’application principale s’ils sont déployés en dehors du magasin. Pour plus d’informations sur les jeux associés, consultez le billet de blog : outils pour créer un ensemble associé.

Les packages facultatifs et les jeux associés s’exécutent tous dans le conteneur MSIX de l’application principale.

Prérequis

  • Visual Studio 2019 ou Visual Studio 2017 (version 15,1 ou ultérieure)
  • Windows 10, version 1703 ou ultérieure
  • Windows 10, version 1703 du kit de développement logiciel (SDK) ou version ultérieure

Pour obtenir tous les outils de développement les plus récents, consultez téléchargements et outils pour Windows 10.

Notes

pour soumettre une application qui utilise des packages facultatifs et/ou des ensembles associés à la Microsoft Store, vous aurez besoin de l’autorisation. Des packages facultatifs et des jeux associés peuvent être utilisés pour des applications métier ou d’entreprise sans l’autorisation de l’espace partenaires s’ils ne sont pas envoyés au magasin. pour obtenir l’autorisation de soumettre une application qui utilise des packages facultatifs et des jeux associés, consultez Windows le support technique du développeur .

Exemple de code

pendant que vous lisez cet article, il est recommandé de suivre l' exemple de code de package facultatif sur GitHub pour une compréhension pratique de la façon dont les packages facultatifs et les jeux associés fonctionnent dans Visual Studio.

Packages facultatifs

pour créer un package facultatif dans Visual Studio, vous devez effectuer les opérations suivantes :

  1. Vérifiez que la version minimale de la plateforme cible de votre application est définie sur : 10.0.15063.0 ou une version ultérieure.
  2. À partir de votre projet de package principal , ouvrez le Package.appxmanifest fichier. Accédez à l’onglet « Packaging » et notez le nom de la famille de packages, c’est-à-dire tout ce qui précède le caractère « _ ».
  3. À partir de votre projet de package facultatif , cliquez avec le bouton droit sur le et sélectionnez Ouvrir avec > l'Package.appxmanifest éditeur XML (texte).
  4. Recherchez l’élément <Dependencies> dans le fichier. Ajoutez le code suivant et remplacez [MainPackageDependency] par le nom de la famille de packages de l’étape 2. Cela permet de spécifier que votre package facultatif dépend de votre package principal.
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

Notes

Si vous souhaitez créer un package facultatif à partir d’un autre serveur de publication, vous devez spécifier le serveur de publication de l’application principale s’ils sont différents. <comme uap4 : MainPackageDependency Name = "Main_app" Publisher = "CN = Contoso..."/ > . Cela ne fonctionnera pas si vous publiez dans le Windows Store.

Une fois que vous avez configuré vos dépendances de package à partir des étapes 1 à 4, vous pouvez poursuivre le développement comme vous le feriez normalement. Pour plus d’informations, consultez le billet de blog : créer votre premier package facultatif.

Visual Studio peut être configuré pour redéployer votre package principal chaque fois que vous déployez un package facultatif. pour définir la dépendance de build dans Visual Studio, vous devez :

  1. cliquez avec le bouton droit sur le projet de package facultatif et sélectionnez dépendances > de Build Project les dépendances...
  2. Vérifiez le projet de package principal et sélectionnez « OK ».

maintenant, chaque fois que vous entrez F5 ou que vous générez un projet de package facultatif, Visual Studio générera d’abord le projet de package principal. Cela permet de s’assurer que votre projet principal et les projets facultatifs sont synchronisés.

Un ensemble associé se compose d’un package principal et d’un package facultatif qui sont étroitement couplés via des métadonnées spécifiées dans le fichier. appxbundle ou. msixbundle du package principal. Ces métadonnées associent le package principal au package facultatif (en utilisant le nom du fichier. appxbundle + version) et le package facultatif au package principal (en utilisant le nom indépendant de la version). Visual Studio vous aide à récupérer les métadonnées correctes dans vos fichiers.

Le contrôle de version des packages dans un ensemble associé est synchronisé d’une manière qui n’autorise pas l’utilisation de la version la plus récente d’un package tant que tous les packages de jeux associés (spécifiés par la version du package principal) ne sont pas installés. Les packages sont desservis indépendamment, mais les packages spécifiés dans l’ensemble ne peuvent pas être utilisés tant qu’ils n’ont pas tous été mis à jour. Pour plus d’informations sur les jeux associés, consultez le billet de blog : outils pour créer un ensemble associé.

Pour configurer la solution de votre application pour les jeux associés, procédez comme suit :

  1. Cliquez avec le bouton droit sur le projet de package principal, puis sélectionnez ajouter > un nouvel élément...
  2. Dans la fenêtre, recherchez « .txt » dans les modèles installés et ajoutez un nouveau fichier texte.

    Important

    Le nouveau fichier texte doit être nommé : Bundle.Mapping.txt .

  3. Dans le Bundle.Mapping.txt fichier, entrez la chaîne « [OptionalProjects] » suivie des chemins d’accès relatifs à vos projets de package facultatifs. Voici un exemple de fichier Bundle.Mapping.txt :
    [OptionalProjects]
    "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj"
    "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
    

lorsque votre solution est configurée de cette manière, Visual Studio crée un manifeste de bundle nommé AppxBundleManifest.xml pour le package principal avec toutes les métadonnées requises pour les jeux associés.

notez que comme les packages facultatifs, un Bundle.Mapping.txt fichier pour les jeux associés fonctionne uniquement sur Windows 10, version 1703 ou ultérieure. En outre, la version minimale de la plateforme cible de votre application doit être définie sur 10.0.15063.0 ou une version ultérieure.

Suppression des packages facultatifs

les utilisateurs peuvent accéder à leur application Paramètres et supprimer les packages facultatifs. De même, les développeurs peuvent utiliser RemoveOptionalPackageAsync pour supprimer une liste de packages facultatifs.

PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
    
// Warn user that application will be restarted. 
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
    throw removalResult.ExtendedError;
}

Notes

Dans le cas d’un jeu associé, la plateforme doit redémarrer l’application principale pour finaliser la suppression afin d’éviter les situations où l’application dispose d’un contenu chargé à partir du package en cours de suppression. Les applications doivent informer les utilisateurs que l’application devra être redémarrée avant que l’application appelle l’API.

Si le package facultatif est uniquement du contenu, le développeur doit indiquer explicitement à la plateforme que le package qui est sur le paragraphe de supprimer n’est pas utilisé par l’application avant que le développeur ne supprime le package facultatif. Cela permet également au développeur de supprimer le package sans redémarrage.

Problèmes connus

Le débogage d’un projet de jeu facultatif associé n’est pas pris en charge dans Visual Studio. Pour contourner ce problème, vous pouvez déployer et lancer l’activation (Ctrl + F5) et attacher manuellement le débogueur à un processus. pour attacher le débogueur, accédez au menu déboguer dans Visual Studio, sélectionnez « attacher au processus... », puis attachez le débogueur au processus d’application principal.