【发布时间】:2011-11-20 13:09:54
【问题描述】:
我有一个 32 位 WIX 安装程序,用于安装基于 .NET 的 Windows 服务。我需要使用一个 32 位和 64 位版本的外部 .dll。有什么方法可以让 32 位安装程序检测到它在 64 位机器上运行吗?然后我想有条件地安装 32 位或 64 位 .dll。
【问题讨论】:
我有一个 32 位 WIX 安装程序,用于安装基于 .NET 的 Windows 服务。我需要使用一个 32 位和 64 位版本的外部 .dll。有什么方法可以让 32 位安装程序检测到它在 64 位机器上运行吗?然后我想有条件地安装 32 位或 64 位 .dll。
【问题讨论】:
扩展 Morten 的答案,我在 Wix 3.6 中做到了这一点
<Component Directory="INSTALLLOCATION">
<File Id="msvcp100.dll_x64" Source="$(var.x64)\msvcp100.dll" KeyPath="yes" />
<Condition><![CDATA[VersionNT64]]></Condition>
</Component>
<Component Directory="INSTALLLOCATION">
<File Id="msvcp100.dll_x86" Source="$(var.x86)\msvcp100.dll" KeyPath="yes" />
<Condition><![CDATA[Not VersionNT64]]></Condition>
</Component>
【讨论】:
试试这个:
<Component Id="Component1" Guid="*">
<![CDATA[Not VersionNT64]]>
<File Id="File1" Name="1.dll" Source="c:\dlls\1.dll"/>
</Component>
<Component Id="Component2" Guid="*">
<![CDATA[VersionNT64]]>
<File Id="File2" Name="2.dll" Source="c:\dlls\2.dll"/>
</Component>
【讨论】:
使用 ProcessorArchitecture 创建一个属性并从注册表中获取它的值。基于此属性创建一个条件特征。
【讨论】: