Partager via


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.

  1. Ouvrez un terminal PowerShell et accédez au répertoire dans lequel se trouve votre projet.

  2. 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ètre FriendlyName 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}")
    
  3. 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
    
  4. 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é :

Installing an untrusted app.

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 :

  1. Cliquez avec le bouton droit sur le fichier .msix et choisissez Propriétés.

  2. Sélectionnez l’onglet Signatures numériques.

  3. Choisissez le certificat, puis appuyez sur Détails.

    Properties pane of an MSIX file with the digital signatures tab selected.

  4. Sélectionnez Afficher le certificat.

  5. Sélectionnez Installer le certificat....

  6. 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.

  7. Dans la fenêtre Assistant Importation de certificat, sélectionnez Placer tous les certificats dans le magasin suivant.

  8. Sélectionnez Parcourir..., puis choisissez le magasin Contacts approuvés. Sélectionnez OK pour fermer la boîte de dialogue.

    Certificate import wizard window is shown while selecting the Trusted People store.

  9. Sélectionnez Suivant, puis Terminer. Vous devez voir une boîte de dialogue qui indique : L’importation s’est effectuée correctement.

    Certificate import wizard window with a successful import message.

  10. 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é :

Installing a trusted app.

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é.