Consider the following:
1. Install Java 8
2. Patch-In-Place to 8u5
3. Uninstall 8u5
The 8u5 uninstaller will be running the installer.dll that was built with 1.8.0. This is a design flaw with the current Patch-in-place model. The installer.dll is part of the MSI binary table which gets cached in a hidden Windows Installer directory after install. When we do PnP, we do not currently use a MSP to patch this cached msi/installer.dll.
I think the best short term solution for this is to drop the installer.dll into the jre/bin dir (rather than in the msi binary table). Then the msi uninstall will call UninstallJava() from the jre/bin/installer.dll file.