Мой коллега придумал ответ, который работает очень хорошо. Похоже, что если комбинация оборудования и драйвера не подписана WHQL, мастер установки нового оборудования всегда будет отображаться в Win XP. Однако, используя следующий метод, можно сделать так, чтобы кнопка «Поиск» в мастере автоматически находила ваш драйвер. В Windows 7 нет подсказки, и устройство устанавливается нормально. Тем не менее, вам нужно остерегаться 64-битных машин, поскольку они имеют более строгие правила подписывания.
Итак, вот соответствующая выдержка из всего документа :
Используйте модуль слияния DIFxAPi. (Прочитайте хорошее введение в драйверы в Windows, использование файлов INF и DIFxAPP .) Модуль слияния DIFxAPI включен в WDK в 'WDDK // redist \ DIFx \ DIFxApp \ MergeModule \' каталог. Модуль слияния может быть включен в пакет MSI и может быть установлен для установки нескольких драйверов устройств. Вот шаги для создания MSI с модулем слияния DIFxAPP:
- В папке установки создайте отдельный каталог в папке приложений для пакета драйверов и добавьте файлы драйверов в папку.
- Добавьте DIFxApp.msm в проект установки.
- Сборка настроек
Используйте Orca для редактирования таблицы базы данных MSI и добавления компонента INF в таблицу модулей слияния DIFxAPP.
- Установка Orca включена в Windows SDK в каталоге «C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Bin». (Windows SDK может быть загружен с Microsoft )
- Запустите Orca и выберите пакет MSI, который необходимо изменить.
- Прочтите часть 5 для автоматизации.
- В таблице «Файл» найдите INF-файл пакета драйвера, который вы хотите установить, и скопируйте значение компонента.
Создать новую строку в таблице MsiDriverPackages. Добавьте значение компонента в поле компонента. Можно использовать следующие flags (хотя некоторые игнорируются Windows 7):
- 0 - Не установлено (по умолчанию)
- 1 - Принудительная установка драйвера, даже если в данный момент установлены драйверы
лучшее соответствие, чем устанавливаемый драйвер
- 2 - Подавить сообщение, сообщающее пользователю подключать устройства после драйвера
был установлен.
- 4 - Запретить добавление записи в «Установка и удаление программ для водителя».
Драйвер будет удален при удалении основного приложения.
- 8 - Установить неподписанные пакеты драйверов
- 16 - удаление двоичных файлов драйверов во время удаления.
- Сохраните MSI. Чтобы автоматизировать процесс, редактирование базы данных MSI может быть записано в преобразование, а затем преобразование может быть применено в процессе после сборки.
- Откройте MSI в Orca.
- Выберите Преобразование-> Новое преобразование
- Выполните шаги 3 и 4 в указанных выше направлениях.
- Выберите Tranform-> Generate transform и сохраните преобразование.
- Добавьте следующую строку в пост-сборку проекта установки
MsiDb.exe -t transform.mst -d $ (TargetDir) \ DriverInstall.msi
Примечание. MsiDB.exe поставляется с пакетом Microsoft SDK и находится в
C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0 \ Bin
Если вы получили сообщение об ошибке установки из MSI (например, я получил код ошибки 2356, который в результате оказался из-за неверного значения Flag
), используйте функцию Validate
Orca, чтобы увидеть, есть ли какие-либо ошибки. РЕДАКТИРОВАТЬ: Исправление этих ошибок до сих пор не избавился от ошибки. Я помню, что читал, что файлы inf должны быть в своем собственном подкаталоге, но это тоже не решило мою проблему.