Как отделить вещи в Wix? - PullRequest
       12

Как отделить вещи в Wix?

2 голосов
/ 04 октября 2011

Я хочу установить продукт с некоторыми DLL с Wix 3.5. Эти dll определяются во время установки msi через группу переключателей. У меня есть:

  • a (фрагмент) wxs для myDllv1
  • a (фрагмент) wxs для myDllv2
  • a (фрагмент пользовательского интерфейса) wxs с RadioButtonGroup для выбора между myDll v1 и myDll v2 со свойством INSTALLTYPE
  • основной файл wxs, который устанавливает правильную версию myDll.

Проблема: мне нужно добавить еще один набор DLL, и я хочу изменить как можно меньше файлов. Я не хочу вносить ошибки и хочу, чтобы все было развязано.

Я бы хотел изменить только фрагмент пользовательского интерфейса с помощью переключателей и добавить фрагмент myDllv3 (без внесения каких-либо изменений в мой основной файл wxs, поэтому никаких условий в этом файле ..).

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Почему бы вам не использовать препроцессоры для выбора правильных фрагментов при построении MSI?

<?if $(env.SomeBuildParameter) = SetA ?>
  <?include myDllSetAv1.wxs ?>
  <?include myDllSetAv2.wxs ?>
<?else ?>
  <?include myDllSetBv1.wxs ?>
  <?include myDllSetBv2.wxs ?>
<?endif ?>
0 голосов
/ 19 ноября 2011

Возможно, я неправильно понимаю вопрос, но, похоже, ваш другой набор Dll должен быть сгруппирован по функциям в WIX.Я бы предложил создать независимые фрагменты WIX, которые представляют функцию для каждого из ваших наборов Dlls, а затем вы можете привязать свой пользовательский интерфейс для установки определенной функции соответствующим образом.:

<Feature Id="Feature.One" Title="Feature One">
            <ComponentGroupRef Id="FeatureOneDlls.Group" />
</Feature>

<Feature Id="Feature.Two" Title="Feature Two">
            <ComponentGroupRef Id="FeatureTwoDlls.Group" />
</Feature>

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

...