The Uninstaller JVM resolution bean is a product action that manages and executes the search for a JVM to be used by the uninstaller launcher. This search process occurs at the very beginning of a product installation as long as the Uninstall JVM Resolution bean is active. It is closely tied to the setup and execution of the UninstallerLauncher bean. It is called the Uninstaller JVM Resolution bean because it uses its properties to resolve the location and settings for the JVM required by the uninstaller launcher.

The Uninstaller Launcher bean typically uses the JVM matched by the Uninstaller JVM Resolution bean at runtime. Other Launcher beans defined in your product tree can also use it. A good use case for this functionality is that the developer may want to search for a JVM once when the installer is executed, and then use that JVM for the installer, the Java product(s) being installed, and the uninstaller.

To enable the properties for a platform, check the Include box next to that Platform.

InstallShield has provided a set of bundled JVMs. To see which are available, click the Add button in the JVM Search Instructions dialog box. These are executable files that reside in the appropriate platform-specific subdirectory below the "jvms" subdirectory where MultiPlatform is installed.

If any JVM is acceptable for the application, we recommend you add all JVM packages to the list in the JVM Search Instructions property.

Platform-specific property values need to be entered for each platform on which the JVM needs to be resolved, even if the property settings are identical for those platforms. The reason for this is to enable different search processes on the different platforms.

JVM Resolution Algorithm

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:
  3. Search makes use of the JVM Search Instructions property of this bean. Specify which JVMs you wish to match, in which order, on the target machine. Also specify the point at which a full disk search should occur, if necessary. The bean help for JVM Search Instructions provides details on how to set up this property. If the JVM Search Instructions property is empty, then this step is skipped.
  4. Current reuses the JVM being used for the installer itself, if possible. This only works if the installer was executed using a native distribution, since the native distribution communicates to the installer the information about the JVM it located. If the Use Current JVM property is "False", then this step is skipped.
  5. Install installs the bundled JVM specified by the Bundled JVM property. An Alias ("$A()") can be used for this property. If this property is empty, this step is skipped.

The end result of this process is that if a JVM is matched, this JVM Resolution bean keeps the information about the matched JVM, and it is "keyed" by the JVM ID property. As mentioned above, the JVM Resolution bean is intimately tied to the Launcher bean - The JVM ID property ties them together. The purpose of the Launcher bean is to provide a native executable that launches a Java application. The executable that is created by a Launcher uses the JVM that was matched by the previously installed JVM Resolution bean whose JVM ID property is the same as the Launcher bean's JVM ID property.