|
Evaluation
|
SetUpdatedJREProductName() only looks under HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Posted Date : 2008-10-07 17:15:43.0
The SetUpdatedJREProductName() in regutils.dll updates registry keys in both locations in order to display the correct name.
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall
HKEY_CLASSES_ROOT\\Installer\\Products
The first one is not on the 64-bit machine. But, the second one is the correct one that needs to be changed.
For the following keys on 64-bit machine, the first two are the same keys. The third one does not have any effect on the display name.
HKEY_CLASSES_ROOT\Installer\Products\4EA42A62D9304AC4784BF238120601FF
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\4EA42A62D9304AC4784BF238120601FF
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\4EA42A62D9304AC4784BF238120601FF\InstallProperties
I tested on the sqe machine the issue is reproducible. I am not sure why the function did not work on 64-bit windows and need to do more investigation
http://jre.sfbay/java/re/jdk/6u10/promoted/rc2/b32/bundles/windows-i586/jre-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
http://javadl.sun.com/webapps/download/GetFile/1.6.0_11-ea-b00/windows-i586/jre-6u11-ea-windows-i586-p-iftw.exe
Posted Date : 2008-10-07 22:21:21.0
There are 2 trees for the registry on 64-bit Windows:
1. The default tree is the 64-bit tree at: HKEY_LOCAL_MACHINE\SOFTWARE
2. The is a sub-tree for the 32-bit registries at: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
If it's a 64-bit app, it will automatically write to #1. If it's a 32-bit app, it'll automatically write to #2.
I believe that all MSI registries always go into #1, whether it's a 32-bit or 64-bit MSI.
So I bet the problem is that the 32-bit MSI is trying to write to the MSI key at #2, but it really should be trying to write to the #1 location.
If that's true, we'd need to find a way to have a 32-bit MSI/dll to write to the 64-bit tree. I've seen that it's possible for a 64-bit dll to write to the 32-bit node, but I'm not sure if a 32-bit dll can write to a 64-bit registry tree. Worst case is we'd need to create a 64-bit .exe that does the job of hacking this registry.
Posted Date : 2008-10-08 17:06:54.0
This might be a way to write to the 64-bit tree from a 32-bit app:
http://weblog.infoworld.com/stratdev/archives/2007/06/accessing_the_6.html
Use KEY_WOW64_64KEY if we detect we're on a 64-bit OS, for the function that hacks the MSI key.
Posted Date : 2008-10-08 17:58:06.0
|