Installation WIX是否使用x86安装程序安装x64组件?

Installation WIX是否使用x86安装程序安装x64组件?,installation,wix,registry,windows-installer,Installation,Wix,Registry,Windows Installer,我有一个用于x86应用程序的WiX安装程序。但是,它需要为单个组件写入注册表的x64区域。要做到这一点,我有如下几点 <Component Id=foo"..." Win64="yes"> <Condition>VersionNT64</Condition> <RegistryValue Root="HKLM" Key="SOFTWARE\Microsoft\...." .... </Component> .....

我有一个用于x86应用程序的WiX安装程序。但是,它需要为单个组件写入注册表的x64区域。要做到这一点,我有如下几点

<Component Id=foo"..." Win64="yes">
  <Condition>VersionNT64</Condition>
  <RegistryValue
    Root="HKLM" Key="SOFTWARE\Microsoft\...."
    ....
</Component>

.....

<Feature Id='MyFeature' Level='0'> 
    <ComponentRef Id='foo' /> 
<Condition Level='1'>VersionNT64</Condition> 
</Feature>
如果我去掉Win64属性,一切正常。但是,我确实需要x64系统的Win64属性


任何想法都将不胜感激,谢谢

功能中删除
条件
。在
组件中已经存在该条件

<Feature Id='MyFeature' Level='1'>
    <ComponentRef Id='foo' />
</Feature>


老实说,我不知道这是否能解决问题,但在我自己的Wix设置中,我有几乎相同的代码,但我只在
组件中设置了
条件
,而不是
功能
,它的工作原理与我预期的一样:安装该组件并仅在x64上写入注册表项,在x86或x64上安装其他所有组件时。

Windows Installer不支持创建写入64位位置的x86软件包。你必须制作一个64位的软件包。这是一个由来已久的限制,每个人都为此感到不安


相反,您需要为64位内容创建一个64位MSI包,然后您可以将其放入带有32位MSI包的
包中。
MsiPackage
元素可以有一个
InstallCondition
来确定何时安装64位软件包。

我没有看到任何错误。。。我有一个wix安装程序可以做同样的事情,你在这里展示的代码部分与我的完全相同。你能发布更多的代码吗?VersionNT64如果启用了验证,您应该会看到一个ICE80错误。我故意抑制ICE80警告,以便从x86安装程序写入x64区域。这里的答案是:这是我正在尝试做的,在x64平台上运行x86安装程序时,它会起作用,但在x86平台上不起作用感谢您的建议,但不幸的是,这对我不起作用。顺便说一下,在您的示例中,级别必须等于1才能启用该功能。这一点很好。它在我的项目中处于第1级,所以我想这是另一个区别。很抱歉,这没有帮你解决问题。我没有主意了-(这就是我一直在读的内容,但在我完全挥动白旗之前,我想我只是不明白为什么有些人似乎在做我试图成功做的事情?参见上面的答案,也是在嗯,我发现我得到了错误,因为我在创建注册表项时使用了PermissionEx元素来更改注册表项。)权限级别。这似乎会导致调用操作SchedSecureObjectsRollback_x64。如果我删除该元素,安装将实际运行。
<Feature Id='MyFeature' Level='1'>
    <ComponentRef Id='foo' />
</Feature>