我有32位和64位平台的Wix Setup msi 我想阻止它在64位操作系统上安装32位msi,在32位操作系统上安装64位msi 虽然WIX阻止在32位msi上安装64位msi,但我也希望实现反向。
我使用的是以下代码: -
<?if $(var.Platform)=x86 ?>
<Condition Message="Setup can not be installed on x64 machine.">
<![CDATA[Installed OR Not VersionNT64]]>
</Condition>
<?endif?>
但它显示在我的msi的欢迎页面上。 我希望显示与我在32位操作系统上安装64位msi时所获得的相同的消息,例如
此处理器类型不支持安装包。请联系您的支持人员
我怎样才能实现这个目标?
答案 0 :(得分:2)
这种情况应该有效!我想也许可能没有正确设置变量平台。
您也可以尝试这个(与您的几乎相同):
<?if $(var.Platform) = x86 ?>
<Condition Message="Setup can not be installed on x64 machine.">
<![CDATA[Not VersionNT64]]>
</Condition>
<?endif?>
编辑:我在@Christopher Painter评论后删除了Platform = x64条件,因为您在x64 msis上免费获得该条件。我也尝试了上面的代码并且它可以工作。
答案 1 :(得分:1)
我不相信你可以获得与在x86系统上运行x64 MSI完全相同的行为。在这种情况下,Windows本身在尝试运行它并显示消息之前检查MSI体系结构。您已经发明了自己不必要的限制,因此无法使用与Windows完全相同的方法。
但我不知道您在欢迎页面上看到自己的消息的原因。我看到的所有启动条件都是Windows提供的对话框(单击“确定”),然后您通常会看到一个对话框,说明安装失败(但同样,失败对话框由您决定)。所以你应该能够获得与Windows相近的东西。
答案 2 :(得分:0)
小的改进是使用buildarch环境而不是变量
<?if $(sys.BUILDARCH) = x86 ?>
<Condition Message="Setup can not be installed on x64 machine.">
<![CDATA[Not VersionNT64]]>
</Condition>
<?endif?>