繁体   English   中英

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

[英]Prevent to install 32 bit WIX installer on x64 using PROCESSOR_ARCHITECTURE Enviroment variables of WIX

我有一个适用于 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 时得到的消息相同的消息,例如

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

我怎样才能做到这一点?

那个条件应该有效! 我在想可能变量 Platform 没有正确设置。

你也可以试试这个(这和你的几乎一样):

    <?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 上免费获得它。 我也尝试了上面的代码并且它有效。

我不相信您可以获得与在 x86 系统上运行 x64 MSI 完全相同的行为。 在这种情况下,Windows 本身会在尝试运行它并显示消息之前检查 MSI 体系结构。 你发明了你自己不必要的限制,所以你不能使用与 Windows 完全相同的方法。

但是我不知道为什么您会在欢迎页面上看到您的消息。 我看到的所有启动条件都是 Windows 提供的对话框(您在其中单击“确定”),然后您通常会看到一个说安装失败的对话框(但同样,该失败对话框取决于您)。 所以你应该能够得到一些接近于 Windows 所做的事情。

小的改进是使用 buildarch 环境而不是变量

<?if $(sys.BUILDARCH) = x86 ?>
    <Condition Message="Setup can not be installed on x64 machine.">
       <![CDATA[Not VersionNT64]]>
    </Condition>
<?endif?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM