Jump to content

Injecting drivers into "gold" image


Recommended Posts

I am trying a simple task of injecting drivers into a Vista image :)

The sort of thing you would do by simply using OEMPnPDriverPath in sysprep.inf with XP et al.

I've googled, searched here, followed the instructions to no avail.

==================================

THE QUESTION

==================================

Why don’t (some of) my injected drivers work in my vista image!!!!???

==================================

DRIVERS

==================================

OK - the machines I have to test with have 3 drivers missing:-

1 - ALPS touchpad

2 - Stac AC97

3 - Texas Instruments Smartcard reader

Each of these are from the Dell website. Each works fine if the driver file is expanded and vista is simply pointed to the files. All the drivers are signed.

==================================

IMAGE

==================================

The image is a simple sysprepped image that we are applying to other machines. The original image has no extra drivers in, so I am "injecting" them using the published method of using pkgmgr and injecting into an offline image. (as per http://technet2.microsoft.com/WindowsVista...3.mspx?mfr=true )

==================================

Driver Injection

==================================

I mount the image and inject the drivers using the technique above. The logfile says 6 drivers applied. The oem1..6.inf files are modified in image_c\windows\inf; and the drivers can be seen in image_c\windows\system32\driverstore\filerepository as per the logfile from pkgmgr

==================================

Unattend.XML

==================================

The unattend.XML has the correct bits in (I think) following the instrucitons above.

<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:\drv</Path>

</PathAndCredentials>

</DriverPaths>

</component>

</settings>

(I have tried using different passes to no avail)

==================================

WHAT HAPPENS!!!

==================================

Well - till today I'd have said "nothing" - and blamed my technique. (I was trying with simply the Stac97 drivers). I've added teh ALPS and the TI drivers in the same way (so all the drivers are there) - and the Vista machines quite happily detect the ALPS driver and installs it beautifully - but completely ignores the other two drivers!!! WHY!!!! I've even downloaded the drivers from teh MS Windows Update site and tried those - but again - these are not detected on startup. Yet - if, agian, Vista is pointed to teh folder after install - it finds and uses the driver perfectly, All signed and no issues.

==================================

PKGMGR Logfile

==================================

Shows drivers being injected. And, manually checking shows the drivers are there.

2007-01-22 16:48:26, Info CBS Pkgmgr: called with: "pkgmgr /o:"L:\;L:\WINDOWS" /n:"L:\windows\panther\unattend\unattend.xml" /l:"c:\temp\real4""

<snip>

2007-01-22 16:48:29, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Parameter Offline Windows Directory Path: 'L:\WINDOWS' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:29, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Parameter Offline system drive on reboot: 'C:' (Error code (HRESULT) 0x0.)

...

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Found directory ALPSTouchPad under search path (Error code (HRESULT) 0x0.)

...

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Found directory TexasInstrumentsSmartCard under search path (Error code (HRESULT) 0x0.)

...

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Found 6 driver package(s) at 'c:\drv'. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\ALPSTouchPad\Apfiltr.inf' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\TexasInstrumentsSmartCard\gtipci21.inf' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\TexasInstrumentsSmartCard\tifm21.inf' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\TexasInstrumentsSmartCard\TIFMICON.INF' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Driver Package 'c:\drv\WU_Sigmatel\Stac97.inf' (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Installing driver package 'c:\drv\ALPSTouchPad\Apfiltr.inf' to the currently offline OS ... (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: The class GUID for INF 'c:\drv\ALPSTouchPad\Apfiltr.inf' is '4d36e96f-e325-11ce-bfc1-08002be10318'! (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: The class GUID '4d36e96f-e325-11ce-bfc1-08002be10318' is boot-critical. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: 'c:\drv\ALPSTouchPad\Apfiltr.inf' is a boot critical driver. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Added 'c:\drv\ALPSTouchPad\Apfiltr.inf' to offline driver store at 'L:\WINDOWS\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.inf'. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Added driver 'c:\drv\ALPSTouchPad\Apfiltr.inf' to the offline Windows image at 'L:\WINDOWS\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.inf'. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Driver package 'c:\drv\ALPSTouchPad\Apfiltr.inf' installed! (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Successfully marked devices for reinstall! (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Installing driver package 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' to the currently offline OS ... (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: The class GUID for INF 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' is '4d36e96c-e325-11ce-bfc1-08002be10318'! (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: The class GUID '4d36e96c-e325-11ce-bfc1-08002be10318' is not boot-critical. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' is not a boot critical driver. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Added 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' to offline driver store at 'L:\WINDOWS\System32\DriverStore\FileRepository\stac97.inf_609fc149\stac97.inf'. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Added driver 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' to the offline Windows image at 'L:\WINDOWS\System32\DriverStore\FileRepository\stac97.inf_609fc149\stac97.inf'. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Driver package 'c:\drv\Sigmatel Stac 975X AC97\WDM\Stac97.inf' installed! (Error code (HRESULT) 0x0.)

2007-01-22 16:48:30, Info CBS Pkgmgr: Install Drivers Offline Callback: SUCCESS:Successfully marked devices for reinstall! (Error code (HRESULT) 0x0.)

etc

2007-01-22 16:48:35, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: Installed '6' drivers. (Error code (HRESULT) 0x0.)

2007-01-22 16:48:35, Info CBS Pkgmgr: Install Drivers Offline Callback: INFO: RETURN InstallDriversOffline (0) (Error code (HRESULT) 0x0.)

2007-01-22 16:48:35, Info CBS Pkgmgr: return code: 0x0

==================================

SetupAPI.dev.txt logfile (on vista machine after running though unattend install)

==================================

Note pci\ven_8086&dev_266e&subsys_01871028 is the Stac97

This PnP ID is contained within teh INF files etc

So - how come the ALPS driver is detected, and not the stac97? It suggests the technique I am using is correct else the Alps would not be detected - but why aren't the other two drivers?

[Device Install Log]

OS Version = 6.0.6000

Service Pack = 0.0

Suite = 0x0100

ProductType = 1

Architecture = x86

[beginLog]

>>> [setup Plug and Play Device Install]

>>> Section start 2007/01/22 17:04:05.203

...

set: PCI\VEN_8086&DEV_266E&SUBSYS_01871028&REV_03\3&2B8E0B4B&0&F2 -> setting CONFIGFLAG_REINSTALL on non-started device.

...

>>> [setup online Device Install (Hardware initiated) - PCI\VEN_8086&DEV_266E&SUBSYS_01871028&REV_03\3&2b8e0b4b&0&F2]

>>> Section start 2007/01/22 17:04:45.414

ump: Creating Install Process: DrvInst.exe 17:04:45.414

ndv: Retrieving device info...

ndv: Setting device parameters...

ndv: Building driver list...

dvi: {Build Driver List} 17:04:45.445

dvi: Searching for hardware ID(s):

dvi: pci\ven_8086&dev_266e&subsys_01871028&rev_03

dvi: pci\ven_8086&dev_266e&subsys_01871028

dvi: pci\ven_8086&dev_266e&cc_040100

dvi: pci\ven_8086&dev_266e&cc_0401

dvi: Searching for compatible ID(s):

dvi: pci\ven_8086&dev_266e&rev_03

dvi: pci\ven_8086&dev_266e

dvi: pci\ven_8086&cc_040100

dvi: pci\ven_8086&cc_0401

dvi: pci\ven_8086

dvi: pci\cc_040100

dvi: pci\cc_0401

dvi: Enumerating INFs from path list 'C:\Windows\INF'

inf: Searched 0 potential matches in published INF directory

inf: Searched 27 INFs in directory: 'C:\Windows\INF'

dvi: {Build Driver List - exit(0x00000000)} 17:04:45.585

ndv: Selecting best match...

dvi: {DIF_SELECTBESTCOMPATDRV} 17:04:45.585

dvi: No class installer for 'Multimedia Audio Controller'

dvi: No CoInstallers found

dvi: Default installer: Enter 17:04:45.585

dvi: {Select Best Driver}

! dvi: Selecting driver failed(0xe0000228)

dvi: {Select Best Driver - exit(0xe0000228)}

! dvi: Default installer: failed!

! dvi: Error 0xe0000228: There are no compatible drivers for this device.

dvi: {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 17:04:45.617

ndv: {Core Device Install}

! ndv: Installing NULL driver!

dvi: Set selected driver complete.

dvi: {DIF_ALLOW_INSTALL} 17:04:45.882

dvi: No class installer for 'Multimedia Audio Controller'

dvi: Default installer: Enter 17:04:45.898

dvi: Default installer: Exit

dvi: {DIF_ALLOW_INSTALL - exit(0xe000020e)} 17:04:45.898

dvi: {DIF_INSTALLDEVICE} 17:04:45.898

dvi: No class installer for 'Multimedia Audio Controller'

dvi: Default installer: Enter 17:04:45.898

! dvi: Installing NULL driver!

dvi: Writing common driver property settings.

dvi: {Restarting Devices} 17:04:45.929

dvi: Restart: PCI\VEN_8086&DEV_266E&SUBSYS_01871028&REV_03\3&2B8E0B4B&0&F2

dvi: Restart complete.

dvi: {Restarting Devices exit} 17:04:45.976

dvi: Default installer: Exit

dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 17:04:45.976

dvi: {Build Driver List} 17:04:45.976

! dvi: Driver list already built

dvi: {Build Driver List - exit(0x00000000)} 17:04:45.976

dvi: {DIF_SELECTBESTCOMPATDRV} 17:04:45.976

dvi: No class installer for 'Multimedia Audio Controller'

dvi: Default installer: Enter 17:04:45.992

dvi: {Select Best Driver}

! dvi: Selecting driver failed(0xe0000228)

dvi: {Select Best Driver - exit(0xe0000228)}

! dvi: Default installer: failed!

! dvi: Error 0xe0000228: There are no compatible drivers for this device.

dvi: {DIF_SELECTBESTCOMPATDRV - exit(0xe0000228)} 17:04:45.992

ndv: Device install status=0x00000000

ndv: Performing device install final cleanup...

ndv: {Core Device Install - exit(0x00000000)}

ump: Server install process exited with code 0x00000000 17:04:45.992

<<< Section end 2007/01/22 17:04:45.992

<<< [Exit status: SUCCESS]

............ALPS TOUCHPAD DRIVER................

>>> [setup online Device Install (Hardware initiated) - ACPI\PNP0F13\4&11be56c0&0]

>>> Section start 2007/01/22 17:04:50.492

ump: Creating Install Process: DrvInst.exe 17:04:50.492

ndv: Retrieving device info...

ndv: Setting device parameters...

ndv: Building driver list...

dvi: {Build Driver List} 17:04:50.507

dvi: Searching for hardware ID(s):

dvi: acpi\pnp0f13

dvi: *pnp0f13

dvi: Enumerating INFs from path list 'C:\Windows\INF'

inf: Opened PNF: 'C:\Windows\System32\DriverStore\FileRepository\msmouse.inf_3dfa3917\msmouse.inf' ([strings.0409] <src=drvstore>)

dvi: Created Driver Node:

dvi: HardwareID - *PNP0F13

dvi: InfName - C:\Windows\System32\DriverStore\FileRepository\msmouse.inf_3dfa3917\msmouse.inf

dvi: DevDesc - PS/2 Compatible Mouse

dvi: DrvDesc - PS/2 Compatible Mouse

dvi: Provider - Microsoft

dvi: Mfg - Microsoft

dvi: ModelsSec - MSMfg.NTx86

dvi: InstallSec - PS2_Inst

dvi: ActualSec - PS2_Inst

dvi: Rank - 0x0dff0001

dvi: Signer - microsoft windows

dvi: Signer Score - INBOX

dvi: DrvDate - 06/21/2006

dvi: Version - 6.0.6000.16386

inf: Opened INF: 'C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.inf' ([strings] <src=drvstore>)

inf: Saved PNF: 'C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.PNF' (Language = 0409)

sig: {_VERIFY_FILE_SIGNATURE} 17:04:50.554

sig: Key = apfiltr.inf

sig: FilePath = C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.inf

sig: Catalog = C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\Apfiltr.cat

sig: Success: File is signed in catalog.

sig: {_VERIFY_FILE_SIGNATURE exit(0x00000000)} 17:04:50.679

dvi: Created Driver Node:

dvi: HardwareID - *PNP0F13

dvi: InfName - C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db\apfiltr.inf

dvi: DevDesc - Alps Touch Pad

dvi: DrvDesc - Alps Touch Pad

dvi: Provider - Alps

dvi: Mfg - Alps Electric

dvi: ModelsSec - CompanyMfg.NT.6

dvi: InstallSec - MouFilter_Inst

dvi: ActualSec - MouFilter_Inst.NT

dvi: Rank - 0x0dff0001

dvi: Signer - Microsoft Windows Hardware Compatibility Publisher

dvi: Signer Score - WHQL

dvi: DrvDate - 10/26/2006

dvi: Version - 7.0.101.7

inf: Searched 2 potential matches in published INF directory

inf: Searched 27 INFs in directory: 'C:\Windows\INF'

dvi: {Build Driver List - exit(0x00000000)} 17:04:50.789

ndv: Selecting best match...

dvi: {DIF_SELECTBESTCOMPATDRV} 17:04:50.789

dvi: Using exported function 'MouseClassInstaller' in module 'C:\Windows\system32\SysClass.Dll'.

dvi: Class installer == SysClass.Dll,MouseClassInstaller

dvi: Using exported function 'CriticalDeviceCoInstaller' in module 'C:\Windows\system32\SysClass.Dll'.

dvi: CoInstaller 1 == SysClass.Dll,CriticalDeviceCoInstaller

dvi: CoInstaller 1: Enter 17:04:50.789

dvi: CoInstaller 1: Exit

dvi: Class installer: Enter 17:04:50.804

dvi: Class installer: Exit

dvi: Default installer: Enter 17:04:50.804

dvi: {Select Best Driver}

dvi: Selected driver installs from section [MouFilter_Inst] in 'c:\windows\system32\driverstore\filerepository\apfiltr.inf_15fa42db\apfiltr.inf'.

dvi: Class GUID of device remains: {4d36e96f-e325-11ce-bfc1-08002be10318}.

dvi: Set selected driver complete.

dvi: Selected:

dvi: Description - [Alps Touch Pad]

dvi: InfFile - [c:\windows\system32\driverstore\filerepository\apfiltr.inf_15fa42db\apfiltr.inf]

dvi: Section - [MouFilter_Inst]

dvi: Signer - [Microsoft Windows Hardware Compatibility Publisher]

dvi: Rank - [0x0dff0001]

dvi: {Select Best Driver - exit(0x00000000)}

dvi: Default installer: Exit

dvi: {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 17:04:50.804

ndv: Driver selected, now performing install...

ndv: {Core Device Install}

inf: Opened INF: 'C:\Windows\INF\oem1.inf' ([strings] <src=drvstore>)

inf: Saved PNF: 'C:\Windows\INF\oem1.PNF' (Language = 0409)

inf: Opened PNF: 'C:\Windows\INF\oem1.inf' ([strings] <src=drvstore>)

dvi: {DIF_ALLOW_INSTALL} 17:04:50.882

dvi: CoInstaller 1: Enter 17:04:50.882

dvi: CoInstaller 1: Exit

dvi: Class installer: Enter 17:04:50.882

inf: Opened PNF: 'C:\Windows\INF\oem1.inf' ([strings] <src=drvstore>)

inf: Opened PNF: 'C:\Windows\INF\oem1.inf' ([strings] <src=drvstore>)

dvi: Class installer: Exit

dvi: {DIF_ALLOW_INSTALL - exit(0x00000000)} 17:04:50.882

ndv: Installing files...

dvi: {DIF_INSTALLDEVICEFILES} 17:04:50.882

dvi: CoInstaller 1: Enter 17:04:50.882

dvi: CoInstaller 1: Exit

dvi: Class installer: Enter 17:04:50.882

dvi: Class installer: Exit

dvi: Default installer: Enter 17:04:50.882

dvi: {Install FILES}

inf: Opened PNF: 'c:\windows\system32\driverstore\filerepository\apfiltr.inf_15fa42db\apfiltr.inf' ([strings] <src=drvstore>)

inf: Opened PNF: 'C:\Windows\INF\msmouse.inf' ([strings.0409] <src=drvstore>)

inf: {Install Inf Section [MouFilter_Inst.NT]}

inf: CopyFiles=MouFilter_CopyFiles,MouFilter_CopyFilesDll,MouFilter_CopyFilesWav,MouFilter_CopyFilesHome (apfiltr.inf line 48)

cpy: Open PnpLockdownPolicy: Err=2. This is OK. Use LockDownPolicyDefault

flq: QueueSingleCopy...

flq: Inf : 'c:\windows\system32\driverstore\filerepository\apfiltr.inf_15fa42db\apfiltr.inf'

flq: SourceInf: 'c:\windows\system32\driverstore\filerepository\apfiltr.inf_15fa42db\apfiltr.inf'

flq: SourceSection: [sourcedisksfiles]

flq: Source root path based on SourceInf

flq: SourceRootPath: 'C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db'

flq: {FILE_QUEUE_COPY}

flq: CopyStyle - 0x00000000

flq: SourceRootPath - 'C:\Windows\System32\DriverStore\FileRepository\apfiltr.inf_15fa42db'

flq: SourceFilename - 'Apfiltr.sys'

flq: TargetDirectory- 'C:\Windows\system32\DRIVERS'

flq: TargetFilename - 'Apfiltr.sys'

flq: SourceDesc - 'Alps Touch Pad Filter Driver for Windows Vista Setup Disk'

flq: {FILE_QUEUE_COPY exit(0x00000000)}

...snip.....

<<< Section end 2007/01/22 17:04:54.554

<<< [Exit status: SUCCESS]

Thanks all for any info/tips :)

Link to comment
Share on other sites


Hi RyanJ,

I had issues trying to load/inject drivers using the Specialize pass. I found the best method (that worked for me!) was:

Building/Capturing

1) Build machine

2) Sysprep the machine with /AUDIT /GENERALIZE (as opposed to OOBE)

3) Capture the WIM

4) Save the WIM someplace safe :-)

Restoring

1) Clean hard disk

2) Copy PNP drivers to hard disk e.g C:\DRIVERS

3) Restore WIM to hard disk

