Partager via


Publier une application Mac Catalyst pour la distribution en dehors du Mac App Store

Une alternative à la distribution d’applications Mac Catalyst par le biais du Mac App Store consiste à les distribuer en dehors du Mac App Store. Avec cette approche, votre application Mac Catalyst peut être hébergée à l’emplacement de votre choix en vue du téléchargement. Les membres du programme des développeurs Apple et du programme Developer Enterprise d’Apple peuvent utiliser cette approche de distribution.

La distribution d’une application Mac Catalyst nécessite que l’application soit approvisionnée à l’aide d’un profil d’approvisionnement. Les profils de provisionnement sont des fichiers qui contiennent des informations de signature de code, ainsi que l’identité de l’application et son mécanisme de distribution prévu.

Pour distribuer une application Mac Catalyst .NET Multi-Platform App UI (.NET MAUI), vous devez créer un profil d’approvisionnement de distribution spécifique à celle-ci. Ce profil permet à l’application d’être signée numériquement pour publication afin qu’elle puisse être installée sur des Mac. Un profil d’approvisionnement de distribution contient un ID d’application et un certificat d’application d’ID de développeur. Vous devez créer un certificat d’application d’ID de développeur pour vous identifier, vous ou votre organisation, si vous n’en avez pas déjà un. En outre, vous devez créer un certificat d’installation d’ID de développeur pour signer le package d’installation de votre application.

Le processus d’approvisionnement d’une application Mac Catalyst .NET MAUI pour la distribution en dehors du Mac App Store est le suivant :

  1. Créez deux demandes de signature de certificat. Pour plus d’informations, consultez Créer une demande de signature de certificat.
  2. Créez un certificat d’application d’ID de développeur. Pour plus d’informations, consultez Créer un certificat d’application d’ID de développeur.
  3. Créez un certificat d’installation d’ID de développeur. Pour plus d’informations, consultez Créer un certificat d’installation d’ID de développeur.
  4. Créez un ID d’application. Pour plus d’informations, consultez Créer un ID d’application.
  5. Créez un profil de provisionnement. Pour plus d’informations, consultez Créer un profil de provisionnement.
  6. Téléchargez votre profil d’approvisionnement. Pour plus d’informations, consultez Télécharger votre profil d’approvisionnement dans Xcode.

Important

Cet article présente l’approvisionnement pour la distribution en dehors du Mac App Store à l’aide d’un compte de développeur Apple qui fait partie du programme des développeurs Apple. Il peut également être utilisé pour un compte de développeur Apple qui fait partie du programme Developer Enterprise d’Apple, car les étapes requises sont en grande partie identiques.

Ensuite, une fois l’approvisionnement terminé, vous devez préparer votre application pour la publication, la publier et la notariser avec le processus suivant :

  1. Si vous le souhaitez, ajoutez des droits à votre application. Pour plus d’informations, consultez Ajouter des droits.
  2. Mettez à jour le fichier Info.plist de l’application. Pour plus d’informations, consultez Mettre à jour Info.plist.
  3. Désactivez la vérification de la signature du code pour votre application. Pour plus d’informations, consultez Désactiver la vérification de la signature du code.
  4. Publiez votre application à l’aide de la ligne de commande. Pour plus d’informations, consultez Publier à l’aide de la ligne de commande.
  5. Notarisez votre application. Pour plus d’informations, consultez Notariser votre application.

Créer une demande de signature de certificat

Avant de créer un certificat de distribution, vous devez d’abord créer une demande de signature de certificat (RSC) dans Trousseau d’accès sur un Mac :

  1. Sur votre Mac, démarrez Trousseau d’accès.

  2. Dans Trousseau d’accès, sélectionnez l’élément de menu Trousseau d’accès > Assistant de certification > Demander un certificat auprès d’une autorité de certification....

  3. Dans la boîte de dialogue Assistant de certification, entrez une adresse e-mail dans le champ Adresse e-mail de l’utilisateur.

  4. Dans la boîte de dialogue Assistant de certification, entrez un nom pour la clé dans le champ Nom commun.

  5. Dans la boîte de dialogue Assistant de certification, laissez le champ Adresse e-mail de l’autorité de certification vide.

  6. Dans la boîte de dialogue Assistant de certification, choisissez la case d’option Enregistré sur disque, puis sélectionnez Continuer :

    Boîte de dialogue Assistant de certification.

  7. Enregistrez la demande de signature de certificat à un emplacement connu.

  8. Dans la boîte de dialogue Assistant de certification, sélectionnez le bouton Terminé.

  9. Fermez Trousseaux d’accès.

