Wix:根据Windows操作系统版本定义变量:x86/x64

问题描述:

我有一个用于创建msi安装程序的Wix xml。 我希望根据当前的Windows版本 - x86或x64,而不是基于当前的$(var.Platform)(即安装配置)来安装窗帘组件。Wix:根据Windows操作系统版本定义变量:x86/x64

我该怎么做? 我能想到的最好的办法是定义一个变量,基于Windows版本:

<?if %PROCESSOR_ARCHITECTURE~="amd64" OR %PROCESSOR_ARCHITEW6432~="amd64"?> 
    <?define InstallationFolder = "x86" ?> 
    <?else ?> 
    <?define InstallationFolder = "x64" ?> 
    <?endif ?> 

及按所需组件文件的源路径使用。

问题是上面的布尔表达式有问题,并且没有检测到操作系统,它检测到进程。 虽然我使用VersionNT64,但我没有看到如何在<?if>布尔表达式中使用它的方法。

+0

这似乎是一个构建的问题,是吗?如果是这样,VersionNT64是不相关的,因为它是Windows安装程序的安装时间属性。对于构建,它看起来像你在这个答案中需要var.Platform。 http://stackoverflow.com/questions/471424/wix-tricks-and-tips/577793#577793和这个http://stackoverflow.com/questions/6231950/using-wix-to-create-32bit-and-64bit -installers从 - 一个WXS文件 – PhilDW

如何使用C#自定义操作来检测64位或32位,并仅覆盖那里的值?

编写自定义动作: http://wixtoolset.org/documentation/manual/v3/wixdev/extensions/authoring_custom_actions.html

How to pass parameters to the custom action?