2013-10-11 63 views
1

我有一个WiX msi包含在为x86编译的Burn包中。在微星我有这样的代码:

<?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 Files文件夹中的64位系统上,但它安装到Program Files (x86)。这是因为该软件包是以32位运行的吗?如果是这种情况,我该如何测试MSI中的实际操作系统架构?

+0

我遇到了完全相同的问题,我将-arch x64位传递给蜡烛,但仍然无法工作!你是如何解决它的? – Nikhil

回答

1

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