Répétez ce processus pour créer une deuxième demande de signature de certificat. La première demande de signature de certificat sera utilisée pour créer un certificat d’application d’ID de développeur. La deuxième sera utilisée pour créer un certificat d’installation d’ID de développeur.

Important

Vous ne pouvez pas utiliser la même demande de signature de certificat pour créer un certificat d’application d’ID de développeur et un certificat d’installation d’ID de développeur.

Créer un certificat d’application d’ID de développeur

La demande de signature de certificat vous permet de générer un certificat d’ID de développeur, qui confirme votre identité. Vous devez créer le certificat d’ID de développeur avec l’ID Apple de votre compte Apple Developer.

  1. Dans un navigateur web, connectez-vous à votre compte Apple Developer.

  2. Dans votre compte Apple Developer, accédez à l’onglet Certificates, IDs & Profiles.

  3. Sur la page Certificates, Identifiers & Profiles, sélectionnez le bouton + pour créer un certificat.

  4. Sur la page Create a New Certificate, sélectionnez la case d’option Developer ID Application avant de sélectionner le bouton Continue :

    Créez un certificat d’application d’ID de développeur.

  5. Sur la page Create a New Certificate, sélectionnez la case d’option G2 Sub-CA avant de sélectionner Choose File :

    Chargez votre demande de signature de certificat pour un certificat d’application d’ID de développeur.

  6. Dans la boîte de dialogue Choose Files to Upload, sélectionnez le premier fichier de demande de certificat que vous avez créé précédemment (un fichier avec une extension de fichier .certSigningRequest), puis sélectionnez Upload.

  7. Sur la page Create a New Certificate, sélectionnez le bouton Continue :

    Continuez à générer votre certificat de distribution.

  8. Sur la page Download Your Certificate, sélectionnez le bouton Download :

    Téléchargez votre certificat d’application d’ID de développeur.

    Le fichier de certificat (un fichier avec une extension .cer) sera téléchargé à l’emplacement de votre choix.

  9. Sur votre Mac, double-cliquez sur le fichier de certificat téléchargé pour installer le certificat dans votre keychain. Le certificat apparaît dans la catégorie Mes certificats dans Trousseaux d’accès et commence par Developer ID Application :

    Trousseaux d’accès montrant le certificat d’application ID de développeur.

    Remarque

    Notez le nom complet du certificat dans Trousseaux d’accès. Il sera nécessaire lors de la signature de votre application.

Créer un certificat d’installation d’ID de développeur

La demande de signature de certificat vous permet de générer un certificat d’installation d’ID de développeur, qui est nécessaire pour signer votre package d’installation de votre application. Le certificat d’installation doit être créé avec l’ID Apple de votre compte Apple Developer :

  1. Dans votre compte Apple Developer, accédez à l’onglet Certificates, IDs & Profiles.

  2. Sur la page Certificates, Identifiers & Profiles, sélectionnez le bouton + pour créer un certificat.

  3. Sur la page Create a New Certificate, sélectionnez la case d’option Developer ID Installer avant de sélectionner le bouton Continue :

    Créez un certificat d’installation d’ID de développeur.

  4. Sur la page Create a New Certificate, sélectionnez la case d’option G2 Sub-CA avant de sélectionner Choose File :

    Chargez votre demande de signature de certificat pour un certificat d’installation d’ID de développeur.

  5. Dans la boîte de dialogue Choose Files to Upload, sélectionnez le deuxième fichier de demande de certificat que vous avez créé précédemment (un fichier avec une extension de fichier .certSigningRequest), puis sélectionnez Upload.

  6. Sur la page Create a New Certificate, sélectionnez le bouton Continue :

    Continuez à générer votre certificat d’installation.

  7. Sur la page Download Your Certificate, sélectionnez le bouton Download :

    Téléchargez votre certificat de distribution.

    Le fichier de certificat (un fichier avec une extension .cer) sera téléchargé à l’emplacement de votre choix.

  8. Sur votre Mac, double-cliquez sur le fichier de certificat téléchargé pour installer le certificat dans votre keychain. Le certificat apparaît dans la catégorie Mes certificats dans Trousseaux d’accès et commence par Developer ID Installer :

    Trousseaux d’accès montrant le certificat d’installation ID de développeur.

    Remarque

    Notez le nom complet du certificat dans Trousseaux d’accès. Il sera nécessaire lors de la signature de votre application.

