Comment créer un Mac OS X .app avec un script shell?

12

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

Comment puis-je réparer cela? J'ai ajouté un info.plist (je viens de copier et coller le fichier d'une autre application et j'ai changé quelques choses.)

De plus, j'avais l'habitude chmod +x myAppde rendre le script exécutable.

PS J'utilise El Capitan

Flare Cat
la source
Nous ne pouvons pas deviner ce que vous avez fait avant d'obtenir le message d'erreur. Quels tutoriels avez-vous suivis, après quelle étape êtes-vous resté coincé?
nohillside
1
J'ai créé un dossier appelé myApp.app, puis un sous-dossier appelé Contents, puis MacOS, puis un script shell myApp qui contient #!/bin/bash ; say "Hi" ; exit 0(avec chacune des commandes sur des lignes différentes et sans le point-virgule).
Flare Cat
1
Un script bash qui a son ensemble de bits d'exécution n'a pas nécessairement besoin d'être placé dans un bundle pour être exécuté, il suffit de double-cliquer dessus uniquement dans le Finder ou de l'exécuter à partir de Terminal. Si vous voulez vraiment un ensemble d'applications, créez-le à l'aide d'AppleScript ou d'Automator, ce dernier est facile. Ajoutez une action Exécuter le script Shell et placez-y votre code.
user3439894
@ user3439894 J'ai essayé automater dans la méthode que vous avez décrite avant de poster ceci, mais l'application ne fonctionnerait pas sur l'ordinateur cible.
Flare Cat
@ user3439894 Eh bien, pour une raison quelconque, je ne peux pas modifier mon commentaire précédent. L'erreur était du type «Ce type d'application n'est pas pris en charge sur cet ordinateur».
Flare Cat

Réponses:

21

Eh bien, cela fait des années que j'utilise cette astuce simple pour avoir des scripts bash dans l'application (et vraiment ne comprends vraiment pas pourquoi tout le monde essaie des solutions aussi compliquées que la création de dossiers "Contents", info.plist ou utilise Automator ou Platypus ou autre .. . ????): Créez un dossier nommé "YourApplication.app". Placez votre fichier de script bash directement dans ce dossier de la manière qui vous convient le mieux (Finder, terminal, etc.). Le script bash doit être exécutable bien sûr (utilisez chmod + x si vous en avez besoin). Pas besoin d'autres dossiers ou fichiers (jusqu'à ce que vous ayez besoin d'appeler d'autres scripts ou exécutable à partir de votre script bien sûr) L'astuce consiste à 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 de script doit être nommé "YourApplication". C'est tout ! Il fonctionne sur Mac OS X depuis Snow Leopard à Mavericks. Si quelqu'un peut essayer de nouvelles versions de système d'exploitation et me le dire.

Remarque: Le script doit avoir une taille d'au moins 28 octets, sinon il ne s'exécutera pas. Il peut être rembourré de lignes vierges pour atteindre une taille minimale. De plus, la première ligne du script doit être un shebang; par exemple #!/bin/bashou #!/bin/perl.

Pierre Lagarde
la source
Essayez d'ajouter quelques lignes supplémentaires, cela vous donnera le message que vous aviez s'il n'y a pas assez de lignes dans votre script.
Pierre Lagarde
J'ai modifié votre réponse pour inclure l'élément d'information critique manquant et l'ai voté.
user3439894
OK merci pour la correction et upvoting ... Je l' ai utilisé ce depuis trop longtemps et ont oublié la nécessité de 28 octets ... Je n'ai pas tout script petit bien sûr: D
Pierre Lagarde
1
Je viens de le tester sous macOS Sierra et cela fonctionne aussi là-bas.
user3439894
1
@FlareCat En fait, je viens de vérifier et je suppose que tout shebang avec un interprète existant fera l'affaire (essayé avec perl). Si vous avez essayé d'autres langues, dites-le;).
Pierre Lagarde
7

S'il s'agit d'un simple script shell, vous n'avez pas besoin de l'envelopper dans un bundle d'application; 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 comme ça.

Je pense qu'il y a quelques assistants qui peuvent envelopper des scripts simples, mais le seul que j'ai connu est Platypus qui vous permet de faire fonctionner les scripts shell / python / perl / ruby ​​/ etc comme des applications normales avec des icônes, I / O redirections, etc.

bjb
la source
Ornithorynque a l'air bien, mais ce serait bien de savoir comment le faire manuellement.
Flare Cat
1
Platypus testé, fonctionne exactement comme je le voulais! Merci pour la suggestion.
Flare Cat