Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WiX will not add HKLM registry setting during Windows 7 install

I have written a WiX installer that works perfectly with Windows XP, but when installing to a Windows 7 box I am running into difficulty with registry entries. I need to add an HKLM entry as well as the registry entry for the program to show in the start menu. Here is the code I am using for both types of entry:

<!-- Create the registry entries for the program --> <DirectoryRef Id="TARGETDIR">   <Component Id="RegistryEntriesInst" Guid="...">     <RegistryKey Root="HKLM"                  Key="Software\$(var.Manufacturer)\$(var.ProductName)"           Action="createAndRemoveOnUninstall">       <RegistryValue           Type="string"           Name="installed"           Value="true"           KeyPath="yes"/>     </RegistryKey>   </Component>   <Component Id="RegistryEntriesVer" Guid="...">     <RegistryKey Root="HKLM"                  Key="Software\$(var.Manufacturer)\$(var.ProductName)"           Action="createAndRemoveOnUninstall">       <RegistryValue           Type="string"           Name="version"           Value="$(var.ProductVersion)"           KeyPath="yes"/>     </RegistryKey>   </Component> </DirectoryRef>  <!-- To add shortcuts to the start menu to run and uninstall the program --> <DirectoryRef Id="ApplicationProgramsFolder">   <Component Id="ApplicationShortcut" Guid="...">     <Shortcut Id="ApplicationStartMenuShortcut"               Name="$(var.ProductName)"               Description="..."               Target="[SERVERLOCATION]$(var.Project.TargetFileName)"               WorkingDirectory="SERVERLOCATION"/>     <Shortcut Id="UninstallProduct"                   Name="Uninstall $(var.ProductName)"                   Description="..."                   Target="[System64Folder]msiexec.exe"                   Arguments="/x [ProductCode]"/>     <RemoveFolder Id="SERVERLOCATION" On="uninstall"/>     <RegistryValue         Root="HKCU"         Key="Software\$(var.Manufacturer)\$(var.ProductName)"         Name="installed"         Type="integer"         Value="1"         KeyPath="yes"/>     </Component> </DirectoryRef> 

How can I fix this problem?

On a side note, the registry permissions are the same on the Windows XP and Windows 7 computers.

like image 640
Scott Boettger Avatar asked Dec 10 '09 16:12

Scott Boettger


1 Answers

I have figured out why this is happening.

With the WiX installer being compiled on a x86 platform, Windows 7 picked it up as the 32-bit installer with 32-bit registry keys. Windows 7 64-bit handles 32-bit registry entries by doing just what I saw happening.

The program was still registered; it was just not in the 64-bit portion of the registry. Compile it under a x64 platform while making the necessary changes to make it for a 64-bit system (ProgramFileFolder become ProgramFiles64Folder, etc.), and it will put things in the right place.

like image 155
Scott Boettger Avatar answered Oct 13 '22 10:10

Scott Boettger