Banner-Grafik
Referenz

Erweiterungen für Windows Setup

Es gibt drei Möglichkeiten, Windows Setup zu erweitern:

Ausführen der .inf-Dateien von der Befehlszeile

Mit Hilfe der Windows-Systembefehle Rundll.exe oder Rundll32.exe können Sie einen Installationsbereich in einer .inf-Datei ausführen. Die Syntax der Befehlszeile lautet folgendermaßen:

RunDll setupx.dll,InstallHinfSection <section> <reboot-mode> <inf-name>

Der Parameter <section> steht für einen Installationsbereich in der .inf-Datei. Beispielsweise wird mit folgender Befehlszeile die optionale Komponente Spiele installiert. Falls Setup einen Neustart des Computers voraussetzt, wird der Benutzer außerdem gefragt, ob der Computer unmittelbar nach Abschluss der Installation neu gestartet werden soll. (Die Bedeutung der Werte für den Parameter <reboot-mode> wird weiter unten in "Verwenden der Parameter für den Neustart-Modus" erläutert.)

RunDll setupx.dll,InstallHinfSection games 4 applets.inf

Anmerkungen

Verwenden der Parameter für den Neustart-Modus

Es stehen fünf Neustart-Modi zur Verfügung:

define HOW_NEVER_REBOOT 0
define HOW_ALWAYS_SILENT_REBOOT 1
define HOW_ALWAYS_PROMPT_REBOOT 2
define HOW_SILENT_REBOOT 3
define HOW_PROMPT_REBOOT 4

Gibt <inf-name> anstatt einer Windows-.inf-Datei Ihre .inf-Datei an, müssen Sie zu den oben angezeigten Werten 128 hinzufügen. Im oben stehenden Beispiel, mit dem die optionale Komponente Spiele installiert wird, ist <reboot-mode> auf 4 gesetzt. Dies ist notwendig, da es sich bei Applets.inf um eine Windows-.inf-Datei handelt. Wenn Sie eine optionale Komponente installieren, die über eine eigene .inf-Datei verfügt, müssen Sie <reboot-mode> auf 132 setzen. Fügen Sie dem Parameter <reboot-mode> 128 hinzu, dann müssen sich sämtliche zu installierenden Dateien im selben Ordner auf dem Installationsdatenträger wie Ihre .inf-Datei befinden.

Anmerkung

In der folgenden Liste werden die einzelnen Neustart-Modi erläutert:

NeverReboot
Setzen Sie <reboot-mode> auf 0 oder 128. Der Computer wird in keinem Fall neu gestartet. Es bleibt der Entscheidung des Clients überlassen, ob der Computer neu gestartet werden soll. Für Setup bedeutet dies, dass eine Datei C:\Windows\Wininit.ini vorhanden ist, für die als Größe nicht null Byte angegeben ist.

AlwaysSilentReboot
Setzen Sie <reboot-mode> auf 1 oder 129. Der Benutzer wird nicht aufgefordert, den Computer neu zu starten, und der Computer wird stets neu gestartet.

AlwaysPromptReboot
Setzen Sie <reboot-mode> auf 2 oder 130. Der Benutzer wird jedesmal gefragt, ob der Computer neu gestartet werden soll oder nicht. Setup versucht nicht festzustellen, ob ein Neustart des Computers erforderlich ist.

SilentReboot
Setzen Sie <reboot-mode> auf 3 oder 131. Wenn Setup feststellt, dass der Computer neu gestartet werden muss, findet dies ohne Benutzereingaben statt.

PromptReboot
Setzen Sie <reboot-mode> auf 4 oder 132. Wenn Setup feststellt, dass der Computer neu gestartet werden muss, wird ein entsprechendes Dialogfeld für den Benutzer angezeigt.

Zurück zum Anfang der Datei

Installieren optionaler Komponenten aus 32-Bit-Anwendungscode

Nach der Installation von Windows auf einem Computer müssen Sie gegebenenfalls eine oder mehrere der optionalen Windows-Komponenten hinzufügen (beispielsweise Spiele). Diese Art von Installation, die sich anschließt, nachdem Setup zuerst Windows installiert hat, wird als Wartungsinstallation bezeichnet. In der Regel wird die Wartungsinstallation aus Windows heraus durch Klicken auf das Symbol Software in der Systemsteuerung gestartet. Hersteller und Anbieter der optionalen Softwarekomponente können jedoch auch wie folgt vorgehen: Sie können die optionale Komponente über die Verwendung des Aufrufs CreateProcess in einer 32-Bit-Anwendung installieren.

Anmerkung

Sie können eine optionale Komponente aus einer 32-Bit-Anwendung installieren, indem Sie eine Kombination aus den unten beschriebenen Verfahren verwenden.

Überprüfen der Registrierung

