Условно установите компоненты на основе каталога установки, установщика WiX - PullRequest
0 голосов
/ 02 августа 2020

Я создаю установщик, используя 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 работать

...