2014-01-29 24 views
1

我正在使用Wix創建一個安裝程序,該安裝程序將在用戶的PC上搜索目錄並將相關應用程序安裝到該目錄。例如,我需要安裝到文件夾ProductA\Utilities,該文件夾的位置在我的控制範圍之外。使用WiX來定位特定文件夾

要做到這一點,我已經試過如下:

<Property Id="UTILITIES_DIR"> 
    <DirectorySearch Id="FindUtilsDir" Path="ProductA\Utilities"/> 
</Property> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <!-- WiX requires me to use a special folder at some point --> 
    <Directory Id="ProgramFilesFolder" Name="ProgramFiles"> 
     <Directory Id="UTILITIES_DIR"> 
      <Directory Id="INSTALLFOLDER" Name="MyUtility"/> 
     </Directory> 
    </Directory> 
</Directory> 

這一切運作良好時,我跑不過通過雙擊安裝程序,當我通過msiexec.exe的運行安裝程序,UTILITIES_DIR被發現,但後立即覆蓋:

從日誌文件:

MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Adding TARGETDIR property. Its value is 'F:\'. 
MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Modifying ProgramFilesFolder property. 
    Its current value is 'C:\Program Files (x86)\'. Its new value: 'F:\ProgramFiles\'. 
MSI (c) (C0:0C) [16:49:34:064]: 
    PROPERTY CHANGE: Modifying UTILITIES_DIR property. 
    Its current value is 'C:\ProductA\Utilities'. Its new value: 'F:\ProgramFiles\'. 

值得一提的是,F:\我的機器上是一種網絡共享C:\的一部分,並且報告與C:\完全相同的可用空間,所以看起來我直接運行.msi並將TARGETDIR設置爲C:\,但從msiexec運行時,TARGETDIR設置爲F :.

有沒有辦法找到一個可能在任何根目錄的特定目錄?

回答

0

可以將SourceDir設置爲WindowsVolume。所以它不會再改變了。

<SetDirectory Id="SourceDir " Value="[WindowsVolume]" /> 
相關問題