2013-10-11 2 views
1

У меня есть WiX msi, который содержится в пакете Burn, скомпилированном для x86. В 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 Files на 64-битной системе, но это установка на Program Files (x86). Это потому, что пакет работает как 32-битный? Как проверить фактическую архитектуру ОС в MSI, если это так?

+0

Я сталкиваюсь с той же проблемой, и я передаю -arch x64 бит в свечу, но все равно это не сработает! Как вы это разрешили? – Nikhil

ответ

1

Для записи в 64-разрядную часть файловой системы необходим 64-разрядный пакет. Это ограничение MSI.

Смежные вопросы