Ich versuche, ein Shell-Skript in ein Anwendungspaket zu integrieren, sodass das Shell-Skript ausgeführt wird, wenn ich open
das Paket verwende, und nicht die ausführbare Datei, die dort eingefügt wird.
Insbesondere versuche ich, einige Umgebungseinstellungen vorzunehmen, bevor ich die Binärdatei ausführe, z. B. das Setzen von Umgebungsvariablen (ich habe bereits versucht, die Umgebungsvariablen einfach in die Info.plist einzufügen, was nicht funktioniert hat, vermutlich weil MATLAB dumm ist), und wann ich cd
in das Bundle und führe mein Skript manuell aus, ( ./StartMATLAB
) es funktioniert; Das Programm wird gestartet und die Umgebungsvariablen werden erkannt.
open MATLAB_R2011b.app
Wenn ich jedoch im Finder auf die .app doppelklicke oder sie anrufe , schlägt es fehl. Wenn ich open
von der Kommandozeile aus anrufe bekomme ich:
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MATLAB_R2011b.app
Ich habe vergeblich versucht, mit der Info.plist herumzuspielen, aber ich bin nicht allzu vertraut damit, wie sie zusammengesetzt sind. Weiß jemand, warum ich open
dieses Bundle nicht kann?
Danke!
BEARBEITEN: Die Info.plist für das Programm, das ich zu bearbeiten versuche, scheint eine Menge Java-bezogenes Zeug zu haben. Ich habe versucht, es zu entfernen, aber bisher kein Glück. Ich denke, das Problem liegt möglicherweise bei der .plist-Datei, da sie im Gegensatz zu jeder anderen ausführbaren Datei ein Java-basiertes Programm erwartet
Dies funktioniert nicht für eine signierte App, aber hier ist, wie ich das zum Laufen bringen konnte:
Erstellen Sie eine Kopie der App, die Sie ändern möchten, falls etwas schief geht. ( ⌘Dim Finder) Für mein Beispiel hier habe ich die Nicht-App-Store-Version von VectorDesigner modifiziert
Im Terminal,cd /Applications/VectorDesigner.app/Contents/MacOS
mv VectorDesigner VectorDesigner\ copy
(Ersetzen Sie hier den Namen Ihrer App
pico VectorDesigner
(oder Ihren bevorzugten Editor) und fügen Sie den Inhalt Ihres Skripts hinzu.
Ich habe dieses Skript verwendet
#!/bin/sh
osascript -e "tell Application \"Finder\" to display alert \"Hello World\""
/Applications/VectorDesigner.app/Contents/MacOS/VectorDesigner\ copy
Wichtig ist, dass die letzte Zeile die umbenannte ausführbare Datei aufruft.
chmod a+x VectorDesigner
Wenn ich jetzt auf das VectorDesigner-Symbol doppelklicke, erhalte ich das "Hello World"-Fenster, dann wird das ursprüngliche Programm gestartet.
open
verwende schlägt mit dem oben gezeigten Fehler fehl.Sie müssen wahrscheinlich die Dateiberechtigungen ändern, das scheint das Problem zu sein.
Terminal öffnen:
chmod +x /Applications/MATLAB_R2011b.app/Contents/MacOS/MATLAB_R2011b
Wie wäre es, anstatt das Skript in das App-Bundle zu „schleudern“, wie wäre es umgekehrt?
open
z. B. mit). Du sagtest, das funktioniert schon.
Jason Salaz
statischer Schwimmer