Erstellen eines “Inno” Skript
von: Jonny Kwekkeboom

| Die benötigten Skript Tools Die Sektionen Die [Setup] Sektion Die [Dirs] Sektion Die [Messages] Sektion Die [Tasks] Sektion Die [Files] Sektion Die [Registry] Sektion Die [Icons] Sektion Die [Types] Sektion Die [Components] Sektion

Ergebnis

Die benötigten Skript Tools

Wie wir bereits wissen können wir mit jedem Editor dieses Skript erstellen. Es gibt aber auch Programme die dieses erstellen des Skriptes unterstützen sodass man nicht unnötig. Alle benötigen Zeilen selbst ein zutippen braucht.

- Inno Setup Version 5.0.6 Skript Compiler QuickStartPack.
  Herunterladen
- ScriptMaker Version 5.0.6.1 der Generator speziell für dBASE Applikationen. Unterstützt Inno und IsTools.
  Herunterladen
- Is Tools Version 5.0.6.1 ein weiterer nützlicher Generator zum erstellen von Skripte. Wird auch von ScriptMaker unterstützt und kann direkt hieraus gestartet werden.
  Herunterladen

Die Sektionen

Inno ist ein Skriptgenerator zum erstellen einer `Setup.exe` zum verteilen unserer erstellten Software auf einem Zielrechner.

Dieser ist anders als bei InstallShield, da die gesamten ausführbaren Befehle hierfür in einer ASCII Text Datei, und damit schneller und übersichtlicher zu kontrollieren sind.

Die Textdatei kann von jedem x beliebigen ASCII Editor erstellt werden oder direkt in Inno selbst bzw. ScriptMaker und IsTools oder auch ISX.

Die erforderlichen Einträge werden hierin in Sektionen eingeteilt die jeweilig die Einträge zu dieser Sektion beinhalten. Diese sind:

- [_Project]
  Diese ist eine spezielle Sektion die nur seitens ScriptMaker für dBase verwendet wird.
- [_IsTool]
  Dieses ist eine spezielle Sektion die nur seitens IsTools verwendet wird.
- [Setup]
- [Dirs]
- [Messages]
- [Tasks]
- [Components]
- [INI]
- [Files]
- [Registry]
- [Icons]
- [Run]
- [UninstallRun]
- [Installdelete]
- [Uninstalldelete]
- [Code]
  Dieses ist eine spezielle Sektion die nur seitens My Inno Setup Extension verwendet wird.

Die [Setup] Sektion

Wir starten unser zu erstellendes Skript mit der`[Setup]` Section.

Hier werden alle Schalter (`true`,`1`,`yes` -`false`,`0`,`no`) gesetzt für unser zu erstellendes Installation Programm.

In Abhängigkeit der verschiedenen Inno Versionen stehen diverse Einträge zur Verfügung. Manche wurden aus ältere entfernt andere neue hinzugefügt.

Es stehen in dieser Sektion 93 verschiedene Direktiven (Schalter) zur Verfügung die individuell von Ihrer Anwendung benötigt werden oder auch nicht. Deshalb ist es nicht einfach hierzu immer die passenden Tipps bereitzustellen, da jede Anwendung verschieden ist und andere Vorraussetzungen erfordert.

Es gibt allerdings drei von diesen welche immer ( unbedingt erforderlich ) benötigt werden diese sind:

- AppName
- AppVerName
- DefaultDirName

AppName (erforderlich)

Dieser identifiziert Ihr Applikationsname, also meist der Name Ihrer Anwendung.

AppVerName (erforderlich)

Dieser setzt sich aus dem Applikationsnamen und der zu installierenden Version zusammen.

DefaultDirName (erforderlich)

Dieses ist das Vorgabe Verzeichnis wohin unsere Anwendung auf dem Zielrechner kopiert werden soll (Hauptverzeichnis). Dieser setzt sich aus einer Konstante und dem dazugehörigen Verzeichnisnamen zusammen.

Beispiel:

| {`pf`}\Meine Applikation
| ``

