2011-03-11 77 views
5

我需要在C和D驅動器中部署文件。例如,文件A轉到驅動器C,文件B轉到驅動器D.我知道Wix允許您只有一個根目錄。有什麼辦法可以做到這一點?是否有可能在WIX中有兩個根目錄

我知道一種解決方案是將C設置爲Wix Xml中的根目錄,並部署通過Wix Xml進入C目錄的文件。必須部署到D目錄的文件必須通過自定義操作進行部署。

但是我想避免使用自定義操作,並希望使用相同的Wix Xml將文件部署到兩個(C和D驅動器)。

回答

12

整個目錄結構應該總是包裝到「TARGETDIR」根目錄中。但是沒有人會限制你以你需要的方式定義它下面的結構的其餘部分。請參見下面的示例:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLLOCATION" Name="My location"> 
    ... 
    </Directory> 
    <Directory Id="DATA_FOLDER" Name="Data"> 
    ... 
    </Directory> 
    <Directory Id="DATABASES_FOLDER"> 
    ... 
    <Directory> 
    </Directory> 

現在,您可以設置DATA_FOLDER或DATABASES_FOLDER是不同的驅動器上的INSTALLLOCATION。這對我來說可以。

+0

你能否完成你的答案,例如將DATA_FOLDER定義爲系統磁盤(具有Windows目錄的磁盤),而不是Wix上默認定義的最大可用驅動器? – dendini 2013-04-10 08:49:45

+0

以最大的可用驅動器不是WiX,而是Windows Installer行爲。上面的示例僅定義了目錄結構,除非您設置了DATA_FOLDER,否則它將回退到默認的Windows Installer行爲。你應該做的是通過SetDirectory自定義操作來定義DATA_FOLDER,或者從命令行傳遞適當的值:'msiexec/i package.msi DATA_FOLDER = ...' – 2013-04-10 09:08:32

+0

只需閱讀你的另一個問題, '尋求可能的WindowsVolume MSI屬性:http://msdn.microsoft.com/en-us/library/windows/desktop/aa372817.aspx – 2013-04-10 09:11:44

相關問題