Partilhar via


Diretrizes para implementar ações de Finish-Install

Observação

Os recursos descritos nesta seção não têm suporte em pacotes de driver móveis ou universais. Consulte Usando um arquivo INF universal.

As ações de conclusão de instalação podem ser executadas por um instalador (um instalador de classe, um co-instalador de classe ou um co-instalador de dispositivo). Em suas ações de conclusão de instalação, um instalador pode executar um programa executável, criar um processo, criar um thread ou executar código no processo de conclusão da instalação do driver de dispositivo.

Considere as seguintes diretrizes ao implementar ações de conclusão de instalação em um instalador:

  • Ações de conclusão de instalação não podem ser usadas para aplicar as configurações críticas necessárias para que um dispositivo funcione.

  • Um instalador deve aguardar a conclusão da ação de conclusão da instalação se a ação concluir a instalação precisar ser executada até a conclusão.

    Por exemplo, para evitar ser interrompido por uma reinicialização do sistema enquanto uma ação de conclusão de instalação ainda estiver em execução, um instalador deve aguardar a conclusão da ação de conclusão da instalação antes que o instalador retorne do processamento de uma solicitação de DIF_FINISHINSTALL_ACTION .

  • Uma ação de conclusão de instalação deve informar um usuário sobre o progresso.

    O Windows não informa a um usuário que as ações de conclusão de instalação estão em execução ou que as ações de conclusão de instalação são bem-sucedidas ou falham. Portanto, uma ação de conclusão de instalação deve informar ao usuário que uma ação de conclusão de instalação está em andamento e, em seguida, notificar o usuário de que a ação de conclusão de instalação foi bem-sucedida ou falhou.

  • Um instalador deve lidar com a situação em que uma reinicialização do sistema é necessária para concluir as ações de conclusão de instalação.

    Se uma ação de conclusão de instalação exigir uma reinicialização do sistema antes que as configurações entrem em vigor no dispositivo, o instalador deverá definir o sinalizador de DI_NEEDREBOOT antes de retornar do processamento de uma solicitação de DIF_FINISHINSTALL_ACTION . No entanto, uma instalação de dispositivo não deve forçar uma reinicialização de um computador, a menos que seja absolutamente necessário.

    Para obter mais informações sobre quando uma instalação de dispositivo deve exigir uma reinicialização do sistema, consulte Instalações de dispositivo e reinicializações do sistema.

  • Um instalador deve lidar com a situação em que uma ação de conclusão de instalação falha, mas deve ser tentada novamente. Por exemplo, o instalador poderá falhar na ação concluir instalação dessa maneira se o dispositivo que está sendo instalado tiver sido removido do sistema.

    Antes de Windows 8, se uma ação de conclusão de instalação falhar, mas precisar tentar novamente, um instalador deverá notificar o usuário sobre a falha temporária, executar qualquer limpeza necessária e retornar um código de erro Win32 para a solicitação de DIF_FINISHINSTALL_ACTION. Se um instalador retornar um código de erro win32 para uma solicitação de DIF_FINISHINSTALL_ACTION, o Windows não limpará o dispositivo como tendo sido sinalizado para executar uma ação de instalação de término para o nó do dispositivo (devnode).

    No entanto, começando com Windows 8, retornar um código de erro não impedirá que o sinalizador seja limpo. Se a ação concluir a instalação tiver um erro, ela precisará fornecer ao usuário a capacidade de executá-la novamente no futuro.

    Embora esse sinalizador permaneça definido para o dispositivo, o Windows executa um novo processo de instalação de término.

    Para obter mais informações, consulte Executando ações de Finish-Install.

  • Um instalador deve lidar com a situação em que uma ação de conclusão de instalação falha e não deve ser tentada novamente.

    Se um erro impossibilitar o sucesso de uma ação de conclusão de instalação, um instalador deverá notificar o usuário de que a ação não pode ser concluída e, em seguida, executar qualquer limpeza necessária. Nessa situação, um co-instalador deve retornar NO_ERROR e um instalador de dispositivo ou classe deve retornar ERROR_DI_DO_DEFAULT. Posteriormente, o Windows limpará o dispositivo como tendo sido sinalizado para executar uma ação de conclusão de instalação para o devnode e chamar SetupDiFinishInstallAction para executar as operações padrão de instalação de término.

  • Quando o instalador processa um código DIF_NEWDEVICEWIZARD_FINISHINSTALL DIF, ele deve marcar para ver se alguma ação de conclusão de instalação é necessária. O instalador só deverá definir o sinalizador DI_FLAGSEX_FINISHINSTALL_ACTION se houver ações de instalação final que devem ser executadas. Se esse sinalizador for definido desnecessariamente, os usuários receberão um prompt extra de instalação do dispositivo durante a reinstalação do driver e a solicitação de DIF_FINISHINSTALL_ACTION não terá nenhuma ação de conclusão de instalação a ser executada.

    Por exemplo, considere um co-instalador de dispositivo em que a ação concluir a instalação instala um aplicativo necessário para que o dispositivo funcione corretamente. Por exemplo, a ação de conclusão de instalação de um teclado da Microsoft pode instalar o aplicativo IntelliType. Quando esse co-instalador processa o código DIF_NEWDEVICEWIZARD_FINISHINSTALL DIF, ele deve marcar para ver se o aplicativo já está instalado. Se o aplicativo já estiver instalado, não haverá nenhuma ação de conclusão de instalação a ser executada e, portanto, o sinalizador DI_FLAGSEX_FINISHINSTALL_ACTION não deve ser definido. Nessa situação, se o co-instalador definir incorretamente o sinalizador DI_FLAGSEX_FINISHINSTALL_ACTION, o usuário receberá um prompt de UAC (Controle de Conta de Usuário) indesejado para que a permissão prossiga, mesmo que a ação de conclusão da instalação não tenha nenhuma ação a ser executada.

    Nota A partir do Windows 7, se o UAC estiver definido como a configuração padrão ("Notificar-me somente quando os programas tentarem fazer alterações no meu computador") ou uma configuração inferior, o sistema operacional não exibirá o prompt para usuários com privilégios administrativos quando processar ações de conclusão de instalação.

  • Antes de registrar um instalador que implementa ações de conclusão de instalação, você deve incluir e instalar todos os arquivos necessários para executar as ações de conclusão de instalação na diretiva CopyFiles do arquivo INF para o dispositivo. Isso é necessário para que os arquivos sejam colocados durante a instalação em um local acessível pelo instalador.

    Para obter mais informações sobre os requisitos de registro de um dispositivo ou co-instalador de classe, consulte Registrando um co-instalador de classe.