1

我有一个 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>

我希望这将安装到Program Files64 位系统上的文件夹中,但它正在安装到Program Files (x86). 这是因为捆绑软件以 32 位运行吗?如果是这种情况,我该如何测试 MSI 中的实际操作系统架构?

4

1 回答 1

1

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

于 2013-10-11T16:11:47.787 回答