Условная установка с Wix - PullRequest
8 голосов
/ 10 июня 2010

Возможно ли иметь условную конфигурацию установки, подчиненную среде конфигурации Visual Studio?

Например, выбирая конфигурацию DEBUG или RELEASE, Wix выбирает различные исполняемые файлы во встроенной установке.

В основном я буду строить разные инсталляции из одних и тех же проектов, но они различаются по компонентам.Некоторые компоненты собраны из одного проекта, но построены с различными параметрами препроцессора.

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

Создание различных проектов Wix - единственное решение?

Ответы [ 3 ]

11 голосов
/ 11 июня 2013

Соединяя два других ответа и исследование Луки , я пришел к этому решению, которое, кажется, работает (обратите внимание, что сравнение строк, похоже, чувствительно к регистру, и отсутствие кавычек кажется правильнымЯ проверял это с WiX 3.7):

<?if $(var.Configuration) = Debug ?>
  <!-- DEBUG ONLY -->

  [ ... insert debug only XML here ... ]

  <!-- END DEBUG ONLY -->
<?else?>
  <!-- RELEASE ONLY -->

  [ ... insert release only XML here ... ]

  <!-- END RELEASE ONLY -->
<?endif?>
8 голосов
/ 11 июня 2010

Ваши сценарии wix имеют доступ к параметрам сборки, таким как Конфигурация («отладка» или «выпуск»). Поэтому вы можете условно включить правильные двоичные файлы для текущей конфигурации, ссылаясь на $ (var.Configuartion) в объявлениях вашего компонента:

<Component Id="myProject.dll"
               DiskId="1"
               Guid="*">
  <File Id="myProject.dll"
            Name="myProject.dll"
            Source="..\myProject\bin\$(var.Configuration)\myProject.dll" />
</Component>

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

6 голосов
/ 10 июня 2010

Используйте препроцессор, например: <?if?>, чтобы условно включать / исключать компоненты на основе конфигурации.

...