29 votes

Comment faire une .app Mac OS X avec un shell script ?

J'ai essayé de suivre quelques tutoriels, mais j'obtiens ceci : PowerPC Error

Comment puis-je réparer cela ? J'ai ajouté un info.plist (j'ai juste copié et collé le fichier d'une autre application, et modifié quelques éléments).

Aussi, j'ai utilisé chmod +x myApp pour rendre le script exécutable.

P.S. J'utilise El Capitan.

52voto

Pierre Lagarde Points 491

Eh bien, cela fait des années que j'utilise cette simple astuce pour avoir des scripts de bash dans l'application (et je ne comprends vraiment pas pourquoi tous les gens essaient des solutions si compliquées comme créer des dossiers "Contents", info.plist ou utiliser Automator ou Platypus ou ainsi de suite.... ? ???).

  1. Créez un dossier nommé "YourApplication.app". Il peut être créé à n'importe quel endroit qui convient à votre utilisation. Cependant, les emplacements les plus conformes au système d'exploitation peuvent être /Applications ou votre propre dossier ~/Applications.
  2. Placez votre fichier script directement dans ce dossier de la manière qui vous convient le mieux (Finder, terminal etc). Le script doit être exécutable bien sûr (utilisez chmod +x si nécessaire). Pas besoin d'autres dossiers ou fichier (jusqu'à ce que vous ayez besoin d'appeler d'autres script ou exécutable depuis votre script bien sûr) L'astuce est de nommer votre script avec exactement le même nom que le dossier de l'application mais sans extension. Dans le cas décrit ici, le fichier script doit être nommé "VotreApplication".

C'est tout ! Il fonctionne sur Mac os x depuis Snow Leopard jusqu'à Mavericks. Si quelqu'un peut essayer sur des versions d'OS plus récentes et me le dire.

Note : Le site script doit avoir une taille d'au moins 28 octets, sinon il ne sera pas exécuté. Il peut être complété par des lignes vides pour atteindre la taille minimale. De plus, la première ligne du script doit être un shebang ; par exemple #!/bin/bash o #!/bin/perl .

[MISE À JOUR]

Réponse à ce que le commentaire de @DenisHowe aborde, lorsque vous utilisez cette astuce, si vous voulez avoir le chemin de l'exécution courante, vous pouvez ajouter ces lignes au début du script :

abspath () 
{ 
case "${1}" in 
    [./]*)
    local ABSPATH="$(cd ${1%/*}; pwd)/"
    echo "${ABSPATH/\/\///}"
    ;;
    *)
    echo "${PWD}/"
    ;;
esac
}

CURRENTPATH=`abspath ${0}`
PATH=$PATH:$CURRENTPATH

21voto

Harry Lime Points 8229

La réponse actuellement acceptée ne me convient pas tout à fait. J'obtiens la petite icône d'application cassée.

enter image description here

Ce qui suit fonctionne pour moi sous OSX 10.15.7 (Catalina). Vous pouvez modifier les YourApplication dans toutes les instructions suivantes pour être le nom que vous voulez vraiment.

  1. mkdir un répertoire avec le nom .app extension dans le /Applications avec un Contents et ensuite MacOS des sous-répertoires.

    mkdir -p /Applications/YourApplication.app/Contents/MacOS
  2. Déplacez votre script dans ce répertoire et nommez-le de la même manière que le dossier de l'application supérieure, mais sans l'extension .app et sans l'extension shell script :

    mv yourscript.sh /Applications/YourApplication.app/Contents/MacOS/YourApplication
  3. Assurez-vous que votre script est exécutable :

    chmod +x /Applications/YourApplication.app/Contents/MacOS/YourApplication

Votre application devrait maintenant être prête et le script devrait s'exécuter lorsque vous double-cliquez dessus. Il est important de noter que si vous renommez l'application, vous devrez renommer le script sous-jacent.


Il a été plus difficile de faire en sorte que votre application soit vue par LaunchPad. La méthode suivante semble fonctionner. Vous devez ajouter quelque chose comme ce qui suit dans le fichier /Applications/YourApplication.app/Contents/Info.plist fichier. Il se peut également que vous deviez le déplacer vers un fichier DMG et le ramener vers Applications pour que LaunchPad le remarque. Voir : https://stackoverflow.com/a/71342335/179850

<?xml version="1.0" encoding="UTF-8" standalone="no"?><plist version="1.0">
  <dict>
    <key>CFBundleExecutable</key>
    <string>My App</string>
    <key>CFBundleGetInfoString</key>
    <string>My App 1.0</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
</dict>
</plist>

Pour ajouter une icône à votre nouvelle application, vous devez procéder comme suit :

  1. Trouvez ou créez un PNG que vous voulez utiliser comme icône.

  2. Ouvrez l'image dans l'application Aperçu - d'autres applications graphiques peuvent également fonctionner.

  3. Appuyez sur commande-a pour tout sélectionner, puis sur commande-c pour le copier dans le presse-papiers.

  4. Sélectionnez votre application dans le Finder et appuyez sur command-i pour obtenir la fenêtre Get Info.

  5. Cliquez sur l'icône dans le coin supérieur gauche de la fenêtre d'information pour la sélectionner :

    enter image description here

  6. Collez l'image depuis le presse-papiers, ce qui devrait modifier l'icône.

    enter image description here

Vous pouvez également ouvrir la fenêtre Obtenir des informations sur une autre application, sélectionner son icône et la copier pour la coller dans votre nouvelle application. Après avoir attribué une icône, si vous regardez dans votre fenêtre .app vous devriez voir un nom de fichier qui commence par Icon .

12voto

Jenea Points 2702

S'il s'agit d'un simple shell script, alors vous n'avez pas besoin de l'envelopper dans un paquet d'applications ; vous pouvez double-cliquer sur le script lui-même. Cependant, vous n'aurez pas la possibilité d'avoir une icône personnalisée ou d'autres choses de ce genre.

Je pense qu'il y a quelques aides qui peuvent envelopper de simples scripts, mais le seul avec lequel j'ai de l'expérience est L'ornithorynque qui vous permet de faire en sorte que les scripts shell/Python/perl/ruby/etc s'exécutent comme des applications ordinaires avec des icônes, des redirections d'E/S, etc.

Là où Platypus diffère, c'est que l'on peut obtenir STDIN / STDOUT par différents mécanismes, ainsi que par l'interactivité de la barre de menu. Ainsi, vous obtenez une fenêtre où vous pouvez interagir avec n'importe quel script en cours d'exécution.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X