2016-09-29 88 views
2

我有一個特殊情況需要找到解決方法。我有一個適用於我的32位應用程序的wix安裝程序,但它依賴於Office文檔文件,無論32/64位Windows版本如何,它都必須位於「Program Files」文件夾下的固定位置。請稍等片刻,接受它自己的位置不能改變,因爲它保留了自XP時代以來已經存在的應用程序的向後兼容性。我需要在「Program Files(x86)」文件夾中安裝我的應用程序,並提供必須位於「Program Files」中的此文件。如果可能的話,我不想將它們分成兩個安裝程序。任何人都知道任何可能的方式來完成這項工作?WIX將文件安裝到32位和64位程序文件夾中

回答

0

您應該能夠在目錄定義中包含「ProgramFiles64Folder」,然後將該目錄用作需要進入64位位置的組件的目錄。

您可能必須包含兩個組件,它們將一個組件安裝到64位計算機上的「C:\ Programs Files」中並將另一個組件安裝到「C:\ Programs Files」中的相同文件中。在一臺32位機器上。

我做了這樣的事情與一些snmp相關的文件。我的意思的例子:

<ComponentGroup Id="Files_32" Directory="OfficeProgramFilesFolder"> 
    <Component Id="SomeFile.dll_32" > 
     <Condition>NOT VersionNT64</Condition> 
     <File Id="SomeFile.dll_32" KeyPath="yes" Source="$(var.BinariesDir)\_bin\Win32\SomeFile.dll" /> 
    </Component> 
</ComponentGroup> 
<ComponentGroup Id="Files_64" Directory="OfficeProgramFiles64Folder"> 
    <Component Id="SomeFile.dll_64" Win64="yes"> 
     <Condition>VersionNT64</Condition> 
     <File Id="SomeFile.dll_64" KeyPath="yes" Source="$(var.BinariesDir)\_bin\x64\SomeFile.dll" /> 
    </Component> 
</ComponentGroup> 

這應該將文件安裝到「C:\ Program Files文件」無論是32位或64位的機器。

如果64位和32位組件之間的文件完全相同,您將收到ICE警告,但由於它們是互斥的,因此可以使用該警告。

1

嘗試從32位MSI安裝結果在重定向安裝到64位的文件夾,以32位的位置,這出現在日誌用這種條目的安裝:

WIN64DUALFOLDERS:' C:\ Program Files(x86)\'將替換'C:\ Program Files \ Wi中的17個字符......

屬性更改:修改TARGETDIR屬性。它的當前值是'C:\ Program Files \ Wilson \ NewSetup'。它的新值:'C:\ Program Files(x86)\ Wilson \ NewSetup \'。

32位軟件包只能包含32位組件,文檔很明確。

如果有一個文件需要傳送到64位程序文件位置,那麼通常的解決方法是在應用程序中第一次將它複製到該位置。通過調用Wow64DisableWow64FsRedirection(),32位應用程序可以暫時禁用重定向。

由於這裏說的,如果你沒有看到它:

https://blogs.msdn.microsoft.com/heaths/2008/01/15/different-packages-are-required-for-different-processor-architectures/

和64位應用程序(也可以包含32位組件)可以解決這個問題,這是我懷疑你已經知道了。

相關問題