Install update Printer Driver language resource DLL
- From: Rob Roy <RobRoy@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Wed, 22 Oct 2008 14:37:01 -0700
Hello,
I am writing an installation program for a UNIDRV printer driver. The driver
uses a language resource DLL for several languages to alter the display of
"Printing Preferences" based on the selected language.
For USB installation, generally the process is as follows:
1) pre-install driver files + INF to location on hard drive
2) call SetupCopyOEMInf using the pre-installed INF file
3) Tell user to "connect now", and generally the driver is installed
automatically (except on XP, where user must deal with the Found New Hardware
Wizard)
For a "first time" install this works fine.
However, I want to handle the case where a user may have installed English
Language DLL by mistake and wishes to **REPLACE** the DLL in the
system32\spool\drivers\w32x86\3 folder with say the French Language DLL. But,
I cannot get it to work on Vista or Win2K, though it seems to work on XP.
Here is what I am trying:
1) Pre-install the new version (via SetupQueueCopy), essentially overwriting
the former version in the same pre-install DIR. This works fine.
2) Call SetupCopyOEMInf using the same pre-install DIR as before
3) call UpdateDriverForPlugAndPlayDevices, passing it the location of the
pre-installed INF.
This UpdateDriverForPlugAndPlayDevices function returns "success", however
the language DLL is NOT replaced in the system folder where it makes a
difference to the user.
(NOTE: Using the APW for a non-USB port, e.g. COMx, does not work either!!)
For Vista, the DriverStore does NOT get a new "side by side" installation.
If I modify the DriverVer in the INF file, then it works. But, the version
of each language resource DLL is the SAME (not to mention the time stamps of
each file are the same), and I cannot predict which order a user may do this
in, so there is no point in changing the DriverVer for each language package,
since an older version would never replace a newer version.
The driver is currently NOT digitally signed, and I do not have access to
code-signing tools that I can use for self-signing. So, there is no CAT file
available.
I suspect that **IF** I had a CAT file that was different for each language
version package, then it would probably work. But, as I said, I cannot test
this at the moment because I don't have access to code-signing tools.
Questions:
a. Can anyone verify whether adding self-signed CAT files for each language
version would resolve this issue?
b. Is there something that I am fundamentally missing in my installation
process that is required beyond just calling SetupCopyOEMInf (of course,
after all the various SetupQueueCopy calls)?
c. Is there a better strategy available (and documented somewhere) for how
to handle multi-language resource DLL's in a printer driver from an
installation program and/or INF file perspective?
Thanks,
Rob
.
- Follow-Ups:
- Re: Install update Printer Driver language resource DLL
- From: Maxim S. Shatskih
- Re: Install update Printer Driver language resource DLL
- Prev by Date: wpp tracing cauese erros in DebugView
- Next by Date: Re: WPP extended format specification
- Previous by thread: wpp tracing cauese erros in DebugView
- Next by thread: Re: Install update Printer Driver language resource DLL
- Index(es):
Relevant Pages
|