Comment notarier une application développée en AppleScript ?

C’est une des grosses nouveautés à venir de macOS 10.14.5 : les extensions de noyau devront être notariées pour fonctionner. Le contrôle de la notarisation des apps va d’ailleurs être activée par défaut dans macOS 10.15.

Mais au fait, c’est quoi cette histoire d’applications notariées ?

Et bien, j’ai la flemme de vous expliquer et MacG l’a déjà très bien fait, donc suivez cet hyperlien pour en savoir plus.

Maintenant, comme vous le savez peut-être, j’ai écrit il y a quelques temps déjà DiskMaker X, une application pour créer une clé USB d’installation de macOS. Et cette application est développée en AppleScript, un langage qu’Apple soutient propose encore dans macOS. Et théoriquement, chaque app devant être notariée, ça devrait aussi être le cas de DiskMaker X.

Sauf qu’Apple n’a pas expliqué du tout dans ses documentations comment effectuer cette notarisation pour les apps développées en AppleScript. C’est Alex Narvey qui a donné la solution sur Slack : pour que l’application soit notariée, il ne faut pas la notarier elle-même mais il faut notarier l’image-disque au format DMG qui la contient ! 

Et en pratique, donc, selon le code d’Alex (encore non testé), ça donnerait quelque chose comme ça (en anglais parce que de toute façon, si vous faites de l’AppleScript vous parlez anglais) :

0. Get a one time password for your App from your Develper Apple ID account.
1. Export your Script to an unsigned app in a folder on the Desktop:
/Users/precursor/Desktop/MyAppleScript Folder/MyAppleScript.app
2. Clear any extended attributes:

sudo xattr -rc “/Users/precursor/Desktop/MyAppleScript Folder/MyAppleScript.app”
3. CodeSign the script using the hardening option:

codesign --force --options runtime --deep --sign "Developer ID Application: Precursor.ca, Inc. (SERIAL#)" "/Users/precursor/Desktop/MyAppleScript Folder/MyAppleScript.app"
4. Verify the Signature:

codesign -dv --verbose=4 "/Users/precursor/Desktop/MyAppleScript Folder/MyAppleScript.app"
5. with your onetime signature ready, create a DMG from the app’s enclosing folder.

/usr/bin/hdiutil create -imagekey zlib-level=9 -srcfolder "/Users/precursor/Desktop/MyAppleScript Folder" -fs HFS+ -volname Test /Users/precursor/Desktop/MyAppleScript.dmg

(my enclosing folder also has a ReadMe file in it)
6. Upload the dmg to Apple for notarization with your one-time password:
xcrun altool --notarize-app --primary-bundle-id "com.apple.ScriptEditor.id.MyAppleScript" --username "email_address" --password "one-time-pass-word" --file "/Users/precursor/Desktop/MyAppleScript.dmg"
7. Record successful RequestUUID:

ce0af42942-cfec-5580-ad8f-80625ec2d7
8. Validate the Notarization:

xcrun altool --notarization-info ce0af42942-cfec-5580-ad8f-80625ec2d7 --username "email_address" --password "one-time-pass-word"
9. Staple the notarization to the dmg:

xcrun stapler staple "/Users/precursor/Desktop/MyAppleScript.dmg"

Donc, en résumé :

– On crée un mot de passe à usage unique sur le portail développeur d’Apple ;

– On exporte le script comme script non signé ;

– On supprime ses attributs étendus ;

– On le signe et on vérifie la signature ;

– On crée une image-disque DMG depuis le dossier de l’application ;

– On envoie le DMG chez Apple avec son mot de passe unique ;

– On valide la notarisation ;

– On attache la notarisation au fichier DMG. Et on met ce dernier en téléchargement évidemment.

Et c’est tout (et c’est déjà pas mal). 

 

Vous êtes administrateur Apple, Consultant, revendeur Apple ? Inscrivez-vous à Command-iT, la grande conférence des spécialistes Apple, les 15 et 16 mai au Grand Rex à Paris ! J’y animerai une conférence ainsi qu’un workshop ! Plus d’informations sur https://www.command-it.fr.