Home > Uncategorized > Troubleshooting scripted printer driver installations

Troubleshooting scripted printer driver installations

I came across an interesting problem one day when I was trying to install a printer driver in Windows XP through known-working vbscript files. One script was custom made and the other was the built-in prndrvr.vbs file included with the operating system. The same driver that installed without a problem using the Add a Printer wizard won’t install when using vbscript. All I would get back is a simple error code 2.

After referencing Microsoft’s MSDN article on the Win32_PrinterDriver.AddPrinterDriver method, I was pointed to the standard WMI Error Constants page, which then told me to use the system’s built-in net helpmsg command to find out what the error code 2 was: The system cannot find the file specified.

I found that to be odd – how can a file be missing if that same driver package works 100% when using the GUI to install it? To find out what was going on, I made use of the Microsoft SetupAPI log file. Details are available in a whitepaper at Microsoft’s Windows Hardware Developer Central. While the whitepaper goes into extreme details, I only needed to do the basics to determine the cause of this installation failure. I left the SetupAPI log level at 0, which proved to be sufficient.

For simplicity in documentation, I used the existing prndrvr.vbs file that is included in Windows XP. The results of my findings are shown below:

Command entered:
cscript prndrvr.vbs -a -m “HP LaserJet P4010_P4510 Series PCL 6″ -v 3 -e “Windows NT x86″ -i “I:\\Public\\Drivers\\HP LaserJet P4010 Series\\hpc4015c.inf”

Result:
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

Unable to add printer driver HP LaserJet P4010_P4510 Series PCL 6 Win32 error code 2

Result in C:\Windows\Setupapi.log:
[SetupAPI Log]
OS Version = 5.1.2600 Service Pack 3
Platform ID = 2 (NT)
Service Pack = 3.0
Suite = 0×0100
Product Type = 1
Architecture = x86
[2009/05/11 09:49:47 4216.4 Driver Install]
#-198 Command line processed: C:\WINDOWS\system32\wbem\wmiprvse.exe
#I060 Set selected driver.
#I060 Set selected driver.
[2009/05/11 09:49:47 4216.5]
#-198 Command line processed: C:\WINDOWS\system32\wbem\wmiprvse.exe
#-167 SPFILENOTIFY_NEEDMEDIA: Tag = “p6i2enww.cab“, Description= “HP LaserJet P4015/4014/4515 PCL 6 CD”, SourcePath = “i:\ public\drivers\hp laserjet p4010 series”, SourceFile = “UNIDRV.HLP“, Flags = 0×00000000.
#E169 SPFILENOTIFY_NEEDMEDIA: returned FILEOP_ABORT. Error 2: The system cannot find the file specified.
#W187 Install failed, attempting to restore original files.

As it can be seen from the log file, the WMI method Win32_PrinterDriver.AddPrinterDriver could not locate the file p6i2enww.cab, which contains the English localized copy of unidrv.hlp. To help WMI out I simply extracted the unidrv.hlp file from p6i2enww.cab to the folder containing the driver files. Since all the Windows installations I deal with are English localized (and the fact that I don’t know of anyone who actually uses the printer driver help file), forcing an English localization isn’t a problem.

After adding the “missing” file to the install folder and executing the vbscript again the print driver installed without a problem.

Uncategorized

  1. jim smith
    July 16th, 2009 at 14:08 | #1

    Thanks for this entry. I couldn’t for the life of me figure out what error code 2 was which I started getting after I fixed the unsigned driver issue.

  2. Mikel
    January 13th, 2010 at 20:46 | #2

    MATE!!!!

    you are a genius!!

    i have been working for months trying to fix this issue!

    This fix works both with HP 6040 and HP Universal Driver PCL 5,

    which are the 2 models i have been having huuuge issues with error 2.

    thanks again.

  3. January 22nd, 2010 at 08:49 | #3

    This was exactly my problem that I had with the HP Universal Printing PCL 6 driver. I use WMI and .NET to install the drivers. Look at my website for details. Thanks!

  1. January 22nd, 2010 at 09:41 | #1

Anti-Spam Protection by WP-SpamFree