Übersicht über die Befehle des dritten Kursteils
Anmerkung: Parameter, die mit (Pflichtparameter) gekennzeichnet sind, sind
unbedingt anzugeben. Fehlen sie, verweigert der Installer die
Ausführung des Scripts.
Systemanalyse
(GETSIZE )
Schablone: (getsize <Pfad+Name>)
Funktion: Liefert die Größe der Datei <Pfad+Name> in Bytes.
Rückgabe: Dateigröße in Bytes.
Beispiel: (getsize "S:Startup-Sequence")
(GETDEVICE )
Schablone: (getdevice <Pfad>)
Funktion: Gibt den Datenträger zurück, auf dem sich <Pfad> befindet.
Rückgabe: Datenträgername.
Bemerkung: Der Datenträgername wird ohne Doppelpunkt zurückgegeben.
Beispiel: (getdevice "S:") ;liefert z.B. "Workbench3.0"
(GETDISKSPACE )
Schablone: (getdiskspace <Pfad>)
Funktion: Ermittelt den freien Platz auf dem Datenträger, der durch
<Pfad> angegeben wird.
Rückgabe: Freien Speicherplatz in Bytes oder -1, falls der Pfad
nicht richtig ist oder die Information nicht besorgt werden
kann.
Beispiel: (getdiskspace "SYS:")
(GETSUM )
Schablone: (getsum <Pfad+Name>)
Funktion: Ermittelt die Checksumme der Datei <Pfad+Name>.
Rückgabe: Checksumme.
Bemerkung: Die Funktion findet ihre häufigste Anwendung darin, daß
Softwareautoren damit überprüfen, ob es sich bei einer Datei
tatsächlich um die von Ihnen publizierte Version handelt, bevor
sie installiert wird. (Wird eine Datei manipuliert, so ändert sich
die Checksumme.)
Beispiel: (getsum @icon)
(GETVERSION )
Schablone: (getsum <Pfad+Name> <Paramter>)
Funktion: Liefert die Versionsnummer der angegebenen Datei.
Dazu muß diese entweder ein RomTag mit Versions-ID-String oder
einen OS2.x-Versions-String.
Parameter: (resident) - Mittels Angabe dieses Parameters wird der
Installer veranlaßt, im Speicher nach der Datei zu suchen, z.B.
Libraries und Devices.
Rückgabe: Versionsnummer als Maske von 32 Bits. Die oberen 16 Bit
enthalten dabei die Versionsnummer, die unteren 16 die Revisions-
Nummer.
(Es gibt verschiedene Wege, diese Werte aus der Rückgabe zu
isolieren, einen gibt das Beispiel.)
Kann die Versionsnummer nicht ermittelt werden, so wird der Wert
0 zurückgegeben.
Bemerkung: Wird <Pfad+Name> nicht angegeben, so wird die Version
des Betriebssystems zurückgegeben.
Bei Libraries und Devices ist darauf zu achten, daß die Funktion
im Gegensatz zum AmigaDOS-Versions-Befehl nicht automatisch in den
entsprechenden Verzeichnissen danach sucht, die Pfade müssen also
vollständig angegeben werden, es sei denn, man möchte im Speicher
suchen.
Beispiel: (set #version (getversion "intuition.library" (resident))
(set #ver (/ #version 65536))
(set #rev (- #version (* #ver 65536)))
(message "Sie benutzen Intuition V" ver "." rev ".")
Ein weiteres Beispiel bietet die Prozedur [->] (P_CONVERSION ).
(GETENV )
Schablone: (getenv <Name>)
Funktion: Liest die Environment-Variable <Name> aus.
Rückgabe: Inhalt der ENV-Variablen.
Bemerkung: Der Installer verfügt @{u}nicht@{uu} über direktes Gegenstück
(SETENV ), da Environment nichts als einzeilige ASCII-Dateien
sind, kann dessen Funktion durch (TEXTFILE ) übernommen werden.
Beispiel: (set #SysVer (getversion))
(textfile
(dest "ENV:SysVer")
(append #SysVer)
)
(set #SysVer 0) ;Löschen der Variablen
(message "System-Version (32-Bit-Wert): " (getenv "SysVer"))
(GETASSIGN )
Schablone: (getassign <Name> <Option>)
Funktion: Liefert den Pfadnamen, auf den das <Name> verweist.
Normalerweise ist nur die Angabe von Assigns möglich, durch
Angabe einer der folgenden Optionen kann das aber geändert
werden:
"v" - nur Datenträger (Volumes) untersuchen.
"a" - nur logische Assigns untersuchen (Voreinstellung).
"d" - nur Laufwerke (Devices) untersuchen.
(z.B. ist ein logisches Assign der Systempartition "SYS:", ihr
Datenträger z.B. "Workbench3.0" und ihr Laufwerk z.B. "dh0:".)
Rückgabe: Zugehöriger Pfadname oder ein leerer String, falls
<Name> nicht gefunden wird oder durch die durch eine Option
vorgenommene Beschränkung ausgeschlossen wird.
Bemerkung: Die Funktion kann benutzt werden, um zu ermitteln, ob
es sich bei einem String um den Pfad eines Datenträgers, eines
Assigns, oder eines Laufwerkes handelt.
<Name> muß ohne Doppelpunkt angegeben werden.
Die Funktion kann keine Assigns behandeln, die erst zugewiesen
werden, wenn sie gebraucht werden. Es wird dann ein leerer
String zurückgegeben.
Beispiel: (getassign "SYS")
oder
(getassign "FONTS" "a") ; liefert einen leeren String, falls
; "FONTS:" kein Assign ist, sondern
; z.B. ein gleichnamiger Datenträger
; oder es gar nicht existiert
(ICONINFO )
Schablone: (iconinfo <Parameter>)
Funktion: Liest Informationen aus einem Icon aus.
Parameter: (prompt <Text>) - Spezifiziert den einleitenden <Text> zu
dieser Funktion, der dem User sagen soll, was der
Installer von ihm möchte. Wird nur bei Angabe von
(confirm) angezeigt.
(Pflichtparameter)
(help <Hilfstext>) - Definiert den <Hilfstext> zu der Funktion.
(Pflichtparameter)
(dest <Icon>) - Hiermit wird das Icon angegeben, aus dem gelesen
werden soll. ".info" braucht nicht mit angegeben
zu werden.
(gettooltype <Tooltype> <Variable>) - Schreibt den Inhalt des
<Tooltype> in die <Variable>
(getdefaulttool <Variable>) - Liest den Defaulttool-Eintrag und
schreibt ihn in die <Variable>
(getstack <Variable>) - Legt den Stack-Eintrag in der <Variable>
ab.
(getposition <x> <y>) - Ermittelt die Position des Icons und
schreibt die Bildschirmkoordinaten in die
Variablen <x> bzw. <y>.
Hat das Icon keine feste Position, so wird
-1 zurückgegeben.
Diese Funktion dient dem erhalten von Icon-
Positionen bei Updates o.ä., mißbrauchen
Sie sie nicht, da der User bei wildem
Verändern der Icon-Positionen sehr
irritiert sein kann.
(confirm [<User-Level>]) - Falls angegeben, wird der User um
Bestätigung gebeten.
<User-Level> gibt dabei an, ab welchem
User-Level die Tafel präsentiert werden
soll, möglich sind 1 für AVERAGE und 2
für EXPERT.
(safe) - Funktion auch im PRETEND-Modus ausführen.
Bemerkung: Beachten Sie bitte, daß diese Funktion bei den meisten
Parametern die Angabe von Variablen verlangt, in die die Werte
geschrieben werden sollen, statt wie die anderen Funktionen die
Angabe von Werten selbst.
Beispiel: (iconinfo
(dest @icon)
(getdefaulttool #deftool)
)
(message "Dieses Script wurde mittels " #deftool " gestartet.")
(DATABASE )
Schablone: (database <Info> [<Vergleichswert>])
Funktion: Ermittelt Informationen über die Hardware-Konfiguration
des Rechners, auf dem das Script läuft. <Info> ist dabei einer
der im folgenden aufgezählten Strings und gibt an, welche
Information Sie wünschen. Wird kein <Vergleichswert> angegeben,
so liefert die Funktion einen der in Klammern angegebenen Werte.
"vblank" ("50", "60")
"cpu" ("68000", "68010", "68030", "68040", "68060")
"fpu" ("NOFPU", "68881", "68882", "FPU40")
"graphics-mem" (gibt einen String mit dem freien Chipmem in Bytes
zurück)
"total-mem" (gibt einen String mit dem freien Gesamtspeicher in
Bytes zurück)
"chiprev" ("AA", "ECS", "AGNUS")
Wird ein <Vergleichswert> angegeben, der einem der in den Klammern
angegebenen entsprechen muß, so ist das Resultat ein boolescher
Wert (0 oder 1), der angibt, ob die Angabe zutrifft.
Bemerkung: Versuchen Sie immer, Ihr Script so zu schreiben, daß
auch unvorhergesehene Werte auftreten können, man weiß nie, wie
der Rechner des Users aussieht, die Kunst besteht darin, alle
Möglichkeiten abzudecken.
Beispiel: (not (patmatch "68000|68010" (database "cpu"))
optische Gestaltung
(EXECUTE )
Schablone: (execute <Script+Argumente> <Parameter>)
Funktion: Führt ein AmigaDOS-Script aus, wobei natürlich auch
Argumente übergeben werden können.
Parameter: (prompt <Text>) - Spezifiziert den einleitenden <Text> zu
dieser Funktion, der dem User sagen soll, was der
Installer von ihm möchte. Wird nur bei Angabe von
(confirm) angezeigt.
(Pflichtparameter)
(help <Hilfstext>) - Definiert den <Hilfstext> zu der Funktion.
(Pflichtparameter)
(confirm [<User-Level>]) - Falls angegeben, wird der User um
Bestätigung gebeten.
<User-Level> gibt dabei an, ab welchem
User-Level die Tafel präsentiert werden
soll, möglich sind 1 für AVERAGE und 2
für EXPERT.
(safe) - Funktion auch im PRETEND-Modus ausführen.
Rückgabe: Gibt den primären Result-Wert des Scripts zurück
(seit Inst. V42).
Außerdem wird in der Variablen @ioerr das sekundäre Resultat
abgelegt.
Bemerkung: Script und Argumente müssen in einem einzigen String
übergeben werden.
Beispiel: (execute "S:Shell-Startup"
(prompt "Führe Shell-Startup aus.")
(help "Keine Hilfe verfügbar.")
)
(RUN )
Schablone: (run <Kommandozeile> <Parameter>)
Funktion: Führt eine AmigaDOS-Befehlszeile aus.
Parameter: (prompt <Text>) - Spezifiziert den einleitenden <Text> zu
dieser Funktion, der dem User sagen soll, was der
Installer von ihm möchte. Wird nur bei Angabe von
(confirm) angezeigt.
(Pflichtparameter)
(help <Hilfstext>) - Definiert den <Hilfstext> zu der Funktion.
(Pflichtparameter)
(confirm [<User-Level>]) - Falls angegeben, wird der User um
Bestätigung gebeten.
<User-Level> gibt dabei an, ab welchem
User-Level die Tafel präsentiert werden
soll, möglich sind 1 für AVERAGE und 2
für EXPERT.
(safe) - Funktion auch im PRETEND-Modus ausführen.
Rückgabe: Gibt den primären Result-Wert des Befehls zurück
(seit Inst. V42).
Außerdem wird in der Variablen @ioerr das sekundäre Resultat
abgelegt.
Bemerkung: Die Befehlszeile muß als ein String übergeben werden.
Beispiel: (run "c:dir >ram:libs.dir libs:")
(REXX )
Schablone: (rexx <ARexx-Script> <Parameter>)
Funktion: Führt ein ARexx-Script aus.
Parameter: (prompt <Text>) - Spezifiziert den einleitenden <Text> zu
dieser Funktion, der dem User sagen soll, was der
Installer von ihm möchte. Wird nur bei Angabe von
(confirm) angezeigt.
(Pflichtparameter)
(help <Hilfstext>) - Definiert den <Hilfstext> zu der Funktion.
(Pflichtparameter)
(confirm [<User-Level>]) - Falls angegeben, wird der User um
Bestätigung gebeten.
<User-Level> gibt dabei an, ab welchem
User-Level die Tafel präsentiert werden
soll, möglich sind 1 für AVERAGE und 2
für EXPERT.
(safe) - Funktion auch im PRETEND-Modus ausführen.
Rückgabe: Gibt den primären Result-Wert des Scripts zurück
(seit Inst. V42).
Außerdem wird in der Variablen @ioerr das sekundäre Resultat
abgelegt.
Bemerkung: Script und Argumente müssen in einem einzigen String
übergeben werden.
Läuft RexxMast nicht, so wird ein Fehler generiert.
Beispiel: (rexx "RexxC:special.rexx")
Scriptgestaltung
(COMPLETE )
Schablone: (complete <Prozentwert>)
Funktion: Setzt den im Titel-Balken des Installer-Fensters angezeigten
<Prozentwert>. Dieser dient dazu, den User zu informieren, wie
weit die Installation bereits fortgeschritten ist.
Beispiel: (complete 30)
(WORKING )
Schablone: (working <String> [<String> ...])
Funktion: Fügt die Strings zusammen und öffnet eine Tafel, auf
der diese dann unter der Zeile "Working on Installation"
angezeigt werden. Im Gegensatz zur Message-Funktion wird
inzwischen mit der Installation fortgefahren. Die Tafel wird
solange angezeigt, bis ein anderes Kommando wieder das
Installer-Fenster für die Kommunikation mit dem User beansprucht.
Bemerkung: Bei Installer-internen Funktionen ist es sinnvoller,
deren Status-Anzeigen zu verwenden, sofern sie über solche
verfügen (z.B. (COPYFILES )).
Beispiel: (working "Entpacke Archiv \"Daten.lha\" nach " #destdir ".")
sonstige
(SYMBOLSET )
Schablone: (symbolset <Var_Name> <Wert> [<Var_Name2> <Wert2> ...])
Funktion: Die Funktion setzt die Variable, die durch <Var_Name>
benannt wird, auf den Wert <Wert>. Dies erlaubt eine Art
dynamisches Arbeiten mit Variablen ähnlich Pointern in anderen
Sprachen.
Rückgabe: Der Wert, den die bezeichnete Variable zuvor enthielt.
Bemerkung: Sollte die bezeichnete Variable noch nicht existieren, so
wird sie angelegt.
Beachten Sie bitte, daß im Unterschied zu Set <Var_Name> nicht
direkt eine Variable ist, sondern erst eine bezeichnet.
Das Beispiel sollte dies verdeutlichen.
Beachten Sie bitte, daß es ein Gegenstück zu dieser Funktion zum
Auslesen von Variablen gibt: [->] (SYMBOLVAL ).
Beispiel: (set #var_name "#var)
(symbolset #var_name "Jetzt dürfte alles klar sein.")
(message (cat "Inhalt von \"#var_name\" ist: " #var_name " .\n\n"
"Inhalt von \"#var\" ist: #var " .\n\n"))
(SYMBOLVAL )
Schablone: (symbolval <Var_Name>)
Funktion: Liest die durch <Var_Name> bezeichnete Variable aus.
Dies erlaubt eine Art dynamisches Arbeiten mit Variablen ähnlich
Pointern in anderen Sprachen.
Bemerkung: Das Beispiel oder ein Vergleich mit dem Gegenstück
[->] (SYMBOLSET ) sollte die Funktionsweise verdeutlichen.
Beispiel: (set #var_name "#var")
(set #var "Inhalt von #var.")
(message (cat "Ergebnis ist " (symbolval #var_name) "."))
String-Bearbeitung
(STRLEN )
Schablone: (strlen <String>)
Funktion: Gibt die Länge von <String> in Zeichen zurück.
Rückgabe: Anzahl der Zeichen in <String>.
Beispiel: (set #string
(askstring
(prompt "Bitte den zu prüfenden String eingeben.")
(help @askstring-help)
(default "Bitte ersetzen.")
)
(message (cat "Der String \"" #string "\" ist " (strlen #string)
" Zeichen lang."))
(SUBSTR )
Schablone: (substr <String> <Start> [<Länge>])
Funktion: Schneidet beginnend mit dem <Start>-en Zeichen einen
Teil der Länge <Länge> aus <String> heraus.
Wird <Länge> weggelassen, so endet der Teilstring mit dem Ende von
<String>.
Rückgabe: Der ausgeschnittene Teilstring.
Bemerkung: Die Funktion beginnt bei der Zählung der Zeichen mit
dem Wert 0!
Beispiel: (set #teilstring (substr #string (- (strlen #string) 5)))
;#teilstring enthält die letzten 5 Zeichen von #string
allgemeines, Control-Statements
(PROCEDURE )
Schablone: (procedure <Prozedurname> [<Argumente>] <Kommandos>)
Funktion: Definiert eine Prozedur mit den Namen <Prozedurname>, der
ggf. die <Argumente> übergeben werden, und die die <Kommandos>
umfaßt.
Rückgabe: Der Rückgabewert des letzten Befehls der Prozedur.
Bemerkung: Die Übergabe von Argumenten ist erst seit Installer V42.7
möglich.
Der Installer kennt bisher noch keine lokalen Variablen, d.h. alle
Variablen, die außerhalb der Prozedur definiert wurden, gelten auch
innerhalb ihrer und umgekehrt.
Beachten Sie, daß <Prozedurname> kein String, sondern nur ein
symbolischer Name ist, also weder eine Variable dafür angegeben
werden kann, noch der Name in Anführungszeichen geschrieben werden
darf. (s. Beispiel)
Es empfielt sich, dem Prozedurnamen ein Präfix voranzustellen, um
evtl. Probleme mit folgenden Installer-Versionen zu vermeiden.
Empfohlen wird dafür "P_".
Beispiel: (procedure P_PROZENT #p_Wert #p_GWert
(set #p_einProzent (/ #p_GWert 100))
(/ #p_Wert #p_einProzent) ;letzter Befehl = Wertübergabe
) ;Prozedur-Ende
(asknumber
(prompt "Bitte den Grundwert eingeben.")
(help @asknumber-help)
(default 100)
)
(asknumber
(prompt "Bitte den Wert eingeben.")
(help @asknumber-help)
(default 10)
)
(message (cat #Wert " sind " (P_PROZENT #Wert #GWert)
" % von " #GWert "."))
Weitere Beispiele bieten (P_CONVERSION ) und (P_ASKDIR_SIZE ),
s. Bin-Verzeichnis.