Peter Fischer
Durch Scripting Additions (auch OSAXen genannt) lässt sich der Funktionsumfang von AppleScript erheblich erweitern. Mit dem Betriebssystem werden schon einige OSAXen installiert.
Benutzt man Scripting Additions von Drittanbietern, steht man vor dem Problem, dass man sich nicht sicher sein kann, ob der User die entsprechende OSAX auch installiert hat. Natürlich wird man in einem kleinen ReadMe darauf hinweisen, eleganter ist es jedoch, wenn das Skript prüft, ob die benötigte OSAX installiert ist. Ist dies nicht der Fall, sollte per Dialog darauf hingewiesen werden.
Die Existenz einer Scripting Addition kann man prüfen, indem man den Finder anweist, im Ordner "Scripting Additions" innerhalb des Systemordners nach einem Objekt mit dem Namen der OSAX zu suchen.
-- gesuchte OSAX: Jon´s Commands
set theOSAX to ((path to scripting additions folder) as string) & "Jons Commands"
tell application "Finder"
if not (exists alias theOSAX) then
display dialog "Die Scripting Addition \"Jons Commands\" ist nicht installiert"
end if
end tell
Nicht alle Scripting Additions machen es erforderlich, den Rechner nach der Installation neu zu starten. Was passiert nun, wenn ein User die OSAX zwar installiert und danach gleich Ihr Skript testet? Falls Sie eine Addition verwendet haben, die einen Neustart erfordert, wird die Prüfung im Skript zwar positiv verlaufen, Ihr Skript wird aber trotzdem nicht ausführbar sein.
Deswegen hier eine andere Methode.
Lassen Sie in einem try-Block einen spezifischen Befehl der entsprechenden OSAX ausführen. Kommt es zu keinem Fehler, ist die Scripting Addition installiert und auch schon benutztbar.
Der Befehl, den man ausführen lässt, darf natürlich keine Außenwirkung haben. Am besten eignen sich Kommandos, mit denen man irgendwelche Werte liest.
Hier ein Beispiel, das sich für Dialog Director eignet:
try
dd count dialogs
on error
display dialog "Die Scripting Addition \"Dialog Director\" ist nicht installiert"
end try
Es sollen also offene Dialogfenster gezählt werden.
Geeignete Befehle wären:
- bei Jon's Commands: the Ticks
- bei Sändi's Additions: MultiTask
Irgendein geeigneter Befehl sollte sich eigentlich immer finden lassen.
Stellen wir uns nun wieder den praktischen Ablauf vor:
Der Anwender installiert die OSAX und startet das Skript. Die OSAX benötigt aber einen Neustart. Dem User wird jedoch im Dialog mitgeteilt, dass er die Scripting Addition nicht installiert hat. Das dürfte verwirrend werden.
Deshalb habe ich hier noch ein Skript geschrieben, das beide Methoden kombiniert. Dabei habe ich zwei Flags benutzt, die bei erfolgreichem Test auf true gesetzt werden. Nur wenn beide Flags den Wert "true" haben, ist die Scripting Addition einsatzbereit.
Die Fehlermeldung wird dabei situationsbezogen angepasst.
Hier nun das Skript:
set CheckFlag to false -- Flag für den Funktionstest
set FileFlag to false -- Flag für die Dateiprüfung
-- gesuchte OSAX
set theOSAX to ((path to scripting additions folder) as string) & "Sändi's Additions"
(* Zuerst wird geprüft, ob die OSAX im Scripting Additions Ordner ist *)
tell application "Finder"
if (exists alias theOSAX) then
set FileFlag to true -- falls ja
end if
end tell
(* Einige OSAXen benötigen nach der Installation einen Neustart
des Rechners. Das bloße Vorhandensein im Additions-Ordner genügt nicht.
Es folgt die Funktionsprüfung. *)
try
MultiTask
set CheckFlag to true
on error -- Abhängig vom Fehlermeldungen erstellt
if FileFlag is true then
set Fehlermeldung to ¬
"Nach einem Neustart können Sie \"Sändi's Additions\" benutzen."
else
set Fehlermeldung to ¬
"Die Scripting Addition \"Sändi's Additions\" ist noch nicht installiert."
end if
if CheckFlag is false then -- Funktionsprüfung ist fehlgeschlagen
display dialog Fehlermeldung
end if
end try
Ganz anwenderfreundlich wäre es natürlich, wenn man bei der Fehlermeldung mit einem Button-Klick den Download der entsprechenden OSAX starten würde. Das überlasse ich jetzt aber Ihnen.
Wenn Ihnen das jetzt noch zu wenig war, lesen Sie gleich den weiterführenden Artikel: OSAXen installieren.
|