Installer-Kurs 4/6

von
André Wyrwa

Hier eine Übersicht über die Inhalte der einzelnen Kursteile:
  1. Einführung, Überblick, Grundlagen
  2. Kommunikation mit dem User, grundlegende Kommandos
  3. Dateioperationen
  4. weiterführende Funktionen und Statements
  5. Scriptoptimierung, Lokalisierung
  6. Tricks für Fortgeschrittene, Tools
Teil 4:

Bis zu diesem Zeitpunkt können Sie, sofern sie diesem Kurs gefolgt sind, bereits Eingaben vom User entgegennehmen und entsprechend dieser Dateien auf seinem Rechner manipulieren. Nun macht das aber recht wenig Sinn, wenn Sie einfach wild ins Blaue schreiben, oder aber es könnte den User schnell nerven, wenn Sie ihn von Ihrem Script erst einmal gründlich über seinen Rechner und die Datenstruktur auf diesem ausfragen würden, was durchaus oft erforderlich wird, beispielsweise, wenn es darum geht, für verschiedene Prozessoren optimierte Versionen ihrer Software zu installieren.

Der Installer schafft natürlich auch hier Abhilfe, indem er es Ihrem Script ermöglicht, den "Zielrechner" erst einmal ein wenig unter die Lupe zu nehmen. Die dafür bereitgestellten Befehle seien kurz listenartig aufgezählt:

  1. (GETSIZE ) ..... Erfragen der Größe einer Datei
  2. (GETDEVICE ) ...... Liefert das Device zu einem log. Datenträger
  3. (GETDISKSPACE ) ... Liefert den freien Platz eines Datenträgers
  4. (GETSUM ) ......... Ermitteln der Checksumme einer Datei
  5. (GETVERSION ) ..... Ermitteln der Versionsnummer einer Datei
  6. (GETENV ) ......... Auslesen einer ENV-Variable
  7. (GETASSIGN ) ...... Liefert den vollständigen Pfad zu einem Assign
  8. (ICONINFO ) ....... Informationen aus einer .info-Datei auslesen
  9. (DATABASE ) ....... Informationen über das System besorgen

Die genauere Funktionsweise dieser Befehle sehen Sie sich bitte unter den Befehlsbeschreibungen an. Unterschätzen Sie nicht Ihre Funktionalität, einige von Ihnen lassen sich außer zu ihrem primären Zweck auch zu sekundären einsetzen, die dafür umso nützlicher sein können. Mittels (GETASSIGN ) kann man z.B. dank nützlicher Parameter prüfen, ob es sich bei einer Laufwerksangabe um ein Assign, ein physisches Laufwerk oder einen Datenträger handelt.

Sie sollten auf sich auf jeden Fall jede Beschreibung einmal angesehen haben, um in etwa einen Überblick zu haben, was alles machbar ist.

Darüber hinaus beschäftigen wir uns in diesem Teil noch mit einigen anderen Kommandos, die sich in solche teilen lassen, mittels derer sich der Ablauf des Scripts optisch noch etwas gestalten läßt, andererseits solche, die die Funktionalität des Installers noch einmal erheblich steigern.

Zu ersteren gehört das Kommando (COMPLETE ). Der Installer präsentiert im Dragbar seines Fensters einen Prozentwert, der angibt, wie weit die Installation bereits fortgeschritten ist. Mittels (COMPLETE ) läßt sich dieser Wert im Ablauf des Scripts setzen. Dies ist nicht unbedingt eine rein ästhetische Spielerei, sondern sollte bei umfangreichen Installationen auch benutzt werden, um dem User anzuzeigen, ob er noch eine Tasse Kaffee trinken kann, bis die Installation beendet ist.

Einen ähnlich gelagerten Sinn erfüllt das Statement (WORKING ), das eine blanke Seite präsentiert, auf der ein frei definierbarer Text angezeigt wird, während die Installation fortgesetzt wird. Diese Seite wird solange angezeigt, bis eine Funktion wieder das Installer-Fenster in Anspruch nimmt.

Dieser Befehl sollte genutzt werden, um bei längeren Operationen, die ohne Fortschrittsanzeige oder sonstige Ausgabe ablaufen, den User über die Tätigkeiten des Installers zu informieren, und ihn somit nicht in der Luft hängenzulassen. Es kann schon schnell verdächtig werden, wenn der Installer ewig auf der Platte herumschraubt, ohne sich dazu zu äußern.

Zur zweiten Kategorie zählen zunächst einmal die Befehle (EXECUTE ), (RUN ) und (REXX ). Diese dienen dem Ausführen einer AmigaDOS-Script- Datei, einer beliebigen Amiga-DOS-Befehlszeile bzw. eines ARexx-Scripts und können somit unter Umständen Aufgaben extern lösen, für welche die Funktionalität des Installers unzureichend ist. In der Praxis kommt so etwas nicht selten vor und kann teilweise auch zu recht gewitzten Problemlösungen führen. Man sollte sich jedoch als Maxime stellen, so viel wie möglich durch die internen Kommandos zu erreichen, und sollte man doch einmal auf externe Lösungen zurückgreifen, so ist es wichtig, die Lösung so flexibel zu gestalten, daß sie der Verschiedenheit der Umgebungen, in denen das Script letztlich ausgeführt wird, gerecht wird.

