okay, wasn't lazy, did a little research, it is possible after all, and in a number of ways even...
METHOD 1 (too long):
first, you HAVE to dism mass storage drivers (and lan - if you enabled network for pe in answer file) into boot.wim (2nd index only needed for setup) cause it runs completely from memory and copies nothing to hdd (and dvd drive could be ANY letter at this point) - it is equivalent to integrating them in I386 folder as before for xp
but know that the injected drivers are automaticaly expanded within image, and multiple copies of them are kept separately if there are more than one .inf files per folder (or multiple entries in a single *.inf), so integrate only boot critical drivers this way (chipset, storage and lan) or your image may not fit on a dvd - and you can actualy run out of ram when booting from it
mount image (must be writable, so copy to hdd first):
Dism /Mount-Wim /WimFile:C:\test\boot.wim /Index:2 /MountDir:C:\test\offline
remove old drivers (skip if this is the first time):
Dism /Image:C:\test\offline /Remove-Driver /Driver:OEM1.inf /Driver:OEM2.inf ... /Driver:OEM99.inf
(how ever many there are third party drivers in C:\test\offline\Windows\Inf folder, you cant uninstall default ones)
inject all the drivers from C:\D folder, including in subfolders and even unsigned ones:
Dism /Image:C:\test\offline /Add-Driver /Driver:C:\D /Recurse /ForceUnsigned
dismount image (and then replace boot.wim from where you got it):
Dism /Unmount-Wim /MountDir:C:\test\offline /Commit
second, you create a $OEM$\$$\Inf\D folder INSIDE sources folder on install dvd/usb (not in root anymore) and add ALL the drivers there (dvd:\sources\$OEM$\$$\Inf\D) - they get automaticaly copied to C:\Windows\Inf\D folder during install (and windows already searches for drivers there on its own, including subfolders), only needed ones also get copied to windows driverstore folder, so you can safely delete C:\Windows\Inf\D after install if you wish
METHOD 2 (but only for vista/2008 with any integrated service pack, or 7 and 2008 R2):
at install windows automaticaly searches ALL the available drives for $WinPEDriver$ folder (not $WinPEDriverS$) in its root, so copy only boot critical drivers there (dvd:\$WinPEDriver$), they can be in subfolders too and are used during the whole install
but beware not to run out of ram as before, cause WinPE doesnt have anywhere else to keep its driverstore folder but memory
also - if a driver fails to inject in boot.wim with dism tool (as in previous method) the setup WILL fail if you put it in $WinPEDriver$ folder, so i suggest that you test all the drivers with dism FIRST (you can see the failed ones in C:\Windows\Logs\DISM\dism.log file) and move the bad ones to dvd:\sources\$OEM$\$$\Inf\D folder (as in previous method)
winpe supports cabbed drivers - but i had to expand some to work with dism (only 2 or 3 out of ALL the available driverpacks, but just one can f*ck you up)
METHOD 3 (too large):
forget everything from above and in the answer file for install.wim image, under Microsoft-Windows-Setup in WinPE pass just set UseConfigurationSet to true - now you have a system variable %configsetroot% which always points to the drive containing autounattend.xml in its root (doesnt need to be the install drive)
add the %configsetroot%\your_drivers_path to Microsoft-Windows-PnpCustomizationWinPE as a device driver path, and they are immediately available from the very start
but know that ALL the files from %configsetroot% drive WILL be automaticaly copied to C:\Windows\configsetroot folder, which can safely be deleted afterwards
EDIT: corrected $OEM$\$$\Windows\Inf\D to $OEM$\$$\Inf\D (but $OEM$\$1\Windows\Inf\D would work too)
Last edited by pOcHa (2010-10-31 12:10:48)