Inhaltsverzeichnis
~~DISCUSSION~~
AppleScript kopieren
AppleScripte erstellt man normalerweise mit dem AppleScript-Editor. Aber wie kopiert man die erstellten Dateien?
Problem 1: Meldung LSOpenURLsWithRole() failed with error -10810 for the file
Die app-Datei kann im Finder nicht gestartet werden (keine Reaktion) und in der Kommandozeile erscheint:
LSOpenURLsWithRole() failed with error -10810 for the file meinscript.app
Ursache: Die eigentliche Scriptdatei ist nicht ausführbar (z.B. weil Dateien ohne vollständige Meta-Daten (Permissions) kopiert wurden.
Lösung:
- einzeln:
chmod meinscript.app/Contents/MacOS/applet
- in allen Apps im Ordner:
find . -name applet -exec chmod +x {} \;
Problem 2: Programm binär
Ein AppleScript wird als „Programm“ gespeichert, die Datei (Endung .app) wird auf ein Nicht-Apple-System kopiert (z.B. mit scp auf ein Linux-Server) und zurückkopiert, dann sind die Dateien zwar identisch, aber die kopierte .app-Datei ist nicht mehr ausführbar.
Original:
klaus-frankens-mac-mini:Scripts kfr$ md5 sp,kfr.app MD5 (sp,kfr.app) = dd680eb9c6789d57bce4dba6a40117b0 klaus-frankens-mac-mini:Scripts kfr$ ls -la sp,kfr.app -rwxr-xr-x@ 1 kfr staff 13780 28 Mai 12:33 sp,kfr.app
Kopie:
klaus-frankens-mac-mini:tmp kfr$ md5 sp,kfr.app MD5 (sp,kfr.app) = dd680eb9c6789d57bce4dba6a40117b0 klaus-frankens-mac-mini:tmp kfr$ ls -la sp,kfr.app -rwxr-xr-x 1 kfr staff 13780 28 Mai 12:48 sp,kfr.app
Was bedeutet eigentlich das „@“ bei der ls-Ausgabe? das sind erweiterte Attribute, siehe macosxxattr und bei Lösung unten
Im Finder erscheint die Datei als „Classic“-Programm und kann nicht ausgeführt werden:
Im Skripteditor kann die Datei nicht mehr gelesen werden:
Lösung:
- siehe auch macosxxattr
- die „erweiterten Attribute“ werden nicht mitkopiert, aber darin wird sowohl die Info gespeichert, wie das Programm ausgeführt werden soll, als auch das Script selbst, allerdings „binär“
- eine sehr blöde Methode!
- Abhilfe: Speicher Script im scripteditor als „Programm-Bundle“, das ergibt einen Ordner, der sich normal kopieren lässt.