Créer un profil de distribution

Un profil de provisionnement de distribution permet à votre application Mac Catalyst .NET MAUI d’être signée numériquement pour publication, afin qu’elle puisse être installée sur un autre Mac. Un profil de provisionnement pour la distribution en dehors du Mac App Store contient un ID d’application et un certificat d’application d’ID de développeur.

Créer un ID d’application

Un ID d’application est requis pour identifier l’application que vous distribuez. Un ID d’application est similaire à une chaîne DNS inversée, qui identifie de façon unique une application et doit être identique à l’identificateur de bundle pour votre application. Vous pouvez utiliser le même ID d’application que celui que vous avez utilisé lors du déploiement de votre application sur un appareil à des fins de test.

Il existe deux types d’ID d’application :

  • Caractère générique. Un ID d’application générique vous permet d’utiliser un ID d’application unique pour correspondre à plusieurs applications et prend généralement la forme com.domainname.*. Vous pouvez utiliser un ID d’application générique pour distribuer plusieurs applications. Vous devez l’utiliser dans le cas d’applications qui n’activent pas les fonctionnalités spécifiques à l’application.
  • Explicite. Un ID d’application explicite est unique à une seule application et prend généralement la forme com.domainname.myid. Un ID d’application explicite permet la distribution d’une application, avec un identificateur de bundle correspondant. Les ID d’application explicites sont généralement utilisés pour les applications qui activent des fonctionnalités spécifiques à l’application telles qu’Apple Pay ou Game Center. Pour plus d’informations sur les fonctionnalités, consultez Fonctionnalités.

Pour créer un ID d’application :

  1. Dans votre compte de développeur Apple, accédez à Certificates, IDs & Profiles (Certificats, ID et profils).

  2. Dans la page Certificats, identificateurs et profils, sélectionnez l’onglet Identificateurs.

  3. Sur la page Identifiers, sélectionnez le bouton + pour créer un ID d’application.

  4. Sur la page Register a new identifier, sélectionnez la case d’option App IDs avant de sélectionner le bouton Continue :

    Créez un ID d’application.

  5. Sur la page Register a new identifier, sélectionnez App avant de sélectionner le bouton Continue :

    Enregistrez un ID d’application.

  6. Sur la page Register an App ID (Inscrire un ID d’application), entrez une description, puis sélectionnez la case d’option d’ID de bundle Explicit (Explicite) ou Wildcard (Générique). Entrez ensuite l’ID de bundle de votre application au format DS inverse :

    Spécifiez l’identificateur de bundle pour l’application.

    Important

    L’ID de bundle que vous entrez doit correspondre au Bundle identifier (Identificateur de bundle) dans le fichier Info.plist de votre projet d’application.

    L’identificateur de bundle d’une application .NET MAUI est stocké dans le fichier projet en tant que propriété ID d’application : Dans Visual Studio, dans l’Explorateur de solutions, cliquez avec le bouton droit sur votre projet d’application .NET MAUI, puis sélectionnez Propriétés. Ensuite, accédez à l’onglet MAUI partagé > Général. Le champ ID d’application répertorie l’identificateur de bundle.

    Lorsque la valeur du champ ID d’application est mise à jour, la valeur de l’Identificateur de bundle dans Info.plist sera automatiquement mise à jour.

  7. Sur la page Inscrire un ID d’application, sélectionnez les fonctionnalités que l’application utilise. Toutes les fonctionnalités doivent être configurées à la fois sur cette page et dans le fichier Entitlements.plist dans votre projet d’application. Pour plus d’informations, consultez Fonctionnalités et Droits.

  8. Sur la page Register an App ID, sélectionnez le bouton Continue.

  9. Sur la page Confirm your App ID, sélectionnez le bouton Register.

Créer un profil de provisionnement

Une fois l’ID d’application créé, vous devez créer un profil de provisionnement de distribution. Ce profil permet à l’application d’être signée numériquement pour publication afin qu’elle puisse être installée sur des Mac.

