Net framework 3.0 for XP update causing HP 42xx printers to fail.

E

edavid3001

I approved the .Net 3.0 update in WSUS 2.0 yesterday for a group of
PC's. Those PC's which also have HP LJ4 or 42xx series printers are
all having problems now. When they print, all the pages print
overlayed on a single page. We are seeing this on a large number of
PC's.

I believe the problem is related because MSXML 6.0 was launched from
this update, and it updated the universal print driver dll files.

If we replace the print driver with the same one they had, then the
problem persists. If we update it to the latest driver from HP, the
problem goes away.

The problem is that I have 500 PC's located around the country and I
don't want to manually update the various drivers on all of these. We
have these drivers/queues on all these PC's so someone in California
can print to a printer in Florida versus faxing or mailing.

Is there an easy fix? A DLL to copy? A registry setting I can push?
 
M

Michael D. Ober

Are your clients printing through windows servers? If so, update the
drivers on the windows servers and the driver update should propagate to the
clients the next time they use the printer.

Mike Ober.
 
E

edavid3001

Thank you, but no. They are printing directly to the printer. We do
not utilize Windows print queues.
 
E

edavid3001

Well, here is the fix I came up with. Between 3 people about 15 hours
of work to fix this .NET bug;

call %windir%\system32\cscript %windir%\system32\prnport.vbs -a -r
IP_172.26.16.99 -h 172.16.16.99 -o lpr -2e

rundll32 printui.dll,PrintUIEntry /if /b "TEMP" /f c:\fixlocation
\secure\XPprinterfix\hpc4200b.inf /r "IP_172.26.16.99" /m "HP LaserJet
4200 PCL 5e"

rundll32 printui.dll,PrintUIEntry /q /dl /n TEMP
 
E

edavid3001

I take it back. That doesn't work either. It bombs out with a memory
error on 10% of the machines and then on the rest it sets the default
to print on labels.

It also doesn't fix HP LJ 4 printers or other older ones.

Seems the new HP Universal Print Drivers (UPD) work, though.
Here is a script which gets most of my printers;

install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 4200 PCL 5e"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 4250 PCL 5e"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 5"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 4"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 6P"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 4050"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 8000 Series PCL
5e"
sleep 60
install /ni /h /q /tm /npf /u /pqmigrate"HP LaserJet 8100 Series PCL 6"
 
E

edavid3001

The script below works when the user is NON-admin. The previous one
required admin rights.

rem The sleeps are here because if we didn't sleep we'd end up with
all installs running
rem all at the exact same time.

call %windir%\system32\cscript %windir%\system32\prnport.vbs -a -r
IP_172.26.16.10 -h 172.26.16.10 -o lpr -2e
rundll32 printui.dll,PrintUIEntry /if /b "dummy" /f c:\zentemp\secure
\HP_UPD\hpmcpdpb.inf /r "IP_172.26.16.10" /m "HP Universal Printing
PCL 5" /u


install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 4200 PCL 5e"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 4250 PCL 5e"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 4 Plus"
sleep 60

install /ni /h /q /tm /npf /ru/u /pqmigrate"HP LaserJet 5"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 6P"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 4050"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 4050 Series
PCL 5e"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 8000 Series
PCL 5e"
sleep 60

install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet 8100 Series
PCL 6"

rundll32 printui.dll,PrintUIEntry /q /dl /n dummy


The key here is to install the print driver FIRST by means other than
the install.exe. And then tell install.exe to use the driver we've
already installed via the /u.

This allows one to script it via Zenworks or SMS. I am posting these
because I know I'm not alone and there are many others facing this
problem. Hopefully this is of some use to others.
 
R

RobinS

It's pretty impressive that you've figured it out, and I'm sure there will
be other people who will appreciate this information being out there.

Robin S.
 
M

Michael D. Ober

Instead of using sleep, use

Start /wait. Here's the first line rewritten:

start/wait "Part 1" install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet
4200 PCL 5e"

The "Part 1" is required because you have quote marks in your command line.
The start command uses the first "quoted" string as the title of the new
window.

Mike Ober.
 
E

edavid3001

Instead of using sleep, use

Start /wait. Here's the first line rewritten:

start/wait "Part 1" install /ni /h /q /tm /npf /ru /u /pqmigrate"HP LaserJet
4200 PCL 5e"

Actually, the problem is the install.exe calls another process, does
not wait, and immediately returns control. So the /wait does wait
for install.exe to complete but it doesn't wait for the shelled
process to complete.

That's the reason the first install is using rundll32 - so non admins
get the drivers installed in the scope of Zen/SMS. Then followups
run the install with /ru and /u which still launch the external
process in the USERS context. But this works because at this point
the driver is already installed.

The sleeps make this process take forever. I schedule it to run at
night though.

It does have one issue where the default paper type might be changed
on some printers due to differences in the print drivers. And you CAN
NOT change it & make it stick. So we are testing on these printers
uninstalling and reinstalling using the rundll32.

That M$ XPS driver that got installed with .NET 3.0 / MSXML 6 really
sucks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top