Mein Ziel ist es, in eine Zip-Datei eine Verknüpfung aufzunehmen, anstatt meinen Kunden zu sagen, dass sie Terminal öffnen und ein Shell-Skript ausführen sollen.
Mein Deployable sieht im Wesentlichen so aus:
$ unzip Deliverable.zip
$ cd Deliverable; ls
app.jar run.sh
Skript in run.sh
:
#!/bin/sh
java -jar app.jar
Es gibt noch viel mehr im Verzeichnis; Es reicht zu sagen, dass ich das Skript aus dem Verzeichnis Deliverable ausführen muss, da ich auf Pfade relativ dazu zugreifen muss. Ich kann jedoch nicht garantieren, wo ein Kunde öffnen wird Deliverable.zip
(könnte das Ausgangsverzeichnis sein, könnte sich direkt im Download-Verzeichnis befinden usw.)
Ich habe dies gefunden , das beschreibt, wie ein neuer Workflow in Automator erstellt und dann als Anwendung gespeichert wird, um ein Shell-Skript zu starten. Ich habe versucht, das zu wickeln, run.sh
aber es heißt, es kann nicht finden run.sh
.
Jemand schlug vor, dass ich Applescript verwende, und schickte mir auch einen Link zur Verwendung von Applescript, um in das aktuelle Verzeichnis zu wechseln. Es gibt eine Applescript "Aktion" im Automator; Also habe ich damit einen neuen Workflow erstellt und ihn als Anwendung gespeichert. So sieht das aus:
Der 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
Und das ist der Fehler, den ich bekomme, wenn ich es ausführe:
Komm schon, das sollte ziemlich einfach sein. Was mache ich hier falsch?