What do you use as driver installer targeting only latest windows version

I should make a installer for filter and/or virtual driver.

I was thinking to just make my own app to install them.

I would be using Dir 13 = DriverStorage/… , so sys file would not be in the dir 12 = fixed place drivers/xyz.sys

I think using wix really does give any additional value than package them to msi as even the sys file is not in fixed place ?

can you recommend some other framework instead ?

how do you do installers ?

I was just about to tell you not to touch DriverStore, because that’s reserved for the operating system itself, but I see there are now instructions on how to do exactly that. Go figure.

Personally, I always used tools like pnputil to preinstall into DriverStore folder and then install from DriverStore into system32/drivers. That always seemed quite clean to me. Even when I used NSIS to create my installers, I’d always defer to DIFX to do the actual installation.

If i was writing something from scratch today. I’d have a WiX installer writing the sys,inf and cat to disk in C:\Program Files\MeThen a custom action to execute pnputil on the inf. I’d have my inf install to the DriverStore as per: Driver Package Isolation - Windows drivers | Microsoft Learn

I would avoid wix Difx plugin. I am 90% sure it does not support DIRID13

Thanks for the reply.

but looks like Difx is depricated and only combatible for older wsk’s.

I did some some digging, I found that i.e ncap uses own exe to run devcon.

some others use SetupDi functions directly from msi custom action.

I still use Difx with WiX v3. It’s getting old but is still working so I’m sticking with it for now.

For the newest driver that I’m working on, I place the .sys, .inf & .cat in the product directory via my WiX installer, and then I have a custom action calling a utility .exe that I wrote which makes use of the SetupDi API functions to install the driver into the Driver Store or remove it. The .exe also takes care of all other tasks related to user-mode & driver services, such as creating/deleting/stopping a service, telling the Filter Manager to load/unload a driver, etc. This has all been working reliably, and is coded to support down-level as far back as Windows Server 2019 on through to Windows Server 2025 24H2 and Windows 11 24H2+.

2 Likes

We use the DiInstallDriverA function since two years in our setup installer, no issues. Works fine for Windows 10 and Windows 11.