I’ll just tell you right off, I don’t have the exact steps to install device drivers with InstallShield. However, I will tell you what I learned on a recent client project where I had to do this.
A few months ago I was working on a project where among other things, I had to install some device drivers. I had never done this before, so I had to do some research. After the research, I found there are several ways to do this:
I tried the following methods to add the device driver files to the project. Each had varying degrees of success:
- I just added the device driver files to a component.
- I used the Component Wizard to add the device driver files to a feature (The Component Wizard creates components for you and in some cases registry entries).
- I expanded the Advanced Settings node for a component, clicked on the Device Driver node and added the device driver files there.
The success of each of the above methods varied. It seemed to depend on the device driver. With respect to #1 and #2, the device driver would sometimes be installed correctly.
#3 is different and I’ll explain. When you add device driver files to the Device Driver node, InstallShield uses the Driver Installation Frameworks for Applications (DIFxApp) from Microsoft. The wizard creates the necessary table and entries, custom actions, feature, and components necessary to install the driver.
Now, in order to successfully add device driver files using the Device Driver Wizard, they have to be signed. Signing device drivers is not the same as code-signing your regular files in an installation project. You have to do it a different way and that takes a bit of research.
In my case, the client only needed a proof-of-concept installation, and didn’t need me to execute the entire process. Therefore, I didn’t get around to learning how to sign device drivers.
If you have to do this, here’s my advice:
Learn how to sign your device driver files, then add them to your InstallShield project through the Device Driver node under Advanced Settings for a component.
That appears to be the best way to go.