ProgramFiles64Folder正在安装到WIX Installer中的\ Program Files(x86)\

Sea*_*son 3 wix visual-studio-2010

我目前有两个WIX项目 - 一个用于创建x86安装程序,另一个用于创建x64安装程序.我想将这两个项目合并为一个项目,该项目使用变量来控制程序流程.

我有以下内容:

  <?if $(var.Platform) = x64 ?>
    <?define ProductName = "CableSolve Web (64 bit)" ?>
    <?define Win64 = "yes" ?>
    <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?else ?>
    <?define ProductName = "CableSolve Web" ?>
    <?define Win64 = "no" ?>
    <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?endif ?>
Run Code Online (Sandbox Code Playgroud)

然后我进入Visual Studio - > Build - > Configuration Manager并设置如下:

在此输入图像描述

然后,我完成并删除了两个项目的所有组件/目录中的所有"Win64 ='yes'"和"Win64 ='no'"参数.

我想知道是否还有比此更多的东西.当我创建我的x64安装程序时,我看到它试图安装到C:\ Program Files(x86)...而不是C:\ Program Files.我假设这意味着代码正在下降到'else'语句 - 但我不知道如何确认这一点.

是否还需要设置其他变量才能确保正确生成x64安装路径?

谢谢

我继承了下面的所有安装程序代码(不包括我目前正在添加的变量).我添加了$(var.PlatformProgramFilesFolder)以及EnvironmentVariables wxi. 在此输入图像描述

编辑2:这可能是罪魁祸首,但试图找到其配置为x86的原因:

------ Skipped Rebuild All:项目:CS Web Installer x64,配置:发布x86 ------

ima*_*agi 6

两件事情:

  1. 您需要在Package元素中设置Platform ="x64"属性以获取64位.msi文件
  2. $(var.Platform)变量在哪里初始化?如果您打算使用WIX内置平台变量,那么您应该使用$(sys.BUILDARCH)或$(sys.PLATFORM),具体取决于WIX版本.