Pour créer un profil de provisionnement pour distribution en dehors du Mac App Store :

  1. Sur la page Certificates, Identifiers & Profiles (Certificats, identificateurs et profils) de votre compte de développeur Apple, sélectionnez l’onglet Profiles (Profils).

  2. Sous l’onglet Profiles (Profils), cliquez sur le bouton + pour créer un profil.

  3. Sur la page Register a New Provisioning Profile, sélectionnez la case d’option Developer ID avant de cliquer sur le bouton Continue :

    Enregistrez un profil de provisionnement pour distribution en dehors de l’App Store.

  4. Sur la page Generate a Provisioning Profile, sélectionnez la case d’option Mac Catalyst. Dans la liste déroulante App ID, sélectionnez ensuite l’ID d’application que vous avez créé précédemment avant de cliquer sur le bouton Continue :

    Sélectionnez votre ID d’application.

  5. Sur la page Generate a Provisioning Profile (Générer un profil de provisionnement), sélectionnez la case d’option correspondant à votre certificat de distribution avant de cliquer sur le bouton Continue (Continuer) :

    Sélectionnez votre certificat de distribution.

  6. Sur la page Generate a Provisioning Profile (Générer un profil de provisionnement), entrez un nom pour le profil de provisionnement avant de cliquer sur le bouton Generate (Générer) :

    Générez le profil de provisionnement.

    Remarque

    Notez le nom du profil de provisionnement, car il sera nécessaire lors de la signature de votre application.

  7. Sur la page Generate a Provisioning Profile (Générer un profil de provisionnement), cliquez éventuellement sur le bouton Download (Télécharger) pour télécharger votre profil de provisionnement.

    Remarque

    Il n’est pas nécessaire de télécharger votre profil de provisionnement maintenant. Au lieu de cela, vous le ferez dans Xcode.

Télécharger votre profil de provisionnement dans Xcode

Après avoir créé un profil de provisionnement dans votre compte Apple Developer, Xcode peut le télécharger afin qu’il soit disponible pour la signature de votre application :

  1. Sur votre Mac, lancez Xcode.

  2. Dans Xcode, sélectionnez l’élément de menu Xcode > Preférences….

  3. Dans la boîte de dialogue Preferences, sélectionnez l’onglet Accounts.

  4. Dans l’onglet Accounts, cliquez sur le bouton + pour ajouter votre compte Apple Developer à Xcode :

    Boîte de dialogue Accounts Xcode dans les préférences.

  5. Dans la fenêtre contextuelle de type de compte, sélectionnez Apple ID, puis cliquez sur le bouton Continue :

    Fenêtre contextuelle Xcode Select the type of account you'd like to add.

  6. Dans la fenêtre contextuelle de connexion, entrez votre ID Apple, puis cliquez sur le bouton Next.

  7. Dans la fenêtre contextuelle de connexion, entrez votre mot de passe d’ID Apple, puis cliquez sur le bouton Next :

    Connexion au compte Apple Xcode.

  8. Dans l’onglet Accounts, cliquez sur le bouton Manage Certificates… pour vous assurer que votre certificat de distribution a été téléchargé.

  9. Dans l’onglet Accounts, cliquez sur le bouton Download Manual Profiles pour télécharger vos profils de provisionnement :

    Détails du compte de programme Apple Developer Xcode.

  10. Attendez que la fin du téléchargement, puis fermez Xcode.

Ajouter des droits

Le bac à sable d’application d’Apple limite l’accès aux ressources système et aux données utilisateur dans les applications Mac afin de contenir des dommages si une application devient compromise. Il peut éventuellement être activé pour les applications Mac Catalyst distribuées en dehors du Mac App Store.

Pour ce faire, ajoutez un fichier Entitlements.plist au dossier Platforms/MacCatalyst de votre projet d’application .NET MAUI :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
  </dict>
</plist>

Le droit du bac à sable d’application est défini en utilisant la clé com.apple.security.app-sandbox, de type boolean. Pour plus d’informations sur le bac à sable d’application, consultez Protecting user data with App Sandbox sur developer.apple.com. Pour plus d’informations sur le droit du bac à sable d’application, consultez App Sandbox Entitlement.

Si votre application ouvre des connexions réseau sortantes, vous devez également ajouter la clé com.apple.security.network.client, de type boolean, à votre fichier Entitlements.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
  </dict>
</plist>

Pour plus d’informations sur le droit des connexions réseau sortantes, consultez com.apple.security.network.client sur developer.apple.com.

Mettre à jour Info.plist

Avant de publier votre application, vous devez mettre à jour son fichier Info.plist avec des informations supplémentaires.

Spécifier l’idiome de l’interface utilisateur

