Publier une application .NET MAUI empaquetée pour Windows à l’aide de la CLI
Lorsque vous distribuez votre application .NET Multi-platform App UI (.NET MAUI) pour Windows, vous pouvez publier l’application et ses dépendances dans un dossier pour le déploiement vers un autre système. Vous pouvez également empaqueter l’application dans un package MSIX, qui fournit de nombreux avantages aux utilisateurs qui installent votre application. Pour plus d’informations sur les avantages de MSIX, consultez Présentation de MSIX.
Créer un certificat de signature
Vous devez utiliser un certificat de signature pour l’utiliser dans la publication de votre application. Ce certificat est utilisé pour signer le package MSIX. Les étapes suivantes expliquent comment créer et installer un certificat auto-signé avec PowerShell :
Remarque
Lorsque vous créez et utilisez un certificat auto-signé, seuls les utilisateurs qui installent et approuvent votre certificat peuvent exécuter votre application. Cela est facile à implémenter pour les tests, mais cela peut empêcher d’autres utilisateurs d’installer votre application. Lorsque vous êtes prêt à publier votre application, nous vous recommandons d’utiliser un certificat émis par une source approuvée. Ce système d’approbation centralisé permet de s’assurer que l’écosystème d’applications a des niveaux de vérification permettant de protéger les utilisateurs contre les acteurs malveillants.
Ouvrez un terminal PowerShell et accédez au répertoire dans lequel se trouve votre projet.
Utilisez la commande
New-SelfSignedCertificate
pour générer un certificat auto-signé.L’utilisateur voit la valeur
<PublisherName>
lorsqu’il installe votre application, indiquez votre propre valeur et omettez les caractères< >
. Vous pouvez définir le paramètreFriendlyName
sur n’importe quelle chaîne de texte souhaitée.New-SelfSignedCertificate -Type Custom ` -Subject "CN=<PublisherName>" ` -KeyUsage DigitalSignature ` -FriendlyName "My temp dev cert" ` -CertStoreLocation "Cert:\CurrentUser\My" ` -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
Utilisez la commande PowerShell suivante pour interroger le magasin de certificats pour trouver le certificat qui a été créé :
Get-ChildItem "Cert:\CurrentUser\My" | Format-Table Thumbprint, Subject, FriendlyName
Vous obtenez normalement des résultats similaires à la sortie suivante :
Thumbprint Subject FriendlyName ---------- ------- ------------ DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4 A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE CN=someone@microsoft.com 94D93DBC97D4F7E4364A215F15C6ACFEFC71E569 CN=localhost ASP.NET Core HTTPS development certificate F14211566DACE867DA0BF9C2F9C47C01E3CF1D9B CN=john 568027317BE8EE5E6AACDE5079D2DE76EC46EB88 CN=e1f823e2-4674-03d2-aaad-21ab23ad84ae DC602EE83C95FEDF280835980E22306067EFCA96 CN=John Smith, OU=MSE, OU=Users, DC=com 07AD38F3B646F5AAC16F2F2570CAE40F4842BBE0 CN=Contoso My temp dev cert
L’empreinte de votre certificat sera utilisée ultérieurement, donc copiez-la dans le Presse-papiers. Il s’agit de la valeur de l’empreinte pour laquelle l’entrée correspond au Sujet et au FriendlyName de votre certificat.
Pour plus d’informations, consultez Créer un certificat pour la signature du package.
Configurer les paramètres de génération du projet
Le Fichier projet est un bon endroit pour placer les paramètres de build spécifiques à Windows. Vous ne souhaiterez peut-être pas placer certains paramètres, tels que les mots de passe, dans le Fichier projet. Les paramètres décrits dans cette section peuvent être transmis sur la ligne de commande au format -p:name=value
. Si le paramètre est déjà défini dans le Fichier projet, un paramètre transmis sur la ligne de commande remplace le paramètre du projet.
Ajoutez le nœud <PropertyGroup>
suivant à votre Fichier projet. Ce groupe de propriétés est traité uniquement lorsque l’infrastructure cible est Windows et que la configuration est définie sur Release
. Cette section de configuration s’exécute chaque fois qu’un build ou une publication est en mode Release
.
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(Configuration)' == 'Release'">
<AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
<PackageCertificateThumbprint>A10612AF095FD8F8255F4C6691D88F79EF2B135E</PackageCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
<RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>
Remplacez la valeur de propriété <PackageCertificateThumbprint>
par l’empreinte du certificat que vous avez générée précédemment. Vous pouvez également supprimer ce paramètre du Fichier projet et le transmettre via la ligne de commande. Par exemple : -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E
.
La seconde valeur <PropertyGroup>
de l’exemple est nécessaire pour contourner un bogue dans le SDK Windows. Pour plus d’informations sur le bogue, consultez le Problème n° 3337 WindowsAppSDK.
Publier
Pour publier votre application, ouvrez l’Invite de commandes développeur pour le terminal VS 2022 et accédez au dossier de votre projet d’application .NET MAUI. Exécutez la commande dotnet publish
, en fournissant les paramètres suivants :
Paramètre | Valeur |
---|---|
-f |
Infrastructure cible, c’est-à-dire net8.0-windows{version} . Cette valeur est un TFM Windows, tel que net8.0-windows10.0.19041.0 . Vérifiez que cette valeur est identique à la valeur du nœud <TargetFrameworks> dans votre fichier .csproj. |
-c |
Configuration de build, c’est-à-dire Release . |
-p:RuntimeIdentifierOverride=win10-x64 - ou - -p:RuntimeIdentifierOverride=win10-x86 |
Évite le bogue détaillé dans le Problème n° 3337 WindowsAppSDK. Choisissez la version -x64 ou -x86 du paramètre en fonction de votre plateforme cible. |
Avertissement
La tentative de publication d’une solution .NET MAUI entraîne la commande dotnet publish
qui tente de publier chaque projet dans la solution individuellement, ce qui peut entraîner des problèmes lorsque vous avez ajouté d’autres types de projets à votre solution. Par conséquent, la commande dotnet publish
doit être étendue à votre projet d’application .NET MAUI.
Par exemple :
dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64
Remarque
Dans .NET 8, la commande dotnet publish
est par défaut dans la configuration Release
. Par conséquent, la configuration de build peut être omise à partir de la ligne de commande.
La publication de builds et de packages de l’application, la copie du package signé dans le dossier bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<appname>\. <appname> est un dossier nommé après votre projet et votre version. Dans ce dossier, il existe un fichier msix et c’est le package de l’application.
Pour plus d’informations sur la commande dotnet publish
, consultez dotnet publish.
Installation de l’outil
Pour installer l’application, elle doit être signée avec un certificat que vous avez déjà approuvé. Si ce n’est pas le cas, Windows ne vous permet pas d’installer l’application. Vous verrez une boîte de dialogue similaire à ce qui suit, avec le bouton Installer désactivé :
Notez que dans l’image précédente, le serveur de publication était « inconnu ».
Pour approuver le certificat du package de l’application, procédez comme suit :
Cliquez avec le bouton droit sur le fichier .msix et choisissez Propriétés.
Sélectionnez l’onglet Signatures numériques.
Choisissez le certificat, puis appuyez sur Détails.
Sélectionnez Afficher le certificat.
Sélectionnez Installer le certificat....
Choisissez Ordinateur local, puis sélectionnez Suivant.
Si vous êtes invité par le contrôle de compte d’utilisateur à Autoriser cette application à apporter des modifications à votre appareil ?, sélectionnez Oui.
Dans la fenêtre Assistant Importation de certificat, sélectionnez Placer tous les certificats dans le magasin suivant.
Sélectionnez Parcourir..., puis choisissez le magasin Contacts approuvés. Sélectionnez OK pour fermer la boîte de dialogue.
Sélectionnez Suivant, puis Terminer. Vous devez voir une boîte de dialogue qui indique : L’importation s’est effectuée correctement.
Sélectionnez OK sur n’importe quelle fenêtre ouverte dans le cadre de ce processus, pour les fermer toutes.
À présent, réessayez d’ouvrir le fichier de package pour installer l’application. Vous devez voir une boîte de dialogue similaire à ce qui suit, avec le serveur de publication correctement affiché :
Sélectionnez le bouton Installer si vous souhaitez installer l’application.
Limites actuelles
La liste suivante décrit les limitations actuelles avec la publication et l’empaquetage :
- L’application publiée ne fonctionne pas si vous essayez de l’exécuter directement avec le fichier exécutable hors du dossier de publication.
- La façon d’exécuter l’application consiste à l’installer d’abord via le fichier MSIX empaqueté.