Wix $(变量平台)在x64平台上提供x86?

Wix $(变量平台)在x64平台上提供x86?,wix,windows-installer,Wix,Windows Installer,我有一个WiX msi,它作为一个包包含在为x86编译的Burn包中。在msi中,我有以下代码: <?if $(var.Platform) = x64 ?> <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?> <?else ?> <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?> &

我有一个WiX msi,它作为一个包包含在为x86编译的Burn包中。在msi中,我有以下代码:

  <?if $(var.Platform) = x64 ?>
  <?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
  <?else ?>
  <?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
  <?endif?>

  <!-- directory structures -->
  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="$(var.PlatformProgramFilesFolder)">
        <Directory Id="INSTALLFOLDER" Name="MyApp">
          <Directory Id="MyFolder" Name="MyFolder" />
        </Directory>
      </Directory>
    </Directory>
  </Fragment>

  <Fragment>
    <ComponentGroup Id="MyComponents" Directory="MyFolder">
      <Component Id="MyComponent">
        <File Id="MyFile" Source="file.dat" Vital="yes" KeyPath="yes"/>
      </Component>
    </ComponentGroup>
  </Fragment>


我希望它安装到64位系统上的
程序文件
文件夹中,但它安装到
程序文件(x86)
。这是因为捆绑包以32位运行吗?如果出现这种情况,如何在MSI中测试实际的操作系统体系结构?

您需要一个64位软件包来写入文件系统的64位部分。这是MSI的限制。

您需要一个64位的包来写入文件系统的64位部分。这是MSI的一个限制。

我遇到了完全相同的问题,我正在将-arch x64位传递给candle,但这仍然不起作用!您是如何解决的?我遇到了完全相同的问题,我正在将-arch x64位传递给candle,但这仍然不起作用!你是怎么解决的?