$(var.Platform)在x64平台上提供x86?

时间:2013-10-11 11:05:09

标签: wix windows-installer

我在为x86编译的Burn包中包含了一个WiX msi作为包。在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位系统上的Program Files文件夹中,但它会安装到Program Files (x86)。这是因为捆绑包是以32位运行的吗?如果是这种情况,我如何在MSI中测试实际的OS架构?

1 个答案:

答案 0 :(得分:1)

您需要一个64位程序包才能写入文件系统的64位部分。那是MSI的限制。