Empaqueter votre application à l’aide d’un seul projet MSIX

MSIX à projet unique est une fonctionnalité qui vous permet de créer une application bureautique WinUI 3 empaquetée sans avoir besoin d’un projet d’empaquetage distinct. Une application WinUI 3 est une application qui utilise le cadre WinUI (Bibliothèque d’interface utilisateur Windows) 3 pour son interface utilisateur ; elle utilise le Kit de développement logiciel (SDK) d’application Windows. Pour empaqueter une application bureautique qui n’est pas une application WinUI 3, reportez-vous à Configurer votre application bureautique pour l’empaquetage MSIX dans Visual Studio.

La fonctionnalité MSIX à projet unique est disponible sous la forme d’une extension Visual Studio que vous pouvez utiliser pour ces scénarios :

  • Créez une application bureautique WinUI 3 à l’aide du modèle de projet Visual Studio Blank App empaqueté (WinUI 3 in Desktop) fourni avec le kit de développement logiciel (SDK) d’application Windows. Ce projet est configuré pour créer votre application dans un paquet MSIX sans avoir besoin d’un projet d’empaquetage distinct.
  • Modifiez une application bureautique WinUI 3 existante qui utilise un projet d’empaquetage distinct. La modification consiste à supprimer le projet d’empaquetage séparé, comme le montre l’illustration ci-dessous.

Comparing packaging project to single project

Vue d’ensemble

Cette section présente quelques détails importants sur la fonctionnalité MSIX pour projet unique.

Avantages

Avant la mise en service de la fonction MSIX à projet unique, si vous vouliez créer une application bureautique WinUI 3 packagée, il vous fallait deux projets dans votre solution : votre projet d’application et un projet de création de packages d’applications Windows supplémentaire (reportez-vous à Configurer votre application de bureau pour l’emballage MSIX dans Visual Studio). La fonctionnalité MSIX à projet unique vous permet de développer et de créer votre application en n’utilisant qu’un seul projet pour votre application. Il en résulte une structure de projet plus propre et une expérience de développement plus directe. Par exemple, vous n’avez plus besoin de sélectionner le projet d’empaquetage séparé comme projet de démarrage.

Types de projet pris en charge

