Aller au contenu principal

Guide de Soumission au Mac App Store

Ce guide fournit des informations sur :

  • Comment signer des applications Electron sur macOS ;
  • Comment soumettre des applications Electron sur le Mac App Store (MAS) ;
  • Les limitations de la compilation pour le MAS.

Spécifications requises

Pour signer des applications Electron, les outils suivants doivent d'abord être installés :

Vous devez également créer un compte Apple Developer et rejoindre le Apple Developper Program.

Signer des applications Electron

Les applications Electron peuvent être distribuées via le Mac App Store ou en dehors de celui-ci. Chaque moyen de distribution nécessite différentes façons de signer et de tester. Ce guide se concentre sur la distribution via le Mac App Store, mais mentionnera également d'autres méthodes.

Les étapes suivantes décrivent comment obtenir les certificats d'Apple, comment signer des applications Electron, et comment les tester.

Obtenir des certificats

La façon la plus simple d’obtenir des certificats de signature est d’utiliser Xcode :

  1. Ouvrir Xcode et dans les préférences ouvrir "Comptes" ;
  2. Connectez-vous avec votre compte Apple ;
  3. Sélectionnez une équipe et cliquez sur "Gérer les certificats" ;
  4. Dans le coin inférieur gauche de la feuille de certificats de signature, cliquez sur le bouton Ajouter (+) et ajoutez les certificats suivants :
    • "Apple Development"
    • "Apple Distribution"

Le certificat "Apple Development" est utilisé pour signer les applications dédiées au développement et aux tests sur des machines déja enregistrées sur le site Web Apple Developer. La méthode d'enregistrement sera décrite dans Préparer le profil de provisioning.

Les applications signées avec le certificat "Apple Development" ne peuvent pas être soumises à l'App Store Mac. Pour cela, les applications doivent être signées avec le certificat "Apple Distribution" à la place. Mais notez que les applications signées avec le certificat "Apple Distribution" ne peuvent pas s'exécuter directement, ils doivent être résignés par Apple pour pouvoir exécuter ce qui ne sera possible qu'après avoir été téléchargés à partir du Mac App Store.

Autres certificats

Vous remarquerez peut-être qu'il existe également d'autres types de certificats.

Le certificat « Application ID développeur » est utilisé pour signer les applications avant de les distribuer en dehors de l'App Store Mac.

Les certificats "Developer ID Installer" et "Mac Installer Distribution" sont utilisés pour signer le paquet Mac Installer au lieu de l'application. La plupart des applications d'Electron n'utilisent pas le paquet d'installation de Mac, donc elles ne sont généralement pas nécessaires.

La liste complète des types de certificats peut être trouvée ici.

Les applications signées avec les certificats "Apple Development" et "Apple Distribution" ne peuvent fonctionner que sous App Sandbox, donc ils doivent utiliser la version MAS de Electron. Cependant, le certificat "Application ID développeur" n'a pas ces restrictions, donc les applications signées avec cela peuvent soit utiliser soit la version normale, soit la version MAS d'Electron.

Noms de certificats hérités

Apple a changé le nom des certificats au cours des dernières années, vous pouvez les rencontrer lors de la lecture d'anciennes documentations, et certains utilitaires utilisent toujours l'un des anciens noms.

  • Le certificat "Apple Distribution" a également été nommé comme "Application développeur 3ème partie pour Mac" et "Distribution pour MacApp Mac".
  • Le certificat "Apple Development" était également nommé "Mac Developer" et "Development".

Préparer le profil de provisioning

Si vous voulez tester votre application sur votre ordinateur local avant de soumettre votre application à l'App Store Mac, vous devez signer l'application avec le certificat "Apple Development" avec le profil de provisioning intégré dans le pack d'applications.

Pour créer un profil de provisioning, vous pouvez suivre les étapes suivantes :

  1. Ouvrez la page « Certificats, Identificateurs & Profils » sur le site web de Développement d'Apple.
  2. Ajoutez un nouvel ID d'application pour votre application dans la page "Identifiants".
  3. Enregistrez votre machine locale dans la page "Appareils" ("Devices"). Vous pouvez trouver le "ID" de votre machine dans la page "Matériel" ("Hardware") de la page "Informations système" ("System Informations").
  4. Enregistrez un nouveau profil de provisioning dans la page "Profils" et téléchargez-le à /path/to/yourapp.provisionprofile.

Activer l'application Sandbox d'Apple

Les applications envoyées sur l'App Store Mac doivent s'exécuter sous l'App Sandbox d'Apple,, et seule la version MAS d'Electron peut fonctionner avec l'App Sandbox. La version standard darwin (mac) d'Electron ne pourra pas être lancée lorsqu'elle est exécutée sous l'App Sandbox.

Lors de la signature de l'application avec @electron/osx-sign, elle ajoutera automatiquement les droits nécessaires aux droits de votre application, mais si vous utilisez des droits personnalisés, vous devez vous assurer que la capacité de l'application Sandbox est ajoutée :

<?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>

Étapes supplémentaires sans electron-osx-sign

Si vous signez votre application sans utiliser @electron/osx-sign, vous devez vous assurer les droits du bundle d'applications ont au moins les clés suivantes :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1. //FR" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com. pple.security.app-sandbox</key>
<true/>
<key>com.apple.security. groupes de pplication</key>
<array>
<string>TEAM_ID. notre.bundle.id</string>
</array>
</dict>
</plist>

Le TEAM_ID doit être remplacé par l'ID d'équipe de votre compte de développeur Apple, et le your.bundle.id doivent être remplacés par l'ID d'application de l'application.