Beispielsweise sollten Amiga-DOS-Kommandos, von denen nicht sicher ist, ob sie jeder User hat, mit dem Installerscript mitgeliefert werden, ebenso ist bei Ausführung eines ARexx-Scripts ratsam, zu prüfen, ob RexxMast läuft bzw. dieser ggf. vorher zu starten.

Außerdem möchte ich mich in diesem Kursteil noch den Befehlen (SYMBOLSET ) und (SYMBOLVAL ) widmen, deren Anwendung ebenso verwirrend wie nützlich sein kann. Sie eröffnen nämlich einen Weg, nicht nur Variableninhalte, sondern die Variablen selbst zu manipulieren, sprich ihre Bezeichner (Namen) zu ändern. In echten Programmiersprachen werden Probleme, die auf solche Aufgaben hinauslaufen, mit Hilfe von Pointern gelöst, die in bestimmte Bereiche des Speichers verweisen, an denen dann z.B. eben Variablennamen abgelegt sind, und die dann selbst wie Variablen behandelt werden können. Die Verwendung von Pointern wäre aber viel zu kompliziert und aufwendig für die (relativ) spärlichen Ansprüche, die an ein Installerscript gestellt werden, weshalb man hier beginnend mit Version 42.9 eine einfache Lösung eingeführt hat.

Die Verwendung der Befehle wird im Beispiel (P_ASKDIR-SIZE ) deutlich (s. Bin-Verzeichnis).

Ich möchte an dieser Stelle noch zwei weitere Befehle einführen, die ich bei der Planung des Kurses bisher vergessen hatte. Es handelt sich um die Funktionen (STRLEN ) und (SUBSTR ). Erstere dient dazu, die Länge eines Strings zu ermitteln, letztere dazu, ein Teilstück desselben zu extrahieren. Genauere Ausführungen finden Sie wie immer in der Befehlsübersicht.

Abschließend führen wir noch die Prozeduren ein. Sie sind ein wichtiges Strukturmerkmal, das jemandem, der schonmal programmiert hat, nicht unbekannt sein sollte. Sie können einerseits dazu benutzt werden, das Script in übersichtliche Abschnitte einzuteilen, andererseits braucht mit ihrer Hilfe sich mehrfach wiederholender Code nur einmal geschrieben zu werden. Eine Prozedur ist letztlich nichts anderes, als ein Teil des Scripts, in dem eine Folge von Kommandos zusammengefaßt sind, und der innerhalb des Scripts jederzeit aufrufbar ist. Die Prozedur ersetzt also eine ganze Befehlsfolge durch einen einzigen Aufruf, der im Namen der Prozedur besteht.

Um das ganze etwas flexibler zu gestalten und ihm damit erst wirklich Bedeutung zu verleihen, können der Prozedur auch Parameter übergeben werden, wie bei einem richtigen Befehlsaufruf. Im Gegensatz zu anderen Sprachen verfügen Installer-Prozeduren nur über Input-, nicht über Output-Parameter. Da aber sowieso alle Variablen immer globale sind, also innerhalb des gesamten Scriptes verfügbar sind, läßt sich die Rückgabe von Werten aus der Prozedur durch das einfach Schreiben in Variablen lösen. Soll nur ein Wert zurückgegeben werden, so kann dies allerdings direkt geschehen, die Prozedur funktioniert dann wie eine Funktion, kann also direkt anstelle einer Variablen eingesetzt werden.

Definiert werden Prozeduren durch den Befehl (PROCEDURE )>, aufgerufen werden sie durch ihren damit festgelegten Namen. Sehen Sie sich dazu bitte die Befehlsbeschreibung an.

Ein weiteres Anwendungsgebiet für Prozeduren stellt die Weitergabe von Programmteilen dar, da diese dann sehr leicht in andere Scripts zu integrieren sind. Beispiele dafür liegen diesem Kurs in Form der Prozeduren (P_ASKDIR-SIZE ) und (P_CONVERSION ) bei.

Ein umfassendes Beispielscript, das die Funktionsweise der in diesem Kurs behandelten Kommandos umfaßt, kann ich diesmal nicht bieten, aber Sie können sich selbst mit ihnen vertraut machen, indem Sie z.B. das FixRamIcon-Script vom letzten Teil um die Möglichkeit erweitern, die Koordinaten des Ram-Icons erst auszulesen und diese dann als Default- Werte für die `Von Hand`-Eingabe einzufügen. Eine einfache Basis zum Experimentieren kann auch ein Script bilden, das einfach ein paar Systemdaten ausliest und diese im Installerfenster ausgibt. Experimentieren Sie einfach ein wenig.


Prev Inhaltsverzeichnis Next
© `98Der AmZeiger