Partager via


Instructions pour l’implémentation d’actions Finish-Install

Notes

Les fonctionnalités décrites dans cette section ne sont pas prises en charge dans les packages de pilotes universels ou mobiles. Consultez Utilisation d’un fichier INF universel.

Les actions terminer l’installation peuvent être exécutées par un programme d’installation (programme d’installation de classe, co-programme d’installation de classe ou co-programme d’installation d’appareil). Dans ses actions de fin d’installation, un programme d’installation peut exécuter un programme exécutable, créer un processus, créer un thread ou exécuter du code dans le processus d’installation finale-installation du pilote de périphérique.

Tenez compte des instructions suivantes lorsque vous implémentez des actions de fin d’installation dans un programme d’installation :

  • Les actions de fin d’installation ne peuvent pas être utilisées pour appliquer les paramètres critiques nécessaires au fonctionnement d’un appareil.

  • Un programme d’installation doit attendre la fin de l’action terminer l’installation si l’action terminer l’installation doit s’exécuter jusqu’à l’achèvement.

    Par exemple, pour éviter d’être interrompu par un redémarrage du système alors qu’une action fin-installation est toujours en cours d’exécution, un programme d’installation doit attendre la fin de l’action terminer l’installation avant que le programme d’installation ne revienne du traitement d’une demande de DIF_FINISHINSTALL_ACTION .

  • Une action terminer l’installation doit informer un utilisateur de la progression.

    Windows n’informe pas un utilisateur que les actions de fin d’installation sont en cours d’exécution ou que les actions de fin d’installation réussissent ou échouent. Par conséquent, une action terminer-installer doit informer l’utilisateur qu’une action terminer-installer est en cours, puis informer l’utilisateur que l’action terminer l’installation a réussi ou échoué.

  • Un programme d’installation doit gérer la situation où un redémarrage du système est nécessaire pour effectuer les actions de fin-installation.

    Si une action de fin d’installation nécessite un redémarrage du système avant que les paramètres ne prennent effet sur l’appareil, le programme d’installation doit définir l’indicateur DI_NEEDREBOOT avant de revenir du traitement d’une demande de DIF_FINISHINSTALL_ACTION . Toutefois, une installation d’appareil ne doit pas forcer le redémarrage d’un ordinateur, sauf si cela est absolument nécessaire.

    Pour plus d’informations sur le moment où une installation d’appareil doit nécessiter un redémarrage du système, consultez Installations d’appareils et redémarrages du système.

  • Un programme d’installation doit gérer la situation où une action terminer l’installation échoue, mais doit être tenté à nouveau. Par exemple, le programme d’installation peut échouer de cette manière si l’appareil en cours d’installation a été supprimé du système.

    Avant Windows 8, si une action de fin d’installation échoue, mais doit être tentée à nouveau, un programme d’installation doit informer l’utilisateur de l’échec temporaire, effectuer tout nettoyage nécessaire et renvoyer un code d’erreur Win32 pour la demande de DIF_FINISHINSTALL_ACTION. Si un programme d’installation retourne un code d’erreur Win32 pour une demande de DIF_FINISHINSTALL_ACTION, Windows ne efface pas l’appareil comme ayant été marqué pour effectuer une action d’installation de fin pour le nœud de l’appareil (devnode).

    Toutefois, à compter de Windows 8, le renvoi d’un code d’erreur n’empêche pas l’effacement de l’indicateur. Si l’action terminer l’installation a une erreur, elle doit fournir à l’utilisateur la possibilité de l’exécuter à nouveau à l’avenir.

    Bien que cet indicateur reste défini pour l’appareil, Windows exécute un nouveau processus d’installation de fin et d’installation.

    Pour plus d’informations, consultez Exécution d’actions Finish-Install.

  • Un programme d’installation doit gérer la situation où une action de fin d’installation échoue et ne doit pas être tentée à nouveau.

    Si une erreur rend impossible la réussite d’une action de fin d’installation, un programme d’installation doit informer l’utilisateur que l’action ne peut pas être effectuée, puis effectuer le nettoyage nécessaire. Dans ce cas, un co-programme d’installation doit retourner NO_ERROR et un programme d’installation d’appareil ou de classe doit retourner ERROR_DI_DO_DEFAULT. Windows efface par la suite l’appareil comme ayant été marqué pour effectuer une action d’installation de fin pour le devnode et appelle SetupDiFinishInstallAction pour effectuer les opérations de fin-installation par défaut.

  • Lorsque le programme d’installation traite un code DIF DIF_NEWDEVICEWIZARD_FINISHINSTALL, il doit case activée pour voir si des actions de fin d’installation sont nécessaires. Le programme d’installation doit uniquement définir l’indicateur DI_FLAGSEX_FINISHINSTALL_ACTION s’il existe des actions de fin-installation qui doivent être effectuées. Si cet indicateur est défini inutilement, les utilisateurs reçoivent une invite d’installation d’appareil supplémentaire lors de la réinstallation du pilote, et la demande de DIF_FINISHINSTALL_ACTION n’a aucune action d’installation de fin à effectuer.

    Par exemple, considérez un co-programme d’installation d’appareil où l’action terminer-installer installe une application requise pour que l’appareil fonctionne correctement. Par instance, l’action terminer-installer pour un clavier Microsoft peut installer l’application IntelliType. Lorsqu’un tel co-programme d’installation traite le code DIF DIF_NEWDEVICEWIZARD_FINISHINSTALL, il doit case activée de voir si l’application est déjà installée. Si l’application est déjà installée, il n’y a aucune action d’installation finale à effectuer. Par conséquent, l’indicateur DI_FLAGSEX_FINISHINSTALL_ACTION ne doit pas être défini. Dans ce cas, si le co-programme d’installation définit incorrectement l’indicateur DI_FLAGSEX_FINISHINSTALL_ACTION, l’utilisateur reçoit une invite de contrôle de compte d’utilisateur (UAC) non souhaitée pour l’autorisation de continuer même si l’action terminer-installer n’a aucune action à effectuer.

    Note À compter de Windows 7, si UAC est défini sur le paramètre par défaut (« M’avertir uniquement lorsque les programmes essaient d’apporter des modifications à mon ordinateur ») ou un paramètre inférieur, le système d’exploitation n’affiche pas l’invite pour les utilisateurs disposant de privilèges d’administration lorsqu’il traite les actions de fin d’installation.

  • Avant d’inscrire un programme d’installation qui implémente des actions de fin d’installation, vous devez inclure et installer tous les fichiers nécessaires pour exécuter les actions de fin d’installation dans la directive CopyFiles du fichier INF pour l’appareil. Cela est nécessaire pour que les fichiers soient placés pendant l’installation dans un emplacement accessible par le programme d’installation.

    Pour plus d’informations sur les exigences d’inscription d’un appareil ou d’un co-programme d’installation de classe, consultez Inscription d’un co-programme d’installation de classe.