Я хочу установить драйвер для последовательного порта с помощью InnoSetup. У меня есть файл inf, и я могу установить драйвер вручную через диспетчер устройств, но я хотел бы иметь возможность включить драйвер в мой установщик, чтобы пользователям не приходилось сталкиваться с проблемой установки самого драйвера.
Как установить драйвер с помощью InnoSetup?
Ответ 1
См. InstallHinfSection в MSDN. В документации также упоминается, как вызвать установку, вызвав "Rundll32.exe". Вероятно, вы получите что-то вроде этого:
[Files]
..
Source: "driver\my_x86driver.inf"; DestDir: {app}\driver;
Source: "driver\my_x86driver.sys"; DestDir: {app}\driver;
[Run]
..
Filename: {sys}\rundll32.exe; Parameters: "setupapi,InstallHinfSection DefaultInstall 128 {app}\driver\my_x86driver.inf"; WorkingDir: {app}\driver; Flags: 32bit;
Обратите внимание, что вам может потребоваться запустить настройку в 64-битном режиме в 64-битных системах, чтобы иметь возможность установить драйвер:
[Setup]
..
ArchitecturesInstallIn64BitMode=x64
Также вы можете поместить проверки для запуска версии .inf файла в зависимости от архитектуры машины (например, Check: Is64BitInstallMode
).
Ответ 2
Это лучший ответ: Настройка Inno: установить драйверы с помощью rundll32 или dpinst?
Использование InstallHinfSection в Windows 7 и далее кажется либо сломанным, либо чреватым трудностями. Сделать его работу из пакетного файла сложно, что затрудняет работу с innosetup. DPINST кажется предпочтительным и проще.
Ответ 3
Я использовал dpinst следующим образом:
[Files]
Source: "Source\dpinst\dpinst32.exe"; DestDir: "{app}\driver"; DestName: dpinst.exe; Check: not IsWin64; Flags: ignoreversion
Source: "Source\dpinst\dpinst64.exe"; DestDir: "{app}\driver"; DestName: dpinst.exe; Check: IsWin64; Flags: ignoreversion
[Run]
Filename: "{app}\driver\dpinst.exe"; Parameters: "/A /LM";