Überprüfen Sie zunächst die Registrierung, um festzustellen, ob die optionale Komponente derzeit installiert ist (oder suchen Sie nach den Dateien). Der Registrierungsschlüssel, in dem sich die Informationen über alle derzeit installierten optionalen Komponenten befinden, lautet wie folgt:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SETUP\OptionalComponents]

Unter diesem Schlüssel finden sich Werte, die auf Teilschlüssel verweisen, und jeder Teilschlüssel enthält Informationen über die installierten optionalen Komponenten sowie Informationen, die zum Installieren einer neuen optionalen Komponente benötigt werden. Angenommen, Sie möchten Spiele als optionale Komponente installieren. Um festzustellen, ob Spiele installiert ist, überprüfen Sie folgenden Teilschlüsselwert unter dem Schlüssel OptionalComponents:

"Games"="Games"

Öffnen Sie anschließend den Schlüssel "Games" unter dem Schlüssel mit den optionalen Komponenten, um Folgendes anzuzeigen:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SETUP\OptionalComponents\Games]
"INF"="applets.inf"
"Section"="games"
"Installed"="0"

Dies zeigt, das die optionale Komponente Spiele auf diesem Windows-Computer nicht installiert ist, da das Flag "Installed" auf 0 gesetzt ist.

Kodieren des Funktionsaufrufs CreateProcess

Verwenden Sie zum Installieren einer optionalen Komponente, wie z. B. Spiele, die Werte "INF" und "Section" aus dem oben stehenden Schlüssel in einem CreateProcess-Aufruf, der Setupx.dll über RUNDLL ausführt. Dieser Vorgang führt zum gleichen Ergebnis wie die Installation einer Komponente über Software in der Systemsteuerung. Die Syntax des Parameters lpCommandLine im Aufruf CreateProcess sieht wie folgt aus:

RunDll setupx.dll,InstallHinfSection <section> <reboot-mode> <inf-name>

Die Werte für die Parameter <section> und <inf-name> finden Sie in dem oben beschriebenen Registrierungsschlüssel. Beispielsweise wird mit dem folgenden CreateProcess-Aufruf die optionale Komponente Spiele installiert. Falls Windows Setup feststellt, dass ein Neustart des Computers erforderlich ist, wird der Benutzer außerdem gefragt, ob der Computer unmittelbar nach Abschluss der Installation neu gestartet werden soll. (Die Bedeutung der Werte für den Parameter <reboot-mode> wird weiter unten im Abschnitt "Verwenden der Parameter für den Neustart-Modus" erläutert.)

RunDll setupx.dll,InstallHinfSection games 4 applets.inf

Anmerkung

Ihre Installationsanwendung darf keinen Code enthalten, der nach dem CreateProcess-Aufruf ausgeführt wird. Hat Setupx.dll einmal die Steuerung übernommen, kann der zusätzliche Code einen Neustart des Computers bewirken. Wenn Ihr Installationsvorgang zusätzlichen Code erfordert, der nach dem Aufruf von CreateProcess durch den vorhandenen Code ausgeführt wird, verwenden Sie die Liste RunOnce in Ihrer .inf-Datei.

Anmerkung

Ausführen einer .inf-Datei durch Klicken mit der rechten Maustaste

Setup erkennt den Namen eines bestimmten Installationsbereichs, DefaultInstall, in .inf-Dateien, mit denen optionale Komponenten installiert werden. Wenn Sie einen [DefaultInstall]-Bereich in Ihrer .inf-Datei verwenden, kann der Benutzer auf der Benutzeroberfläche von 32-Bit-Versionen von Windows mit der rechten Maustaste auf ein Dateisymbol für die .inf-Datei klicken, um den Bereich [DefaultInstall] auszuführen. (Nachdem der Benutzer mit der rechten Maustaste auf das Symbol für die .inf-Datei geklickt hat, wird ein Popup-Menü angezeigt, in dem der Benutzer die Option Installieren wählen muss, damit der Bereich [DefaultInstall] tatsächlich ausgeführt wird.)

Das Verwenden eines Installationsbereichs namens [DefaultInstall] in Ihrer .inf-Datei stellt eine praktische Methode dar, die optionale Komponente zu installieren. Dies ist besonders in der Entwicklungsphase der Anwendung hilfreich. Wenn Sie eine Installationsanwendung schreiben möchten, verfügen Sie bereits vor der Entwicklung des Codes für die Installationsanwendung über eine Methode zum Installieren der optionalen Komponente.

Im Folgenden sehen Sie ein Beispiel für den Bereich DefaultInstall mit typischen Einträgen:

[DefaultInstall]
CopyFiles=QCD.copy.prog, QCD.copy.hlp, QCD.copy.win, QCD.copy.sys, QCD.copy.inf
UpdateInis=QCD.Links
AddReg=QCD.reg, QCD.run
Uninstall=FlexiCD_remove