How do you reliably upgrade cdintf250?

The Amyuni PDF Converter is our Printer Driver that enables you to convert any documents to PDF format. If you have any questions about installing and using the Amyuni PDF Converter please post them here.
Post Reply
trumpetinc
Posts: 60
Joined: Mon Jul 28 2003

How do you reliably upgrade cdintf250?

Post by trumpetinc »

My application was originally installed with 250c. I downloaded the latest DLLs, and confirmed that they are for 250d (version on the cdintf dll is 2.5.0.4). I go through our standard printer setup procedure (which worked perctly in cdintf210), but the printer still shows the 250c version of the driver.

What is the correct procedure for reliably upgrading/updating cdintf using API calls (not install.exe)? I *must* do the install from code - I can *not* use the install.exe applet.

The correct version (2.5.0.4) of cdintf250.dll is in the C:\Windows\System32 directory. I make the following calls to do the installation:

Load cdintf.dll from my application's directory
Call PDFDriverInit with printer name
Call DriverInit with printer name
Call EnablePrinter with driver handle, licensee, etc...
Call DriverEnd
Copy cdintf.dll from application directory to %SYSTEM32%\cdintf250.dll (%System32% determined via GetSystemDirectory() Win32 API call)



I'm sure that if I completely uninstall and re-install the printer that it will work, but uninstalling takes a long time (I've seen it take as long as 30 seconds on some workstations), and I think that I really should be able to do this without uninstalling first.

What's going on here?

Thanks,

- K
Joan
Amyuni Team
Posts: 2799
Joined: Wed Sep 11 2002
Contact:

Post by Joan »

Hello,

You can not install a new driver and be sure that the new driver is in use without uninstalling the old driver. If you application is running the old driver may still be in memory and it will not be overwritten by the new one.

Here are the steps you can follow to install a new update programmatically:

1) Call PDFDriverInit (your printer name) 'to get a handle to the currently installed printer
Call DriverEnd(your printer name) to remove the currently installed printer

2) unregister CDIntf250.dll from the system directory by using Regsvr32 -u

3) Reboot your system, check that the printer is uninstalled.

4) Copy the new CDIntf to the system directory and rename it CDIntf250.dll (whatever is should be called depending on the version of the driver being used) then register it using Regsvr32.

5) Call PDFDriverInit (your printer name)
Call DriverInit (your printer name).

You mentioned that unistalling takes a long time (up to 30 seconds on some machines), the time to unistall a printer depends on the machine you have and the operating system installed on that machine, 30 seconds is not a really long time if you consider that installation needs to be done once and not every now and then.

I also noticed that you mentioned workstations, do you have a client server environment? If yes, are you installing the printer on each client machine?
trumpetinc
Posts: 60
Joined: Mon Jul 28 2003

Post by trumpetinc »

Joan-

Here's the problem: I *must* have some way of detecting whether a given machine needs to go through this entire update process. Currently, you are not providing me with any way to determine whether a pre-existing instance of our printer is at the same version as the drivers in our installer.

This means that every single time we run our installer to do an update, we are having to uninstall and re-install the printers - even though we only actually update the printer drivers once or twice out of ever 30 or 40 installer packages we create.

Adding a 30 second delay to our installer every time it is run just because we *might* have updated the driver just makes no sense.

In the 2.1 version of the driver, it was possible to just re-install the driver (without uninstalling it first). cdintf would look to see if the driver actually needed to updated, and would return quickly if it did not.


If it were at least possible for us to determine WHEN we need to do the full uninstall and re-install, then at least we'd only incur the huge delay when it was actually needed.

At this time, it doesn't sound like you have a reasonable solution to the problem of upgrading your drivers. I'm willing to accept the huge delay, but I'm not willing to accept it if the drivers were already at the latest version.

Can you please ask your development team if there were a way for me to have access to the same mechanism used to populate the About screen for a given printer? At least that way I could determine whether the full update needed to be executed or not.

I have succesfully used the GetPrinter Win32 API call to determine the version string of the driver for a given printer, but that is returning "2.50" - with no information about the patch level (a, b, c, etc...).

As things stand, I have completely lost my ability to intelligently update the drivers.

Thanks,

- K



Joan wrote:Hello,

You can not install a new driver and be sure that the new driver is in use without uninstalling the old driver. If you application is running the old driver may still be in memory and it will not be overwritten by the new one.

Here are the steps you can follow to install a new update programmatically:

1) Call PDFDriverInit (your printer name) 'to get a handle to the currently installed printer
Call DriverEnd(your printer name) to remove the currently installed printer

2) unregister CDIntf250.dll from the system directory by using Regsvr32 -u

3) Reboot your system, check that the printer is uninstalled.

4) Copy the new CDIntf to the system directory and rename it CDIntf250.dll (whatever is should be called depending on the version of the driver being used) then register it using Regsvr32.

5) Call PDFDriverInit (your printer name)
Call DriverInit (your printer name).

You mentioned that unistalling takes a long time (up to 30 seconds on some machines), the time to unistall a printer depends on the machine you have and the operating system installed on that machine, 30 seconds is not a really long time if you consider that installation needs to be done once and not every now and then.

I also noticed that you mentioned workstations, do you have a client server environment? If yes, are you installing the printer on each client machine?
Post Reply