Installing cross-architectural print drivers from the server locally

Installing cross-architectural print drivers from the server locally

  • Comments 13
  • Likes

 

Hello Everyone. This is Digvijay once again with a new blog post about my favorite component – Printing.

Since the release of Windows 2008 and Windows 2008 R2 there have been several times where we get calls from the customers saying that they have built a new 64-bit 2008 or a 2008 R2 print server and now the 32-bit clients are not able to access the print queues since the 32-bit printer drivers are missing. This is a known issue and many of our experts have already blogged about it here here and here. We also have a Knowledge Base article that tells you what needs to be done http://support.microsoft.com/kb/952065 . And that way is to remotely install the drivers from a 32bit client running vista/win7 or 2008 server.

But, what if there is an environment where there are no 32-bit Windows Vista/Windows 7/Windows Server 2008 machines to pull the drivers remotely from? What if you want to add all the 32-bit inbox printer drivers on the server locally so that you don’t have to add the drivers remotely each time you install a new print queue?

Well, recently I got a case where the customer was wanting to do exactly that. He had set up a new Windows Server 2008 64-bit machine which was to be provisioned at his client’s location and all the workstations in his client’s environment were 32-bit Windows XP SP3. He created the print queues for the existing printers and added the 32-bit drivers remotely using steps mentioned in the KB. But the issue that he was facing was that once he gives the server to his client, what will happen if they add some new printers later? From where will he get the 32-bit version of the drivers? How do we make sure that he has all the 32-bit printer drivers available locally on the server all so we don’t need to add the drivers remotely?

There were a few options I was thinking of suggesting. They were:

 

a. Download an evaluation copy of 32-bit Windows 7 or Windows Server 2008 and then install it and follow the above steps mentioned in the KB. Windows 7 Trial can be found at - http://technet.microsoft.com/en-us/evalcenter/cc442495.aspx

b. Use the ImageX tool from the Windows Automated Installation Kit to extract the necessary driver files from an installation disk without installing the 32-bit OS.

c. Download an  evaluation .vhd of Windows Server 2008 and load it on a Virtual Machine (Hyper-V,Virtual Server,Virtual PC) and then add the drivers from there.

 

Once we had the .iso/.vhd file downloaded and a spare server to install, it would have been easy to get all the existing drivers, but what to do about loading all the 32-bit printer drivers that are available to the 64-bit target server?

I am assuming that we didn’t have a spare server to install the 32-bit OS, nor a virtualization solution to use the .vhd downloaded from the above links. In this case, we decided that the second option was the most feasible. So we need to manually extract the files from the Windows Server 2008 32-bit image using Imagex.exe. This is what we needed to do to accomplish this:

 

1. Download and install the Windows Automated Installation Kit (WAIK).

a. Save the program to your computer. (Windows AIK is distributed as an .iso file)

b. Burn the iso image to a DVD or extract the contents directly using other tools.

c. Once the DVD has been mounted/extracted or loaded click Windows AIK Setup to begin the installation.

2. Mount install.wim from the sources directory of the cross-architecture media . (This would be installing a 64-bit driver on an x86 server, or a 32-bit driver on an x64 server. In this example, I am installing 32-bit drivers on a 64-bit server.)

a. Create a folder for extracting the files (e.g., C:\32bitPrinterDrivers).

b. Insert the 32-bit Windows Server 2008/Windows Vista/Windows 7 disk into the appropriate drive.

c. Open a command prompt with administrative credentials (Start - Search Programs – cmd.exe right-click Command Prompt, and select Run as administrator).

d. Navigate to the folder where WAIK is installed by typing cd C:\Program Files\Windows AIK\Tools\x64

e. Run the Imagex command using the /mount switch to open the WIM file in read-only mode, using the following command syntax:

imagex /mount <location and name of WIM file> <image number to open > <location of folder created in step a>

For example, to mount the first image of standard Windows Server 2008 install.wim file to path C:\32bitPrinterDrivers, where the d: drive represents the dvd drive where the 32-bit Windows Server 2008 media is loaded, use the following command:

imagex /mount d:\Sources\install.wim 1 C:\32bitPrinterDrivers

 

This will take some time to extract the files. Once the operation is completed, you can browse to the mounted location and see all the 32-bit inbox drivers.

A brief look at the contents of the folder may reveal that the folders which have the name in the format prn<manufacturer>001.inf_<random guid> are the ones that we will be using to install the print drivers. We will also need the ntprint.inf_xxxxxxxx folders. I copied all these files to a new folder and moved them locally to the 64-bit machine. In this case, they were about 981 MB in size. 

NOTE: the files names may differ since the last 8 digits are randomly created.

 

So, once I had the driver files, the rest was easy. From the 64-bit server, open the Printers snap in.

1. Right click the on the Printer already installed for which you want to load a 32bit driver and select Properties.

2. Within the printer’s Properties window select the Sharing tab and click on the Additional Drivers button which will cause the Additional Drivers window to appear.

 

clip_image004

 

3. Within the Additional Drivers window I selected x86 as the processor type and clicked on OK.

 

