在Windows 7安装过程中,WiX不会添加HKLM注册表设置 [英] WiX will not add HKLM registry setting during Windows 7 install
问题描述
我写了一个与Windows XP完美搭配的WiX安装程序,但是当安装到Windows 7机器上时,我在注册表项方面遇到了困难.我需要添加一个HKLM条目以及该程序的注册表条目,才能在开始菜单中显示该程序.这是我用于两种输入类型的代码:
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>
如何解决此问题?
另一方面,Windows XP和Windows 7计算机上的注册表权限是相同的.
On a side note, the registry permissions are the same on the Windows XP and Windows 7 computers.
推荐答案
我已经弄清楚了为什么会发生这种情况.
I have figured out why this is happening.
由于WiX安装程序是在x86平台上编译的,因此Windows 7将其选择为具有32位注册表项的32位安装程序. Windows 7 64位通过执行我所看到的事情来处理32位注册表项.
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.
该程序仍在注册;它只是不在注册表的64位部分中.在x64平台上进行编译,同时进行必要的更改以使其在64位系统上(ProgramFileFolder变为ProgramFiles64Folder等),并将其放置在正确的位置.
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.
这篇关于在Windows 7安装过程中,WiX不会添加HKLM注册表设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!