Ein Installationsprogramm in VBScript ◦ ?

### Benutzersicht

Wenn Sie TESTS nur auf dem eigenen Rechner einsetzen, dann können Sie die CD ROM (mit Ausnahme des Verzeichnisses Demonstrationssoftware) mit einem Doppelklick auf INSTALL.VBS installieren. Die Installation verläuft in sechs Schritten:

1. Falls die CD ROM nicht im Laufwerk ist, wird der Anwender zum Einlegen aufgefordert
2. Der Inhalt der CD ROM wird präsentiert
3. Der Benutzer entscheidet zwischen Vollinstallation oder Start ab CD ROM
4. Falls er Vollinstallation gewählt hat, wird der Installationspfad verlangt
5. Falls er Vollinstallation gewählt hat, wird die CD ROM auf die Festplatte kopiert
6. Die Startsymbole werden im Startmenü eingerichtet

### Entwicklersicht

Damit Sie die Entwicklung eines einfachen Installationsskripts in VBScript nachvollziehen können, verzichtet TESTS darauf, die Installation mit einem professionellen Autorenwerkzeug wie InstallShield zu unterstützen. INSTALL.VBS finden Sie im obersten Verzeichnis der CD ROM. Ein Doppelklick startet den Installationsvorgang. Zur Inspektion des Skriptcode können Sie INSTALL.VBS in Ihrem Editor betrachten (»Rechtsklick im Windows Explorer/Open with ...). Die Dateierweiterung .VBS steht für Visual Basic Script. Der Code ist mehr oder weniger selbsterklärend. Wir vertiefen lediglich eine Subroutine, welche die Programmierkonzepte Auflistung und Rekursion veranschaulicht:

>     Sub entferneSchreibschutz(Pfad)
>       '-- VbScript kennt keine Datentypen
>       Dim Verzeichnis
>       Dim Unterverzeichnis
>       Dim Datei

>       Set Verzeichnis = Dateisystem.GetFolder(Pfad)
>       '-- Setze die Attribute aller Dateien des Verzeichnisses Pfad auf cNormal
>       For Each Datei in Verzeichnis.Files
>         Datei.Attributes = cNormal
>       Next
>       '-- Setze die Attribute aller Dateien der Unterverzeichnisse von Pfad auf cNormal
>       For Each Unterverzeichnis in Verzeichnis.SubFolders
>         entferneSchreibschutz(Pfad & "\" & Unterverzeichnis.Name)   'rekursiver Aufruf
>       Next
>     End Sub

####
Auflistung

Eine Auflistung ist ein Objekt, das seinerseits aus Objekten besteht. Der obige Code illustriert an den systemdefinierten Auflistungen Files und Subfolders, wie man mit For Each ... Next eine Auflistung durchlaufen kann. Die Subroutine entferneSchreibschutz weist zuerst der Objektvariablen Verzeichnis den Ordner Pfad zu. Verzeichnis zeigt nachher auf die Auflistung aller Files dieses Ordners Die erste For Each-Schleife setzt für deren Mitglieder die Eigenschaft Attributes auf cNormal. Die zweite Schleife durchläuft jene Dateien, die zur Auflistung SubFolders (Unterverzeichnisse) von Pfad gehört und setzt ebenfalls die Eigenschaft Attributes auf cNormal. Der fortgesetzte rekursive Aufruf von entferneSchreibschutz endet dort, wo Dateisystem.GetFolder(Pfad) keine Unterverzeichnisse mehr findet.

#### Rekursion

Rekursive Unterprogramme bieten sich vor allem für die Manipulation rekursiver Datenstrukturen an. Die wichtigste rekursive Datenstruktur ist der Baum (die Hierarchie). Das folgende Bild zeigt einen Teil des Verzeichnisbaums der CD ROM CdEUS:

Ein Verzeichnisbaum besteht aus Knoten. Ein Knoten ist entweder selbst ein Verzeichnisbaum (ein Unterverzeichnis) oder eine gewöhnliche Datei. Ein Knoten, der zu weiteren Knoten verzweigt, heisst Zwischenknoten. Endknoten (im Beispiel Dateien) sind Knoten, die weder Wurzelknoten noch Zwischenknoten sind.

Die rekursive Baumprozedur eines Vaterknotens (eines übergeordneten Knotens wie CdEUS) manipuliert nur die Kindknoten (die unmittelbaren Vorgängerknoten wie Demonstrationssoftware, EUS und Grundlagen Excel). Für jeden Kindknoten wird die rekursive Prozedur neu aufgerufen, und so weiter ... Rekursive Baumprozeduren sind einfach, weil sie nur die Manipulation eines einzigen Knotens explizit beschreiben. Die beschriebene Manipulation lässt sich wegen der rekursiven Struktur des Baums leicht auf die übrigen Knoten übertragen.