Et les droits suivants doivent être ajoutés aux exécutables et aux aides dans le lot de l'application :

<?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.inherit</key>
<true/>
</dict>
</plist>

Et le pack d'application Info.plist doit inclure la clé ElectronTeamID , qui a l'identifiant de l'équipe de votre compte Apple Développeur comme valeur :

<plist version="1.0">
<dict>
...
<key>ElectronTeamID</key>
<string>TEAM_ID</string>
</dict>
</plist>

Lors de l'utilisation de @electron/osx-sign , la clé ElectronTeamID sera ajoutée automatiquement en extrayant l'ID d'équipe du nom du certificat. Vous pouvez avoir besoin d'ajouter cette clé manuellement si @electron/osx-sign ne peut pas trouver le bon ID d'équipe.

Signer les applications pour le développement

Pour signer une application qui peut s'exécuter sur votre machine de développement, vous devez le signer avec le certificat "Apple Development" et passer le profil de provisioning à @electron/osx-sign.

electron-osx-sign YourApp.app --identity='Apple Development' --provisioning-profile=/path/to/yourapp.provisionprofile

Si vous signez sans @electron/osx-sign, vous devez placer le profil de provisioning sur YourApp.app/Contents/embedded.provisionprofile.

L'application signée ne peut s'exécuter que sur les machines qui ont été enregistrées par le profil de provisionnement, et c'est la seule façon de tester l'application signée avant de soumettre à l'App Store Mac.

Signer les applications à soumettre sur l'App Store Mac

Pour signer une application qui sera soumise à Mac App Store, vous devez la signer avec le certificat "Apple Distribution". Notez que les applications signées avec ce certificat ne s'exécuteront nulle part, à moins qu'elles ne soient téléchargées depuis l'App Store Mac.

electron-osx-sign YourApp.app --identity='Apple Distribution'

Signer les applications à distribuer en dehors de l'App Store Mac

Si vous ne prévoyez pas de soumettre l'application à Mac App Store, vous pouvez la signer avec le certificat "Application ID développeur". De cette façon, il n'y a aucune exigence sur l'application Sandbox, et vous devriez utiliser la version darwin normale d'Electron si vous n'utilisez pas App Sandbox.

electron-osx-sign VotreApp.app --identity='Application ID développeur' -no-gatekeeper-assess

En utilisant --no-gatekeeper-assess, @electron/osx-sign passera la vérification de GateKeeper sur macOS car votre application n'a généralement pas encore été notariée par cette étape.

Ce guide ne couvre pas l'authentification d'application, mais vous pourriez vouloir le faire sinon Apple peut empêcher les utilisateurs d'utiliser votre application en dehors du Mac App Store.

Soumettre des applications sur l'App Store Mac

Après avoir signé l'application avec le certificat "Apple Distribution", vous pouvez continuer à la soumettre sur Mac App Store.

Cependant, ce tutoriel ne garantit pas que votre application sera approuvée par Apple ; vous avez encore besoin de lire le guide d'Apple pour soumettre votre application sur comment répondre aux exigences du Mac App Store.

Télécharger

Apple Transporter doit être utilisé pour télécharger l'application signée sur l'App Store pour le traitement, s'assurer que vous avez bien créé un enregistrement avant de le télécharger.

Si vous constatez des erreurs telles que des API privées, vous devriez vérifier si l'application est en utilisant la version MAS d'Electron.

Soumettre pour vérification

Après ces étapes, vous pouvez soumettre votre application à une révision.

Limitation de MAS Build

Afin de satisfaire toutes les exigences pour l'app sandboxing, les modules suivants ont été désactivé dans la compilation MAS :

  • crashReporter
  • autoUpdater

et les comportements suivants ont été modifiés :

  • La capture vidéo peut ne pas fonctionner pour certaines machines.
  • Certaines fonctionnalités d'accessibilité peuvent ne pas fonctionner.
  • Les applications ne seront pas au courant des changements DNS.

De plus, en raison de l'utilisation de l'app sandboxing, les ressources étant accessibles par l'application sont strictement limitées. Vous pouvez lire App Sandboxing pour plus d'informations.

Droits supplémentaires

Selon les API Electron que votre application utilise, vous devrez peut-être ajouter des droits supplémentaires au fichier des droits de votre application. Sinon, l'application Sandbox peut vous empêchera de l'utiliser.

Accès réseau

Activez les connexions sortantes du réseau pour permettre votre application de se connecter à un serveur :

<key>com.apple.security.network.client</key>
<true/>

Activez les connexion entrantes du réseau pour permettre votre application d'ouvrir un système d'écoute socket :

<key>com.apple.security.network.server</key>
<true/>

Voir la documentation Activer les accès réseaux pour plus de détails.

dialog.showOpenDialog

<key>com.apple.security.files.user-selected.read-only</key>
<true/>

Voir la documentation Activer les fichiers sélectionnés par l'utilisateur pour plus de détails.

dialog.showSaveDialog

<key>com.apple.security.files.user-selected.read-write</key>
<true/>

Voir la documentation Activer les fichiers sélectionnés par l'utilisateur pour plus de détails.

Algorithmes de chiffrement utilisés par Electron

Selon les pays dans lesquels vous publiez votre application, vous pourriez être requis pour fournir des informations sur les algorithmes de chiffrement utilisés dans votre logiciel . Voir la documentation de conformité à l'exportation de chiffrement pour plus d'informations.

Electron utilise ces algorithmes de chiffrement suivants :