4) Boot

I ensured that I included the drivers path in the Audit section, and then set the final audituser mode to reboot to OOBE.

Hope that makes sense.

Cheers,

Mike

Link to comment
Share on other sites

Hi Mike

I'm still struggling. Have a PSS call open and no avail yet. Sent the guy my image and he is testing on identical hadware as we speak

My drivers are 100% for sure being uploaded into the image - just not being detected :(

Anyway - your idea:-

Building/Capturing

1) Build machine

2) Sysprep the machine with /AUDIT /GENERALIZE (as opposed to OOBE)

3) Capture the WIM

4) Save the WIM someplace safe :-)

RJ> OK - I understood /audit to "test" the image and not actually do anything with it?

Restoring

1) Clean hard disk

2) Copy PNP drivers to hard disk e.g C:\DRIVERS

3) Restore WIM to hard disk

4) Boot

RJ> OK

I ensured that I included the drivers path in the Audit section,

RJ> OK

and then set the final audituser mode to reboot to OOBE.

RJ> Sounds "interesting"! How do you do that? Do you have an unattend example? I will gooooogle and see if I can replicate your way.

Thanks for the suggestion!

Link to comment
Share on other sites

Hi RyanJ,

I've added the XML that I use below. You'll obviously want to strip parts out. This XML works with redetection via AUDIT modes, but also with injecting via OFFLINESERVICING. The main sections you will probably want to look at are

