I recently ran into a challenge at a client that I had not dealt with before. We were working on cleanup items post-deployment of their new Windows 7 desktop when Kraft & Kennedy was asked to put together a number of updates for deployment to the new desktop. One of the requests was to update drivers on the machines with new drivers from both Dell and Toshiba. Microsoft had done a review of the desktop and concluded some updated driver versions would help with performance.
We already had a task sequence with the new version of drivers built-in using SCCM 2012 driver packages so I though this request shouldn’t not be a problem. Then I started running into challenges! First off, you’ll notice that there is no way to “deploy” a driver package in SCCM 2012 — red flag #1. To work around this, I figured I would run a task sequence and install the driver package during the course of installing other application updates we were planning to deploy. We kicked off the task sequence and it failed on the driver installation step because the machine was not running in WinPE — red flag #2! Having the task sequence reboot into WinPE to install the driver package sounded like a big mess so I turned to the internet for help.
It turns out there is not much out there on this topic but I was eventually able to find an answer that was very easy to implement. Microsoft has a kit called Windows Driver Kit 8.1 (“WDK 8.1”) designed to help plan and test installing drivers on Windows operating systems. Inside the kit is a command line utility called DPinst.exe, short for Driver Package Installer. Turns out this is a perfect utility for installing or updating drivers on the command line.
Here is what I did to create driver packages that can be deployed or installed during a task sequence:
1. Download dpinst.exe as part of the Windows Driver Kit HERE.
2. Create a source file directory with your drivers in all of their subfolders. Dell provided driver packages come in a perfect pre-existing package. (Note: drivers must be in extract INF based format, Setup.exe drivers installation programs will not work)
3. Copy dpinst.exe to the root of the folder
4. Create a DPInst.xml file with UTF-8 encoding and the text below in the root of the source folder. (UTF-8 encoding is an option in the Save As screen in Notepad)
5. Create a Package in SCCM and point to your source folder containing the drivers. (Note: this is a Package, not a Driver Package)
6. Enter the following command into SCCM as a Program:
dpinst.exe /S /SA /SE /SW /F
7. Use the Program as part of a task sequence.
8. Enable Continue on Error
9. DPInst returns DWORD return codes so you won’t get 0x0 as a success. If you want you can write a VB wrapper to modify the return code.
10. Details on return codes can be found HERE.
11. Reboot the computer after the installation
%windir%dpinst.log is the detailed log file for the installation.
<?xml version=”1.0″ ?> <dpinst> <!– The following search and subDirectory elements direct DPInst to search all subdirectories (under the DPInst working directory) to locate driver packages. –> <search> <subDirectory>*</subDirectory> </search> </dpinst>