Richtlinien für die Implementierung von Finish-Install Aktionen

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.

Aktionen zum Abschließen der Installation können von einem Installationsprogramm (klasseninstaller, Klassen-Co-Installer oder Geräte-Co-Installer) ausgeführt werden. In seinen Aktionen zur Endinstallation kann ein Installationsprogramm ein ausführbares Programm ausführen, einen Prozess erstellen, einen Thread erstellen oder Code im Installationsabschluss-Prozess des Gerätetreibers ausführen.

Beachten Sie die folgenden Richtlinien, wenn Sie Aktionen zum Abschließen der Installation in einem Installationsprogramm implementieren:

  • Aktionen zum Abschließen der Installation können nicht verwendet werden, um kritische Einstellungen anzuwenden, die erforderlich sind, damit ein Gerät funktioniert.

  • Ein Installationsprogramm sollte warten, bis die Finish-Install-Aktion abgeschlossen ist, wenn die Fertigstellungsinstallationsaktion bis zum Abschluss ausgeführt werden muss.

    Um beispielsweise zu vermeiden, dass durch einen Systemneustart unterbrochen wird, während eine Aktion zum Abschließen der Installation noch ausgeführt wird, sollte ein Installationsprogramm auf den Abschluss der Installation warten, bevor das Installationsprogramm von der Verarbeitung einer DIF_FINISHINSTALL_ACTION-Anforderung zurückkehrt.

  • Eine Fertiginstallationsaktion sollte einen Benutzer über den Fortschritt informieren.

    Windows informiert einen Benutzer nicht darüber, dass die Aktionen zum Abschließen der Installation ausgeführt werden oder dass Die Fertiginstallation erfolgreich ist oder fehlschlägt. Aus diesem Grund sollte eine Fertigstellen-Installation-Aktion den Benutzer darüber informieren, dass eine Fertigstellen-Installation-Aktion ausgeführt wird, und den Benutzer dann darüber benachrichtigen, dass die Aktion zum Abschließen der Installation erfolgreich war oder fehlgeschlagen ist.

  • Ein Installationsprogramm muss die Situation behandeln, in der ein Systemneustart erforderlich ist, um die Aktionen zum Abschließen der Installation abzuschließen.

    Wenn für eine Aktion zum Abschließen der Installation ein Neustart des Systems erforderlich ist, bevor die Einstellungen auf dem Gerät wirksam werden, sollte das Installationsprogramm das flag DI_NEEDREBOOT festlegen, bevor es von der Verarbeitung einer DIF_FINISHINSTALL_ACTION-Anforderung zurückkehrt. Eine Geräteinstallation sollte jedoch keinen Neustart eines Computers erzwingen, es sei denn, es ist unbedingt erforderlich.

    Weitere Informationen dazu, wann eine Geräteinstallation einen Systemneustart erfordern soll, finden Sie unter Geräteinstallationen und Systemneustarts.

  • Ein Installationsprogramm sollte die Situation behandeln, in der eine Abschlussinstallationsaktion fehlschlägt, aber erneut versucht werden sollte. Das Installationsprogramm kann beispielsweise auf diese Weise fehlschlagen, wenn das gerät, das installiert wird, aus dem System entfernt wurde.

    Vor Windows 8 sollte ein Installationsprogramm den Benutzer über den temporären Fehler benachrichtigen, alle erforderlichen Bereinigungen durchführen und einen Win32-Fehlercode für die DIF_FINISHINSTALL_ACTION-Anforderung zurückgeben. Wenn ein Installationsprogramm einen Win32-Fehlercode für eine DIF_FINISHINSTALL_ACTION-Anforderung zurückgibt, löscht Windows das Gerät nicht als gekennzeichnet, um eine Fertiginstallationsaktion für den Geräteknoten (Devnode) auszuführen.

    Ab Windows 8 verhindert die Rückgabe eines Fehlercodes jedoch nicht, dass das Flag gelöscht wird. Wenn die Aktion zum Abschließen der Installation einen Fehler aufweist, muss sie dem Benutzer die Möglichkeit geben, sie in Zukunft erneut auszuführen.

    Während dieses Flag für das Gerät festgelegt bleibt, führt Windows einen neuen Fertiginstallationsvorgang aus.

    Weitere Informationen finden Sie unter Ausführen von Finish-Install Aktionen.

  • Ein Installationsprogramm sollte die Situation behandeln, in der eine Abschlussinstallationsaktion fehlschlägt und nicht erneut versucht werden sollte.

    Wenn es aufgrund eines Fehlers unmöglich ist, dass eine Fertiginstallationsaktion erfolgreich ist, sollte ein Installationsprogramm den Benutzer benachrichtigen, dass die Aktion nicht abgeschlossen werden kann, und dann alle erforderlichen Bereinigungen durchführen. In diesem Fall sollte ein Co-Installer NO_ERROR und ein Geräte- oder Klasseninstallationsprogramm ERROR_DI_DO_DEFAULT zurückgeben. Windows löscht anschließend das Gerät als gekennzeichnet, um eine Aktion zum Abschließen der Installation für den Devnode auszuführen, und ruft SetupDiFinishInstallAction auf, um die Standardvorgänge für die Endinstallation auszuführen.

  • Wenn das Installationsprogramm einen DIF_NEWDEVICEWIZARD_FINISHINSTALL DIF-Code verarbeitet, sollte überprüft werden, ob Aktionen zur Endinstallation erforderlich sind. Das Installationsprogramm sollte das DI_FLAGSEX_FINISHINSTALL_ACTION-Flag nur festlegen, wenn Aktionen zur Endinstallation ausgeführt werden müssen. Wenn dieses Flag unnötigerweise festgelegt ist, erhalten Benutzer während der Neuinstallation des Treibers eine zusätzliche Geräteinstallationsaufforderung, und für die DIF_FINISHINSTALL_ACTION Anforderung müssen keine Aktionen zum Abschließen der Installation ausgeführt werden.

    Betrachten Sie beispielsweise ein Geräte-Co-Installationsprogramm, bei dem die Aktion Fertigstellen-Installation eine Anwendung installiert, die erforderlich ist, damit das Gerät ordnungsgemäß funktioniert. Bei instance wird die IntelliType-Anwendung möglicherweise durch die Aktion "Fertigstellen" für eine Microsoft-Tastatur installiert. Wenn ein solcher Co-Installer den DIF_NEWDEVICEWIZARD_FINISHINSTALL DIF-Code verarbeitet, sollte überprüft werden, ob die Anwendung bereits installiert ist. Wenn die Anwendung bereits installiert ist, muss keine Fertiginstallationsaktion ausgeführt werden, und daher sollte das flag DI_FLAGSEX_FINISHINSTALL_ACTION nicht festgelegt werden. Wenn das Co-Installationsprogramm in diesem Fall das flag DI_FLAGSEX_FINISHINSTALL_ACTION fälschlicherweise festlegt, erhält der Benutzer eine unerwünschte Aufforderung der Benutzerkontensteuerung (User Account Control, UAC), um die Berechtigung zum Fortsetzen zu erhalten, obwohl die Aktion "Fertigstellen installieren" keine Aktion ausgeführt werden muss.

    Hinweis Wenn die UAC ab Windows 7 auf die Standardeinstellung ("Nur benachrichtigen, wenn Programme versuchen, Änderungen an meinem Computer vorzunehmen") oder auf eine niedrigere Einstellung festgelegt ist, zeigt das Betriebssystem die Aufforderung für Benutzer mit Administratorrechten nicht an, wenn es Fertiginstallationsaktionen verarbeitet.

  • Bevor Sie ein Installationsprogramm registrieren, das Fertigstellen-Installationsaktionen implementiert, müssen Sie alle Dateien einschließen und installieren, die zum Ausführen der Aktionen für die Endinstallation in der CopyFiles-Direktive der INF-Datei für das Gerät erforderlich sind. Dies ist erforderlich, damit die Dateien während der Installation an einem Speicherort platziert werden, auf den das Installationsprogramm zugreifen kann.

    Weitere Informationen zu den Registrierungsanforderungen eines Geräts oder Klassen-Co-Installers finden Sie unter Registrieren eines Klassen-Co-Installers.