Windows 7 WiX未写入注册表值(Win 7 x64)

Windows 7 WiX未写入注册表值(Win 7 x64),windows-7,wix,registry,Windows 7,Wix,Registry,我是WiX的新手,对于如何在安装过程中创建注册表项,我感到十分困惑。我使用的RegistryKey和RegistryValue元素如下: <Component Id="RegKeys" Guid="824A9E7D-211C-4404-80F7-6AC4185B1E66"> <RegistryKey Action="createAndRemoveOnUninstall" Root="HKLM" Key="SOFTWARE\My\Path"> <

我是WiX的新手,对于如何在安装过程中创建注册表项,我感到十分困惑。我使用的RegistryKey和RegistryValue元素如下:

<Component Id="RegKeys" Guid="824A9E7D-211C-4404-80F7-6AC4185B1E66">
    <RegistryKey Action="createAndRemoveOnUninstall" Root="HKLM" Key="SOFTWARE\My\Path">
        <RegistryValue Name="MyKey" Type="string" Value="Blah blah blah"/> 
    </RegistryKey>
</Component>
安装程序构建良好,运行时没有任何明显错误,但在Wow6432Node键下或其他任何地方都不会创建任何键或值。该安装程序适用于32位应用程序,但我正在尝试将其安装在64位Windows 7上


我错过了什么?我肯定这是显而易见的?我们正在使用WiX 3.5。

注册表值是否仅存在于其组件中?如果是,请将KeyPath设置为yes。

尝试两件事:

使用Windows SDK中的Orca验证注册表表中是否存在该值。这消除了构建问题。 检查详细日志以查看MSI对组件的操作以及对注册表数据的操作。
您放入@Key属性的注册表路径是否存在?@Yan,是的,路径存在。即使没有,我也不能使用RegistryKey创建它吗?或者这需要作为一个单独的步骤来执行吗?如果注册表中没有路径将新的键注入到…中,我希望它会无声地失败。。。然而,我没有亲自尝试,我可能弄错了。尝试编写一个简单的WiX项目,其中只有一个组件具有该注册表项,以缩小问题的范围谢谢你的建议,Cosmin。我尝试添加KeyPath=yes,但不幸的是没有任何区别。我运行了Orca,在注册表表中可以看到两个相关的条目。两者的密钥都是SOFTWARE\My\Path,但其中一个名为MyKey expected,另一个*不确定这是什么MyKey'的值为%blah blah blah;*根本没有价值。我还运行了一个详细的日志-虽然有一次尝试使用空白键和空白值写入注册表,但其中没有与我试图设置的键/值相关的内容。不确定它是否相关。您不需要Action=CreateAndRemoveOnInstall。看见值%表示您的创作指定类型为可扩展的,或者您的值包含百分号。如果试图编写环境变量,请使用[%variable]。有关详细信息,请参阅MSI SDK中的格式化。我终于找到了罪魁祸首:阻止写入注册表项,尽管我不确定原因。您提到的Orca为我指明了正确的方向,因为当我执行验证时,它报告了ICE40警告,“重新安装模式可能会导致问题”。我想这是对的!:
<ComponentRef Id="RegKeys"/>