Re: Install update Printer Driver language resource DLL



I would install _all_ language DLLs in the package and then choose among
them in runtime.

--
Maxim S. Shatskih
Windows DDK MVP
maxim@xxxxxxxxxxxxxxxx
http://www.storagecraft.com

"Rob Roy" <RobRoy@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:B258E72A-8001-42F1-AF37-A91611EC3537@xxxxxxxxxxxxxxxx
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



.



Relevant Pages