Win8 sysprep and OEM drivers in a local folder

Quite simply, in Windows 7 Pro I would drop driver folders into c:\windows\inf\<added-subfolder> that would cover all the systems we support.  At first boot after imaging, Windows 7 would recursively search for drivers in the default path c:\windows\inf which includes that <added-subfolder> with many subfolders containing many other drivers.

By the time the user logon was available, everything was installed and happy.  Everything worked great.

Yes it can extend the initial post-image boot time but it was worth it for an easy universal image.

Now with Windows 8.1u1 Pro I have tried the same mechanic (with 8.1u1 drivers of course) and it refuses to look in c:\windows\inf\<added-subfolder>.  Sysprep and my answerfile do their job but the system doesn't begin loading any drivers until reaching the desktop.  It appears that Windows is only initially loading critical drivers and even those are only the Win8 native ones.

Has something changed or been broken that I've missed?

Injecting these drivers with pnputil is not an option.  The registry bloats and breaks the image.  Neither is using SCCM an option.

It's a very simple solution but so far it's refusing to work with Win8.1u1 .

Installing via Update Driver on the device in Device Manager, then pointing to the subfolder, I get:

Windows encountered a problem installing the driver software for your device.
Windows found driver software for your device but encountered an error while attempting to install it.
The system cannot find the file specified.

I guess that's something to work with.  Digging ...

Update:  pnpunattend run as a script from an administrative group user pops user intervention errors for unsigned drivers.  Do I dare hope that if I alter my answerfile it won't?

I've added:

    <settings pass="specialize">
		<component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
			<RunSynchronous>
				<RunSynchronousCommand wcm:action="add">
					<Order>1</Order>
                    <WillReboot>Always</WillReboot>
                    <Description>PnPUnattend Install</Description>
					<Path>c:\windows\inf\xinf\pnpunattend.cmd</Path>
				</RunSynchronousCommand>
			</RunSynchronous>
		</component>
    </settings>

and:

    <settings pass="auditSystem">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\windows\inf\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>

Where c:\windows\inf\xinf\pnpunattend.cmd is:

REM Configuring PNP Driver Installation.. 
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UnattendSettings\PnPUnattend\DriverPaths\1" /v Path /t REG_SZ /d "C:\windows\inf\xinf" 
 
REM Installing PNPDeviceDrivers 
C:\Windows\System32\pnpUnattend.exe AuditSystem /L > c:\windows\temp\pnpunattend.txt


  • Edited by Ericahalfbee Thursday, February 05, 2015 4:14 PM
January 27th, 2015 6:22am

To recap what I'm doing:

1. Images are created in Hyper-V 2012.
2. Sysprep 1 of the VM creates the default user profile which is then copied to a local, mandatory profile path.
3. Sysprep 2 of the VM then closes the image and shuts down.
4. The VirtualMachine is captured by FOG.
5. The FOG image is deployed by FOG to any number of platforms.

What I want:

6. At first boot the OS installs all drivers from a locally cached store; not a network share.

Please leave a verbose response.  I have tried many different ways, with only one less than desirable method working.

Changing from FOG is not an option.


I'm going over my attempts again to see if I've missed something (which I'm sure I have but I can't figure out what!) yargen ...
  • Edited by Ericahalfbee Thursday, February 05, 2015 4:16 PM
Free Windows Admin Tool Kit Click here and download it now
February 5th, 2015 7:15pm

I had a crazy idea that maybe Windows 8.1u deliberately would not look beyond what it already knows for the folder file structure in c:\windows\inf , so I:

1. put the extracted drivers into c:\xinf

2. hklm\software\Microsoft\windows\currentversion\DevicePath = %SystemRoot%\inf;c:\xinf

3. Added the following to the working portion of closer32.xml (unattend.xml):

Waiting on results.

    <settings pass="offlineServicing">
        <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <DriverPaths>
                <PathAndCredentials wcm:action="add" wcm:keyValue="1">
                    <Path>c:\xinf</Path>
                </PathAndCredentials>
            </DriverPaths>
        </component>
    </settings>





  • Edited by Ericahalfbee Thursday, February 05, 2015 5:32 PM
February 5th, 2015 7:35pm

I've been clear on my design and desire.

The why is irrelevant.

FOG is in place and will not be replaced anytime soon.

I'm not reinventing any wheel. This works for Windows 7.

By default Windows will recursively search all folders within a folder for drivers.  Ergo in Win7 I simply dumped xinf into c:\windows\inf and we're cooking with gas.  Applying the same in Win8 is a no go.  Win8 will not recursively search c:\windows\inf for any added folders (ie: \xinf).

I've seen many other users post similar requests without receiving direct responses here either.

I've read and reread Microsoft's documentation over and over, and it clearly states that you CAN force the PE and the installer to look to a directory (MDT share or folder or whatever) for oem drivers by altering the unattend.xml .  But for some reason it just ain't working for me.




  • Edited by Ericahalfbee Thursday, February 05, 2015 8:22 PM
Free Windows Admin Tool Kit Click here and download it now
February 5th, 2015 10:57pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics