Deployment.properties frequently gets out of date with respect to the
installed JRE instances listed in the Windows registry. One reason for
this is that the installer does not update or create
A piece of code is needed which queries the registry and populates
deployment.properties with the JREs it finds. A button should be added
to the Java Control Panel, Java Applet Runtime Parameters dialog (and
perhaps the Java Application Runtime Parameters dialog as well) like
"Rebuild From Registry" which will scan the registry and add entries
for JREs that were in the registry but not in
deployment.properties. (This needs to be made a user-selectable action
rather than something that happens automatically each time, since the
user might choose to remove a JRE from the Java Applet Runtime
Settings and we don't want to force it on them again.)
The installer should be modified so that if deployment.properties does
not exist, it calls this code to generate it.
After more thought, this can probably simply be added to the existing Config class. The native code Java Web Start has for this purpose is complicated and probably not necessary because we do not have the requirement that this code be pure C code. While it would be nice if the installer updated deployment.properties it isn't strictly necessary since both the new plug-in and control panel need to. Therefore what is really needed is code in the Config class which will rescan the registry and add discovered JREs to the JREInfo and PluginJavaInfo lists. Presumably the existing Config machinery for writing out deployment.properties can then be called.
Additionally, the Config class should be modified to always return a JREInfo or PluginJavaInfo for the currently running JRE, even if it isn't in deployment.properties. A hack for this was added to the new plug-in's JVMManager class; see containsWorkingCurrentVersion() and calls to it. If this were pushed down into the Config class, along with the registry scanning on the Windows platform, then the Config class would be able to refresh deployment.properties equally as well as the native code in Java Web Start, and we could remove the associated code from the JVMManager class.