Bernd
Posts: 9
Joined: Sun May 21, 2006 5:17 pm

JET Service Pack 8 as Prerequisite or with Custom Action

Hi,

I am looking on how to install Jet Service Pack as part of my application.

Option 1: Prerequisite

It is easy to do this as a prerequisite by checking the version of e. g. msjet40.dll

Problem: There are different Installation EXEs for Win9x/NT, WinMe, W2K, XP, W2K3, ... and Advanced Installer does not allow to differentiate between these in theprerequisite condtion.

Option 2: Custom Action

With Custom Actions I can set conditions to start the "right" EXE for each OS.

Problem: AFAIK there is no way to skip the action when Jet SP8 is already installed (so I would end up trying to install the SP even if a newer version exists).

I don't want to include all the files in my files and folders (I even expect problems for W2K3 and XP)!

So what do you suggest?

/BB
gigi
Posts: 2103
Joined: Tue Apr 11, 2006 9:55 am
Contact: Website

Hi,

In a future version of AI you will be able to differentiate between all OS versions in the "Install Condition" tab from "Edit Prerequisite " dialog. Until then you can use Custom Actions like this:
1. Schedule a file search under the "Search" page for "msjet40.dll" file. Use min version and max version.
2. After you set conditions to start the right EXE for each OS also condition those custom actions with the result of the file search. So if the file search fails (you don't have that version installed) then the custom action will run else not.

Note that you must use same conditions used for custom actions to condition the associated components of the exe files.

Regards,
Gigi
________________
Gheorghe Rada
Advanced Installer Team
http://www.advancedinstaller.com
Bernd
Posts: 9
Joined: Sun May 21, 2006 5:17 pm

Gigi,

Thanks for your answer. It works when I put the custom action into "InstallInitialize" (the search value doesn't seem to be accessible in "Install").

I also have a problem to detect the file version of msjet40.dll. Explorer tells me it is 4.0.8015.0 (or 4.00.8015.0 in W98SE). I have tried a lot of combinations but the search fails (i.e the file is not found) whenever I add version info to the search condition. Using a min date works but I would prefer to use the file version.

Can you help?

/BB

PS: Some tasks would be easy to solve using the file system object (FSO) in VB Script. Can I assume this is always available (i.e offered by windows installer) or do I need to install it explicitely?
gigi
Posts: 2103
Joined: Tue Apr 11, 2006 9:55 am
Contact: Website

Hi,

The msjet40.dll file on my computer has version 4.0.8618.0. If I use for the search "Min Version" = 4.0.8617.0 and "Max Version" empty then the file is found. Also be careful where (in what folder) you schedule the search. To view the search result schedule a "Script Inline" custom action under the "InstallUISequence->AppSearch" standard action.

You can learn more about how to use the search feature in Advanced Installer from following link: http://www.advancedinstaller.com/user-guide/search.html

Regards,
Gigi
___________________
Gheorghe Rada
Advanced Installer Team
http://www.advancedinstaller.com
digitalman
Posts: 36
Joined: Mon Oct 30, 2006 7:55 pm

Ok, I've hit this same issue and need to be able to install the Jet driver. I created a search for the msjet40.dll. Now I'm not sure how to go about checking the OS version and running the proper exe. I assume this would go under "Additional Launch Conditions"? Since the main install doesn't support 9x I would need to check for 2000, XP, or 2003. I also changed the "Access 2003 Runtime" prereq to force installation since the registry key check does not work if previous version of access is installed. If anyone knows a better way please let me know. I'm also hoping that in doing all this change in an update patch will work as the original installs already went out. Thanks.
gigi
Posts: 2103
Joined: Tue Apr 11, 2006 9:55 am
Contact: Website

Hi,
Now I'm not sure how to go about checking the OS version and running the proper exe. I assume this would go under "Additional Launch Conditions"?
The OS version is given by the VersionNT property. For what values this property can take please see:
http://msdn2.microsoft.com/en-us/library/aa370556.aspx

Now you can launch each EXE (depending on OS) using custom actions (installed or attached). Condition those custom action with the VersionNT and the result of the msjet40.dll search (search to see if the version required is already installed). Here is a example of a condition for the XP OS:

Code: Select all

VersionNT="501" AND SEARCH_RESULT
Hope this helps.

Best Regards,
Gigi
______________
Gheorghe Rada
Advanced Installer Team
http://www.advancedinstaller.com

Return to “Feature Requests”