Guide de déploiement du SDK d'application Windows pour les applications autonomes

Un projet sdk d’application Windows dépend de l’infrastructure par défaut. Pour passer au déploiement autonome, suivez les étapes ci-dessous (les termes dépendant de l’infrastructure et autonome sont décrits dans la vue d’ensemble du déploiement du Kit de développement logiciel (SDK) d’application Windows).

  • Dans Visual Studio, cliquez avec le bouton droit sur le nœud du projet d’application, puis cliquez sur Modifier le fichier projet pour ouvrir le fichier projet d’application à modifier. Pour un projet C++, commencez par cliquer sur Décharger le projet.
  • Dans le fichier projet d’application, à l’intérieur du fichier principal PropertyGroup, ajoutez <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> comme indiqué dans la capture d’écran ci-dessous.

Capture d’écran montrant la propriété WindowsAppSDKSelfContained définie dans un fichier projet.

  • Pour les projets empaquetés, dans le fichier projet d’application, à la fin du fichier avant la fermeture </Project>, ajoutez l’illustration Target ci-dessous.
  <Target Name="_RemoveFrameworkReferences" BeforeTargets="_ConvertItems;_CalculateInputsForGenerateCurrentProjectAppxManifest">
    <ItemGroup>
      <FrameworkSdkReference Remove="@(FrameworkSdkReference)" Condition="$([System.String]::Copy('%(FrameworkSdkReference.SDKName)').StartsWith('Microsoft.WindowsAppRuntime.'))" />
    </ItemGroup>
  </Target>

Remarque

Il s’agit d’une solution de contournement pour un bogue dans le Kit de développement logiciel (SDK) d’application Windows 1.1 et n’est pas nécessaire avec windows App SDK 1.2. Il n’est nécessaire que pour les projets empaquetés.

  • Enregistrez et fermez le fichier projet.
  • Cliquez sur Recharger le projet.
  • Si vous utilisez un projet d’empaquetage d’applications Windows (plutôt que le msIX à projet unique que vous obtenez avec l’application vide, empaquetée (WinUI 3 dans le Bureau)), apportez également toutes les modifications ci-dessus dans le fichier projet de création de packages.

Remarque

Les projets de bibliothèque ne doivent pas être modifiés. Le déploiement autonome ne doit être configuré que dans les projets d’application (et, le cas échéant, dans un projet d’empaquetage d’applications Windows).

Pour obtenir des exemples d’applications, consultez les exemples de déploiement autonome du Kit de développement logiciel (SDK) d’application Windows.

Après avoir défini la WindowsAppSDKSelfContained propriété true dans votre fichier projet, le contenu du package Du Kit de développement logiciel (SDK) d’application Windows est extrait dans votre sortie de build et déployé dans le cadre de votre application.

Remarque

Les applications .NET doivent également être publiées en tant qu’auto-autonomes . Consultez cet exemple pour savoir comment configurer .NET autonome avec des profils de publication. dotnet publish n’est pas encore pris en charge avec windows App SDK 1.1.

Remarque

Les applications C++ doivent également utiliser le CRT hybride pour être entièrement autonomes. L’importation de HybridCRT.props à partir de Directory.Build.props est la méthode recommandée pour la configurer pour tous les projets d’une solution (voir un exemple dans Directory.Build.props). Une application empaquetée doit également être définie <UseCrtSDKReferenceStaticWarning>false</UseCrtSDKReferenceStaticWarning> dans son fichier projet. Consultez l’exemple d’application de déploiement autonome pour savoir comment utiliser le CRT hybride.

Si votre application est empaquetée (pour plus d’informations, consultez Vue d’ensemble du déploiement), les dépendances du Kit de développement logiciel (SDK) d’application Windows sont incluses en tant que contenu dans le package MSIX. Le déploiement de l’application nécessite toujours l’inscription du package MSIX comme toute autre application empaquetée.

Si votre application est empaquetée avec un emplacement externe ou non empaquetée, les dépendances du Kit de développement logiciel (SDK) d’application Windows sont copiées en regard de la .exe sortie de votre build. Vous pouvez déployer xcopy-deploy les fichiers résultants ou les inclure dans un programme d’installation personnalisé.

Dépendances sur des packages MSIX supplémentaires

Un petit nombre d’API dans le Kit de développement logiciel (SDK) d’application Windows reposent sur des packages MSIX supplémentaires qui représentent des fonctionnalités de système d’exploitation critiques.

Cela signifie que si vous souhaitez utiliser ces API dans une application autonome, vous disposez des options suivantes :

  1. Vous pouvez rendre votre fonctionnalité facultative et l’allumer uniquement si possible. L’appel de la méthode IsSupported des API (PushNotificationManager.IsSupported et AppNotificationManager.IsSupported) vous permet de vérifier dynamiquement au moment de l’exécution si les API sont disponibles ou non pour l’application appelante sur le système sur lequel elle s’exécute.
    • Cela permet une utilisation sécurisée, conditionnelle et facultative des API sans compromettre la simplicité de votre déploiement autonome.
    • Uniquement si les services de système d’exploitation sont installés en dehors de votre déploiement d’application, votre application allume les fonctionnalités appropriées. En fait, il existe certains cas où les API fonctionnent même sans que le package Singleton soit présent. Par conséquent, l’appel d’IsSupported pour vérifier est souvent une bonne idée.
  2. Déployez les packages MSIX requis dans le cadre de l’installation de votre application.
    • Cela vous permet de dépendre de l’API dans tous les scénarios. Toutefois, la nécessité d’un déploiement de package MSIX de dépendances dans le cadre de votre déploiement d’application peut compromettre la simplicité du déploiement autonome.
  3. N’utilisez pas l’API.
    • Envisagez d’autres API qui fournissent des fonctionnalités similaires sans exigences de déploiement supplémentaires.

Refus ou acceptation de la prise en charge automatique UndockedRegFreeWinRT

La propriété de projet WindowsAppSdkUndockedRegFreeWinRTInitialize a été introduite dans la version 1.2 du Kit de développement logiciel (SDK) de l’application Windows (à partir du canal stable). Si cette propriété est définie sur true , elle garantit que l’implémentation du Kit de développement logiciel (SDK) d’application Windows sans inscription (UndockedRegFreeWinRT) est activée automatiquement au démarrage de l’application. Cette prise en charge est nécessaire par les applications autonomes non empaquetées.

WindowsAppSdkUndockedRegFreeWinRTInitialize a la valeur true si WindowsAppSDKSelfContained a la valeur true et Que WindowsPackageType est None et (à partir de la version 1.2 du Kit de développement logiciel (SDK) OutputType) OutputType est défini sur Exe ou WinExe (autrement dit, le projet produit un exécutable). Cette dernière condition consiste à empêcher l’ajout de la prise en charge automatique de UndockedRegFreeWinRT dans les DLL de bibliothèque de classes et d’autres fichiers non exécutables par défaut. Si vous avez besoin de la prise en charge automatique de UndockedRegFreeWinRT dans un fichier non exécutable (par exemple, une DLL de test chargée par un exécutable de processus hôte qui n’initialise pas UndockedRegFreeWinRT), vous pouvez l’activer explicitement dans votre projet avec <WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>.