clip_image006

 

4. Browse to the location where the 32-bit printer driver files are saved, select the manufacturer and point to the ini file within the folder and click OK.

 

clip_image008

 

Once again, the names of the folders containing the printer drivers are in the format – prn<manufacturer>001.inf_<random guid>. So if I had to install a HP driver, I would select the prnhp001.inf_2ade4966 folder. For installing a Brother driver, I would select the prnbr001.inf_a54871ed folder.

 

image

 

image

 

5. Clicking on Open and then OK, we get a list of the all the drivers contained in the package by this manufacturer. Select the appropriate driver from the list and continue the install.

clip_image014

 

6. Once completed, we can verify that the driver has been installed successfully by going to the Additional Drivers section of the Print queue. We can also verify the same by looking at the drivers tab of the Print server properties or in the Print Management Console.

 

clip_image016

 

clip_image018

 

 

So now, once we get a new printer, we can just browse to the 32-bit driver’s directory and get the 32-bit drivers instantly without having to look for a 32-bit machine to add the drivers remotely from.

 

Caution: When sharing 32-bit drivers from a print queue created with 64-bit print drivers, the 32-bit and 64-bit print drivers MUST be the same version. Failure to use matching print drivers could cause a lack of communication between the print server and client, and may result in disrupted or no printing.

We still recommend that installing drivers remotely from the other system is often the only way to get an older OEM print driver to install additional drivers. The process of copying 32-bit print drivers to the 64-bit system and then adding the additional drivers works well with the print drivers that are available inbox.

With that, I come to the end of this post. Please feel free to contact us if you have any questions or suggestions about this post.

Thanks again for stopping by.

Digvijay Nath

Share this post :


Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Nice post. I always wanted to do something similar.

  • This Article was life saviour for me.....Thank  you very much

  • i needed to do the exact opposite from your post. i have a 32bit 2008 print server and i need 64bit drivers. i am going to try the imagex method to se if i can extract the drivers from a 2008 64bit dvd

    thanks

  • I found myself in a situation where I needed to install x86 Drivers on our x64 Servers (so that our x86 WinXP clients could print)

    I found a very simple solution, and now I am trying to understand why this Official/suggested method is so complex in comparison...Im trying to understand if there is going to be some kind of consequence because of the method Ive used?

    Here is what Ive done:

    Included with the x86 driver package of the printer I wanted to install, I found a i386 folder, inside this folder there was a NTPRINT.INF file. (Lexmark Universal x86 driver package)

    While installing a x86 printer driver on Server 2008, you are prompted for the location of this file...I simply pointed to the location of this file... Server 20008 was happy to complete the x86 Driver installation

    All the Printers I have installed with this method are working fine from the x86 WinXP clients.

    Is there some reason not to use my method ? Any advice/feedback would be great, Many thanks.

  • Hello, nothing wrong with your approach. Myself, i need to script what you were saying, but don't know exactly how to do it...

  • The snag here is that you are simply adding an X86 driver to a printer that you have already installed with a 64b driver. In my case, no 64b driver exists! So how do you add an x86 printer with no 64b driver??

  • Excellent article Tim. I'm going to build a Windows 7 x64 VM with both x86 & x64 MS drivers so I don't have to hop from different VMs when I need to install a 32 bit driver for the clients to our Win 2008 R2 print servers. If this article had been around 2 years ago it would have saved a lot of work!

    JGF if your server is x64 then you need x64 drivers for the server (and x64 clients) AND x86 drivers for x86 clients and vice versa - but don't bother installing Win 2008 R1 (Vista) servers - go straight to Win 2008 R2 (we have 9) - it's much more robust! provides driver isolation and much better event logs for printers separate from the System log.

  • Nice article Digvijay. Glad to see you're writing again. Looking forward to the next one.

  • Excellent -- this is the solution I was looking for when all others did not work for me!!

  • I just wanted you to know that I'm glad that Printing is your favorite subject about which to blog!!!!!~~ this article opened my eyes to a whole new way of managing this part of my responsibilities.  It certainly solved the issue for me of obtaining or gaining access to newer x86 drivers without installing the whole operating system.    I'll admit I'm not familiar with the AIK with the exception of the blog here, but now that I have done it I see all kinds of possibilities for it to help me in other areas.  Thank you so much for taking the time to share your experience.

  • Just wanted to say thanks as your blog helped me migrate some 20+ printers over to Win2008R2.  A note to other out there who may have had a similar problem to mine.  It is VERY important to download both the x86 and the x64 versions of the drivers at the same time.  I was using an old printer driver library at the client site to migrate the printers, and inevitably the two driver versions would not have the same name.  I found it was easier to download the printer drivers directly from the mfr, instead of using the Windows Update button.  It took quite a while, and is in no way as easy as it should have been, but a little pre-planning pays off.

  • what about samsing ml2240 what would be the prn<manufacturer>001.inf_<random guid> , cause I've tried all s* m* and I'm still nowhere ;/

  • okay.. nice kludge.  Now what do you do if you have 1000 printers to migrate?