Как разрешить пользователю выбирать файл конфигурации при сборке моего установщика WiX? - PullRequest
2 голосов
/ 21 мая 2011

Я использую WiX XML для создания установочного пакета.

Одна из вещей, которую я хотел бы, чтобы пользователь / установщик мог сделать, это выбрать один (и только один) из нескольких файлов конфигурации (то есть, config1.txt, config2.txt, config3.txt), который бы Завершите установку в том же месте после завершения установки (т. е. конечный файл - config.txt). Как мне это сделать в WiX?

При ручной установке пользователь копирует нужный файл конфигурации в конечное местоположение / файл. то есть, если пользователь хочет использовать config2.txt, он копирует config2.txt в config.txt. Он запускает программу. Затем, если ему нужно использовать config1.txt, он копирует config1.txt в config.txt и запускает программу.

Есть идеи, как это сделать в WiX?

Заранее спасибо!

-Adeena

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Это веб-приложение?Это INI-файлы или XML-файлы или что-то еще?Я предпочитаю, чтобы конфигурация приложения выполнялась самим приложением после установки при первом запуске (если это исполняемый файл).Установка подразумевает получение настроек и файлов по умолчанию, любая пользовательская конфигурация выходит за рамки первоначального развертывания, на мой взгляд.

Wix предоставляет функцию обновления XML-файла во время установки, вот пример: http://www.tramontana.co.hu/wix/lesson6.php#6.10.Это позволит вам записать в файл определенный параметр конфигурации, если это файл XML.

Ничто не мешает вам установить несколько вариантов одного и того же файла конфигурации в одну папку и позволяет пользователю вручнуюпереключаться между ними.Какие значения обычно меняются, если вы переключаете базовый файл?Одна или несколько настроек?

1 голос
/ 21 мая 2011

Я решаю аналогичную проблему с помощью тега CopyFile;

Где-то у меня есть <Directory>, содержащий следующие компоненты:

<Component Id="Config_6.txt" Guid="{}">
  <File Id="Config_6.txt" Name="Config_6.txt" KeyPath="yes" Source="..\..\..\bin\Config_6.txt" />
</Component>
<Component Id="Config.txt" Guid="{}">
  <File Id="Config.txt" Name="Config_8.txt" KeyPath="yes" Source="..\..\..\bin\Config.txt" />
</Component>
<Component Id="Config_7.txt" Guid="{}">
  <File Id="Config_7.txt" Name="Config_7.txt" KeyPath="yes" Source="..\..\..\bin\Config_7.txt" />
</Component>

<Component Id="R8_Config.txt" Guid="{}">
  <CreateFolder/>
  <CopyFile Id="R8_Config.txt" FileId="Config.txt" DestinationName="Config.txt"/>
</Component>
<Component Id="R7_Config.txt" Guid="{}">
  <CreateFolder/>
  <CopyFile Id="R7_Config.txt" FileId="Config_7.txt" DestinationName="Config.txt"/>
</Component>
<Component Id="R6_Config.txt" Guid="{}">
  <CreateFolder/>
  <CopyFile Id="R6_Config.txt" FileId="Config_6.txt" DestinationName="Config.txt"/>
</Component>

А в части Особенности что-то вроде этого:

<Feature Id="Config" Title="Config directory" Display="expand" Level="1" ConfigurableDirectory="Config">
  <Feature Id="Config8" Title="Config 8" Level="1" Description="Select only one  version!">
    <ComponentRef Id="R8_Config.txt"/>
  </Feature>
  <Feature Id="Config7" Title="Config 7" Level="1002" Description="Select only one  version!">
    <ComponentRef Id="R7_Config.txt"/>
  </Feature>
  <Feature Id="Config6" Title="Config 6" Level="1004" Description="...">
    <ComponentRef Id="R6_Config.txt"/>
  </Feature>
</Feature>

Чтобы отобразить функции, добавьте UIRef, который содержит CustomizeDlg, например:

<UIRef Id="WixUI_FeatureTree" />

Недостатком этого решения является то, что пользователь может выбирать несколько файлов конфигурации.Это, вероятно, приведет к тому, что последний станет активным.

...