How to install a device driver from an MSI?

I have the drivers from my device and now what i want is to install that drivers on my PC throw a MSI file.

I acctually have an intermediate knowledge about MSIs but what I want to know now is the driver installing process, i mean:

Certify drivers
Dont show the typical window that sais that Windows have found a new hardware.
Talking about printers, make the new printer appears con Windows Printers.

That kind of things... I'll be investigating anyway...

I'm not really sure if all I need is to copy the required files into System folder or specific location.

Well, I think that's all...
Who is Participating?
Vadim RappConnect With a Mentor Commented:

It's using Wise, but you probably will find useful information. Note the link to another article in one of the followups to the above. Depending on what authoring tool you have, you may find similar information on other vendors as well.
Rory de LeurConsultant End-User ComputingCommented:
Installing multiple drivers with a MSI is a very big job, you have to know what your doing..

An other and easier way is to use the Driver Install Frameworks from Microsoft. In this package is a tool called DPinst.exe, this is a commandline tool that Installs the driver in the Drivercache. When a user plugs in the device the driver automaticly installs without popups.

Product info:
Download info:
Vadim RappCommented:
I agree with criple. There should be no software package for a device driver, and having "Driver XX" in add-remove programs is just wrong. Look at all these NVidia and other multi-megabyte installations, it's total nonsense; and in the end they create separate utilities in order to uninstall.
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

AlexIraMtyAuthor Commented:
Hey vadimrapp, I checked your first comment and seems that is almost all Im looking for but there is a problem. IS NOT FREE $$$$$$

But yes Criple, I Also agree with you, me and my team already are starting to learn how to use Driver Install Frameworks and DPinst.exe.

One of my partners already had success installing the Toaster Driver example specified on that kit and simulating the pluging, unpluging and extract of the Device.

We don't have it yet inside of the MSI package. I'm wondering either if set drivers and DPinst inside a Cab File or execute DPinst thow a CustomAction  :S

There is also other option creating a self-extract cabinet with "iexpress" and merge MSI with DIFxApp.msm using next command:

orca.exe -q -m DIFxApp.msm -f ProgramFiles -r TARGETDIR -l Merge.log -! Install.msi

The problem there is that we dont know where to set that package: BinaryTable?? inside a CAB Cabinet and import it to MSI with:

msidb -d Install.msi -a myPackage.CAB

I just on the road investigating and investigating and investigating...
Vadim RappCommented:
> IS NOT FREE $$$$$$

sure, but I guess you are also creating this package not exactly to drive the kitchen oven in your own home, do you. :-) Certification of your driver will be be free either, by the way.

Still, when I cited the article, I meant first of all the description of the techniques. You can use any MSI-authoring tool, even ORCA, and some are free.
Vadim RappCommented:
Certification of your driver will be be free either -> Certification of your driver will be not free either
AlexIraMtyAuthor Commented:
Drive my kitchen Oven jajajajajajajajajaj That was cool ajajjajajajajajajaj
Rory de LeurConsultant End-User ComputingCommented:
Here is a clean MSI-template (with the merge-module inside).. unzip, and rename to msi.
You can use Installshield/wise to read the msi-script that is full of description tags.

Make Sure that:
- Driver files must have a install location (can not be placed in the BinaryTable)
- The inf-file is located in the INF-component in the msi and marked as key file
AlexIraMtyAuthor Commented:
Hello criple, what you mean with" Driver Files must have an Install Location" I undersatnd "Driver Files" the SYS, DLL, CAT(op) and INF files. Am I right?

And What about the INF component on Components and MsiDriverPackeges Tables. Do we have to create a record on File Table for Inf file???
Rory de LeurConnect With a Mentor Consultant End-User ComputingCommented:
Normally in an msi an installdir is specifide where the " product" wil be installed, this is the same with template above, so let say that your driverfiles (driver.dll, driver.sys and driver.inf) wil be installed in C:\Companyname\Driverfiles 1.0\
The INF-component has to hold the driver.inf seprately, but i almost forgot, every component has a installpath, this must be the same as your installdir.

Because you added files to an msi thet have to be specifide in components (it's a microsoft invention..). If you use an commercial editor, this wil be done for you.
My advice to you, get a trail version of Wise, just to see the relationships and read te comments in the msi-script. Then you can recreate this with orca.
AlexIraMtyAuthor Commented:
Thanks vidimrapp1 and criple You really helped me. We'll try Wise.

Thx to you...
Vadim RappCommented:
The process of adding or removing device, as I understand, triggerssome actions by Windows API in order to stop the device, start thedevice, and so on - those things are not available in the MSI, but youwill have to somehow address them - by custom actions and such.  You also have to think about un-installation and about repair, which can be triggered automatically. During uninstallation, you probably will have to stop the device, hence probably some custom action will be required. And so on. It would be much cleaner if the driver could beinstalled by regular windows process "add new device", i.e. tell itwhat folder to look into, and it's installed; or right-click .inf file and select "install". Without any MSI, just let Windows take care of everything.

By the way, even with MSI, you probably have to provide these functions anyway, so the user can use buttons such as "upgrade driver" etc. from device manager.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.