Une application Mac Catalyst peut s’exécuter dans l’idiome de l’interface utilisateur iPad ou Mac :

  • L’idiome de l’interface utilisateur de l’iPad indique à macOS de mettre à l’échelle l’interface utilisateur de l’application pour l’adapter à l’environnement d’affichage du Mac tout en préservant l’apparence de l’iPad.
  • L’idiome de l’interface utilisateur du Mac ne met pas à l’échelle l’interface utilisateur de l’application pour l’adapter à l’environnement d’affichage du Mac. Certains contrôles modifient leur taille et leur apparence et l’interaction avec eux est identique à celle avec les contrôles AppKit.

Par défaut, les applications Mac Catalyst .NET MAUI utilisent l’idiome de l’interface utilisateur iPad. S’il s’agit de votre comportement souhaité, vérifiez que le fichier Info.plist de l’application spécifie uniquement 2 comme valeur de la clé UIDeviceFamily :

<key>UIDeviceFamily</key>
<array>
  <integer>2</integer>
</array>

Pour adopter l’idiome de l’interface utilisateur Mac, mettez à jour le fichier Info.plist de l’application pour spécifier 6 comme valeur de la clé UIDeviceFamily :

<key>UIDeviceFamily</key>
<array>
  <integer>6</integer>
</array>

Pour plus d’informations sur les idiomes d’interface utilisateur de Mac Catalyst, consultez Spécifier l’idiome de l’interface utilisateur pour votre application Mac Catalyst.

Définir la langue et la région par défaut de l’application

Définissez la clé CFBundleDevelopmentRegion dans le fichier Info.plist de votre application sur une string qui représente la région de développement native de localisation :

<key>CFBundleDevelopmentRegion</key>
<string>en</string>

La valeur de la clé doit être un indicateur de langage, avec un indicateur de région facultatif. Pour plus d’informations, consultez CFBundleDevelopmentRegion sur developer.apple.com.

Définissez la clé NSHumanReadableCopyright dans Info.plist de votre application sur une string qui représente une notification de copyright explicite pour votre application :

<key>NSHumanReadableCopyright</key>
<string>MyMauiApp © 2023</string>

Pour plus d’informations, consultez NSHumanReadableCopyright sur developer.apple.com.

Déclarer l’utilisation du chiffrement de votre application

Si votre application utilise le chiffrement et que vous envisagez de la distribuer en dehors des États-Unis ou du Canada, elle est soumise aux exigences de conformité des exportations des États-Unis. Vous pouvez fournir des informations sur l’utilisation du chiffrement de votre application dans son fichier Info.plist.

Pour ce faire, ajoutez la clé ITSAppUsesNonExemptEncryption au fichier Info.plist de votre application avec une valeur boolean qui indique si votre application utilise le chiffrement :

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

Pour plus d’informations, consultez Complying with Encryption Export Regulations sur developer.apple.com.

Désactiver la vérification de la signature de code

Actuellement, lorsque vous tentez de publier une application Mac Catalyst .NET MAUI pour la distribution en dehors du Mac App Store, à condition que vous ayez satisfait aux exigences d’approvisionnement, vous recevrez une erreur concernant codesign sortant avec le code 3 :

/usr/local/share/dotnet/packs/Microsoft.MacCatalyst.Sdk/16.2.1040/tools/msbuild/iOS/Xamarin.Shared.targets(1930,3): error MSB6006: "codesign" exited with code 3. [/Users/davidbritch/Projects/MyMauiApp/MyMauiApp/MyMauiApp.csproj::TargetFramework=net8.0-maccatalyst]

Bien que codesign réussisse à signer votre application, la cible _CodesignVerify ne parvient pas à vérifier la signature du code :

test-requirement: code failed to satisfy specified code requirement(s)

En raison de cette défaillance, un fichier .pkg n’est pas généré.

Par conséquent, il est actuellement nécessaire d’ajouter la cible de build suivante à la fin de votre fichier projet pour désactiver la vérification de la signature de code :

<Project Sdk="Microsoft.NET.Sdk">
  ...
  <Target Name="_SkipCodesignVerify" BeforeTargets="_CodesignVerify" AfterTargets="_CodesignAppBundle">  
    <PropertyGroup>    
      <_RequireCodeSigning>false</_RequireCodeSigning>  
    </PropertyGroup>
  </Target>
</Project>

Publier en utilisant la ligne de commande

