Schreiben von Kursinstallationsprogrammen und Co-Installers
Hinweis
In diesem Abschnitt beschriebene Features werden in universellen oder mobilen Treiberpaketen nicht unterstützt. Weitere Informationen finden Sie unter Verwenden einer universellen INF-Datei.
Dieser Abschnitt enthält die Richtlinien, die Sie beim Schreiben eines Co-Installers befolgen sollten:
Anzeigen einer Benutzeroberfläche
Speichern des Geräteinstallationsstatus
Laden ausführbarer dateien oder DLL-Dateien
Starten anderer Prozesse oder Dienste
Weitere Informationen zum Schreiben eines Co-Installers finden Sie unter Schreiben eines Co-Installers.
Anzeigen einer Benutzeroberfläche
Die Geräteinstallation wird hauptsächlich in einem Systemdienst (nicht interaktiv) ausgeführt. Daher kann ein Benutzer keine Benutzeroberfläche anzeigen oder darauf reagieren, die in diesem Kontext angezeigt wird. Jedes Dialogfeld, das während der Verarbeitung eines DIF-Codes (Device Installation Function) im Co-Installer bereitgestellt wird, bewirkt, dass die Geräteinstallation nicht mehr reagiert.
In den meisten Fällen sollten Co-Installer nicht mit dem Benutzer interagieren, außer während der Verarbeitung einer Fertiginstallationsaktion. Aktionen zum Abschließen der Installation werden in einem interaktiven Kontext ausgeführt.
Hinweis Bei Co-Installern sollte ein DIF-Code mit ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION nicht fehlschlagen, da die Geräteinstallation dadurch fehlschlägt. Wenn für die Geräteinstallation eine Benutzerinteraktion erforderlich ist, sollten Co-Installationsprogramme Aktionen zum Abschließen der Installation unterstützen.
Speichern des Geräteinstallationsstatus
Speichern Sie den Geräteinstallationsstatus nicht in der DLL (Dynamic Link Library) des Co-Installers . Da Windows die DLL in der Regel entlädt, nachdem ein DIF-Code vom Installationsprogramm verarbeitet wurde, werden alle Zustandsinformationen, die in der DLL gespeichert sind, nicht beibehalten.
Um den Zustand des Geräteinstallationsprogramms sicher beizubehalten, sollten Klasseninstallationsprogramme oder Co-Installer die Zustandsinformationen als Eigenschaften innerhalb des Treiberschlüssels des Geräts in der Registrierung speichern. Gehen Sie hierzu folgendermaßen vor:
Um ein Registrierungshandle für den Treiberschlüssel für ein Gerät instance abzurufen, verwenden Sie SetupDiOpenDevRegKey, wobei der KeyType-Parameter auf DIREG_DRV festgelegt ist.
Verwenden Sie SetupDiGetDevicePropertyKeys (zum Abrufen aller Eigenschaftenschlüssel für ein Gerät instance) oder SetupDiGetDeviceProperty (zum Abrufen eines angegebenen Gerätes instance Eigenschaftenschlüssels).
Verwenden Sie SetupDiSetDeviceProperty, um das Gerät instance Eigenschaftenschlüssel zu speichern.
Laden ausführbarer dateien oder DLL-Dateien
Wenn Ihr Co-Installer versucht, eine nicht signierte ausführbare Datei oder DLL auf einer Windows-64-Bit-Plattform zu laden, verhindern die Betriebssysteme, dass sie in dieser sicheren Umgebung geladen wird.
Zum sicheren Laden einer ausführbaren Datei oder DLL durch einen Klasseninstallationsprogramm oder Co-Installer wird dringend empfohlen, dass die ausführbare Datei oder DLL in Ihrem digital signierten Treiberpaket enthalten ist. Weitere Informationen zum Signieren von Treiberpaketen finden Sie unter Treibersignatur.
Hinweis Klasseninstallationsprogramme und Co-Installer dürfen DLL-Module nicht durch explizite Funktionsaufrufe wie LoadLibrary oder das Erstellen von Linkabhängigkeiten laden.
Starten anderer Prozesse oder Dienste
Während der Geräteinstallation kann Windows keine zusätzlichen Prozesse nachverfolgen und kann nicht ermitteln, was sie tun oder wann sie fertig sind. Beispielsweise kann Windows das Gerät starten oder beenden oder einen Systemneustart initiieren, während der Prozess eine kritische Aktion ausführt.
In den meisten Fällen sollten Co-Installer keine anderen Prozesse oder Dienste starten. Installationsprogramme können jedoch andere Prozesse sicher starten, indem sie CreateProcess über eine Funktion oder einen Dialog aufrufen, die durch eine Aktion zum Abschließen der Installation angezeigt wird. Das Installationsprogramm darf dem Benutzer die Fortsetzung des Dialogfelds oder der Prozedur erst ermöglichen, wenn der erstellte Prozess beendet wurde.