UPDATED for DriverPack BASE 7.04 and later. I'm starting a new thread because the title of the thread it was under was regarding a specific error and a tangent evolved into these instructions.
NOTE: This HOW TO assumes you are proficient with sysprep. If not, I recommend you read through this first.
1) Download the latest version of DriverPack BASE (7.05.2 at time of writing) and whatever DriverPacks you need.
2) Extract BASE to a folder by running the .exe you downloaded (example: DPs_BASE_7052.exe)
3) In the folder you extracted BASE to, open the 'bin' folder. Copy DPsFnshr.ini and extract DPsFnshr.7Z to C:\ on the computer you'll be running Sysprep on.
4) Inside of the BASE 'bin' folder, open the 'wnt5_x86-32' folder. Copy ROE.exe to C:\sysprep, and extract DevPath.exe from M2.7z to C:\ on the computer you'll be running Sysprep on.
5) Extract your DriverPacks with either 7-zip or WinRAR. If you have WinRAR integrated into your shell you can just control-click the Packs you want to select them, then right-click on one and choose "Extract Here". Make sure that they are all merged into the same folder structure under the 'D' folder (D\C, D\G, etc). You should also have a set of files ending with wnt5_x86-32.ini. These contain the various exceptions that DPsFnshr.exe reads when it runs.
6) Move extracted DriverPacks ('D' folder) and wnt5_x86-32.ini files to C:\ on the computer you'll be running Sysprep on.
6a) If you are slipstreaming DP_Graphics_A, create a dummy (Notepad) file in C:\. Name it ATICCC.ins if you want the Catalyst Control Center or ATICCP.ins if you want the Catalyst Control Panel installed when Radeon hardware is detected. The file can be blank as DPsFnshr.exe just looks for the file name. DPsFnshr.exe deletes the .ins file when it is finished running.
6b) If you want, you can modify the extracted driver packs to remove hardware you don't need. If you do, remember to move the modified driver pack to D\3\ (i.e. D\3\C, D\3\CPU, etc). If you want DPsFnshr.exe to run as intended (do to paths in the wnt5_x86-32.ini files), though, I would leave things like the DriverPack Graphics A unmodified.
7) Open a Command Prompt and run
and then
NOTE: Since you are loading your DevicePath with DevPath.exe, you can leave out the OemPnPDriversPath entry (under the [Unattended] section) in your sysprep.inf file. OemPnPDriversPath has a 512 characters limit, but DevPath.exe gets around this by writing directly to the registry entry that OemPnPDriversPath gets loaded into by sysprep.
8) Open C:\DPsFnshr.ini in Notepad or Wordpad. Since we aren't actually running BASE we have to change the configuration for the Finisher manually. Generally, you will only need to edit the KTD and KTDlocation variables at the very top. If you do not want KTD enabled set:
If you want to KTD, put 'paths:' and then a list of folders in D you want to keep. Even if you want to keep all the drivers, I would still recommend specifying them individually due to the "double D" and Desktop.ini bugs in Finisher. For example, in my configuration, I want to keep all of the drivers. I have a D\3 folder when I've put my 3rd party and modified driver packs, and a D\G folder that contains an unmodified Driver Pack Graphics A. So my KTD line looks like:
KTDlocation tell Finisher where to move the D folder to if you have KTD enabled. For example, I move my drivers to C:\WINDOWS\Options\Drivers so my KTDlocation line is:
KTDlocation = "%SystemRoot%\Options\Drivers"
9) Edit c:\sysprep\sysprep.inf and add the following lines under the [Unattended] section:
UpdateInstalledDrivers = Yes
DriverSigningPolicy = Ignore
10a) (optional) If you want the Mass Storage drivers that come with XP added to your sysprep.inf then add the line:
to the very end of your sysprep.inf. Then, run
c:\sysprep\sysprep.exe -bmsd
10b)If you want to include the drivers in DriverPack MassStorage, then you will have to added them to the [SysprepMassStorage] section manually by opening up the various mass storage drivers' inf files and copying the vendor and device codes with a path to the inf file. There is a script that can automate the process for you here, but it doesn't seem to be perfect yet.
For example, all of the machines I am deploying my image on are based on Intel chipsets (IBM/Lenovos, and HPs). So, I can get away with only adding the Intel mass storage drivers. As of DriverPack MassStorage 7.06.2, this is the section I add at the begining of [SysprepMassStorage] after running sysprep -bmsd
PCI\VEN_8086&DEV_2652&CC_0106 = C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_2653&CC_0106 = C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_27C1&CC_0106 = C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_27C5&CC_0106 = C:\D\M\IN\1\iaahci.inf
PCI\VEN_8086&DEV_27C3&CC_0104 = C:\D\M\IN\1\iastor.inf
PCI\VEN_8086&DEV_2652&CC_0104 = C:\D\M\IN\1\iastor.inf
PCI\VEN_8086&DEV_24DF&CC_0104 = C:\D\M\IN\1\iastor.inf
PCI\VEN_8086&DEV_25B0&CC_0104 = C:\D\M\IN\1\iastor.inf
PCI\VEN_8086&DEV_2681&CC_0106 = C:\D\M\IN\2\iaahci.inf
PCI\VEN_8086&DEV_2821&CC_0106 = C:\D\M\IN\2\iaahci.inf
PCI\VEN_8086&DEV_2822&CC_0104 = C:\D\M\IN\2\iastor.inf
PCI\VEN_8086&DEV_27C6&CC_0104 = C:\D\M\IN\2\iastor.inf
PCI\VEN_8086&DEV_2682&CC_0104 = C:\D\M\IN\2\iastor.inf
PCI\VEN_8086&DEV_2829&CC_0106 = C:\D\M\IN\3\iaahci.inf
PCI\VEN_8086&DEV_2922&CC_0106 = C:\D\M\IN\3\iaahci.inf
PCI\VEN_8086&DEV_282A&CC_0104 = C:\D\M\IN\3\iastor.inf
PCI\VEN_8086&DEV_2680 = C:\D\C\I\xp\ESB2ide.inf
PCI\VEN_8086&DEV_269E = C:\D\C\I\xp\ESB2ide.inf
PCI\VEN_8086&DEV_244B = C:\D\C\I\xp\ich2ide.inf
PCI\VEN_8086&DEV_244A = C:\D\C\I\xp\ich2idem.inf
PCI\VEN_8086&DEV_248B = C:\D\C\I\xp\ich3ide.inf
PCI\VEN_8086&DEV_248A = C:\D\C\I\xp\ich3idem.inf
PCI\VEN_8086&DEV_24CB&CC_0101 = C:\D\C\I\xp\ich4ide.inf
PCI\VEN_8086&DEV_24CA&CC_0101 = C:\D\C\I\xp\ich4ide.inf
PCI\VEN_8086&DEV_24C1&CC_0101 = C:\D\C\I\xp\ich4ide.inf
PCI\VEN_8086&DEV_24D1&CC_0101 = C:\D\C\I\xp\ich5ide.inf
PCI\VEN_8086&DEV_24DB&CC_0101 = C:\D\C\I\xp\ich5ide.inf
PCI\VEN_8086&DEV_25A2&CC_0101 = C:\D\C\I\xp\ich5ide.inf
PCI\VEN_8086&DEV_25A3&CC_0101 = C:\D\C\I\xp\ich5ide.inf
PCI\VEN_8086&DEV_2651&CC_0101 = C:\D\C\I\xp\ich6ide.inf
PCI\VEN_8086&DEV_2652&CC_0101 = C:\D\C\I\xp\ich6ide.inf
PCI\VEN_8086&DEV_2653&CC_0101 = C:\D\C\I\xp\ich6ide.inf
PCI\VEN_8086&DEV_266F = C:\D\C\I\xp\ich6ide.inf
PCI\VEN_8086&DEV_27C0 = C:\D\C\I\xp\ich7ide.inf
PCI\VEN_8086&DEV_27C4 = C:\D\C\I\xp\ich7ide.inf
PCI\VEN_8086&DEV_27DF = C:\D\C\I\xp\ich7ide.inf
PCI\VEN_8086&DEV_2820 = C:\D\C\I\xp\ich8ide.inf
PCI\VEN_8086&DEV_2825 = C:\D\C\I\xp\ich8ide.inf
PCI\VEN_8086&DEV_2828 = C:\D\C\I\xp\ich8ide.inf
PCI\VEN_8086&DEV_2850 = C:\D\C\I\xp\ich8ide.inf
PCI\VEN_8086&DEV_2922 = C:\D\C\I\xp\ich9ahci.inf
PCI\VEN_8086&DEV_2923 = C:\D\C\I\xp\ich9ahci.inf
PCI\VEN_8086&DEV_2920 = C:\D\C\I\xp\ich9ide.inf
PCI\VEN_8086&DEV_2921 = C:\D\C\I\xp\ich9ide.inf
PCI\VEN_8086&DEV_2926 = C:\D\C\I\xp\ich9ide.inf
PCI\VEN_8086&DEV_2928 = C:\D\C\I\xp\ich9ide.inf
PCI\VEN_8086&DEV_292D = C:\D\C\I\xp\ich9ide.inf
PCI\VEN_8086&DEV_292E = C:\D\C\I\xp\ich9ide.inf
11) Open a Command Prompt and run
This tells Windows to run C:\DPsFnshr.exe on the next reboot. I found that using [GuiRunOnce] in sysprep.inf to run DPsFnshr.exe resulted in the dreaded desktop.ini bug. Using ROE.exe to create a RunOnceEx entry for DPsFnshr.exe does not have this issue. DO NOT REBOOT BEFORE THE NEXT STEP OR DPsFnshr.exe WILL RUN!
12) Run sysprep.exe and reseal
BONUS: If your image is to be deployed on both single and multicore systems, then I'd highly recommend you check out MySysprep. It can detect a multicore CPU and switch HALs during minisetup.
Note: I was able to eliminate a lot of my sysprep/imaging issues (including minisetup looking for hdaudbus.sys in the wrong place) by NOT using RyanVM's update packs. In fact, I recommend only using nlite to slipstream SP2 and setup the Unattended section when building a disc. Since you're creating an image anyways, it doesn't hurt to run Windows update manually, and be 100% sure everything is install 'the Microsoft way'.
skinlayers