11 votes

Comment créer une application OSX pour envelopper un appel à un shell script ?

Mon objectif est d'inclure dans un fichier zip ce qui revient à un raccourci, au lieu de dire à mon ou mes clients d'ouvrir Terminal et d'exécuter un script.

Mon déployable ressemble essentiellement à ceci :

$ unzip Deliverable.zip 
$ cd Deliverable; ls
app.jar run.sh

script en run.sh :

#!/bin/sh
java -jar app.jar

Il y a beaucoup plus dans le répertoire ; il suffit de dire que je dois exécuter le script à partir du répertoire Livrable puisque j'ai besoin d'accéder à des chemins relatifs à celui-ci. Cependant, je ne peux pas garantir l'endroit où un client va ouvrir Deliverable.zip (il peut s'agir du répertoire personnel, du répertoire des téléchargements, etc.)

J'ai trouvé ce qui décrit comment créer un nouveau flux de travail dans Automator, puis l'enregistrer comme une application pour lancer un script. J'ai essayé de faire ça pour envelopper run.sh mais il dit qu'il ne peut pas trouver run.sh .

Quelqu'un m'a suggéré d'utiliser applescript et m'a également envoyé un lien sur la façon d'utiliser applescript pour passer dans le répertoire courant ; il y a une "action" applescript dans automator ; j'ai donc créé un nouveau flux de travail avec cela, et je l'ai enregistré comme application. Voici à quoi cela ressemble :

the automator applescript program

Le code :

on run {input, parameters}
    tell application "Finder"
        set current_path to container of (path to me) as alias
    end tell

    do shell script "java -jar app.jar" 

    return input
end run

Et voici l'erreur que j'obtiens lorsque je l'exécute :

welcome to 2015

Allez, ça devrait être assez simple. Qu'est-ce que je fais de mal ici ?

1voto

Vic Points 1820

Voici ce que j'ai compris de ce que vous essayez d'accomplir. Le code est volontairement long.

Il vous suffit de copier le code dans l'éditeur Applescript, d'y apporter les modifications que vous souhaitez et de l'enregistrer en tant qu'application.

En ce qui concerne le dialogue sur l'application PowerPC non supportée, je ne sais pas. Pouvez-vous l'exécuter à partir de la ligne de commande ? Je vérifierais d'abord cela pour confirmer que l'application fonctionne.

#
# STEP 1: locate and confirm zip file exists
#
#   This is long winded on purpose. It is meant to save the user some scrolling and 
#   and a click... Isn't this what computers are for to save time? :)
#

# Zip file name 
set zipname to "Deliverable.zip"

# Locate the zip file
set zippath to POSIX path of (choose folder)
log zippath
set qzippath to quoted form of zippath
log qzippath
set zipfile to (zippath & zipname)
set qzipfile to quoted form of (zippath & zipname)
log qzipfile

# Check for the file... Use either test not both :)
try
    # using shell test - case sensetive
    do shell script "test -f " & qzipfile

    # using native test - doesn't like quoted forms and case insensetive...
    POSIX file zipfile as alias
on error
    display dialog "ERROR: Zip file was not found at selected folder." as text ¬
        buttons {"OK"} with icon caution ¬
        with title "Alert"
    return
end try

#
# STEP 2: Zip found. Unzip it
#
try
    # Add " -d Deliverable" at the end to force directory  
    # unzip -o to force overwrite for testing....
    do shell script "cd " & qzippath & "; unzip -o " & zipname
on error eStr
    display dialog "ERROR: Failed to unzip file. Message returned was, " & ¬
        return & return & eStr as text ¬
        buttons {"OK"} with icon caution ¬
        with title "Unzip Error"
    return
end try

#
# STEP 3: Run script 
#
set dpath to (zippath & "Deliverable/")
log dpath
set qdpath to quoted form of dpath
log qdpath
try
    do shell script "cd " & qdpath & ";  sh ./run.sh"
on error eStr
    display dialog "ERROR: Failed to launch script. Message returned was, " & ¬
        return & return & eStr as text ¬
        buttons {"OK"} with icon caution ¬
        with title "Deliverable Script Launch"
    return
end try

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