如何在Wix中解耦?

时间:2011-10-04 13:28:01

标签: wix wix3.5

我想用Wix 3.5安装带有一些dll的产品。 这些dll是在msi安装期间通过单选按钮组确定的。 我有:

  • a(片段)wxs for myDllv1
  • a(片段)wxs for myDllv2
  • a(UI片段)wxs与RadioButtonGroup一起选择myDll v1和myDll v2之间的属性INSTALLTYPE
  • 一个主要的wxs文件,它安装了正确版本的myDll。

问题:我有另一组要添加的dll,我想尽可能少地修改文件。 我不想介绍错误,我想让事情解耦。

我想仅使用单选按钮修改UI片段并添加myDllv3片段(不对我的主wxs文件进行任何更改,因此该文件中没有条件......)。

有可能吗?

2 个答案:

答案 0 :(得分:1)

为什么不在构建msi时使用pre-processors来选择正确的片段?

<?if $(env.SomeBuildParameter) = SetA ?>
  <?include myDllSetAv1.wxs ?>
  <?include myDllSetAv2.wxs ?>
<?else ?>
  <?include myDllSetBv1.wxs ?>
  <?include myDllSetBv2.wxs ?>
<?endif ?>

答案 1 :(得分:0)

我可能误解了这个问题,但听起来你的不同Dll集应该按照WIX中的功能进行分组。我建议创建独立的WIX片段,代表您的每个Dll集合的功能,然后您可以绑定UI以适当地安装特定功能。

您代表产品级别的功能,如下所示:

<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文件来提供包含该功能文件的片段信息。