Video Screencast Help

Issues with DISM x64 and installing 64 bit drivers with Dell laptops

Created: 07 Nov 2012 • Updated: 08 Nov 2012 | 11 comments
This issue has been solved. See solution.

I'm trying to create a x64 deployment of windows 7 and everything is getting screwy when it comes to driver installation in the WinPE x64 environment.

I use xcopy to copy drivers to c:\windows\drivers based on the hardware product name found with Altiris -- for ex: Latitude E6430

xcopy /E /Y "R:\%#!computer@prod_name%" "%Drive%:\Windows\Drivers\"

From there on out we use DISM x64 to install those drivers in WinPE x64 -- however drivers don't seem to be installing properly and I'm clueless.

x64 drivers should be put into c:\windows\syswow64\drivers correct?

They are not getting there. They are still being put into c:\windows\system32\drivers

Oddly enough, we have a Latitude E6400, and the drivers are installed into the 32 bit directory, and everything works fine (but the drivers aren't installed because of DISM -- I feel it's installed because of the Windows install).

Also, how these drivers are working in c:\windows\system32\drivers I cannot explain either. I thought 32bit drivers in a 64bit OS don't work.

If someone can chime in -- I've tried DISM, tried DPINST, and don't know why this doesn't work on x64 but does on our x86 deployment.

Comments 11 CommentsJump to latest comment

Carsten Giese's picture

What is the output when you run DISM with the /get-drivers switch? Is the driver listed as oemXXX.inf?

Generally spoken you just need to add nic- and storage-drivers via DISM.

All other drivers can be injected via a simple file-copy before the unattended install starts.

Just make sure that the driver-path is named in the unattended install file.

JHBPJF's picture

Thanks for replying Carsten Giese -- Here is what I am using.

.\WAIK2\amd64\servicing\dism.exe /image:%Drive%:\ /scratchdir:"%Drive%:\windows\TEMP" /Add-Driver /driver:"%Drive%:\Windows\Drivers" /ForceUnsigned /recurse /quiet /norestart /logpath:".\Logs\win7\%COMPNAME%_drivers.log.txt"

We actually have been downloading the large cab files from Dell and placing all the drivers in it's specific computer name folder.

For testing purposes, I did just place only the NIC & storage drivers for DISM to install. Still it did not function properly.

Specifically for this Latitude E6430s, the NIC driver is intel and it's E1c62x64.INF

Now here is the log file showing that it "Installed" --- but it doesn't.

2012-11-07 16:36:11, Info                  DISM   DISM Driver Manager: PID=1484 Successfully proccessed driver package 'C:\Windows\Drivers\network\DRVR_Network_Intel_A06-FG13K_setup_ZPE\E1C\WINDOWS7-x64\E1c62x64.INF'. - CDriverPackage::Install

Apart of the unattend, is to join the domain, therefore without this process the deployment doesn't function.

I am able to sign into the laptop with the local admin account, and from what I see, no drivers are installed into c:\windows\syswow64\drivers. Everything is always placed within c:\windows\system32\drivers --- but I believe that's just Windows.

Any thoughts would be helpful. Thanks!

Carsten Giese's picture

Just for clarification: The image is WinPE3.1 or is it a WIn7-image?

In case it is a Win7-WIM then please make sure that you are adding the drivers into the correct image inside of the WIM (it has multiple images which can be selected via the index). Try imagex /info *.wim to see which index is the correct image.

Also see the following link for a DISM-GUI to avoid any typos in the DISM-command: http://dismgui.codeplex.com/

After importing the drivers run DISM with the /get-drivers switch to see if the driver was really injected.

 

JHBPJF's picture

We are actually using Ghost this time around. -- We are still using WinPE2.1 because we are still on 6.9 Deployment Solutions. We're waiting for 7.5 to be released.

Our x86 deployment uses Rdepoy and .img files.

== 

I'm going to capture a .wim image, and run this GUI and see how it goes.

mortenleth's picture

Hey JHBPJF

For testing purposes, i think you need to find out, what works, and what does not work. :)
You say you have tried both, dpint, and dism, this kinda rules out theres something wrong with both programs (i mean, if it doesn't work for one of them it should work for the other).

I think if i were you i would find out, if the drivers does in fact work.
Deploy a clean os, and take the drivers, does driver install work by hand? - if it does, it sure means you can use them for your install.

I don't see much problem with your execution:

first you copy your drivers down to C:\Windows\Drivers
And afterward you specify that c:\windows\drivers is the library you need to install the drivers from, and traverse the folder structure for drivers that match the OS - same way i would have done it.

Regarding your fussness about the 32/64 bit drivers, i wouldn't worry much about it, you cannot install 32 bit drivers on a 64 bit os, that's just how it is... - this information is in your .inf and the os then places the .inf where it need be, and this information useually also is specified in the .inf file.

But step 1 would be i think to find out if your drivers actually work... - then troubleshoot the dism injection afterwards...

Kind Regards
Morten Leth

JHBPJF's picture

mortenleth -- thanks for your suggestion.

I am able to install the driver manually after it fails to install offline once I log onto the machine with a local admin account.

The drivers are put into c:\windows\system32\drivers so what exactly is c:\windows\syswow64\drivers for?

I'm going to do another run through and check the dism log file that is created again. I swear it shows that it has been "installed". >=/

JHBPJF's picture

I ran DISM GUI -- 

Installing 80 of 116 - .\Images_x64\Latitude E6430s\network\DRVR_Network_Intel_A06-FG13K_setup_ZPE\E1C\WINDOWS7-x64\E1c62x64.INF: The driver package was successfully installed.

It says it installed perfectly fine, but when I check c:\windows\system32\drivers, the .sys is no where to be found.

==

I also ran another clean install with my deployment job, and while my DISM logs show that the driver has been installed, the .sys file is not in c:\windows\system32\drivers.

2012-11-08 11:04:30, Info                  DISM   DISM Driver Manager: PID=1244 Successfully proccessed driver package 'C:\Windows\Drivers\network\DRVR_Network_Intel_A06-FG13K_setup_ZPE\E1C\WINDOWS7-x64\E1c62x64.INF'. - CDriverPackage::Install

I am quite lost. The NIC, Wifi, USB 3.0, and other devices also don't get installed.

mortenleth's picture

I don't think you need to focus that much on where it installs it ;) - here on my computer all of my drivers are located in system32, and this is a 64 bit os.

I don't think that's your problem.

Are you sure you are using the correct dism.exe, there is one for every OS... it could be that you are using the wrong one... - try installing WAIK 3.0 and taking the waik folder from there, and then use the dism.exe from that one...

JHBPJF's picture

That isn't the issue. That was the first thing I checked. First time it failed, we were still using x86 dism. I switched it to amd64 dism, version 6.1.7600.16385, still not working.

JHBPJF's picture

Oddly enough, the Latitude E6400 works perfectly fine. Come the E6410, E6420, E6430, and E6430s models, they all fail.

JHBPJF's picture

I am unable to explain why, but I captured a image off a Dell Latitude E6400 model and now DISM installs the drivers on all models.

I really don't know why when I created the image off the newer Dell Latitude E6430 and E6430s models, DISM would not work.

SOLUTION