Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ИВАН КОРОБКО
Автоматическая установка драйверов
Решить задачу пакетной установки драйверов можно разными способами. Среди них наиболее распространенный – интеграция в дистрибутив операционной системы, однако он не единственный. Поговорим о малоизвестных способах пакетной установки драйверов.
В крупных организациях парк компьютеров, как правило, унифицирован. Однако он постоянно обновляется. Самый распространенный из них – интеграция пакета драйверов в дистрибутив операционной системы. Существует еще несколько альтернативных способов, которым стоит уделить внимание: установка пакета драйверов с помощью командного файла и с помощью Driver Package Installer.
Довольно часто возникает ситуация, когда необходимо предустановить пакет драйверов. В целях безопасности большинство сотрудников в сети не обладают административными правами и не могут устанавливать устройства. По этой причине они не могут подключить без помощи администратора различные внешние устройства с интерфейсом USB, Fire Ware и т. д.
Для решения этой проблемы необходимо инсталлировать часто используемые драйверы на всех компьютерах на этапе разворачивания программного обеспечения.
Для обеспечения автоматической пакетной установки драйверов можно использовать либо командный файл, либо Driver Package Installer (DPInst). Рассмотрим подробнее два способа.
Командный файл
Алгоритм установки драйверов устройств описан в INF-файле. В нем находится информация о том, какие библиотеки и куда необходимо скопировать, какие изменения сделать в реестре и т. д.
В Windows используется два интерпретатора INF-файлов: SETUPAPI и ADVANCEDINF, которые представляют собой два DLL-файла, располагающихся в каталоге %SystemRoot%/System32.
Интерпретатор SETUPAPI находится в библиотечном файле setupapi.dll, интерпретатор ADVANCEDINF – в библиотечном файле advpack.dll. Основным интерпретатором является SETUPAPI. Для получения доступа к интерпретаторам используется запускаемый файл RUNDLL32.EXE. Формат запуска любой библиотеки следующий:
rundll32.exe DLL,Function Рarameters
где:
- DLL – имя файла библиотеки. В данном случае setupapi.dll или advpack.dll.
- Function – функция, вызываемая из библиотеки, или, как ее еще называют, точка входа. Обратите внимание: название файла и вызываемой функции разделены запятой без пробелов.
- Parameters – параметры, передаваемые функции.
Интерпретатор SETUPAPI
Интерпретатор SETUPAPI позволяет:
- управлять реестром: создание и удаление ключей, параметров и их значений;
- распаковывать CAB-файлы;
- управлять файлами и папками, их атрибутами;
- устанавливать и удалять драйверы устройств.
Для запуска процесса установки драйверов используется функция InstallHinfSection, для удаления – соответственно unInstallHinfSection. В листинге 1 приведен пример установки драйверов, описанных в файле HP_1200.INF.
Листинг 1. Установка драйверов с помощью интерпретатора SETUPAPI
rundll32.exe setupapi,InstallHinfSection HP_1200_PPD 132 C:\HP_1200.INF
Функция InstallHinfSection имеет три параметра. Первый из них – имя выполняемой секции INF-файла, второй – флаг обработки файла. В таблице приведены возможные значения флага. Третий параметр – непосредственно имя INF-файла.
Интерпретатор ADVANCEDINF
По своей сути интерпретатор ADVANCEDINF является надстройкой над SETUPAPI, позволяющей выполнять дополнительно следующие функции:
- однократное выполнение доустановки после входа в систему при инсталляции и деинсталляции (Active Setup);
- предварительная запись изменяемых ключей реестра в бинарный файл (функция отката);
- запуск исполняемых файлов с параметрами в скрытом и нормальном режимах;
- вывод диалоговых окон.
Стандартные функции ADVANCEDINF передает на исполнение интерпретатору SETUPAPI.
Листинг 2. Установка драйверов с помощью интерпретатора SETUPAPI
rundll32.exe advpack,LaunchINFSection C:\HP_1200.INF HP_1200_PPD 132
Вывод
Бесспорным преимуществом является интегрированность обоих интерпретаторов, используемых в командных файлах, в операционную систему, однако при этом необходимо точно указывать местонахождение драйвера и секцию INF-файла, служащую его точкой входа. Для этого администратор должен разбираться в синтаксисе.
Возможные флаговые значения обработки файлов
Значение |
Описание |
0 или 128 |
Не перезагружать компьютер |
1 или 129 |
Перезагрузка компьютера без запроса |
2 или 130 |
Спросить у пользователя: перезагрузить компьютер или нет |
3 или 131 |
В случае необходимости перезагружать компьютер без запроса |
4 или 132 |
В случае необходимости спросить у пользователя: перезагружать компьютер или нет |
Driver Package Installer
Driver Package Installer (DPInst) – компонент, разработанный компанией Microsoft, входящий в состав пакета Microsoft Windows Driver Install Frameworks (DIF). В настоящее время используется DIF v 2.1. DPInst обладает возможностями:
- Установка Plug and Play (PnP) драйверов. По умолчанию устанавливаются все подписанные PnP-драйверы, находящиеся в каталоге с файлом dpinst.exe. Для отключения проверки используется ключ /LM.
- Пакетная установка драйверов с помощью файла dpinst.xml. Описание структуры XML-файла см. далее.
- Поддержка «тихого» режима установки. Для включения режима используется ключ /S или /Q.
- Поддержка многоязычного интерфейса установщика драйверов.
- Ведение журнала установки.
- Деинсталляция драйверов.
Из перечисленных возможностей видно, что с помощью DPInst можно реализовать автоматическую установку группы драйверов в «тихом» режиме. По умолчанию DPInst устанавливает в системе все драйверы, INF-файлы которых находятся в одном каталоге с этой утилитой, однако устраивать помойку из драйверов по меньшей мере некорректно. Для решения этой проблемы используется DPInst.XML, находящийся в одном каталоге с DPInst.EXE. Он представляет собой обычный текстовый файл в формате XML. Единственное его отличие от других файлов – наличие стандартизированных тегов.
Установка пакета драйверов
Существует два способа пакетной установки: с помощью тега <group> и <search>. Принципиальная разница между этими способами заключается в том, что с помощью тега <group> реализована установка драйверов, местоположение которых точно указано. Используя тег <search>, можно установить все драйверы в указанной и ее дочерних папках. Рассмотрим подробнее оба способа.
Пакетная установка драйверов с помощью тега <group>
Для обеспечения установки пакета драйверов в файле DPInst.XML используется тег <group>, в котором может быть три типа дочерних тегов:
- <package path = «…»/> – таких тегов может быть неограниченное количество. Значение параметра path – относительный или абсолютный путь к INF-файлу драйвера.
- <installAllOrNone/> – в случае ошибки установки одного из драйверов осуществляется деинсталляция всех драйверов данного пакета. Этот тег по действию аналогичен ключу /A утилиты DPInst.exe.
- <suppressAddRemovePrograms/> – при наличии этого параметра мастером установки не будет создаваться соответствующая запись для каждого драйвера в папке «Установка и удаление программ», находящейся в «Панели управления» (см. рисунок). Этот тэг по действию аналогичен ключу /SA утилиты DPInst.exe.
Регистрация драйвера в «Установка и удаление программ»
Для автоматической установки пакета драйверов, состоящего из трех драйверов, находящихся в папках C:\hp1200\1200.inf, C:\hp3380\3380.inf, C:\hp4100\4100.inf, рекомендуется использовать XML-файл, приведенный в листинге 3.
Листинг 3. XML-файл, для автоматической установки
<?xml version="1.0" ?>
<dpinst>
<group>
<package path="c:\hp1200\1200.inf " />
<package path="c:\hp3380\3380.inf " />
<package path="c:\hp4100\4100.inf " />
<group/>
</dpinst>
Для обеспечения автоматической установки рекомендуется для запуска утилиты DPInst.exe использовать два ключа, включающих тихий режим установки (/S) и позволяющих устанавливать неподписанные драйверы (/LM):
DPInst .exe / S /LM
Пакетная установка драйверов с помощью тега <search>
Для пакетной установки драйверов на практике используется более быстрый способ, реализованный с помощью тега <search>. Его преимущество, которое в определенной ситуации является серьезным недостатком, – инсталляция всех найденных драйверов в указанном месте (листинг 4).
Листинг 4. Установка найденных драйверов в подпапках
<search>
<subDirectory>*</subDirectory>
</search>
Установка пакета драйверов с использованием интерфейса
Утилиты DPInst.exe поддерживает многоязычный интерфейс. Текст всех диалоговых окон, лицензионное соглашение и другая информация могут быть переведены разработчиком драйверов или администратором. Рассмотрим этот вопрос подробнее на примере создания русскоязычного интерфейса. Для описания интерфейса служит тэг <language>. С помощью параметра code задается кодовая страница, например, 0х0409 соответствует английскому языку, а 0х0419 – русскому (листинг 5).
Листинг 5. Шаблон файла DPInst.XML
<dpinst>
<language code="0х0419">
...
</language>
<group>
...
<group/>
</dpinst>
В тэге <language> могут быть приведены различные элементы, которые логически можно разделить на две группы. К первой группе отнесем те из них, которые управляют интерфейсом основного диалогового окна инсталлятора, ко второй – управляющие интерфейсом лицензионного соглашения. Поскольку перед системным администратором обычно стоит задача реализовать «тихую» установку, то ограничимся упоминанием о поддержке многоязычного интерфейса. Полное описание всех тегов находится в MSDN.
Вывод
Driver Package Installer имеет неоспоримые преимущества перед установкой драйверов с помощью командного файла благодаря реализованной возможности автоматического поиска драйверов в указанном месте. При этом за один заход можно установить в систему неограниченное количество драйверов.
Заключение
В заключение, хочется сказать несколько слов в защиту командных файлов. Достаточно часто встречаются ситуации, когда все способы перепробованы, но по тем или иным причинам достичь желаемого результата не удалось, тогда приходят на выручку такие способы, как установка драйверов с помощью командного файла.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|