Я использую 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 :.
Есть ли способ выполнить поиск определенного каталога, который может быть в любом корневом каталоге?