Пересканировать дерево устройств для изменений оборудования при установке драйвера - PullRequest
2 голосов
/ 27 января 2010

Я использую InstallShield для установки моего приложения, драйвера и службы. Мне нужно установить драйвер plug-N-play, только если в диспетчере устройств был найден его аппаратный идентификатор. Установка драйвера выполняется с помощью DPInst.exe. Моя проблема в том, что пользователь иногда может вручную удалить драйвер (после того, как он был установлен или даже удалить "Неизвестный драйвер" в "Другие устройства" ), а затем я не могу найдите идентификатор оборудования в дереве устройств, хотя устройство подключено. Если я повторно сканирую дерево устройств во время установки, используя CM_Reenumerate_DevNode_Ex (код, эквивалентный «Сканирование на новое оборудование» ), я могу найти идентификатор оборудования, но это вызывает мастер установки «Найдено новое оборудование» «.

Есть ли в любом случае повторное сканирование дерева устройств, но подавление «Мастер поиска нового оборудования» или чтобы избежать повторного сканирования, но при этом убедиться, что в системе присутствует идентификатор оборудования моего устройства?

Ответы [ 2 ]

0 голосов
/ 28 января 2010

Я пишу новый ответ, так как у нас уже слишком много комментариев к моему старому, и его содержание было основано на небольшом непонимании ситуации.

Фактическая проблема, насколько я понимаю, сейчас, это мастер «Добавить новое оборудование», который появляется при повторном сканировании для устройств, до установки вашего драйвера. К сожалению, этот мастер появляется, когда не найдено подходящего драйвера для работы с новым устройством в системе, поэтому для его преодоления единственный вариант - убедиться, что такой драйвер существует в системе. Это приводит к двум возможным решениям, которые я вижу:

  1. Перейдите к первой установке программного обеспечения и убедитесь, что ваш драйвер подходит для устройства (информация правильно сформирована, и у вас есть подпись WHQL). Насколько я понимаю, это не вариант, потому что вы не хотите устанавливать драйвер на машины, к которым не подключено устройство (хотелось бы услышать почему).
  2. Убедитесь, что какой-то другой драйвер в системе подходит для этого. В этом случае вам нужно выбрать один из встроенных драйверов (тот, который не нанесет ущерб, если он будет действовать как функциональный драйвер для вашего устройства), и дать вашему устройству соответствующий совместимый идентификатор - тот, который будет Встроенный драйвер можно найти подходящим. Таким образом, вам не придется ждать пользователя после повторного сканирования устройств, но в зависимости от вашего устройства найти подходящий встроенный драйвер может быть невозможно.
0 голосов
/ 27 января 2010

Звучит так, как будто вы поступили неправильно. Если у вас установлена ​​MSI, почему бы не использовать DIFxApp вместо DPInst? Что касается мастера «Найдено новое оборудование», вам понадобятся две вещи:

  1. Убедитесь, что ваш inf-файл правильный (чтобы ваш драйвер был связан с идентификатором оборудования)
  2. Получить подпись WHQL от MS. Этот шаг необходим для XP, поскольку ненадежные драйверы не будут автоматически назначаться устройствам. В Vista и 7 вы можете самостоятельно подписать драйвер цифровой подписью, но при установке вы получите предупреждение, спрашивающее пользователя, хочет ли он / она доверять этому издателю (вам).
...