使用PROCESSOR_ARCHITECTURE WIX的环境变量,防止在x64上安装32位WIX安装程序

时间:2014-02-19 11:52:34

标签: wix windows-installer

我有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时所获得的相同的消息,例如

  

此处理器类型不支持安装包。请联系您的支持人员

我怎样才能实现这个目标?

3 个答案:

答案 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?>
相关问题