Reviewing r1152863 CreateShortCut "$SMPROGRAMS\Apache Tomcat @VERSION_MAJOR_MINOR@ $TomcatServiceName\Uninstall Tomcat @VERSION_MAJOR_MINOR@.lnk" \ "$INSTDIR\Uninstall.exe" '-ServiceName="$TomcatServiceName"' The trick of passing argument to Uninstall.exe is a bit flawed: a user can double click Uninstall.exe in Tomcat installation directory and uninstallation will be launched without this additional argument. I wonder whether we can derive this name from somewhere (from the name of exe files in bin, or from Registry?) and confirm it, like uninstaller displays/confirms the name of directory it uninstalls from. A more simple fix could be to just display a warning and abort deinstallation.
Fixed in 7.0.x and will be in 7.0.20 onwards.