Я создаю установщик, используя WiX Toolset.
Я использую пользовательский интерфейс WixUI_InstallDir, потому что мне нужно выбрать, где будут установлены файлы.
Мое требование - пользователь выберите установку внутри Program Files, некоторые файлы (конфигурации) должны go в папке ProgramData, иначе они будут внутри самого каталога установки,
Это то, что у меня есть до сих пор.
<!--Add Components in [ProgramData]/Configs-->
<DirectoryRef Id="CommonConfigsFolder">
<Component Id="ServiceConfigAppData" Guid="{1053F925-BEB3-4020-90C5-6EF163326B5E}">
<Condition>
<![CDATA[WIXUI_INSTALLDIR >< "Program Files"]]>
</Condition>
<CreateFolder>
<Permission User="Everyone" FileAllRights="yes"/>
</CreateFolder>
<File Id="ServicesConfigFileAppData" KeyPath="yes" Source="$(var.ConfigPath)\Services.cfg"/>
</Component>
</DirectoryRef>
<!--Add Components in [INSTALLFOLDER]/Configs-->
<DirectoryRef Id="LocalConfigFolder">
<Component Id="ServiceConfigLocal" Guid="{B4E52504-C4BF-4C99-88C4-5AF54D49E78A}">
<Condition>
<![CDATA[NOT (WIXUI_INSTALLDIR >< "Program Files")]]>
</Condition>
<CreateFolder>
<Permission User="Everyone" FileAllRights="yes"/>
</CreateFolder>
<File Id="ServicesConfigFileLocal" KeyPath="yes" Source="$(var.ConfigPath)\Services.cfg"/>
</Component>
</DirectoryRef>
Но он всегда записывает файлы в каталог установки, даже если я устанавливаю в программные файлы
Мне пришлось определить <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER"/>
, чтобы заставить WixUI_InstallDir работать