<settings pass="offlineServicing">

<settings pass="auditSystem">

<settings pass="auditUser">

If you use sysprep with /AUDIT, the auditsystem/user sections will be invoked - they will do the PNP work and then jump to OOBE. If you invoke with /OOBE then auditsystem/user sections will be skipped.

Obviously you can try the standard injection with pkgmgr. This XML is set to scan c:\$oem$ and sub-directories.

Hope it helps!


<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-Setup" 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">
<DiskConfiguration>
<Disk>
<WillWipeDisk>false</WillWipeDisk>
<DiskID>0</DiskID>
</Disk>
<WillShowUI>OnError</WillShowUI>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>1</PartitionID>
</InstallTo>
<WillShowUI>OnError</WillShowUI>
</OSImage>
</ImageInstall>
<UserData>
<ProductKey>
<Key>[INSERT YOUR OWN]</Key>
<WillShowUI>OnError</WillShowUI>
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
</component>
<component name="Microsoft-Windows-International-Core-WinPE" 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">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>en-US</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>en-US</UserLocale>
</component>
<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:keyValue="7c3d4301" wcm:action="add">
<Path>c:\$oem$</Path>
</PathAndCredentials>
</DriverPaths>
</component>
</settings>
<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:\$OEM$</Path>
</PathAndCredentials>
</DriverPaths>
</component>
</settings>
<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:\$oem$</Path>
</PathAndCredentials>
</DriverPaths>
</component>
<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">
<Reseal>
<Mode>Audit</Mode>
<ForceShutdownNow>false</ForceShutdownNow>
</Reseal>
</component>
<component name="Microsoft-Windows-Shell-Setup" 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">
<UserAccounts>
<AdministratorPassword>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Name>Builder</Name>
<Group>administrators</Group>
<Password>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</Password>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<AutoLogon>
<Username>Builder</Username>
<Enabled>true</Enabled>
<Password>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</Password>
</AutoLogon>
</component>
</settings>
<settings pass="auditUser">
<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">
<Reseal>
<Mode>OOBE</Mode>
<ForceShutdownNow>false</ForceShutdownNow>
</Reseal>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" 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">
<RegisteredOwner>[INSERT YOUR OWN]</RegisteredOwner>
<RegisteredOrganization>[INSERT YOUR OWN]</RegisteredOrganization>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>3</ProtectYourPC>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<CommandLine>c:\installer.cmd</CommandLine>
<Order>1</Order>
</SynchronousCommand>
</FirstLogonCommands>
<UserAccounts>
<AdministratorPassword>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Name>Builder</Name>
<Group>administrators</Group>
<Password>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</Password>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<AutoLogon>
<Username>Builder</Username>
<Enabled>true</Enabled>
<Password>
<Value>[INSERT YOUR OWN]</Value>
<PlainText>true</PlainText>
</Password>
</AutoLogon>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:c:/vistawim/installb2.wim#Windows Vista Ultimate" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Cheers,

