Я пытаюсь установить драйвер Kernel Mini-Filter для Windows 7x64. Машина, на которой я тестирую программу установки, находится в тестовом режиме, и все файлы драйвера и файл .cat подписаны созданным мной сертификатом. Я выполнил инструкции ЗДЕСЬ, и мне все еще не удается установить драйвер. Я обязательно добавил DriverPackageType = FileSystemMinifilter
в раздел [version]
файла .inf.
Вот отрывок из моего xml-файла установщика WiX:
<Directory Id="Driver" Name="Driver">
<Component Id="MY-DRIVER-NAME" Guid="MY-GUID">
<File
Id="DRIVER_FILE1_SYS"
Name="DriverFile1.sys"
DiskId="1"
Source="path_to_sys_file"
Vital="yes"
System="yes"
ReadOnly="yes"
KeyPath="yes"/>
<File
Id="DRIVER_FILE2_SYS"
Name="DriverFile2.sys"
DiskId="1"
Source="path_to_sys_file"
Vital="yes"
System="yes"
ReadOnly="yes"
KeyPath="yes"/>
<File
Id="DRIVER_FILE3_SYS"
Name="DriverFile3.sys"
DiskId="1"
Source="path_to_sys_file"
Vital="yes"
System="yes"
ReadOnly="yes"
KeyPath="yes"/>
<File
Id="DRIVER_FILE4_SYS"
Name="DriverFile4.sys"
DiskId="1"
Source="path_to_sys_file"
Vital="yes"
System="yes"
ReadOnly="yes"
KeyPath="yes"/>
<File
Id="DRIVER_FILE_INF"
Name="DriverFile.inf"
DiskId="1"
Source="path_to_inf_file"
Vital="yes"
System="yes"
ReadOnly="yes"/>
<File
Id="DRIVER_FILE_CAT"
Name="DriverFile.cat"
DiskId="1"
Source="path_to_cat_file"
Vital="yes"
System="yes"
ReadOnly="yes"/>
<difx:Driver Legacy="yes"/>
</Component><!--LEGDriver-->
Пути «Id», «Name» и «Source» были изменены (на самом деле я не использую значения, показанные выше, это просто пример). У меня нет проблем со сборкой установщика. Когда я запускаю его с msiexec /i MyMsi.msi /l*v install.log
, я вижу ошибку DIFXAPP: ERROR: Could not get services associated with driver package
Затем он пытается отменить изменения и обнаруживает еще несколько ошибок:
ERROR: Unable to revert to a previous driver store for service ''.
ERROR: Unable to open service '' to delete it because of error 0x7B
Файл .inf можно без проблем установить с помощью команды:
RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 path-to-inf\infname.inf
Он также успешно устанавливается с помощью «установки правой кнопкой мыши».
Добавление вышеупомянутой команды 'RUNDLL32.EXE' в качестве настраиваемого действия ExeCommand в мой установщик WiX вместо использования DifxApp работает при установке файла .msi на машину вручную, однако при развертывании через GPO с сервера Active Directory (Per-Computer GPO ) установка не завершается. (Все, кроме INF, установка завершена).