13 August, 2011

Installing additional HP universal printer drivers on Windows Server 2008 R2 x64

This was a bit harder than I thought. Usually you just

  1. Right-click your installed x64 printer and select Printer properties.
  2. Change to the tab Sharing.
  3. Click Additional Drivers....
  4. Check the checkboxes for the additional architectures (I like that they have this looong list, it'll be worth it when we have x1024 operating systems and below....).
  5. Specify the path to the x86-driver (in my case).
  6. Watch the install go through successfully.

The problem here is the last step. When I tried to add the driver, I got an error message as shown below:

image
"The specified location does not contain the driver for the requested processor architecture."

I found the solution to the error with the help of this question (or more specific, the answer) at superuser.com. The problem is the driver name specified in the (in my case) HP Universal Print Driver .inf-file. Windows matches the new x86 driver name with the installed x64 driver name, and if it isn't an exact match the above error message is displayed.

If you open the .inf-file named hpcu115d.inf of the x64 HP Universal Print Driver you'll find many entries like

[HP.NTx64]
"HP Universal Printing PCL 6" =
hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co5005
"HP Universal Printing
PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co3FFB
"HP Universal
Printing PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co614B
"HP
Universal Printing PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co238A
"HP Universal Printing
PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co478A
"HP Universal
Printing PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co8F88
"HP
Universal Printing PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co9AB9
"HP Universal Printing
PCL 6" = hpcu1156.gpd.NTx64,USBPRINT\Hewlett-PackardHP_Co9ADF

The driver name here is HP Universal Printing PCL 6. The problem is that somehow somewhere this name changes to the name of the printer when the universal x64 driver is installed, which causes the above error message to show when we try to install additional drivers for other architectures.

The solution is to open the hpcu115d.inf for the x86 HP Universal Print Driver (or for whatever architecture you want to install additional drivers for), and change the driver name for all entries to the driver name of the installed printer (in my case, the installed printer's name was the same as the name of the driver name, but I'm not sure if this is the case every time). So edit it to look like this (just do a Replace all):

[HP.NTx86]
"HP Color LaserJet 2700 PCL6" =
hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co5005
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co3FFB
"HP Color
LaserJet 2700 PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co614B
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co238A
"HP Color
LaserJet 2700 PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co478A
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co8F88
"HP Color
LaserJet 2700 PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co9AB9
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co9ADF
"HP Color
LaserJet 2700 PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co5B94
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_CoE22F
"HP Color
LaserJet 2700 PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co862F
"HP Color LaserJet 2700
PCL6" = hpcu1156.gpd.NTx86,USBPRINT\Hewlett-PackardHP_Co4E2D

Of course, you need to replace the printer name with the name of your installed printer. After this, you can point the installation to this edited .inf-file and it'll go through without any errors (at least it did for me).

image

No comments:

Post a Comment