DIFx deprecation

New Contributor

I have extensively used dpinst from the Microsoft Windows Driver Kit for my Windows 7 and Windows 10 deployments to allow building a universal image and I realize that dpinst.exe is no longer available in the Microsoft Windows Driver Kit as of Win10AU.


Is pnputil intended to be the replacement tool?


I use dpinst in my unattend.xml as:

                <RunSynchronousCommand wcm:action="add">
                    <Description>Driver Installation Pass 1 of 3</Description>
                    <Path>"C:\temp\drivers\dpinst.exe" /path "C:\temp\drivers" /q /se</Path>

Yes three passes, to ensure daughter and grand-daughter devices get found.


The joy of dpinst is it only installs what is needed.  Using the same logic with pnputil as:


for /R "c:\temp" %i in (*.inf) do pnputil -i -a "%i"


Pnputil adds ALL drivers it finds to the Driver FileRepository, then detects and installs which slows the process down and takes up unnecessary space when deploying a universal image.


Will dpinst ever come back to the land of living code? or rather, please update it?



2 Replies

DPInst was intended for driver testing.


I believe you can achieve what you want using PowerShell with the "Add-WindowsDriver" cmdlet with the "-Recurse" option.  There is also a command-line option with "DISM /Online /Add-Driver /Driver:<folder> /Recurse".

My 10GB driver pack contains drivers for two dozen make/models of systems.  The problem with building the drivers into the image prior to deployment is that it bloats the image.  It even runs the risk of poisoning the image by bloating the registry with hundreds of unneeded entries.


By installing the drivers at deployment from a cache, only a small amount of space is permanently used.


Also, by leaving Windows to do its thing by installing drivers in its own time, it leaves the system in an undesirable state for the first user logon; which we use as an auto-logon to install hardware-specific OEM software which often times cannot complete because it is waiting on hardware to be detected by Windows and drivers to be loaded.


By forcing driver installation on my terms during unattend.xml using dpinst I ensure that all hardware devices are loaded when I want them, not when Windows gets around to it.