Bannergrafik
Referenz

Erweiterungen für Windows Setup

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

Ausführen der ".INF"-Dateien von der Befehlszeile aus

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

rundll setupx.dll,InstallHinfSection <Abschnitt> <Neustartmodus> <Inf-Name>

Der Parameter <Abschnitt> steht für einen Installationsabschnitt in der .INF-Datei. Beispielsweise wird mit folgender Befehlszeile die optionale Komponente Spiele installiert. Falls Setup festlegt, 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 <Neustartmodus> wird weiter unten unter "Verwenden der Parameter für den Neustart-Modus" erläutert.)

Rundll setupx.dll,InstallHinfSection Spiele 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> statt einer Windows-.INF-Datei eine eigene .INF-Datei an, müssen Sie zu den oben angezeigten Werten den Wert 128 addieren. Im Beispiel oben, mit dem die optionale Komponente Spiele installiert wird, ist <Neustartmodus> auf den Wert 4 gesetzt. Dies ist erforderlich, 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 <Neustartmodus> auf 132 setzen. Falls Sie zum Parameter <Neustartmodus> den Wert 128 addieren, müssen sich sämtliche zu installierenden Dateien auf dem Installationsdatenträger im selben Ordner wie Ihre .INF-Datei befinden.

Anmerkung

In der folgenden Liste werden die einzelnen Neustartmodi erläutert:

NeverReboot
Setzen Sie <Neustartmodus> 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 <Neustartmodus> auf 1 oder 129. Der Benutzer wird nicht zum Neustart des Computers aufgefordert, aber der Computer wird immer neu gestartet.

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

SilentReboot
Setzen Sie <Neustartmodus> auf 3 oder 131. Wenn Setup feststellt, dass der Computer neu gestartet werden muss, wird dies ohne Benutzereingaben ausgeführt.

PromptReboot
Setzen Sie <Neustartmodus> auf 4 oder 132. Wenn Setup feststellt, dass der Computer neu gestartet werden muss, wird für den Benutzer ein entsprechendes Dialogfeld 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":

"Spiele"="Spiele"

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

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

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

Codieren 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. Dies 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> <Neustartmodus> <Inf-Name>

Die Werte für die Parameter <Abschnitt> 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 <Neustartmodus> wird weiter unten im Abschnitt "Verwenden der Parameter für den Neustart-Modus" erläutert.)

rundll setupx.dll,InstallHinfSection Spiele 4 applets.inf

Anmerkung

Ihre Installationsanwendung darf keinen Code enthalten, der nach dem CreateProcess-Aufruf ausgeführt wird. Wenn die Steuerung einmal an Setupx.dll übergegangen ist, wird durch den zusätzlichen Code möglicherweise ein Neustart des Computers ausgelöst. Wenn Ihr Installationsvorgang zusätzlichen Code erfordert, der nach dem Aufruf von CreateProcess durch den vorhandenen Code ausgeführt wird, verwenden Sie die RunOnce-Liste in Ihrer .INF-Datei.

Anmerkung

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

Setup erkennt in .INF-Dateien den Namen eines bestimmten Installationsabschnitts, DefaultInstall, mit denen optionale Komponenten installiert werden. Wenn Sie einen Abschnitt [DefaultInstall] in Ihrer .INF-Datei verwenden, kann der Benutzer bei 32-Bit-Versionen von Windows auf der Benutzeroberfläche mit der rechten Maustaste auf ein Dateisymbol für die .INF-Datei klicken, um den Abschnitt [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 Abschnitt [DefaultInstall] tatsächlich ausgeführt wird.)

Das Verwenden eines Installationsabschnitts namens [DefaultInstall] in Ihrer .INF-Datei stellt eine praktische Methode dar, die optionale Komponente zu installieren. Dies ist besonders während der Entwicklung 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 Abschnitt 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