Pour publier votre application Mac Catalyst à partir de la ligne de commande sur un Mac, ouvrez un terminal 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 ou --framework Infrastructure cible, c’est-à-dire net8.0-maccatalyst.
-c ou --configuration Configuration de build, c’est-à-dire Release.
-p:MtouchLink Mode lien du projet, qui peut être None, SdkOnly ou Full.
-p:CreatePackage Définir sur true pour qu’un package (.pkg) soit créé pour l’application à la fin de la build.
-p:EnableCodeSigning Définir sur true pour que le code de signature soit activé.
-p:EnablePackageSigning Définir sur true pour que le package créé soit signé.
-p:CodesignKey Nom de la clé de signature du code. Définir sur le nom de votre certificat de distribution, comme indiqué dans Trousseaux d’accès.
-p:CodesignProvision Profil de provisionnement à utiliser lors de la signature de l’ensemble d’applications.
-p:CodesignEntitlements Chemin d’accès au fichier des droits qui spécifie les droits dont a besoin l’application. Réglez sur Platforms\MacCatalyst\Entitlements.plist.
-p:PackageSigningKey Clé de signature de package à utiliser lors de la signature du package. Définir sur le nom de votre certificat d’installation, comme indiqué dans Trousseaux d’accès.
-p:RuntimeIdentifier Identificateur de runtime (RID) du projet. Les builds de versions des applications Mac Catalyst .NET MAUI utilisent par défaut maccatalyst-x64 et maccatalyst-arm64 en tant qu’identificateurs de runtime pour prendre en charge les applications universelles. Pour prendre en charge une seule architecture, spécifiez maccatalyst-x64 ou maccatalyst-arm64.
-p:UseHardenedRuntime Définir sur true pour activer le runtime renforcé, qui est requis pour les applications Mac Catalyst distribuées en dehors du Mac App Store.

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.

Des paramètres de build supplémentaires peuvent être spécifiés sur la ligne de commande, s’ils ne sont pas fournis dans un <PropertyGroup> dans votre fichier projet. Le tableau suivant répertorie certains paramètres courants :

Paramètre Valeur
-p:ApplicationTitle Nom de l’application visible par l’utilisateur.
-p:ApplicationId Identificateur unique de l’application, par exemple com.companyname.mymauiapp.
-p:ApplicationVersion Version de la build qui identifie une itération de l’application.
-p:ApplicationDisplayVersion Numéro de version de l’application.
-p:RuntimeIdentifier Identificateur de runtime (RID) du projet. Les builds de versions des applications Mac Catalyst .NET MAUI utilisent par défaut maccatalyst-x64 et maccatalyst-arm64 en tant qu’identificateurs de runtime pour prendre en charge les applications universelles. Pour prendre en charge une seule architecture, spécifiez maccatalyst-x64 ou maccatalyst-arm64.

Pour obtenir la liste complète des propriétés de build, consultez Project file properties.

Important

Les valeurs de ces paramètres ne doivent pas nécessairement être fournies sur la ligne de commande. Elles peuvent également être indiquées dans le fichier projet. Lorsqu’un paramètre est fourni sur la ligne de commande et dans le fichier projet, le paramètre de ligne de commande est prioritaire. Pour en savoir plus sur l’entrée des propriétés de build dans le fichier projet, consultez Définir les propriétés de build dans votre fichier projet.

Par exemple, utilisez la commande suivante pour générer et signer un .pkg sur un Mac, pour la distribution en dehors du Mac App Store :

dotnet publish -f net8.0-maccatalyst -c Release -p:MtouchLink=SdkOnly -p:CreatePackage=true -p:EnableCodeSigning=true -p:EnablePackageSigning=true -p:CodesignKey="Developer ID Application: John Smith (AY2GDE9QM7)" -p:CodesignProvision="MyMauiApp (Non-App Store)" -p:CodesignEntitlements="Platforms\MacCatalyst\Entitlements.plist" -p:PackageSigningKey="Developer ID Installer: John Smith (AY2GDE9QM7)" -p:UseHardenedRuntime=true

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 génère, signe et empaquette l’application, puis copie le .pkg dans le dossier bin/Release/net8.0-maccatalyst/publish/. Si vous publiez l’application à l’aide d’une seule architecture, elle sera publiée dans le dossier bin/Release/net8.0-maccatalyst/{architecture}/publish/.

Pendant le processus de signature, vous devrez peut-être entrer votre mot de passe de connexion et autoriser l’exécution de codesign et de productbuild :

Autorisez codesign pour signer votre application sur votre Mac.Autorisez productbuild pour signer votre application sur votre Mac.

Pour plus d’informations sur la commande dotnet publish, consultez dotnet publish.

