[英]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.