Mike

Link to comment
Share on other sites

Thanks - much appreciated.

I'll copy & paste this into a clean image and follow your instructions.

Im 50/50 whether the issue is with how I create an image, or rather the drivers.

As, from lots of reading, all we are doing is sticking drivers INTO the driverstore for PnP to access. Now I know these are there - just not being used....

So if your trick works = its my unattend

If it doesn't - something wrong with driver detection and the drivers I have....

Watch this space....

Thanks again

Link to comment
Share on other sites

I'm not sure if pkgmgr does more then just add the drivers to the driverstore.

Part of my reason for thinking this is reviewing pkgmgr logs but also some personal observations from building a machine.

Baseline:

Built VMWare image

Sysprepped (either with OOBE or AUDIT - see below)

Captured WIM

IBM X60 tablet results:

Test 1

Install WIM (OOBEd)

Copy drivers to c:\$oem$

Result: Standard vista - tablet components/drivers not installed

Theory: No PNP happened from a straight OOBE.

Test 2

Install WIM (OOBEd)

Copy drivers to c:\$oem$

Pkmgr injection

Result: Tablet vista, all drivers functioning

Theory: Pkgmgr forced the drivers to actually work/pnp re-detect

Test 3

Install WIM (Audit)

Copy drivers to c:\$oem$

Result: Tablet vista, all drivers functioning

Theory: Audit mode re-activated PNP

For sure, pkgmgr is a *lot* faster for injecting drivers because it doesn't come with all the baggage of the Audit phases...

I'll stop writing now, because I can't remember the point I was going to make :w00t:

Cheers,

Mike

Link to comment
Share on other sites

lol!

Trying your method as we speak.

My main issue is though - I am injecting 3 drivers - Sound, Trackpad, Smartcard.

All the same way.

Only the Trackpad is detected and installed.

Therefore theory says - method used for injection is correct

But why not the other two? Logs show drivers injected. And logs show detection phase and "no drivers found" - despite (a) oemXX.inf being in c:\windows\inf; (B) correct signed drivers in c:\...\drirverstore © - erm - all log files saying injection went well and drivers successfully added.

Mr Microsoft has just said "got your image - setting up env - and deploying onto identical hardware"

Should be fun.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...