Fischer-Bayern.de
Letztes Update: 12.01.2005 | 1:11:49 Uhr
Scripting Additions prüfen 
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) & "Jon’s Commands"
tell application "Finder" if not (exists alias theOSAX) then display dialog "Die Scripting Addition \"Jon’s 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.




 

 

Workshop



snow@fischer-bayern.de

Ebene 1