Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I install a driver using InnoSetup?

I'd like to install a driver for a serial port using InnoSetup. I have the inf file, and I can install the driver manually through device manager, but I'd like to be able to include the driver in my installer so that users don't have to go through the trouble of installing the driver themselves.

like image 695
nathan Avatar asked Sep 13 '11 16:09

nathan


2 Answers

See InstallHinfSection on MSDN. The documentation also mentions how to invoke an installation by calling 'Rundll32.exe'. Probably you'll end up with something like this:

[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;


Note that you might need to run the setup in 64bit mode in 64bit systems to be able to install the driver:

[Setup]
..
ArchitecturesInstallIn64BitMode=x64 

Also you can put checks as to run the version of .inf file depending on machine architecture (e.g. Check: Is64BitInstallMode).

like image 87
Sertac Akyuz Avatar answered Sep 26 '22 20:09

Sertac Akyuz


This is a better answer: Inno setup: install drivers with rundll32 or dpinst?

Using InstallHinfSection on Windows 7 and beyond seems to be either broken or fraught with difficulty. Making it work from a batch file is difficult, making it work from innosetup is even more difficult. DPINST seems preferable, and is simpler.

like image 29
quickly_now Avatar answered Sep 23 '22 20:09

quickly_now