Ok, Перво-наперво:
- Проблема заключается в том, что после того, как
CostFinalize
и все UI
операции мои каталоги, где заменяются значениями по умолчанию.
- Проблема возникла, когда я связал две разные библиотеки, которые использовали один и тот же глобальный каталог.
- Папка установлена в корневую папку Windows (по требованию клиента), а затем устанавливается значение по умолчанию. Тогда мы придаем
Property
так же, как мы делаем это для WIXUI_INSTALLDIR
, в целом мы имеем следующее:
- Один
root
папку для конкретных файлов инсталлятора
- библиотека, которая устанавливает файлы 4
directories
, которые не имеют никакого отношения к что root
каталога.
- Другая библиотека, которая устанавливает файлы и запускает сценарии до 1
directory
из этих 4 внешних directories
. Эта библиотека является единственной спецификацией для нашей установки.
Связывание все, что проблема сама по себе, это должно быть сделано в Product
, в UI
и используя PropertyRef
указанный во внешней библиотеке. Кроме того, имейте в виду, что каждый PathEdit
должен быть установлен в Indirect="yes"
, и вы должны установить все косвенную Properties
которые указывают на вашу Directory
в UI
Чтобы исправить эту проблему очень просто, Microsoft Installer
перепроверяет все наши папки после того, как пользователь установил их во время последовательности установки, поэтому нам необходимо предотвратить любые изменения после того, как пользователь изменил его во время UI Sequence
. Таким образом, Properties
на помощь.
Вот пример, в UI
установить сублимационной папки для каждой папки, которые вы хотите установить в InstallUISequence
<Property Id="SETFOLDERFREEZE">0</Property>
<CustomAction Id="caSetPreventChanges" Property="SETFOLDERFREEZE" Value="1"/>
Тогда в вашем Product
вы связываете, что собственность.
<PropertyRef Id="SETFOLDERFREEZE"/>
<SetDirectory Id="SPECIFIC_FOLDER" Value="[WindowsVolume]MoreStuff" Sequence="both">
<![CDATA[SETFOLDERFREEZE<>"1"]]>
</SetDirectory>
<Property Id="EXTRAFILES_INSTALLDIR" Value="SPECIFIC_FOLDER"/>
Вы используете Property
EXTRAFILES_INSTALLDIR
в вашем конкретном UI
для этого проекта, и вы используете SPECIFIC_FOLDER
в вашей многоразовой Library
.
Это беспорядок, но позволяет повторно использовать и устанавливать некоторые простые свойства, а пользовательские действия превосходят настройку файлов и папок снова, особенно если их сотни.