Il mio obiettivo è quello di includere in un file zip ciò che equivale a un collegamento, invece di dire ai miei clienti di aprire Terminal ed eseguire uno script di shell.
Il mio schierabile si presenta essenzialmente come questo:
$ 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 devo eseguire lo script dalla directory Deliverable poiché ho bisogno di accedere ai percorsi relativi ad esso. Tuttavia, non posso garantire dove verrà aperto un cliente Deliverable.zip
(potrebbe essere la home directory, potrebbe essere proprio nella directory dei 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 concludere run.sh
ma dice che non riesce a trovarlo run.sh
.
Qualcuno mi ha suggerito di usare applecript e mi ha anche inviato un link su come usare applecript per passare alla directory corrente; c'è un '"azione" applecript nell'automatore; così ho creato un nuovo flusso di lavoro e l'ho salvato come un'applicazione. Ecco come appare:
Il codice:
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
E questo è l'errore che ottengo quando lo eseguo:
Dai, dovrebbe essere abbastanza semplice. Cosa sto facendo di sbagliato qui?