2014-01-29 5 views
1

Я использую Wix для создания установщика, который будет искать каталог на ПК пользователя и устанавливать соответствующее приложение в этот каталог. Например, мне нужно установить в папку 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]" /> 
Смежные вопросы