Die Konstante ist ein fester Wert eines Verzeichnisnamen, welches individuell sein kann auf verschiedenen Zielrechnern. Diese Konstante als Beispiel {`pf`} bezeichnet den Verzeichnisnamen `C:\Programme` wenn sich Windows auf dem Zielrechner auch auf dem Laufwerk `C:\` befindet. Ist dieser auf `E:\` so ist {`pf`} auch `E:\Programme` auf deutsche Zielrechner oder `E:\Progam files` auf Zielrechner mit einer installierten englischen Version von Windows.

Wie wir sehen brauchen wir uns also keine Gedanken zu machen wo sich dieser Ordner auf dem Zielrechner befindet, da Inno oder auch ISX dieses selbst erledigt, und unsere Anwendung immer richtig installiert wird.

Diese Konstanten sind theoretisch gleich zu setzen mit einem Alias in einer BDE Umgebung.

In der`[Setup]` Sektion sind weiterhin Direktiven, welche zwar nicht unbedingt erforderlich, aber trotzdem immer wieder verwendet werden, bei jedem zu erstellenden Setup.

Diese sind:

AppId

Diese Direktive, wird wenn sie nicht deklariert wurde, in der`[Setup]` Sektion den gleichen Wert zugewiesen wie `AppName`. Sie wird mittels Inno benötigt um eine Uninstall Registrierungseintrag zu erstellen um unser Setup auch korrekt wieder vom Zielrechner zu entfernen. Des Weiteren wird dieser auch herangezogen zum identifizieren bei nachfolgenden Updates unserer Anwendung, um alle in der Hauptinstallation getätigten Einstellungen seitens des Anwenders wieder zu aktivieren und somit alle vorherigen Einstellungen wieder zur Verfügung zu haben. Also ist es ratsam diese Direktive einen Wert zuzuweisen um auch bei Updates alle Einstellungen zu gewährleisten.

Beachte: Dieser Eintrag muss aber IMMER gleich sein, bei jedem Update unserer Anwendung und darf nicht verändert werden.

PrivilegesRequired

Diese Direktive wird benötigt, wenn auch Registrierungseinträge zu unserer Anwendung benötigt werden. Dieses ist immer der Fall, sobald wir die BDE oder auch die dBASE Runtime Dateien mit installieren.

`PrivilegesRequired` kann folgende Einträge enthalten:`No`,`poweruser, admin`.

Diese gibt den minimalen Wert des Anwenders an, welcher in seinem System eingeloggt sein muss, um unsere Anwendung installieren zu können.

SourceDir

Hier können wir unser Quellen-Verzeichnis unserer Anwendung angeben.

Beispiel:

| `SourceDir=C:\MeineAnwendung`
| ``

Hierbei handelt es sich um das Hauptverzeichnis in dem sich unsere Anwendung mit allen Unterordnern befindet. Vorteil hierbei ist das man dann in der`[Files]` Sektion dieses Verzeichnis nicht immer anzugeben braucht sondern nur noch den Unterordner inklusive des Dateinamens um diese Datei zu integrieren.

OutputDir

Hier können wir das Verzeichnis eingeben, in dem unser kompiliertes Setup abgespeichert werden soll.

Beispiel:

| `OutputDir=C:\MeineAnwendung\Setup`
| ``

OutputBaseFilename

Hier können wir den Namen des kompilierten Setups eingeben ohne Eingabe des Extension `EXE`.

Beispiel:

| `OutputBaseFilename=MeineAnwendung_Setup`
| ``

UseSetupLdr

Wenn diese Direktive auf `true`/`1`/`yes` gesetzt wird generiert Inno eine `Setup.exe` Datei wenn diese nicht angegeben wird oder auf `false`/`0`/`no` gesetzt wurde wird die `Setup.exe` Datei in mehrere Dateien gesplittert (aufgeteilt). Dieses hat aber nichts mit einer Aufteilung für Disketten zu tun, sondern es werden `BIN` Dateien generiert, um somit die einzelnen Dateien kleiner zu halten.

Beispiel:

| `UseSetupLdr=YES`
| ``

Compression

Hier wird angegeben wie das zu erstellende Setup komprimiert werden soll. Die höchste Komprimierung wird mit der Einstellung von `LZMA/Ultra` erreicht in Kombination mit SolidCompression=true. Somit wird dann auch unsere `Setup.exe` am kleinsten.

Beispiel:

| `Compression=LZMA/Ultra` SolidCompression`=true`
| ``

AppCopyright

Hier können wir unser Copyright einfügen. Dieser wird dann auch in dem Setup unten rechts angezeigt, wenn wir die maximale Fenstergröße einstellen mit `WindowVisible=true`.

Beispiel:

| `AppCopyright=Copyright © 2005 Jonny Kwekkeboom HiSoft2000` `WindowVisible=true`
| ``

DefaultGroupName

Hier wird der Gruppen Name unserer Anwendung angegeben, welcher in der Programmgruppe von Windows angelegt werden soll. Dieser kann, wenn nicht die dazugehörige Seite abgeschaltet ist, vom Anwender frei gewählt und geändert werden.

Wir greifen nicht mehr auf diesen Namen zurück, sondern nur auf die in Inno festgelegten Konstanten die hierfür die {`group`} Konstante ist. Hierin befindet sich immer der korrekte Verzeichnisname ob er vom Benutzer geändert wurde oder auch nicht.

UserInfoPage

Diese Direktive in der`[Setup]` Sektion gibt an ob eine zusätzliche Anwender Seite innerhalb des Installationsprozesses angezeigt werden soll. Diese fordert die Eingabe des Anwendernamens und der Organisation des Anwenders.

Sie ist auch unbedingt erforderlich bei einer Abfrage eines Seriencode um unsere Anwendung installieren zu können.

Zur weiteren Verwendung der Eingabedaten können wir diese in der Registrierungsdatei oder auch in einer `INI` Datei abspeichern, um direkt aus unserer Anwendung heraus auf diese zurückgreifen zu können.

Diese werden in feste Konstanten abgelegt die dann zur Speicherung herangezogen werden können.

Der eingegebene Anwendername wird hierbei in der Konstante {`userinfoname`} die eingegebene Anwender Organisation in {`userinfoorg`} und der eingegebene Seriencode in {`userinfoserial`} abgelegt (nur ab Version 3.0.4).

Es stehen ebenso die eingegebenen Windows Installationsdaten zur Verfügung, welche sich in den Konstanten {`sysuserinfoname`} und`` {`sysuserinfoorg`} befinden.

Dies waren eigentlich die wichtigsten Einträge, welche man fast immer benötigt. Wie bereits vorher beschrieben, gibt es viel mehr von diesen Setup Direktiven, um unser zu erstellendes Installation Programm individuell einzustellen wie eigene Grafiken anzuzeigen innerhalb des Setups, die Farbumgebung anzupassen etc.

Sehen Sie hierzu in der Inno Hilfedatei nach, welche Möglichkeiten weiterhin zur Verfügung stehen oder mittels der `F1` Taste innerhalb von ScriptMaker.

Hier sehen wir nun ein Beispiel der Setup Sektion aus der ScriptMaker original Installation Skript Datei inklusive ISPP Direktiven.

| `[Setup]` `Compression=lzma/ultra` `OutPutDir={#AppSourceDir}\Setup` `OutputBaseFilename=`{#AppName}{#AppBuildNr}_full `SourceDir=`{#AppSourceDir} `UseSetupLdr=YES` `PrivilegesRequired=admin` `AppName={#AppName}` `AppId=SM_Plus` `AppVersion={#AppVersion}` `AppVerName={#AppName} version {#AppVersion}` `AppMutex=ScriptMaker_Mutex` `ChangesAssociations=YES` `DefaultDirName=`{`pf`}`\{#AppName}` `DefaultGroupName={#AppName}` `DisableStartupPrompt=YES` `AppCopyright=`{#AppCopyRight} `BackColor=$FCF9DC` `BackColor2=$B05757` `WindowVisible=YES` `WizardImageFile=`{#AppSourceDir}`\Setup\WizModernImage.bmp` `WizardSmallImageFile=`{#AppSourceDir}`\Setup\WizModernSmallImage.bmp` `UserInfoPage=YES` `DisableDirPage=YES` `DisableReadyPage=YES` `UsePreviousAppDir=YES` `UninstallFilesDir=`{`pf`}`\{#AppName}\Uninstall Information` `ShowTasksTreeLines=YES`
| ``

Die [Dirs] Sektion

Die`[Dirs]` Sektion ist zum erstellen von Verzeichnisse für unsere Anwendung. Hier können wir benötigte leere Verzeichnisse erstellen und spezielle Ordner anlegen mit z.B. einem gewünschtes anderes Icon als das Standart Icon.

Beachte: Alle Verzeichnisse welche in der Files Sektion integriert sind, können auch hier angegeben werden, braucht man aber nicht da diese dann automatisch angelegt werden.

Beispiel aus der`[Files]` Sektion:

| `Source: \Bin\MeinApp.exe; DestDir:` {`app`}`\Meine Applikation`
| ``

In diesem Beispiel wird das Verzeichnis Meine Applikation automatisch angelegt in dem Root Verzeichnis aus der Konstante {`app`}. Die Konstante {`app`} hat beim starten unseres kompilierten Setups den Wert aus der Setup Direktive `DefaultDirName` diese kann aber auf der Dirs Seite unseres Setups vom Benutzer geändert werden, nur wenn diese Seite nicht deaktiviert wurde. Ist dieses Root Verzeichnis vom Benutzer geändert, dann wird dieses Verzeichnis in der Konstanten {`app`} abgelegt und dann in allen Sektionen verwendet.

Der Eintrag für diese leeren oder auch wenn gewünscht mit integrierten Dateien sehen folgendermaßen aus:

| `[Dirs]` `Name:` {`app`}`\Bin` `Name:` {`app`}`\Ole`
| ``

Um ein spezielles Icon für unser Verzeichnis zu erstellen benötigen wir eine Icon Grafik mit Typ ICO und eine `Desktop.ini` Datei die in diesem Verzeichnis mit dem gewünschten Icon hineinkopiert werden müssen in der`[Files]` Sektion.

Die `Desktop.ini` Datei wird folgendermaßen erstellt z.B. für ein BDE Verzeichnis:

| `[.ShellClassInfo]` `InfoTip=BDE Utilitys` `IconFile=BDE.ico` `IconIndex=0`
| ``

Der Eintrag `InfoTip` ist der gewünschte Anzeigetext des Speedtips, wenn der Benutzer mit dem Mauszeiger auf oder über das Verzeichnis geht.

Der Eintrag `IconFile` ist die gewünschte Anzeigegrafik welche angezeigt werden soll, anstelle der Standartgrafik für Verzeichnisse.

Der Eintrag `IconIndex` ist die Grafik welche angezeigt werden soll, wenn diese Icon Datei mehrere Grafiken integriert.

Diese `Desktop.ini` können wir unter einem anderen Namen abspeichern z.B. in `Desktop_BDE.ini`. So können wir für verschiedene Verzeichnisse spezielle Ordner anlegen die mittels der jeweiligen dazugehörigen Grafikdatei und der dazugehörigen INI Datei, dann in dem jeweiligen Verzeichnis kopieren werden können.

Die Einträge für die`[Dirs]` Section werden dann für diese speziellen Verzeichnisse so eingetragen.

Beispiel:

| `[Dirs]` `Name:` {`app`}`\BDE; attribs: system`
| ``

Der hierfür verwendeten Einträge in der`[Files]` Sektion müssen dann so lauten, wenn diese Dateien in dem Verzeichnis Desk auf unserem Rechner sind:

| `[Files]` `Source: Desk\Desktop_BDE.ini; DestDir:` {`app`}`\BDE; DestName: Desktop.ini; Attribs: hidden system` `Source: Desk\BDE.ico; DestDir:` {`app`}`\BDE; DestName: BDE.ico; Attribs: hidden system`
| ``

Die Quell-Dateien müssen sich hierbei im Verzeichnis der Setup Direktive `SourceDir` und in dem Unterverzeichnis Desk befinden.

Beispiel:

| `[Setup]` `...` `SourceDir=C:\Fish`
| ``

So muss die Datei `C:\Fish\Desk\Desktop_BDE.ini` auf unserem Rechner zur Verfügung stehen, um diese in das zu kompilierende Setup zu integrieren.

Nun folgend eine Aufstellung der unterstützten Parameter:

Name (erforderlich)

Beschreibung: Der Name des Ordners das hergestellt werden soll, wird normal mit einer Konstanten verwendet.

Beispiel:

| `Name:` {`app`}`\MyDir`
| ``

Attribs

Beschreibung: Spezifiziert zusätzliche Attribute für das Verzeichnis. Dieses kann eins oder mehrere von den folgenden mit einschließen:
`readonly`,`hidden`,`system`.

Wenn dieser Parameter nicht spezifiziert wird, weist Setup keine speziellen Attribute dem Verzeichnis zu. Wenn der Ordner bereits existiert, werden die Attribute kombiniert mit den bereits verwendeten des Ordners.

Beispiel:

| `Attribs: hidden system`
| ``

Flags

Beschreibung: Dieser Parameter ist als Eingabe eine Extraoption. Mehrfache Optionen können verwendet werden, indem man sie durch Leerzeichen trennt. Folgende Optionen werden unterstützt:

> deleteafterinstall

> Weist`[Setup]` an, um das Verzeichnis zu erstellen, wie üblich, aber löscht es, sobald die Installation durchgeführt wurde (oder abgebrochen), wenn es leer ist. Dieses kann nützlich sein, wenn man temporäre Daten extrahiert, benötigte durch ein Programm, das Ausgeführt wird In der Sektion`[Run]`. Dieses Flag löscht keine Verzeichnisse, die bereits bevor der Installation existierten.

> uninsalwaysuninstall

> Instruiert den Uninstaller immer das Verzeichnis zu löschen, wenn es leer ist. Normalerweise versucht der Uninstaller nur, das Verzeichnis zu löschen, wenn es nicht bereits vor der Installierung existierte.

> uninsneveruninstall

> Instruiert dem Uninstaller dieses Verzeichnis nicht zu löschen. Als Standard, löscht der Uninstaller alle Verzeichnisse die in der Sektion`[Dirs]` angegeben wurden, wenn diese leer sind.

Die [Messages] Sektion

Eine`[Messages]` Sektion definiert die Meldungen die Inno Setup anzeigt, während der Installation und dem Uninstallieren der Anwendung.
Normal, brauchen wir diese Sektion nicht in unserem Skript, weil bereits alle Meldungen in der `Default.ISL` Datei im Inno Setup Pfad (oder auch übersetzt von Ihnen mit dem Translator) integriert sind.

Meldungen können überschrieben werden, beim herstellen einer`[Messages]` Sektion in Ihrer Skript Datei.

Um dieses zu veranlassen benötigen Sie die ID der Meldung welche geändert werden soll.

Dieses kann am besten gefunden werden, beim suchen in der `Default.isl`.

Als Beispiel, sagen wir Sie möchten den`&Next >` Schalter auf der Wizard Seite in`&Forward >` ändern. Die dazugehörige ID dieser Meldung ist `ButtonNext`, nun können Sie in der`[Messages]` Sektion dieses so herstellen:

| `[Messages]` `ButtonNext=&Forward >`
| ``

Einige Meldungen haben Argumente wie`%1` und`%2`.
Sie können die Reihenfolge dieser Argumente ändern in (z.B.. durch verschieben von`%2` vor`%1`) und auch duplizieren wenn Sie möchten (z.B..`%1 ... %1 %2`).

Bei Meldungen mit Argumenten, setzen Sie zwei`%` Zeichen ein um ein Zeichen`%` anzeigen zu können.`%n` stellt einen Zeilenumbruch her.

Wenn Sie die Meldungen übersetzen möchten von Inno Setup Texten in einer anderen Sprache, modifizieren Sie die `Default.isl` oder überschreiben alle Meldungen in jedem Skript das Sie herstellen möchten, machen Sie Änderungen an der Originaldatei `Default.isl`, speichern Sie diese mit einem anderen Namen wie z.B.`MyTranslation.isl` ab.

Um einige Installationen mit dieser geänderten `MyTranslation.isl` herzustellen geben Sie dies als Eintrag in der Messagefile Setup Direktiven in der`[Setup]` Sektion an.

Spezial - ID

Die Spezial - ID `BeveledLabel` Meldung ist ein spezieller Text der der in der linken Ecke von dem Wizard Fenster und im Uninstaller Fenster angezeigt wird. Diese kann belegt werden wie folgt.

Beispiel:

| `[Messages]` `BeveledLabel=ScriptMaker version 3.0 © 2002 Jonny Kwekkeboom`
| ``

Sollten Sie mehre immer wieder zu verwendende Message Änderungen durch führen wollen z.B. wenn ein Update unserer Anwendung ansteht können Sie alle diese Änderungen in einer Datei z.B.`Update.ISL` schreiben und zusätzlich mit in der`[Setup]` Sektion angeben. Hierbei werden alle geänderten Texte aus dieser Datei angezeigt anstatt der Standart Einträge.

Beispiel:

| `MessagesFile=MeinPfad\Translated.isl,MeinPfad\Update.ISL`
| ``

Die [Tasks] Sektion

Dieses Kapitel ist wahlweise freigestellt. Es definiert alle Benutzer - Aufgaben, die Setup während der Installation durchführt. Diese Aufgaben erscheinen als Überprüfungskästen (Checkbox) und Radiotasten (Radiobutton) auf der zusätzlichen Aufgaben Wizard Seite.

Hier ein Beispiel für eine Tasks Sektion mit Kindtasks:

| `[Tasks]` `Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main` `Name: desktopicon\common; Description: "Für alle Anwender"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive` `Name: desktopicon\user; Description: "Nur für diesen Anwender"; GroupDescription: "Additional icons:"; Components: main; Flags: exclusive unchecked` `Name: quicklaunchicon; Description: "Create a &Quick Launch icon"; GroupDescription: "Additional icons:"; Components: main; Flags: unchecked` `Name: associate; Description: "&Associate files"; GroupDescription: "Other tasks:"; Flags: unchecked`
| ``

Nun folgend eine Liste aller Parameter:

Beachte: Um Tasks mit Kindtasks anzuzeigen mit Linien wie in einer Baumstruktur dann muss auch die Setup Direktive `ShowTasksTreeLines=YES` in der`[Setup]` Sektion gesetzt werden!

Name (erforderlich)

Beschreibung: Der interne Name des Tasks. Die Anzahl von \ oder / Zeichen in dem Namen des Task generiert die Level dieses Tasks. Ein Tasks mit einem Level größer 1 oder mehreren Kind Tasks. Der Tasks wird vorher angezeigt mit dem um eins niedrigeren Kindtasks, dieser ist der Haupttasks. Andere Tasks mit dem gleichen Haupttasks sind untergeordnete Kindtasks des gleichen Levels. Ein Kindtasks kann nur aktiviert werden, wenn auch der Haupttasks aktiv ist. Ein Haupttasks kann nicht aktiviert werden, wenn kein Kindtasks aktiviert ist und es kann nicht verwendet werden beim steuern von Skriptzeilen. Wenn Kindtasks einen exclusive Flag haben (Radiobutton), kann nur einer von diesen aktiviert werden.

Beispiel:

| `Name: "desktopicon"`
| ``

Description (erforderlich)

Beschreibung: Die Beschreibung dieser Aufgabe. Diese wird dem Endbenutzer angezeigt. Beispiel:

| `Description: "Create a &desktop icon"`
| ``

GroupDescription

Beschreibung: Dieser Eintrag beschreibt die Gruppenangehörigkeit der Aufgabe. Alle zu einer Gruppe gehörigen Aufgaben werden gruppiert mit einer Überschrift angezeigt. Die Überschrift zeigt die Gruppenangehörigkeit an. Beispiel:

| `GroupDescription: "Additional icons"`
| ``

Components

Beschreibung: Ein Platzhalter für Komponenten zu welchen die Aufgaben hinzugehören. Wenn der Endbenutzer eine Komponente auswählt werden diese angezeigt. Eine Aufgabe ohne Komponenten wird immer angezeigt. Beispiel:

| `Components: main`
| ``

Flags

Beschreibung: Dieser Parameter ist eine extra Option. Mehrere Optionen können durch eine Leerstelle getrennt eingegeben werden.
Die folgenden werden hierbei unterstützt:

> checkedonce

> Gibt Setup an das dieser Eintrag nicht markiert werden soll, wenn Setup eine ältere Version mit gleichen Namen der Anwendung findet. Dieser Schalter kann nicht in Verbindung mit dem unchecked flag kombiniert werden. Wenn der Eintrag in `UsePreviousTasks` in der`[Setup]` Sektion mit No belegt wurde, wird dieser Schalter deaktiviert.

> exclusive

> Weist Setup an, dass diese Aufgabe gegenseitig Exklusives mit anderen Aufgaben ist, die den gleiche (vielleicht leere) Gruppenbeschreibung und einen exklusives Flag besitzen. Dies bedeutet das Setup Radiotasten (Radiobuttons) anstelle von Checkbox anzeigt. Daraus kann man dann nur eine exklusive Aufgabe innerhalb einer Gruppe auswählen. Setup macht sonst automatisch keine exklusiven Aufgaben (eine Checkbox anstelle von Radiobutton).

> restart

> Veranlasst Setup die Frage zu stellen ob der Endbenutzer sein System am Ende der Installation neu zu starten, unabhängig davon ob es notwendig ist (zum Beispiel bei der`[Files]` Sektion Einträge mit dem restartreplace Flag). Also genau wie `AlwaysRestart` aber über einen Tasks gesteuert.

> unchecked

> Veranlasst Setup das diese Aufgabe nicht markiert werden soll. Dieses Flag kann nicht mit dem checkedonce Flag kombiniert werden.

Beispiel:

| `Flags: unchecked`
| ``

Die [Files] Sektion

Diese Sektion ist optional, aber wird wohl von den meisten Installationen benötigt. Sie definiert alle Dateien die Setup auf den Anwender System übertragen soll.

Hier ein Beispiel für die`[Files]` Sektion:

| `[Files]` `Source: "CTL3DV2.DLL"; DestDir: "`{`sys`}`"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall` `Source: "MYPROG.EXE"; DestDir: "`{`app`}`"` `Source: "MYPROG.HLP"; DestDir: "`{`app`}`"` `Source: "README.TXT"; DestDir: "`{`app`}`"; Flags: isreadme`
| ``

Wie wir hierbei sehen werden die Dateien nicht in feste verdrahtete Verzeichnisse auf dem Zielrechner kopiert, sondern es werden dafür Konstanten (wie z.B. auch einem BDE Alias) eingesetzt um unsere benötigten Dateien zu installieren.

Da auf dem Zielrechners des jeweiligen Benutzers die Verzeichnisse anders sind wie z.B. in Deutschland `C:\Programme` wenn Windows auf dem Laufwerk `C:\` installiert wurde, so wäre dieses Verzeichnis in England `C:\program files`. Um jetzt für unser zu erstellende `Setup.exe` in alle Länder lauffähig zu installieren, verwenden wir für dieses Beispiel die Konstante {`pf`}.

Die einzelnen Verzeichnis Konstanten die verwendet werden können lauten:

> {app}

> Das Applikation Verzeichnis, welches der Benutzer innerhalb des Setups auf der Verzeichnis Seite auswählt.

> Als Beispiel: Wenn Sie einen Eintrag eintragen wie {`app`}`\MYPROG.EXE` und der Benutzer wählt als Installationsordner `C:\MYPROG` für das Applikation Verzeichnis, dann wird Setup dieses umsetzen zu `C:\MYPROG\MYPROG.EXE`.

> {win}

> Das System Windows Verzeichnis.

> Als Beispiel: Wenn Sie {`win`}`\MYPROG.INI` eintragen und Windows auf dem Zielrechner in `C:\WINDOWS` installiert wurde, dann setzt Setup dieses um zu `C:\WINDOWS\MYPROG.INI`.

> {sys}

> Das System Windows System Verzeichnis (System32 bei Windows NT, XP…).

> Als Beispiel: Ihr Eintrag lautet {`sys`}`\CTL3D32.DLL` und Windows wurde installiert auf dem Zielrechner unter `E:\WINDOWS\SYSTEM`, Setup wird dieses umsetzen zu `E:\WINDOWS\SYSTEM\CTL3D32.DLL` (bzw zu `E:\WINDOWS\SYSTEM32\CTL3D32.DLL` wenn es eine NT Plattform ist.)

> {src}

> Der komplette Verzeichnisname von dem `Setup.exe` gestartet wurde.

> Als Beispiel: Ihr Eintrag lautet {`src`}`\MYPROG.EXE` und der Benutzer installiert von dem Laufwerk `S:\`, dann setzt Setup dieses um zu `S:\MYPROG.EXE`.

> {sd}

> System Laufwerk. Das Laufwerk auf dem Zielrechner auf dem Windows installiert wurde, typisch `C:`. Auf Windows NT Plattform, die Verzeichnis Konstante ist hierbei equivalent zu der System Laufwerk Environment Variable.

> {pf}

> Programm Dateien. Der Pfad von dem System Programme Verzeichnis, typisch `C:\Programme`.

> {cf}

> Gemeinsame Dateien. Der Pfad von dem System „Gemeinsame Dateien“ Verzeichnis, typisch `C:\Programme\Gemeinsame Dateien`.

> {tmp}

> Temporäres Verzeichnis. Dies ist nicht der Eintrag der `TEMP` Environment Variable des Benutzers. Es ist ein Unterverzeichnis des Benutzer temporären Ordners welches beim starten der Installation erstellt wird (mit einem Namen wie z.B.`C:\WINDOWS\TEMP\IS-xxxxx.tmp`). Alle Dateien und Unterverzeichnisse werden entfernt wenn das Setup beendet wird. Dies ist auch gut um Dateien zu extrahieren um diese in der Run Sektion zu starten nach der Installtion.

> {fonts}

> Schriften Verzeichnis. Normalerweise lautet dieser `FONTS` und befindet sich im Windows Verzeichnis.

> {dao}

> DAO Verzeichnis. Dieser entspricht und ist gleich dem Eintrag {`cf`}`\Microsoft Shared\DAO`.

Wie wir nun hierbei sehen ist es nicht von Nöten überhaupt feste Verzeichnisse anzugeben, da mit den Konstanten jeder Ordner auf dem Zielrechner erstellt werden kann (oder auch nicht wenn vorhanden) um unsere Dateien in die richtigen Verzeichnisse zu kopieren.

Nun die Beschreibung aller möglichen Parameter für die Files Sektion Einträge:

Source (erforderlich)

Beschreibung: Der Name der Ursprungsdatei. Der Compiler wird den Pfad aus dem Source Directory nehmen, wenn kein anderer Pfad eingegeben wurde. Es wird auch Wildcards (`*`) unterstützt für eine Gruppe von Dateien. Wenn eine Wildcard benutzt wird dann werden alle Dateien die gefunden werden übernommen die mit dem Ausdruck gleich sind.

Wenn das Flag `external` benutzt wird, Source muss dann den vollen Pfadnamen von einer existierenden Datei (oder Wildcard) auf dem vorhandenen Medium oder dem Anwender Rechner gefunden werden (z.B. {`src`}`\license.ini`).

Konstanten werden nur berücksichtigt wenn das external Flag spezifiziert wurde, weil der Kompiler keine Konstanten von sich selbst aus definiert.

Beispiel:

| `Source: "MYPROG.EXE" Source: "Files\*"`
| ``

DestDir (erforderlich)

Beschreibung: Der Ordner wohin Setup die Dateien bei dem Endbenutzer kopieren soll. Die beginnt normalerweise immer mit einer Verzeichniskonstante. Wenn das Verzeichnis nicht vorhanden ist, wird es automatisch angelegt und wird automatisch gelöscht bei der Deinstallierung der Anwendung wenn es leer ist.

Beispiel:

| `DestDir: "`{`app`}`" DestDir: "`{`app`}`\subdir"`
| ``

DestName

Beschreibung: Dieser Parameter spezifiziert einen neuen Namen für die Datei bei der Installation bei dem Endbenutzer. Als Standardwert benutzt Setup den Namen von dem Source Parameter, also ist es nicht unbedingt notwendig diesen Eintrag vorzunehmen.

Beispiel:

| `DestName: MYPROG2.EXE`
| ``

CopyMode (Wurde ersetzt ab Version 3.0.5 durch Flags und wird nicht mehr verwendet)

Standardwert :`normal`. Beschreibung: Spezifiziert die Exemplarrichtlinie für die Datei. Dieses muss eins von den folgenden sein:

> normal

> Die meist verwendete Option. Wenn die Datei bereits beim Endbenutzer vorhanden ist und es sich um identisch der gleichen Datei handelt (geprüft über der Datei Information), dann wird die Datei nicht kopiert. Wenn die bereits existierende Datei eine neuere Version ist, dann wird gefragt ob diese ersetzt werden soll. Wenn die bereits existierende Datei keine Versionsinformation hat, aber die zu kopierende dann wird diese ohne den Anwender zu fragen kopiert.

> onlyifdoesntexist

> Die zu kopierende Datei wird nur geschrieben wenn sie nicht vorhanden ist auf dem Ziellaufwerk.

> alwaysoverwrite

> Die Datei wird immer geschrieben auch wenn sie bereits vorhanden ist, auch wenn die Datei die vielleicht bereits vorhanden ist eine neuere Version ist. Benutzen Sie dieses nicht bei gemeinsam benutzten Systemdateien!

> alwaysskipifsameorolder

> Das gleiche wie bei normal, mit dem Unterschied das keine Anzeige erscheint ob die Datei ersetzt werden soll. Wenn dieser Modus aktiviert ist, dann werden neuere Versionen beim Endbenutzer niemals überschrieben.

Beispiel:

| `CopyMode: normal`
| ``

Attribs

Beschreibung: Spezifiziert zusätzliche Attribute für die Datei. Dieses kann eins oder mehre von den folgenden mit einschließen:
Schreibgeschützt, Versteckt, System. Wenn dieser Parameter nicht spezifiziert wird, weist Setup keine speziellen Attribute der Datei zu.

Beispiel:

| `Attribs: hidden system`
| ``

FontInstall

Beschreibung: Erklärt, die Datei der Schrift, die installiert werden soll. Der Wert dieses Parameters ist der Name der Schrift, wie im Register oder in der `WIN.INI` gespeichert. Dieser muss den gleichen Name haben, wie die, die Sie beim Doppeltklicken auf der Schriftdatei im Explorer sehen. Beachten Sie, dass Setup automatisch “`(TrueType)`” zum Ende des Namens hinzufügt. Wenn die Datei keine TrueType Schrift ist, dann müssen Sie das Flag `fontisnttruetype` als Flag Parameter.

Es wird empfohlen hierbei als copy mode `onlyifdoesntexist` und das Flag `uninsneveruninstall` zu verwenden, wenn Sie die Schrift in dem`` {`fonts`} Verzeichnis kopieren. Um erfolgreich eine Schrift unter Windows 2000/XP zu installieren, muss der Endbenutzer administrative Rechte besitzen. Unter Windows NT 4.0 und frühere Versionen, kann jeder eine Schrift installieren.

Beispiel : *** EINE ZEILE!!! ***

| `Source: "OZHANDIN.TTF"; DestDir: "`{`fonts`}`"; FontInstall: "Oz Handicraft BT"; CopyMode: onlyifdoesntexist; Flags: uninsneveruninstall`
| ``

Flags

Beschreibung: Dieser Parameter ist als Eingabe eine Extraoption. Mehrfache Optionen können verwendet werden, indem man sie durch Leerzeichen trennt. Folgende Optionen werden unterstützt:

> allowunsafefiles

> Sperrt die automatische Überprüfung des Compilers auf unsichere Dateien. Es wird sehr empfohlen, dass Sie NICHT dieses Flag benutzen, nur dann wenn Sie absolut sicher sind, und wissen, was Sie tun.

> comparetimestampalso

> (Special-purpose) Weist Setup an, wie nach dem vergleich der Zeitstempel fort zufahren, wenn eine Datei, die bereits kopiert war, auf dem System des Benutzers existiert, und die vorhandene Datei die gleiche Versionsinfo hat, wie die Datei, die installiert wird. Normalerweise unter diesem Umstand würde Setup nicht versuchen, die vorhandene Datei zu überschreiben, aber, wenn dieses Flag benutzt wird, wird die vorhandene Datei überschrieben, wenn sie einen älteren Zeitstempel hat, als die Version der Dateiinstallation versucht zu installieren. Dieses Flag wird ignoriert, wenn der Exemplarmodus nicht entweder Normal oder `alwaysskipifsameorolder` ist.

> confirmoverwrite

> Immer nachfragen ob die Datei überschrieben werden soll, wenn sie bereits vorhanden ist.

> deleteafterinstall

> Instruiert Setup die Datei zu kopieren, aber wird beim beenden oder Abbruch des Setups wieder gelöscht. Dieses kann sinnvoll zum extrahieren von Temporären Dateien sein die in der`[Run]` Sektion verwendet werden.

> Bei Verwendung dieses Flag, wird nicht gefragt ob die Datei gelöscht werden soll, auch wenn diese bereits vorhanden war, wird die Datei beim beenden des Setups gelöscht.

> Dieses Flag kann nicht kombiniert werden mit `isreadme`,`regserver`,`regtypelib`,`restartreplace`,`sharedfile`, oder dem `uninsneveruninstall` Flags.

> external

> Dieses Flag weist Inno Setup an, die Datei nicht statisch zu kompilieren, die durch den Quellparameter in die Installationsdateien spezifiziert wird, aber kopiert anstatt von einer vorhandenen Datei auf den Verteilungsmedia oder dem System des Benutzers. Sehen Sie die unter Source Parameter Beschreibung mehr Information hierzu

> Fontisnttruetype

> Dieses Flag spezifiziert einen Eintrag für non-TrueType Schrift mit den `FontInstall` Parameter.

> isreadme

> Datei ist die “LiesMich” Datei. Nur eine Datei kann dieses Flag verwenden. Wenn eine Datei dieses Flaghat, wird dem Endbenutzer gefragt ob er oder sie die LiesMich Datei sehen möchte nach beenden der Installation. Wenn Ja ausgewählt wurde, Setup öffnet dann diese Datei, mit der Standartdatei für diesen Dateityp. Dafür sollte die LiesMich Datei immer enden mit der Extension wie`.txt`,`.wri`,`rtf`, oder`.doc`.

> Beachten Sie wenn Setup den Rechner neu startet (durch das Flag restartreplace oder wenn `AlwaysRestart=YES` in der`[Setup]` Sektion), Der Endbenutzer keine Auswahlmöglichkeit angezeigt bekommt um diese Datei anzusehen.

> noregerror

> Wenn dieses Flag kombiniert wird mit regserver oder dem regtypelib Flag, dann zeigt Setup keine Fehlermeldungen an, wenn die Registration fehlschlägt.

> onlyifdestfileexists

> Die Datei nur kopieren wenn bereits eine Datei gleichen Namens auf dem Rechner des Endbenutzers vorhanden ist. Dieses Flag kann behilflich sein wenn diese Installation ein Patch für Ihre Anwendung ist, und Sie nur diese Datei(en) kopieren möchten wenn sie auch vorhanden waren.

> overwritereadonly

> Immer eine read-only Datei überschreiben. Ohne dieses Flag, fragt Setup dem Endbenutzer ob die schreibgeschützte Datei überschrieben werden soll.

> recursesubdirs

> Gibt den Compiler an auch die Source Dateinamen/Wildcard in Unterordnern unter dem gerade verwendeten Ordner zu kopieren. Dieses Flag kann nicht mit dem external Flag kombiniert werden.

> regserver

> Registrierung von OLE Server (a.k.a. ActiveX Control). Mit diesem Flag, Setup wird die DLL/OCX's lokalisieren und ausführen. (DllRegisterServer export). Der Uninstaller ruft DllUnregisterServer auf. Wenn dises in kombination mit dem sharedfile Flag verwendet wird, dann wird diese DLL/OCX nur unregistriert wenn der Zähler den Wert 0 erhält.

> Siehe die Bemerkung am Ende dieses Kapitels für mehr Informationen.

> regtypelib

> Registerierung den Typs (`.tlb`). Der Uninstaller wird dieses Unregistrieren wenn bei dem Typ (das Flag uninsneveruninstall spezifiziert wurde). Genau wie das regserver Flag, wenn dieses benutzt wird in Kombination mit sharedfile, dann wird die Datei nur unregistriert von dem Uninstaller wenn der Refrenzzähler gleich `0` (zero) ist.

> Siehe die Bemerkung am Ende dieses Kapitels für mehr Informationen.

> restartreplace

> Dieses Flag ist im Allgemeinen nützlich, wenn man Kernsystemdateien ersetzt. Wenn die Datei vorher existierte und gefunden wurde, und vielleicht gesperrt wurde, sodass die Installation, nicht imstande ist, diese zu ersetzen, wird eine Gründung für die Datei registriert (jedes `WININIT.INI` oder durch das Verwenden von MoveFileEx, für zu ersetzende Windows oder Windows NT Dateien), die beim nächstes Mal, wenn das System hochgefahren wird ersetzt. Wenn dieses notwendig ist, wird dem Endbenutzer dies angezeigt, mit der Meldung den Rechner herunterzufahren oder später.

> Um Kompatibilität zu erreichen mit Windows 95/98 und ME, ist es nicht empfohlen lange Dateinamen für die Datei zu verwenden. Nur “8.3” (Zeichen) Dateinamen werden unterstützt. (Windows NT und 2000 haben keine Begrenzung hierfür)

> ACHTUNG Wichtig: Das `restartreplace` Flag wird nur erfolgreich verwendet für eine damit deklarierte Datei unter Windows NT/2000, wenn der Endbenutzer administrative Rechte besitzt. Wenn der Benutzer keine administrative Rechte besitzt wird folgende Meldung angezeigt:`RestartReplace failed: MoveFileEx failed; code 5`. Deshalb, wenn das `restartreplace` Flag benutzt wird ist darauf zu achten das der Endbenutzer diese Anwendung nur installieren kann, wenn er administrative Rechte besitzt, also auch `AdminPrivilegesRequired=1` bzw. `PrivilegesRequired=admin` (ab Version 3.0.4) in der`[Setup]` Sektion benutzen.

> sharedfile

> (nur für Windows 95/NT 4+) Siehe Windows' shared file Zähler unter (der Registrierung von Windows `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs`). Dieses schaltet die shared Datei zwischen Applikationen ein, ohne um sich zu sorgen unbeabsichtigt Dateien zu löschen. Jeder Zeit, welche die Datei, der Bezugszählimpuls für die Datei installiert wird, wird diese erhöht. Wenn eine Anwendung, welche die Datei verwendet, deinstalliert wird, dann wird der Bezugszählimpuls wird verringert. Wenn der Zählimpuls null erreicht, wird die Datei gelöscht (mit der Bestätigung des Benutzers).

> Die meisten Dateien, die zum Windowssystemverzeichnis installiert werden, sollten dieses Flag benutzen und verwenden wie OCX und DPL Dateien (Paket Delphis 3). Eine der wenigen Ausnahmen ist MFC DLLs, die dieses Flag nicht benutzen sollte. Stattdessen sollte der `onlyifdoesntexist` Exemplar Modus, in Verbindung mit dem `uninsneveruninstall` Flag verwendet werden. Oder wenn, die neueste Version einer bestimmten MFC–DLL zu installieren ist, benutzen Sie das Flag `alwaysskipifsameorolder`, zusammen mit dem Flag `uninsneveruninstall` und dem `restartreplace` Flag.

> Wenn die Installation unter NT 3.51 System ausgeführt wird, werden Dateien mit diesem Flag niemals gelöscht.

> skipifsourcedoesntexist

> Dieses Flag hat nur einen Effekt wenn das `external` Flag auch verwendet wird. Es gibt den Installer an, ob der Eintrag stillschweigend nicht ausgeführt werden soll, wenn die Datei nicht vorhanden ist, anstatt eine Anzeige einer Fehlermeldung.

> uninsneveruninstall

> Niemals diese Datei deinstallieren. Dieses Flag sollte überlegt eingesetzt werden die normal mit der Kombination mit dem `onlyifdoesntexist` Kopiermodus verwendet wird. Dieses wird benutzt wenn eine besondere Shareddatei installiert werden soll wie z.B.`CTL3DV2.DLL` oder eine MFC DLL, und sie möchten diese Datei nicht deinstallieren, weil vielleicht andere Anwendungen diese Datei noch benötigen.

> Neu ab Version 3.0.5 und höher anstelle der Copymode Parameter

> CopyMode: normal -> Flags: promptifolder
> CopyMode: alwaysskipifsameorolder -> Kein neuer Flags (Nun der Standartwert kein Ersatz.)
> CopyMode: onlyifdoesntexist -> Flags: onlyifdoesntexist
> CopyMode: alwaysoverwrite -> Flags: ignoreversion
> CopyMode: dontcopy -> Flags: dontcopy

> ignoreversion

> Die Datei Versionsinfo wird nicht verglichen, bestehende Dateien werden
> immer überschrieben. Dieses Flag sollte nur bei eigenen Dateien verwendet
> werden und NIEMALS bei System Dateien.

> onlyifdoesntexist

> Kopiere die Datei NUR wenn diese NICHT auf dem Zielrechner vorhanden ist.

> promptifolder

> Wenn eine Datei mit einer kleineren Versionsnummer installiert werden soll
> (älteren Datums, wenn auch comparetimestamp Flag verwendet wird) als die
> bestehende Datei, dann wird Setup diese NICHT überschreiben. Setup wird dann
> den User fragen ob die Datei überschrieben werden soll mit der Standart
> Antwort die bestehende zu erhalten.

> dontcopy

> Diese Datei wird niemals kopiert auf dem Zielrechner. Dieses Flag ist
> exklusiv für Dateien die in der Code Section gestartet werden bestimmt.

Beispiel:

| `Flags: isreadme`
| ``

Bemerkung: Setup registriert alle Dateien mit den regserver- oder `regtypelib` Flag als der letzten Jobstep der Installation. Jedoch wenn in der`[Setup]` Sektion das richtungweisende `AlwaysRestart = YES` ist oder wenn es Dateien mit dem `restartreplace` Flag gibt, erhalten alle Dateien bei dem folgenden Neubooten des Rechners eine Registrierung (durch das Erstellen eines Eintrages in der Registertaste RunOnce in Windows).

Wenn Dateien mit ein`.HLP` Extension (Windowshilfe archiviert), deinstalliert wird, wird auch automatisch die entsprechenden`.GID` und`.FTS` - Dateien zusätzlich gelöscht.
Die [Registry] Sektion

Diese Sektion ist optional, aber wird wohl von vielen Installationen benötigt. Sie definiert alle Registrierungseinträge welche unsere Applikation benötigt.

Hier ein Beispiel für die`[Files]` Sektion:

| `[Registry]` `Root: HKCU; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty` `Root: HKCU; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey` `Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty` `Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekey` `Root: HKLM; Subkey: "Software\My Company\My Program"; ValueType: string; ValueName: "InstallPath"; ValueData: "`{`app`}`"`
| ``

Die folgende Auflistung zeigt die unterstützten Parameter:

Root (erforderlich)

Beschreibung: Der Root Schlüssel. Dies muss ein Eintrag einer dieser unteren sein:

- HKCR (HKEY_CLASSES_ROOT)
- HKCU (HKEY_CURRENT_USER)
- HKLM (HKEY_LOCAL_MACHINE)
- HKU (HKEY_USERS)
- HKCC (HKEY_CURRENT_CONFIG)

Beispiel:

| `Root: HKCU`
| ``

Subkey (erforderlich)

Beschreibung: Der Subkey Name, dieser Eintrag darf auch Konstanten ( {`app`}`,` {`pf`} etc.) enthalten kann.

Beispiel:

| `Subkey: Software\My Company\My Program`
| ``

ValueType

Beschreibung: Der Datentyp des Eintrages. Es muss eines der folgenden sein:

- none
- string
- expandsz
- multisz
- dword
- binary

Wenn `none` (der Standardwert) verwendet wird, dann wird Setup den Schlüssel generieren aber keinen Eintrag. Hierbei wird dann der `ValueName` und `ValueData` Parameter ignoriert.

Wenn `string` verwendet wird, dann erstellt Setup ein Zeichen (`REG_SZ`) Eintrag.

Wenn `expandsz` spezifiziert wurde, Setup generiert dann ein expand-string (`REG_EXPAND_SZ`) Eintrag. Dieser Datentyp ist primär für Windows NT, aber wird auch unter Windows 95/98 unterstützt.

Wenn `multisz` verwendet wird, denn stellt Setup ein multi-string (`REG_MULTI_SZ`) Eintrag her. Wenn dword verwendet wird, denn stellt Setup ein integer (`REG_DWORD`) Eintrag her.

Wenn `binary` verwendet wird, denn stellt Setup ein binar (`REG_BINARY`) Eintrag her.

Beispiel:

| `ValueType: string`
| ``

ValueName

Beschreibung: Der Name des Eintrages welcher hergestellt werden soll, dieser kann auch Konstanten erhalten. Wenn der Eintrag leer ist, dann wird zum “Default” Eintrag geschrieben. Wenn `ValueType` Parameter auf `none` gesetzt wurde, wird dieser Parameter ignoriert.

Beispiel:

| `ValueName: Version`
| ``

ValueData

Beschreibung: Die Daten des Eintrages.

Wenn `ValueType` Parameter gleich `string`,`expandsz`, oder `multisz` ist, dann kann diese Zeichenfolge auch Konstanten enthalten. Wenn der Datentyp gleich `dword` ist, dann kann der Eintrag Dezimal (z.B.`123`) oder Hexadezimal sein (z.B.`$7B`). Wenn der Datentyp gleich `binary` ist, dieses ist eine Sequenz von Hexadezimalen Bytes in Form von:`00 ff 12 34`. Wenn der Datentyp gleich `none` ist, dann wird dieser Eintrag ignoriert.

Bei einer Zeichenfolge vom Typ `string`,`expandsz`, oder `multisz` kann eine spezielle Konstante verwenden Namens {`olddata`} in diesem Parameter verwendet werden. {`olddata`} ist eine Konstante die mit dem bisherigen Eintrag gefüllt wird. Die {`olddata`} Konstante kann gut für Updateversionen der Anwendung verwendet werden, wobei zu dem bestehenden Eintrag etwas hinzugefügt werden soll, zum Beispiel {`olddata`}`;`{`app`}. Wenn kein Eintrag oder keine Zeichenfolge vorhanden war dann wird der Inhalt von der {`olddata`} Konstante „still“ gelöscht. {`olddata`} wird auch „still“ gelöscht, wenn der Wert, der erstellt wird, ein Datentyp von `multisz` ist, aber der vorhandene Wert nicht eine Multizeichenkettenart ist (z.B. es ist `REG_SZ` oder `REG_EXPAND_SZ`) und umgekehrt.

Bei einem Datentypeintrag von `multisz`, können Sie die spezielle Konstante Namens {`break`} in diesem Parameter verwenden für Zeilenumbruch (`nulls`).

Beispiel:

| `ValueData: 1.0`
| ``

Flags

Beschreibung: Dieser Parameter ist eine extra Option. Mehrere Optionen können verwendet werden getrennt durch ein Leerzeichen. Die folgenden werden hierbei unterstützt:

> createvalueifdoesntexist

> Wenn dieses Flag spezifiziert wird, dann wird Setup nur dann einen Eintrag generieren, wenn nicht bereits ein Eintrag hierfür vorhanden ist. Dieses Flag hat keinen Effekt wenn der Datentyp gleich none ist, oder wenn sie das deletevalue Flag verwenden.

> deletekey

> Wenn Sie dieses Flag verwenden, wird Setup zuerst einen bestehenden Eintrag entfernen wenn er vorhanden ist, mit allen darin vorhandenen subkeys. Wenn `ValueType` nicht none ist, dann wird eine neuer Schlüssel mit Eintrag erstellt.

> deletevalue

> Wenn Sie dieses Flag verwenden, wird Setup zuerst den Eintrag löschen wenn der Eintrag vorhanden ist. Wenn `ValueType` nicht auf none gesetzt wurde, dann wird der Schlüssel (Key) wenn er nicht vorhanden ist generiert und der neue Eintrag erstellt.

> dontcreatekey

> Wenn Sie dieses Flag verwenden, wird Setup keinen Schlüssel (Key) und Eintrag erstellen wenn nicht bereits einer vorhanden ist auf dem Endbenutzer System. Es wird keine Fehlermeldung erscheinen wenn der Schlüssel nicht existierte. Typisch für dieses Flag ist eine Kombination mit dem `uninsdeletekey` Flag, für das Löschen der Schlüssel (Keys) während der Uninstallation, aber keinen erstellen bei der Installation.

> noerror

> Keine Fehlermeldungen anzeigen, wenn Setup keinen Schlüssel oder Eintrag erstellen kann.

> preservestringtype

> Dieser Flag ist nur akzeptabel, wenn der `ValueType` Parameter gleich string oder expandsz ist. Wenn dieses Flag verwendet wird, und der Eintrag nicht existiert oder nicht vom Datentyp (`REG_SZ` oder `REG_EXPAND_SZ`) ist, dann wird er erstellt mit dem Datentyp des `ValueType` Parameters. Wenn der Eintrag bereits vorhanden ist und ein Datentyp von string ist, dann wird er überschrieben mit dem gleichen Datentyp wie er bereits hatte.

> uninsclearvalue

> Wenn die Anwendung deinstalliert wird, wird der Eintrag auf "" (`NULL`) gesetzt (Datentyp `REG_SZ`). Dieses Flag kann nicht mit dem `uninsdeletekey` Flag kombiniert werden.

> uninsdeletekey

> Wenn das Programm deinstalliert wird, wird der Schlüssel (Key) inklusive alle darin enthaltenen subkeys gelöscht. Es ist also KEINE so gute Idee, wenn sie dieses bei einem Schlüssel verwenden, den auch Windows benutzt. Sie sollten also dieses Flag nur verwenden für die Einträge der privaten Schlüssel Ihrer Anwendung!!!!!

> Beispiel FALSCH:

> | `Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "MyApp"; ValueData:` {`app`}`\MyApp.exe"; Flags: dontcreatekey uninsdeletekey <<<< FALSCH !!!!` `Hierbei würden ALLE Einträge aus dem Schlüssel >> \Microsoft\Windows\CurrentVersion\Run << ENTFERNT!!!!`
> | ``

> uninsdeletekeyifempty

> Wenn das Programm deinstalliert wird, wird der Schlüssel nur entfernt wenn keine subkeys darin enthalten sind. Dieses Flag kann kombiniert werden mit dem `uninsdeletevalue` Flag.

> uninsdeletevalue

> Löschen des Eintrages beim deinstallieren der Anwendung. Dieses Flag kann kombiniert werden mit dem `uninsdeletekeyifempty` Flag.

> Bemerke: In Inno Setup Versionen vor 1.1. Sie konnten dieses Flag zusammen mit der Datenart none benutzen und hatte die Funktion von dem `DeleteKeyIfEmpty` Flag. Diese Technik wird nicht mehr unterstützt. Sie müssen das uninsdeletekeyifempty Flag jetzt benutzen, um dieses zu vollenden.

Beispiel:

| `Flags: uninsdeletevalue`
| ``

Die [Icons] Sektion

Diese Sektion ist optional (Programmgruppe), aber wird wohl von den meisten Installationen verwendet. Es definiert ein Shortcut Setup das im Benutzer Startmenü (oder Programm Manager) und/oder anderswo so z.B. auf dem Desktop generiert wird.

Die Uninstall Aufruf - Datei wird erstellt vom Setup, also brauchen sie diese nicht manuell in der`[Icons]` Sektion hinzufügen. Als Standard, wird keine Uninstall Aufrufdatei hergestellt, wenn die Installation unter Windows 95/NT 4+ läuft — nur wenn diese unter Windows NT 3.51 läuft. Um einen Eintrag zu generieren benutzen Sie `AlwaysCreateUninstallIcon` in der`[Setup]` Sektion.

Achtung: Ab Inno Version 3.x wurde dieses geändert! Die Direktive `AlwaysCreateUninstallIcon` wurde entfernt!

Beispiel ab Version 3.0 für ein Uninstall Gruppeneintrag:

| `[Icons]` `Name:` {`group`}`\Uninstall MyApp; Filename: {uninstallexe}`
| ``

Hier ein Beispiel für einer`[Icons]` Sektion:

| `[Icons]` `Name:` {`group`}`\My Program; Filename:` {`app`}`\MYPROG.EXE; WorkingDir:` {`app`}
| ``

Nun folgend die unterstützten Parameter:

Name (erforderlich)

Beschreibung: Der Name und Standort von dem Shortcut (oder Programm Manager Aufruf) das hergestellt werden soll. Einige der Shell Ordner Konstanten oder Verzeichnis Konstanten dürfen hier verwendet werden. Denken Sie daran das Shortcuts als literale Dateien gespeichert werden die genau wie beim Dateinamen nicht alle Zeichen verwendet werden dürfen. Also, es ist nicht ratsam, wenn Sie zwei Dateien mit dem gleichen Namen haben nicht sinnvoll erscheint zwei Shortcuts zu generieren mit dem gleichen Namen.

Beispiel:

| `Name:` {`group`}`\My Program` `Name:` {`group`}`\Subfolder\My Program` `Name:` {`userdesktop`}`\My Program` `Name:` {`commonprograms`}`\My Program`
| ``

Filename (erforderlich)

Beschreibung: Der Befehlszeilen Dateiname für diesen Shortcut, der normalerweise mit einer Verzeichnis Konstante beginnt.

Beispiel:

| `Filename:` {`app`}`\MYPROG.EXE`
| ``

Parameters

Beschreibung: Optionale Befehlszeilen für diesen Shortcut, die auch Konstanten enthalten kann. Anführungszeichen können nur unter Windows 95/NT 4+ verwendet werden.

Beispiel:

| `Parameters: /play filename.mid`
| ``

WorkingDir

Beschreibung: Das Arbeits- (oder Start In) Verzeichnis für diesen Shortcut, dieses ist das Verzeichnis von dem aus das Programm gestartet wird. Wenn dieser Parameter nicht enthalten oder Leer ist, dann wird Windows ein Standardpfad verwenden, der wiederum unterschiedlich sein kann bei den diversen Windows Versionen. Dieser Parameter kann auch Konstanten verwenden.

Beispiel:

| `WorkingDir:` {`app`}
| ``

HotKey

Beschreibung: Das hot key (oder “shortcut key”) setzt das Shortcut, welches eine Kombination aus Zeichen bestehen kann mit welchem das Programm gestartet wird.

Beachte: Wenn Sie den shortcut key ändern und die Anwendung deinstallieren, dann wird Windows diesen weiter verwendet bis sie sich ausloggen oder einen Restart des Rechners durchführen.

Beispiel:

| `HotKey: ctrl+alt+k`
| ``

Comment

Beschreibung: Spezifiziert das Kommentar- (oder “Beschreibung”) Feld von dem Shortcut, die verwendet werden für das Popup (Speedtip) in Windows 2000/XP and Me. Frühere Windows Versionen ignorieren diesen Kommentar.

Beispiel:

| `Comment: This is my program`
| ``

IconFilename

Beschreibung: Der Dateiname des Bildes von einem Anwender Shortcut (lokalisiert auf dem Benutzersystem) der angezeigt wird. Dies kann eine ausführbare Datei (`.exe`,`.dll`) sein oder ein`.ico` Datei. Wenn dieser Parameter nicht spezifiziert ist oder Leer, Windows wird dann das Standardbild anzeigen. Dieser Parameter kann auch Konstanten beinhalten.

Beispiel:

| `IconFilename:` {`app`}`\myicon.ico`
| ``

IconIndex

Standartwert: 0

Beschreibung: Zero-based Index von dem Icon spezifiziert in dem `IconFilename`. Wenn `IconIndex` non-zero ist und `IconFilename` nicht spezifiziert oder Leer ist, dann ist `IconFilename` das gleiche Bild wie der Dateiname.

Beispiel:

| `IconIndex: 0`
| ``

Flags

Beschreibung: Diese Parameter sind extra Optionen. Mehrere Optionen können verwendet werden getrennt durch ein Leerzeichen. Die folgenden Optionen werden unterstützt:

> closeonexit

> Wenn dieses Flag gesetzt wird, dann wird Setup das “Schließen beim beenden” Eigenschaft setzen von diesem Shortcut. Dieses Flag hat nur einen Effekt, wenn das Shortcut eine MS-DOS Applikation ist (es endet mit`.pif` Extension). Wenn weder dieses Flag noch das dontcloseonexit Flag spezifiziert werden, dann wird Setup nicht versuchen diese Eigenschaft des Fensters zu ändern.

> createonlyiffileexists

> Wenn dieses Flag verwendet wird, dann wird der Installer nur einen Eintrag in der Programmgruppe anlegen wenn die Datei existiert.

> dontcloseonexit

> Das gleiche wie closeonexit, außer das Setup dann die Eigenschaft des Fensters “Schließen beim beenden” nicht markiert (Fenster wird nicht geschlossen).

> runmaximized

> Wenn dieses Flag gesetzt wird, dann setzt Setup die `Run` Einstellungen von diesem Shortcut auf “Maximal” so dass dann das Programm mit maximiertem Fenster startet. Dieses Flag wird ignoriert unter Windows NT 3.51.

> runminimized

> Wenn dieses Flag gesetzt wird, dann setzt Setup die `Run` Einstellungen von diesem Shortcut auf “Minimal” so dass dann das Programm mit minimiertem Fenster startet.

> uninsneveruninstall

> Gibt den Uninstaller an das der Eintrag nicht gelöscht werden soll.

> useapppaths

> Wenn dieses Flag verwendet wird, spezifiziert dieser Eintrag nur den Dateinamen (ohne Pfad) in dem `Filename` Parameter, und Setup holt sich den Pfadnamen aus dem Windows Registrierungsschlüssel:`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths` und setzt diesen automatisch mit ein. (Gut für Update)

Beispiel:

| `Flags: runminimized`
| ``

Die [Types] Sektion

Dieses Kapitel ist wahlweise freigestellt.

Es definiert und stellt somit alle Installationsarten zur Verfügung. Diese werden dann angezeigt auf der Komponenten Seite des Wizard.
Während der Kompilation wird ein Eintrag definiert, wenn Sie auch Komponenten in der Sektion`[Components]` definiert haben, auch dann wenn Sie keine Types definiert haben. Wenn Sie die `Default.iss` Original Message Datei verwenden (englische) Meldungen, dann sind diese Types dieselben, wie die Types im unteren Beispiel.

Hier ein Beispiel der Sektion`[Types]`:

| `[Types]` `Name: full; Description: Komplett Installation` `Name: compact; Description: Kompakt Installation` `Name: custom; Description: Anwender definierte Installation; Flags: iscustom`
| ``

Die folgende Liste enthält die unterstützenden Parameter:

Name (erforderlich)

Der interne Name des definierten Types. Verwendet wie die Parameter für Komponenten in der`[Components]` Sektion, welche beschreibt welche Types zu welchen Komponenten gehört.

Beispiel:

| `Name: full`
| ``

Description (erforderlich)

Die Beschreibung des definierten Types. Diese Beschreibung wird während der Installation angezeigt.

Beispiel:

| `Description: Komplett Installation`
| ``

Flags

Beschreibung: Dieser Parameter ist als Eingabe eine Extraoption. Mehrfache Optionen können verwendet werden, indem man sie durch Leerzeichen trennt.

Die folgenden Optionen werden hierbei unterstützt:

> iscustom

> Weist Setup an, dass die „Types“ ein kundenspezifischer Typ ist. Wann immer der Endbenutzer manuell die Bestandsteilauswahl während der Installation ändert, stellt Setup die Installationsart auf den kundenspezifischen Typ ein. Beachten Sie, dass, wenn Sie nicht einen kundenspezifischen Typen definieren, Setup dem Benutzer nur erlaubt, eine Installationsart und Bestandteile die Sie nicht mehr manuell wählen brauchen (select/unselect).

Beispiel:

| `Flags: iscustom`
| ``

Die [Components] Sektion

Dieses Kapitel ist wahlweise freigestellt. Es definiert alle Bestandteile, die Setup auf der Bestandsteilseite des Wizard für kundenspezielle „Types“ zeigt.

Hier ein Beispiel des Sektion`[Components]`:

| `[Components]` `Name: main; Description: Main Files; Types: full compact custom; Flags: fixed` `Name: help; Description: Help Files; Types: full`
| ``

Das obige Beispiel legt zwei Komponenten fest: Die “Main” Komponente, diese enthält, wenn der Endbenutzer ein „Types“ mit Namens- “full”, “compact” oder “custom” auswählt, und eine Komponente “Help” die Setup erhält, wenn der Endbenutzer den Types “full” auswählt.

Dann werden alle Dateien mit den Types “full” und “Help” der Komponentenparameter installiert. “custom”, wenn der Benutzer dies wünscht, obwohl “compact” nicht in der Types Liste der “Help” Komponente ist.

Das folgende ist eine Liste der unterstützten Parameter:

Name (erforderlich)

Beschreibung: Der interne Name der Komponente.

Beispiel:

| `Name: help`
| ``

Description (erforderlich)

Beschreibung: Die Beschreibung der Komponente. Dem Endbenutzer dieser Komponenten wird während der Installation angezeigt.

Beispiel:

| `Name: Help Files`
| ``

Types

Beschreibung: Liste der Types zu welcher diese Komponente gehört. Wenn der Endbenutzer eine Types von dieser Liste auswählt, wird diese Komponente installiert.

Wenn die örtlich fixed Flags nicht benutzt wird (sehen Sie unten), werden irgendwelche kundenspezifischen Types (Types mit dem iscustomflag) in dieser Liste von Setup ignoriert.

Beispiel:

| `Types: full compact`
| ``

ExtraDiskSpaceRequired

Beschreibung: Extra Speicherkapazität durch diese Komponente, ähnlich der Richtlinie ExtraDiskSpaceRequired für die`[Setup]` Sektion.

Beispiel:

| `ExtraDiskSpaceRequired: 0`
| ``

Flags

Dieser Parameter ist ein Set Extraoptionen. Mehrfache Optionen können verwendet werden, indem man sie durch ein Leerzeichen trennt.
Die folgenden Optionen werden unterstützt:

> fixed

> Weist Setup an, dass diese Komponente nicht oder gemischt durch den Benutzer während der Installation manuell bis zum Ende ausgewählt werden kann.

> restart

> Weist Setup an, den Benutzer zu bitten, das System, wenn diese Komponente installiert wird, unabhängig davon ob dieses notwendig ist neu zu starten (zum Beispiel wegen`[Files]` Sektionseinträge mit `RestartReplaceFlag`). Wie `AlwaysRestart` aber pro Komponente.

> Disablenouninstallwarning

> Weist Setup an, nicht zu warnen, wenn der Benutzer, diese Komponente nicht auswählt, beim deinstallieren der Anwendung wenn diese bereits auf dem Rechner des Endverbrauchers ist.

> Abhängig von der Kompliziertheit Ihrer Komponente, können Sie versuchen, die abgewählten Komponenten in der Sektion`[InstallDelete]` automatisch zu benutzen um diese zu deinstallieren nach einer Installation.

Beispiel:

| `Flags: fixed`
| ``

Über den Autor: Jonny Kwekkeboom ist ein dBASE Programmierer der seit Jahren mit Inno, ISX und IsTools Skripte generiert für eigene und andere Benutzer, des Weiteren hat er ein Generator Tool in dBASE speziell für dBASE Anwendungen (ScriptMaker) erstellt. Er hat auch eine komplette Inno Hilfe ins deutsche übersetzt, die zur Verfügung steht, innerhalb ScriptMaker.
Ebenso wurde der Translator ins deutsche Übersetzt. Programmiert hat er seit dBASE III, dBASE IV 1.0 – dBASE IV 2.0 (DOS und Windowsversion) zu Visual dBASE 7.5 und alle darauf folgenden Versionen dB2K 1.0 – dB2K 0.4, dBASE SE und dBASE Plus 2.5.
Homepage: http://www.HiSoft2000.de