Définir les propriétés de build dans votre fichier projet

Une alternative à la spécification des paramètres de build sur la ligne de commande consiste à les spécifier dans votre fichier projet dans un <PropertyGroup>. Le tableau suivant répertorie certaines propriétés courantes de build :

Propriété Valeur
<ApplicationTitle> Nom de l’application visible par l’utilisateur.
<ApplicationId> Identificateur unique de l’application, par exemple com.companyname.mymauiapp.
<ApplicationVersion> Version de la build qui identifie une itération de l’application.
<ApplicationDisplayVersion> Numéro de version de l’application.
<CodesignKey> Nom de la clé de signature du code. Définir sur le nom de votre certificat de distribution, comme indiqué dans Trousseaux d’accès.
<CodesignEntitlements> Chemin d’accès au fichier des droits qui spécifie les droits dont a besoin l’application. Réglez sur Platforms\MacCatalyst\Entitlements.plist.
<CodesignProvision> Profil de provisionnement à utiliser lors de la signature de l’ensemble d’applications.
<CreatePackage> Définir sur true pour qu’un package (.pkg) soit créé pour l’application à la fin de la build.
<EnableCodeSigning> Définir sur true pour que le code de signature soit activé.
<EnablePackageSigning> Définir sur true pour que le package créé soit signé.
<MtouchLink> Mode lien du projet, qui peut être None, SdkOnly ou Full.
<PackageSigningKey> Clé de signature de package à utiliser lors de la signature du package. Définir sur le nom de votre certificat d’installation, comme indiqué dans Trousseaux d’accès.
<RuntimeIdentifier> Identificateur de runtime (RID) du projet. Les builds de versions des applications Mac Catalyst .NET MAUI utilisent par défaut maccatalyst-x64 et maccatalyst-arm64 en tant qu’identificateurs de runtime pour prendre en charge les applications universelles. Pour prendre en charge une seule architecture, spécifiez maccatalyst-x64 ou maccatalyst-arm64.
<UseHardenedRuntime> Définir sur true pour activer le runtime renforcé, qui est requis pour les applications Mac Catalyst distribuées en dehors du Mac App Store.

Pour obtenir la liste complète des propriétés de build, consultez Project file properties.

Important

Les valeurs de ces propriétés de build ne doivent pas nécessairement être fournies dans le fichier projet. Elles peuvent également être indiquées sur la ligne de commande lorsque vous publiez l’application. Vous pouvez ainsi omettre des valeurs spécifiques de votre fichier projet.

L’exemple suivant montre un groupe de propriétés classique pour la création et la signature de votre application Mac Catalyst pour la distribution en dehors du Mac App Store :

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
  <MtouchLink>SdkOnly</MtouchLink>
  <EnableCodeSigning>True</EnableCodeSigning>
  <EnablePackageSigning>true</EnablePackageSigning>
  <CreatePackage>true</CreatePackage>
  <CodesignKey>Developer ID Application: John Smith (AY2GDE9QM7)</CodesignKey>
  <CodesignProvision>MyMauiApp (Non-App Store)</CodesignProvision>
  <CodesignEntitlements>Platforms\MacCatalyst\Entitlements.plist</CodesignEntitlements>
  <PackageSigningKey>Developer ID Installer: John Smith (AY2GDE9QM7)</PackageSigningKey>
  <UseHardenedRuntime>true</UseHardenedRuntime>
</PropertyGroup>

Cet exemple de <PropertyGroup> ajoute une vérification de conditions, qui empêche le traitement de ces paramètres sauf si la vérification de conditions est concluante. La vérification de conditions recherche deux éléments :

  1. La configuration de build est définie sur Release.
  2. L’infrastructure cible est définie sur un élément contenant le texte net8.0-maccatalyst.
  3. La plateforme est définie sur AnyCPU.

Si l’une de ces conditions n’est pas remplie, les paramètres ne sont pas traités. Plus important encore, les paramètres <CodesignKey>, <CodesignProvision> et <PackageSigningKey> ne sont pas définis, ce qui empêche la signature de l’application.

Après avoir ajouté le groupe de propriétés ci-dessus, l’application peut être publiée à partir de la ligne de commande sur un Mac en ouvrant un terminal et en accédant au dossier de votre projet d’application .NET MAUI. Ensuite, exécutez la commande suivante :

dotnet build -f net8.0-maccatalyst -c Release

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 génère, signe et empaquette l’application, puis copie le .pkg dans le dossier bin/Release/net8.0-maccatalyst/publish/.

