JDK-8003653 : Java items on Start Menu still exist even after all JREs from the system are removed.
  • Type: Bug
  • Component: install
  • Affected Version: 8
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • CPU: generic
  • Submitted: 2012-11-19
  • Updated: 2014-07-29
  • Resolved: 2014-02-06
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
8u20 b09Fixed 9Fixed
Reproducible steps:
1. Install JRE8 b69
2. Java dir and its shortcut items are created.
3. About Java dialog box (opens when clicked on 'About Java' item) shows Version 8
4. Install 7u5 
5. Uninstall JRE8 b69.
6. About Java item now shows Version 7 Update 5
7. Uninstall  7u5 
Its expected that Java shortcut items will be removed from the Start Menu after 7u5 is uninstalled since there is no jre remaining on the system.
Actually these items are still there and show shortcut item error - "javacpl.exe has been changed or moved" when clicked.

Currently, when a jre/jdk (>=7u40) is uninstalled, Java Start Menu items get 1. removed if there is no other JDK/JRE remaining 2. updated to the latest existing jre and/or jdk. The issue is caused when the remaining JRE/JDK is older than 7u40 since these JRE/JDKs when uninstalled cannot remove Java start menu items (Java Start Menu feature introduced in 7u40). The fix should be update Java Start Menu items during uninstall only if the remaining JRE/JDK is newer than or equal to 7u40, otherwise simply remove the start menu items. This will require enumerating the HKLM/JavaSoft/Java Runtime Environment registry and calling RemoveJavafromStartMenu() function if the remaining JRE/JDK < 7u40. code changes will be in installerdll ( RegInstallShare.cpp/ReinstallShare.h)