Code: Select all
Set x64 - Native 64 bit Windows, AMD64 and EM64T Architectures - installation mode
My application is a true 64-bit application, and the above line of MSIcode makes it so registry values go to the right place, namely HKLM\SOFTWARE and not HKLM\SOFTWARE\Wow6432Node.
However, I just found that my upgrades fail on Win7/64. On upgrades, we need to get the UninstallString out of:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-code}
The problem is that there is no UninstallString value in that key on Win7/64. I searched the registry and found that it is being written to:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{product-code}
The only values in that key are "UninstallString" and "(Default)". All the other values typically in the Uninstall key are where I'd expect them to be - in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-code}.
Why is this info being written to the Wow6432Node key when I'm installing a 64-bit app after having called "Set x64" in my MSIcode? Is there any way to stop this happening and have all the registry keys go to the correct place? I can alter my MSIcode to work around this by checking for the UninstallString in Wow6432Node, but I feel I shouldn't have to. Is there a way to avoid this workaround?
Thanks!