Il mio obiettivo è includere in un file zip ciò che equivale a una scorciatoia, invece di dire al mio cliente (i) di aprire Terminal ed eseguire uno script di shell.
Il mio spiegabile è essenzialmente il seguente:
$ unzip Deliverable.zip
$ cd Deliverable; ls
app.jar run.sh
Script in run.sh
:
#!/bin/sh
java -jar app.jar
C'è molto di più nella directory; basti dire che ho bisogno di eseguire lo script dalla directory Deliverable poiché ho bisogno di accedere ai percorsi relativi ad esso. Tuttavia, non posso garantire dove un cliente aprirà Deliverable.zip
(potrebbe essere la home directory, potrebbe essere proprio nella directory Download, ecc.)
Ho trovato questo che descrive come creare un nuovo flusso di lavoro in Automator, quindi salvarlo come un'applicazione per avviare uno script di shell. Ho provato a farlo per avvolgere run.sh
ma dice che non riesce a trovare run.sh
.
Qualcuno mi suggerì di usare il applescript e mi mandò anche un link su come usare applescript per passare alla directory corrente; c'è un "action" di applecript in automator; quindi ho creato un nuovo flusso di lavoro e l'ho salvato come applicazione. Ecco come appare:
Ilcodice:
onrun{input,parameters}tellapplication"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
E questo è l'errore che ottengo quando lo eseguo:
Andiamo, questo dovrebbe essere piuttosto semplice. Cosa sto facendo di sbagliato qui?