Notariser votre application

macOS inclut une technologie appelée Gatekeeper, qui permet de s’assurer que seuls les logiciels approuvés s’exécutent sur un Mac. Lorsque les utilisateurs téléchargent et ouvrent un package d’installation ou une application, Gatekeeper vérifie que le logiciel provient d’un développeur identifié. Pour ce faire, vérifiez un certificat d’ID de développeur et vérifiez que le logiciel est notarisé par Apple pour vous assurer qu’il ne contient pas de contenu malveillant connu, et qu’il n’a pas été modifié. Par conséquent, après l’approvisionnement et la publication de votre application, vous devez l’envoyer à Apple pour être notarisée. Le service de notarisation d’Apple analyse automatiquement votre application signée par l’ID de développeur et effectue des vérifications de sécurité. Lorsque la notarisation réussit, votre logiciel reçoit un ticket pour informer Gatekeeper qu’il a été notarisé.

Les applications peuvent être soumises au service de notarisation d’Apple avec l’outil en ligne de commande notarytool :

xcrun notarytool submit {my_package_filename} --wait --apple-id {my_apple_id} --password {my_app_specific_password} --team-id {my_team_id}

Vous trouverez ci-dessous un exemple d’utilisation de l’outil notarytool pour signer un fichier .pkg Mac Catalyst .NET MAUI :

xcrun notarytool submit MyMauiApp-1.0.pkg --wait --apple-id johm.smith@provider.com --password fqtk-cprr-gqdt-bvyo --team-id AY2GDE9QM7

L’indicateur wait indique à notarytool de se fermer uniquement une fois que le service de notarisation a terminé le traitement de la demande, en supprimant ainsi la nécessité d’interroger le service pour connaître son statut. Les arguments apple-id, password et team-id sont utilisés pour fournir vos informations d’identification App Store Connect. Étant donné que App Store Connect nécessite une authentification à deux facteurs, vous devez créer un mot de passe spécifique à l’application pour notarytool. Pour plus d’informations sur la génération d’un mot de passe spécifique à l’application, consultez Sign in to apps with your Apple ID using app-specific passwords sur developer.apple.com.

Après avoir envoyé votre application à Apple, le processus de notarisation prend généralement moins d’une heure.

Remarque

La notarisation se termine pour la plupart des applications dans les 5 minutes. Pour plus d’informations sur la manière d’éviter des temps de réponse longs du service de notarisation, consultez Avoid long notarization response times and size limits sur developer.apple.com.

À condition que la notarisation réussisse, le service de notarisation génère un ticket pour le package d’installation signé et l’ensemble d’applications à l’intérieur de celui-ci.

Pour plus d’informations sur la notarisation, consultez Notarizing macOS software before distribution. Pour d’autres méthodes de soumission de votre application au service de notarisation d’Apple, consultez Upload your app to the notarization service sur developer.apple.com. Pour plus d’informations sur la résolution des problèmes courants liés à la notarisation, consultez Resolving common notarization issues.

Agrafer le ticket à votre application

La notarisation produit un ticket pour le package d’installation signé et l’ensemble d’applications à l’intérieur de celui-ci, qui indiquent à Gatekeeper que votre application est notarisée. Une fois la notarisation terminée, lorsque les utilisateurs tentent d’exécuter votre application sur macOS 10.14 ou version ultérieure, Gatekeeper localise le ticket en ligne.

Une fois la notarisation réussie, vous devez joindre le ticket à votre application à l’aide de l’outil stapler. Cela garantit que Gatekeeper peut trouver le ticket même lorsqu’une connexion réseau n’est pas disponible. Exécutez la commande suivante pour joindre le ticket à votre .pkg :

xcrun stapler staple {filename}.pkg

L’outil stapler récupère le ticket et le joint au package d’installation. Vous recevrez un message vous indiquant que l’action Agrafer et valider a fonctionné, à condition que l’agrafage réussisse.

Valider la notarisation

Si vous souhaitez valider la notarisation, vous pouvez le faire avec la commande suivante :

xcrun stapler validate mypackage.pkg

Distribuer votre application

Le .pkg signé et notarisé peut être distribué en toute sécurité en dehors du Mac App Store à un emplacement de votre choix, tel qu’un serveur web.

Pour plus d’informations sur l’ouverture sécurisée d’applications sur un Mac, consultez Ouvrir des applications en toute sécurité sur votre Mac sur support.apple.com.

Voir aussi