Erstellen eines “Inno” Skript
Part1: Die Skript Anatomie
von: Jonny Kwekkeboom

 
   


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.

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:

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  (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.

AdminPrivilegesRequired  (Version < 3.0.4)  PrivilegesRequired  (ab Version 3.0.4)

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.

AdminPrivilegesRequired kann den Wert false oder auch true annehmen.

Diese Direktive wurde ab der Version 3.0.4 von Inno und ISX geändert zu PrivilegesRequired wird zwar nicht als Fehler angezeigt sondern nur als Warnung.

Diese neue Direktive ab Version 3.0.4 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 Source 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 diesen nicht immer anzugeben braucht und 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 bzip/9 erreicht. Somit wird dann auch unsere Setup.exe am kleinsten.

Beispiel:
 
 
Compression=bzip/9
   

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=HiSoft2000 Jonny Kwekkeboom © 2002
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 Section aus der ScriptMaker original Installation Skript Datei.
 
 
[Setup]
Compression=bzip/9
OutPutDir=C:\ScriptMakerV3\Setup
OutputBaseFilename=Setup_ScriptMaker
SourceDir=C:\ScriptMakerV3
UseSetupLdr=YES
PrivilegesRequired=admin
AppName=ScriptMaker
AppId=SM_Plus
AppVersion=3.2.0.4
AppVerName=ScriptMaker version 3.2.0.4
AppMutex=ScriptMaker_Mutex
ChangesAssociations=YES
DefaultDirName={pf}\ScriptMaker
DefaultGroupName=ScriptMaker
DisableStartupPrompt=YES
;MessagesFile=C:\Inno Setup 3\Default.isl
AppCopyright=HiSoft2000 Jonny Kwekkeboom © 2002
BackColor=$FCF9DC
BackColor2=$B05757
WindowVisible=YES
WizardImageFile=C:\ScriptMakerV3\Setup\WizModernImage3.bmp
WizardSmallImageFile=C:\ScriptMakerV3\Setup\WizModernSmallImage3.bmp
UserInfoPage=YES
DisableDirPage=YES
DisableReadyPage=YES
UsePreviousAppDir=YES
UninstallFilesDir={pf}\ScriptMaker\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] Sektion 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 Source Dateien müssen sich hierbei im Verzeichnis der Setup Direktive SourceDir und 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 in ISX 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
   

Hier ein Beispiel für eine Tasks Sektion unter Inno:
 
 
[Tasks]
Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main
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:  Nur in ISX (My Inno Setup Extension) können Tasks mit Kindtasks angezeigt werden. Sichtbar werden diese dann erst wenn auch die Setup Direktive ShowTasksTreeLines=YES in der [Setup] Sektion gesetzt wurde!

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 ExemplarModus, 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 (nur in My Inno Setup Extension ISX)

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:

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:

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 ISX Hilfe ins deutsche übersetzt, die zur Verfügung steht, auf der Homepage von ISX zum herunter laden.
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.1.
Homepage: http://www.HiSoft2000.de