64 位操作系统所需的安装条件在 32 位 Windows 操作系统上不会失败
我正在使用单个 wix 项目(指定 -arch Candle 参数)构建安装程序的 32 位和 64 位版本,
我想避免客户混淆,并且只允许在 32 位操作系统上进行 32 位安装,反之亦然。相信我,就我的目的而言,这是有道理的。
在 64 位操作系统上运行 32 位安装程序时,以下分支条件会正确失败。
<?if $(sys.BUILDARCH) = x64 ?>
<Condition Message="You are attempting to run the 64-bit installer on a 32-bit version of Windows.">
<![CDATA[VersionNT64]]>
</Condition>
<?else?>
<Condition Message="You are attempting to run the 32-bit installer on a 64-bit version of Windows.">
<![CDATA[NOT VersionNT64]]>
</Condition>
<?endif ?>
但是,在 32 位操作系统上运行 64 位安装程序时,我收到 Windows Installer 错误。错误是这样的:
安装时发生错误 包裹。 Windows 安装程序已返回 '1633'
搜索此错误会得到您所期望的结果:
这个安装包不是 在此平台上支持。接触 您的应用程序供应商。
所以看来我遇到了标准(非常糟糕)的 Windows 安装程序错误“您使用了错误的安装程序”。
有什么方法可以让我的条件正确触发还是这根本不可能?
I am building 32 and 64 bit versions of my installer using a single wix project (specifying the -arch candle parameter)
I want to avoid customer confusion and only allow 32 bit installs on a 32 OS and vice versa on 64 bit. Trust me, for my purposes this makes sense.
The following branching condition fails correctly when running the 32 bit installer on the 64 bit OS.
<?if $(sys.BUILDARCH) = x64 ?>
<Condition Message="You are attempting to run the 64-bit installer on a 32-bit version of Windows.">
<![CDATA[VersionNT64]]>
</Condition>
<?else?>
<Condition Message="You are attempting to run the 32-bit installer on a 64-bit version of Windows.">
<![CDATA[NOT VersionNT64]]>
</Condition>
<?endif ?>
However I get an Windows Installer error when running the 64 bit installer on a 32 bit OS. The error is this:
An error occured installing the
package. Windows Installer returned
'1633'
Searching for this error gets what you would expect:
This installation package is not
supported on this platform. Contact
your application vendor.
So it appears I am hitting the standard (very poor) windows installer error for "you are using the wrong installer".
Is there any way to get my condition to correctly fire or is this just an impossibility?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
MSI 甚至不会在 32 位操作系统上打开 64 位程序包,因此从未评估 LaunchConditions。简而言之,不,你无能为力。
MSI won't even open a 64-bit package on a 32-bit OS, so LaunchConditions are never even evaluated. In short, no, nothing you can do.