Directrices para implementar acciones de Finish-Install
Nota:
Las características descritas en esta sección no se admiten en paquetes de controladores universales o móviles. Consulte Uso de un archivo INF universal.
Las acciones de finalización de la instalación se pueden ejecutar mediante un instalador de clase (un instalador de clase, un coinsertor de clase o un co-instalador del dispositivo). En sus acciones de instalación de finalización, un instalador puede ejecutar un programa ejecutable, crear un proceso, crear un subproceso o ejecutar código en el proceso de instalación del controlador de dispositivo finaliza la instalación.
Tenga en cuenta las siguientes directrices al implementar acciones de instalación de finalización en un instalador:
Las acciones de instalación de finalización no se pueden usar para aplicar ninguna configuración crítica necesaria para que un dispositivo funcione.
Un instalador debe esperar a que finalice la acción finish-install si la acción finish-install debe ejecutarse hasta completarse.
Por ejemplo, para evitar que se interrumpa un reinicio del sistema mientras se sigue ejecutando una acción de finalización de la instalación, un instalador debe esperar a que finalice la acción finalizar antes de que el instalador vuelva al procesamiento de una solicitud de DIF_FINISHINSTALL_ACTION .
Una acción de finalización de la instalación debe informar al usuario del progreso.
Windows no informa a un usuario de que las acciones de finalización de la instalación se están ejecutando o que las acciones de finalización de la instalación se realizan correctamente o no. Por lo tanto, una acción de finalización de la instalación debe informar al usuario de que una acción de finalización de la instalación está en curso y, a continuación, notificar al usuario que la acción finish-install se ha realizado correctamente o ha producido un error.
Un instalador debe controlar la situación en la que se requiere un reinicio del sistema para completar las acciones de instalación de finalización.
Si una acción de finalización de la instalación requiere un reinicio del sistema antes de que la configuración surta efecto en el dispositivo, el instalador debe establecer la marca de DI_NEEDREBOOT antes de que vuelva de procesar una solicitud de DIF_FINISHINSTALL_ACTION . Sin embargo, una instalación de dispositivo no debe forzar el reinicio de un equipo a menos que sea absolutamente necesario.
Para obtener más información sobre cuándo una instalación de dispositivo debe requerir un reinicio del sistema, consulte Instalaciones de dispositivos y reinicios del sistema.
Un instalador debe controlar la situación en la que se produce un error en una acción de finalización de la instalación, pero debe intentarse de nuevo. Por ejemplo, el instalador puede producir un error en la acción finalizar la instalación de esta manera si el dispositivo que se está instalando se ha quitado del sistema.
Antes de Windows 8, si se produce un error en una acción de finalización de la instalación, pero debe intentarse de nuevo, un instalador debe notificar al usuario el error temporal, realizar cualquier limpieza necesaria y devolver un código de error win32 para la solicitud de DIF_FINISHINSTALL_ACTION. Si un instalador devuelve un código de error de Win32 para una solicitud de DIF_FINISHINSTALL_ACTION, Windows no borra el dispositivo como si se hubiera marcado para realizar una acción de instalación de finalización para el nodo de dispositivo (devnode).
Sin embargo, a partir de Windows 8, devolver un código de error no impedirá que se borre la marca. Si la acción finalizar la instalación tiene un error, debe proporcionar al usuario la capacidad de volver a ejecutarla en el futuro.
Aunque esta marca permanece establecida para el dispositivo, Windows ejecuta un nuevo proceso de instalación de finalización.
Para obtener más información, consulte Ejecución de acciones de Finish-Install.
Un instalador debe controlar la situación en la que se produce un error en una acción de finalización de la instalación y no se debe intentar de nuevo.
Si un error hace imposible que una acción de instalación de finalización se realice correctamente, un instalador debe notificar al usuario que la acción no se puede completar y, a continuación, realizar cualquier limpieza necesaria. En esta situación, un co-instalador debe devolver NO_ERROR y un instalador de dispositivo o clase debe devolver ERROR_DI_DO_DEFAULT. Windows borrará posteriormente el dispositivo como si se hubiera marcado para realizar una acción de instalación de finalización para el devnode y llamará a SetupDiFinishInstallAction para realizar las operaciones de instalación de finalización predeterminadas.
Cuando el instalador procesa un DIF_NEWDEVICEWIZARD_FINISHINSTALL código DIF, debe comprobar si se necesitan acciones de instalación de finalización. El instalador solo debe establecer la marca de DI_FLAGSEX_FINISHINSTALL_ACTION si hay acciones de instalación de finalización que se deben realizar. Si esta marca se establece innecesariamente, los usuarios reciben un mensaje de instalación de dispositivo adicional durante la reinstalación del controlador y la solicitud de DIF_FINISHINSTALL_ACTION no tiene acciones de instalación de finalización para realizar.
Por ejemplo, considere un co-instalador de dispositivo en el que la acción finalizar la instalación instala una aplicación necesaria para que el dispositivo funcione correctamente. Por ejemplo, la acción finalizar la instalación de un teclado de Microsoft podría instalar la aplicación IntelliType. Cuando este coinstalado procesa el código DIF_NEWDEVICEWIZARD_FINISHINSTALL DIF, debe comprobar si la aplicación ya está instalada. Si la aplicación ya está instalada, no hay ninguna acción de instalación de finalización para realizar y, por lo tanto, no se debe establecer la marca de DI_FLAGSEX_FINISHINSTALL_ACTION. En esta situación, si el co-instalador establece incorrectamente la marca de DI_FLAGSEX_FINISHINSTALL_ACTION, el usuario obtiene un aviso de control de cuentas de usuario (UAC) no deseado para continuar aunque la acción de finalización de la instalación no tenga ninguna acción que realizar.
Nota A partir de Windows 7, si UAC está establecido en la configuración predeterminada ("Notificarme solo cuando los programas intentan realizar cambios en mi equipo") o una configuración inferior, el sistema operativo no muestra la solicitud de los usuarios con privilegios administrativos cuando procesa acciones de finalización de la instalación.
Antes de registrar un instalador que implemente acciones de instalación de finalización, debe incluir e instalar todos los archivos necesarios para ejecutar las acciones de instalación de finalización en la directiva CopyFiles del archivo INF para el dispositivo. Esto es necesario para que los archivos se coloquen durante la instalación en una ubicación a la que el instalador pueda acceder.
Para obtener más información sobre los requisitos de registro de un dispositivo o co-instalador de clase, consulte Registro de un co-instalador de clase.