Вопросы по инсталляции драйверов.

Здравствуйте.

Для установки программы использую функции управления драйверами.
Возникли следующие вопросы:

1.    Как определить, что больше ни одна программа не использует ключи Guardant? Функция GrdDrvUnInstall просто удаляет драйверы из системы. Таким образом, другие программы могут оказаться неработоспособными. Спрашивать у пользователя тоже не хотелось бы.

2.    GrdDrvInstall при установленном драйвере возвращает код ошибки 110, GrdDrvUnInstall при неустановленном – код 102. Оба случая не описаны в документации. Какие еще ошибки могут возникнуть?

В справке по функции GrdDrvInstall информация по параметру nLanguageID сначала немного сбивает с толку. Хорошо бы поправить.

Re: Вопросы по инсталляции драйверов.

Добрый день.

ataras01 пишет:

Здравствуйте.
Для установки программы использую функции управления драйверами.
Возникли следующие вопросы:
1.    Как определить, что больше ни одна программа не использует ключи Guardant? Функция GrdDrvUnInstall просто удаляет драйверы из системы. Таким образом, другие программы могут оказаться неработоспособными. Спрашивать у пользователя тоже не хотелось бы.

К сожалению инструментарии Guardant не предусматривает такой возможности.

ataras01 пишет:

2.    GrdDrvInstall при установленном драйвере возвращает код ошибки 110, GrdDrvUnInstall при неустановленном – код 102. Оба случая не описаны в документации. Какие еще ошибки могут возникнуть?

Уточните, пожалуйста, какая у Вас используется ОС (версия, разрядность), какая версия используемого драйвера и библиотеки Guardant API (версия, размер файла)?

Re: Вопросы по инсталляции драйверов.

Антон Тихиенко пишет:

Уточните, пожалуйста, какая у Вас используется ОС (версия, разрядность), какая версия используемого драйвера и библиотеки Guardant API (версия, размер файла)?

Операционные системы Windows XP sp3, Windows 7 максимальная, 32 разряда. Версия комплекта разработчика: 5.52. Драйверы версии 5.50.86, русская версия. Размер какого файла нужно указать?

Re: Вопросы по инсталляции драйверов.

ataras01 пишет:

2.    GrdDrvInstall при установленном драйвере возвращает код ошибки 110, GrdDrvUnInstall при неустановленном – код 102. Оба случая не описаны в документации. Какие еще ошибки могут возникнуть?

Данные ошибки у нас нигде не документированы, поскольку возвращаются стандартной функцией Windows API GetLastError.
Наиболее полный перечень кодов возврата Windows API можно найти в библиотеке MSDN.

Как правило, использование драйверного Guardant API не самый лучший (простой) способ для управления установкой/удалением драйверов.
Чаще всего, наиболее рекомендуемым вариантом, является включение в комплект поставки приложения нашего обычного инсталлятора чтобы конечный пользователь собственноручно устанавливал или удалял драйвер электронного ключа.

Однако в тех случаях, когда все же необходимо "тихо" устанавливать или удалять драйвера, без какого либо вмешательства со стороны конечного пользователя можно использовать командную строку msiexec, примерно так:

msiexec /i GrdDriversRU.msi /quiet    Установить драйвер в «тихом» режиме
msiexec /x GrdDriversRU.msi /quiet    Удалить драйвер в «тихом» режиме

Еще отдельно хотелось бы отметить то, что современные ключи Guardant поддерживают работу в HID-режиме, что в принципе исключает необходимость установки драйверов.

Re: Вопросы по инсталляции драйверов.

Антон Тихиенко пишет:

msiexec /i GrdDriversRU.msi /quiet    Установить драйвер в «тихом» режиме

У вас на сайте в разделе загрузки есть 32bit и 64bit версии драйверов.
Как посоветуете таскать их с дистрибутивом и выбирать нужный?

Может быть есть какое-то более цивильный способ включения драйверов в Visual Studio Setup Project?

Re: Вопросы по инсталляции драйверов.

mamitko пишет:

У вас на сайте в разделе загрузки есть 32bit и 64bit версии драйверов.
Как посоветуете таскать их с дистрибутивом и выбирать нужный?
Может быть есть какое-то более цивильный способ включения драйверов в Visual Studio Setup Project?

Для ОС семейства Windows разной разрядности можно использовать технологию InstallShield как неплохой вариант избавления конечного пользователя от необходимости выбора и установки верного драйвера вручную.
По следующей ссылке можно скачать пример установки драйверов подготовленных при помощи InstallShield.
Также в примере есть скрипт, позволяющий, в числе прочего, проверять наличие драйвера в системе.