La fonctionnalité MSIX à projet unique prend en charge les modèles WinUI 3 dans Visual Studio (C# et C++) pour le kit de développement logiciel (SDK) d’application Windows.

Limites

MSIX à projet unique ne prend en charge qu’un seul exécutable dans le package MSIX généré. Si vous devez combiner plusieurs exécutables dans un package MSIX unique, vous devez continuer à utiliser un projet de création de packages d’applications Windows dans votre solution.

Installez les outils d’empaquetage MSIX à projet unique

Les outils d’empaquetage MSIX à projet unique incluent des modèles de projet Visual Studio que vous pouvez utiliser pour créer de nouvelles applications bureautiques WinUI 3 empaquetées. Ces outils sont inclus avec l’extension du kit de développement logiciel (SDK) d’application Windows pour Visual Studio. Pour obtenir des instructions d’installation pour le Kit de développement logiciel (SDK) d’application Windows, reportez-vous à Installer les outils du kit SDK d’application Windows.

Kit SDK d’application Windows, version 0.8 et C#, version 1.0 Preview 3 : les outils d’empaquetage MSIX à projet unique ne sont pas inclus dans l’extension du SDK d’application Windows pour Visual Studio pour le kit SDK d’application Windows, version 0.8, ou pour les projets C# avec jusqu’à la Preview 3 du kit SDK d’application Windows 1.0. Par conséquent, si vous utilisez ces versions, il se peut que vous deviez installer explicitement les outils d’empaquetage MSIX à projet unique. Reportez-vous aux informations ci-dessous :

Ensuite, dans Visual Studio, vous pouvez confirmer que l’extension est installée. Cliquez sur Extensions>Gérer les extensions>Installées>Toutes, et confirmez que les outils d’empaquetage MSIX à projet unique sont répertoriés.

Créer un projet

Si vous utilisez le kit SDK d’applications Windows 1.0 Preview 2 ou une version ultérieure, vous pouvez créer une nouvelle application basée sur WinUI 3 qui inclut le support MSIX d’un projet unique en utilisant simplement le modèle d’application vierge, sous forme de package (WinUI 3 in Desktop). Pour en savoir plus sur ce type de projet, reportez-vous à Créer votre première application WinUI 3.

Modifier un projet existant

Suivez les étapes décrites dans cette section pour modifier une application WinUI 3 existante qui utilise un projet d’empaquetage distinct. Les étapes consistent à déplacer le manifeste du package (et les autres éléments nécessaires à la création d’un package MSIX) dans le projet d’application, puis à supprimer le projet d’empaquetage distinct.

Étape 1 : créer ou ouvrir un projet d’empaquetage existant

Si vous disposez déjà d’une solution pour une application bureautique WinUI 3 (reportez-vous aux modèles WinUI 3 dans Visual Studio) qui inclut un projet de création de packages d’applications Windows (reportez-vous à Configurer votre application bureautique pour l’empaquetage MSIX dans Visual Studio), ouvrez à présent cette solution dans Visual Studio.

Si ce n’est pas le cas, créez une application de bureau WinUI 3 dans Visual Studio en utilisant le modèle Blank App, Packaged avec le projet de création de packages d’applications Windows (WinUI 3 in Desktop). Votre solution ressemblera à la capture d’écran ci-dessous.

A solution using the packaging project

Étape 2 : modifier les paramètres de projet d’application

Ensuite, modifiez certains paramètres de configuration pour utiliser la fonctionnalité MSIX à projet unique. Les instructions varient en fonction du type de projet et de la version de Visual Studio.

  1. Dans l’Explorateur de solutions, double-cliquez sur le nœud de projet de votre application pour ouvrir le fichier .csproj dans l’éditeur XML. Ajoutez le code XML suivant dans l’élément principal <PropertyGroup>.

    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    Une fois que vous avez terminé, l’élément <PropertyGroup> doit ressembler à ceci :

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. Enregistrer vos modifications et fermez le fichier .csproj.

  3. Effectuez l’une des procédures suivantes, en fonction de votre version de Visual Studio.

    Pour Visual Studio 2022 ou version ultérieure :

    1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le dossier Propriétés sous le nœud du projet de votre application, puis sélectionnez Ajouter>Nouvel élément....

    2. Sélectionnez Fichier texte, nommez le nouveau fichier launchSettings.json et cliquez sur Ajouter. Vérifiez que le nouveau fichier se trouve dans le dossier Propriétés de votre projet d’application.

    3. Copiez les paramètres suivants dans le nouveau fichier. Vous êtes libre de modifier les valeurs en fonction de votre scénario. La valeur MyApp peut être n’importe quelle chaîne. Il n’est pas impératif qu’elle corresponde au nom de votre application.

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. Enregistrez et fermez le fichier launchSettings.json.

    Pour Visual Studio 2019 :

    1. Dans l’Explorateur de solutions, faites un clic droit sur le nœud de projet de votre application, puis sélectionnez Propriétés.

    2. Sélectionnez l’onglet Débogage et définissez la propriété de lancement sur MsixPackage. Il se peut que vous deviez sélectionner cette option deux fois si elle réapparaît lors de la première tentative.

      Enabling MsixProject option

    3. Enregistrez vos modifications.

Étape 3 : déplacer des fichiers vers le projet d’application

Ensuite, déplacez plusieurs fichiers importants vers le projet d’application. Les instructions varient en fonction du type de projet.

  1. Dans Explorateur de fichiers, déplacez le fichier Package.appxmanifest et le dossier Images de votre projet d’empaquetage vers votre projet d’application. Placez ce fichier et ce dossier au niveau supérieur de l’arborescence des dossiers du projet d’application.
  2. Dans Visual Studio, sous Explorateur de solutions, sélectionnez toutes les images dans le dossier Images. Dans la fenêtre Propriétés, définissez l’action de génération sur Contenu.
  3. Supprimez le projet d’empaquetage de votre solution.

Illustration of moving files to main app

Étape 4 : activer le déploiement dans Configuration Manager

  1. Sélectionnez Build>Gestionnaire de configuration.
  2. Dans le Gestionnaire de configuration, cochez la case Déployer pour chaque combinaison de configuration et de plateforme (par exemple, Debug et x86, Debug et arm64, Release et x64, etc.).

    Remarque

    Veillez à utiliser les listes déroulantes Configuration de la solution active et Plateforme de la solution active situées vers le haut à la place des listes déroulantes Configuration et Plateforme situées sur la même ligne que la case à cocher Déployer.

Enabling Deploy in Configuration Manager

Étape 5 : déployer votre application

Créer et déployer votre projet d’application. Visual Studio génère votre application dans un package MSIX, installe le package, puis exécute votre application.

Étape 6 : empaqueter votre application pour la publication

Utilisez la commande Package & Publish dans Visual Studio pour packager votre application afin de la publier sur le Microsoft Store.

Automatiser la création et l’empaquetage de votre application MSIX à projet unique

Vous pouvez utiliser msbuild pour générer et empaqueter votre application MSIX à projet unique, ce qui vous permet d’automatiser le flux de travail. La technique pour une solution à projet unique et la ligne de commande ne diffèrent que légèrement de ce que vous pouvez déjà faire si vous avez une solution à deux projets, l’un d’eux ayant un projet de création de packages d’applications Windows (reportez-vous à Configurer votre application bureautique pour l’empaquetage MSIX dans Visual Studio).

/p:GenerateAppxPackageOnBuild=true est l’option de commande de build importante pour une solution à projet unique. Sans cette option, le projet sera généré, mais vous n’obtiendrez pas de package MSIX. Avec cette option, le package MSIX sera généré.

Il existe un exemple complet sous la forme de GitHub Action qui génère une solution à projet unique WinUI 3.

Remarque

MSIX à projet unique ne prend actuellement pas en charge la production d’offres groupées MSIX (reportez-vous à Packages MSIX groupés). Il ne produit qu’un seul MSIX. Toutefois, vous pouvez regrouper des fichiers .msix dans un bundle MSIX à l’aide de GitHub Actions du regroupeur MSIX.

Comment les applications bureautiques empaquetées s’exécutent sur Windows

Pour plus d’informations sur ce qui arrive aux fichiers et aux entrées de Registre lorsque vous créez un package d’application Windows pour votre application de bureau, consultez Comprendre la façon dont les applications de bureau empaquetées s’exécutent sur Windows.

Fournir des commentaires

Pour nous faire part de vos retours d’expérience, signaler des problèmes ou poser des questions sur la fonctionnalité MSIX à projet unique, publiez une discussion ou un problème sur le référentiel GitHub du kit SDK d’application Windows.