Verifique novamente a árvore de dispositivos em busca de alterações de hardware durante a instalação do driver

StackOverflow https://stackoverflow.com/questions/2145207

Pergunta

estou a usar InstalarShield para instalar meu aplicativo, um driver e um serviço.Preciso instalar o driver plug-N-play somente se o ID do hardware for encontrado no gerenciador de dispositivos.A instalação do driver é feita usando DPInst.exe.Meu problema é que às vezes um usuário pode desinstalar manualmente o driver (depois de instalado ou até mesmo desinstalar o driver "Motorista desconhecido" sob "Outros dispositivos") e não consigo encontrar o ID do hardware na árvore de dispositivos, embora o dispositivo esteja conectado.Se eu verificar novamente a árvore de dispositivos durante a instalação usando CM_Reenumerate_DevNode_Ex (O código equivalente a "Procurar por novo hardware"), posso encontrar o ID do hardware, mas isso traz o "Encontrado novo assistente de hardware".

Existe alguma maneira de verificar novamente a árvore de dispositivos, mas suprimir o "Encontrado novo assistente de hardware" ou para evitar uma nova verificação, mas ainda assim garantir que o ID de hardware do meu dispositivo esteja presente no sistema?

Foi útil?

Solução

Estou escrevendo uma nova resposta porque já temos muitos comentários sobre a minha resposta anterior e seu conteúdo foi baseado em um pequeno mal-entendido da situação.

O problema real, pelo que entendi agora, é o assistente "Adicionar novo hardware" que aparece ao verificar novamente os dispositivos, antes instalando seu driver.Infelizmente, este assistente aparece sempre que nenhum driver adequado é encontrado para lidar com um novo dispositivo no sistema, portanto, para superá-lo, a única opção é certificar-se de que tal driver existe no sistema.Isso leva a duas soluções possíveis que posso ver:

  1. Faça a primeira instalação do software e certifique-se de que seu driver seja adequado para o dispositivo (o inf está bem formado e você tem assinatura WHQL).Pelo que entendi, isso não é uma opção, pois você não deseja instalar o driver em máquinas que não tenham o dispositivo conectado (adoraria saber o porquê).
  2. Certifique-se de que algum outro driver no sistema seja adequado para lidar com isso.Nesse caso, você precisa escolher um dos drivers integrados (um que não causaria estragos se funcionasse como um driver de função para o seu dispositivo) e fornecer ao seu dispositivo um ID compatível correspondente - um que causaria o driver integrado para ser considerado adequado.Dessa forma, você não terá que esperar pelo usuário após verificar novamente os dispositivos, mas dependendo do seu dispositivo, pode ser impossível encontrar um driver integrado adequado.

Outras dicas

Parece que você está fazendo isso da maneira errada.Se você possui uma instalação baseada em MSI, por que não usar DIFxApp em vez de DPInst?Quanto ao assistente "Novo hardware encontrado", você precisará de duas coisas aqui:

  1. Certifique-se de que seu arquivo inf esteja correto (para que seu driver esteja associado ao ID do hardware)
  2. Obtenha uma assinatura WHQL do MS.Esta etapa é necessária para XP, pois drivers não confiáveis ​​não serão atribuídos automaticamente aos dispositivos.Com o Vista e o 7 você mesmo pode assinar digitalmente o driver, mas receberá um aviso durante a instalação, perguntando ao usuário se ele deseja confiar neste editor (você).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top