View Full Version : JVM Resolution BUG

04-04-2003, 11:14 PM
The Uninstaller JVM resolution (and possibly the JVM Resolution Product Action bean) does not work as documented.

If the setting for "Use Installed JVM" is set to TRUE and a proper JVM is located in the "Install Location" the JVM resolution bean does not resolve to that JVM. It INCORRECTLY continues with it's JVM search algorithm of either "Search, Current, Install" or "Current, Search, Install".

If a proper JVM is located in the "Install Location", the JVM resolution bean should immediately resolve to that JVM if the "Use Installed JVM" is set to TRUE.

Has anyone else seen this problem?

shak kathirvel
04-08-2003, 10:33 AM
Does you installer is launched thro' a native launcher with a bundled JVM included? Or Uninstaller JVM Resolution has bundled JVM?

04-08-2003, 10:40 AM
Both the installer and uninstaller launchers have valid search instructions and valid JVM bundled with them. The install location is specified only for the uninstaller launcher since the setting exists only for the uninstaller launcher.


04-08-2003, 10:48 AM
The JVM Resolution property determines the execution order of the search. How do you have it set for both the Uninstaller and native launcher?

- "Current, Search, Install" - Reuses the JVM being used for the installer, if possible, first.
- "Search, Current, Install" - Performs a complete search for the JVMs listed in the JVM Search Instructions first. If a JVM is not found, then it will use the one you have bundled.

Please see the MultiPlatform User's Guide, chapter 2.2 Product Actions/JVM Resolution. Although this topic describes the JVM Resolution Product Action bean, it also describes in detail the JVM resolution process.

04-08-2003, 01:17 PM

Well, regardless of whether the setting is "Current, Search, Install" or "Search, Current, Install", if the "Use Installed JVM" setting is "True" and a valid JVM is located in the "Install Location" then it should resolve immediately before starting the JVM resolution algorithm.

Here is an excerpt from the InstallShield documentation, located in the Help for Uninstaller JVM Resolution:

The following steps describe the algorithm used when resolving a JVM based on the property values specified for this bean. If any one step results in matching a JVM, the remaining steps are bypassed, and this bean marks that JVM as its match.

1. If you set Use Installed JVM to "True", and there is already a JVM installed on the target machine in the Install Directory, then it will match that JVM immediately. This will only occur if the Install Directory property is non-blank.

2. The JVM Resolution property determines the order in which the next three resolution steps occur. Those steps include "Search", "Current" and "Install", and they are described in the following steps:
====END QUOTE====

04-08-2003, 02:35 PM
... and there is already a JVM installed on the target machine in the Install Directory ...

Your bundled JVM does not get installed unless/until it is used by the install, i.e., the native product launcher.

If you want the install to always use the JVM that you have bundled with the launcher, then leave the JVM Search Instructions property blank (will indicate "None" in the property editor) for both the native product launcher and Product Uninstaller JVM Resolution.

Also, the only time you need to bundle a JVM with both the native product launcher and Product Uninstaller JVM Resolution is if you want your end users to be able to launch the install via both the native launcher and JAR file. If your end users will always launch the install with the native launcher, then you only need to bundle the JVM with either the native launcher or the Uninstaller JVM Resolution. It doesn't matter which one, but the recommended configuration is to bundle it with the native Product launcher since that is the first place that it will be used. It will automatically be given the JVM ID property and Install Location values set in the Uninstaller JVM Resolution and, with the above settings, will also be used to uninstall the product.

Also, if you have a Product Launcher bean in your Product tree that could also use this JVM, then set the Product Launcher's JVM ID property to the value of the Uninstaller JVM Resolution's JVM ID property.

I know that this process is confusing ... I hope this helps!