在WiX中安装多个MSi中的功能

时间:2013-02-13 13:33:14

标签: wix windows-installer

我正在为企业产品开发Windows安装程序,它具有不同的变体作为单独的MSI产品。如果已经安装了另一个变体,我们必须检查,我们无法安装产品。我创建了不同的WIX脚本,用于将它们构建为单独的产品(MSI)。

每个变体都有一个基本框架和多个模块。我创建了每个模块作为一个功能,并根据构建的变体将它们与基本功能(基本功能必须安装到目前)一起包含在内。

我收到了要求,我们必须允许在任何已安装的变体上安装另一个变体。例如,我安装了具有2个模块的Product1和基础框架作为三个功能(Base,Mod1,Mod2)。 Product2使用Base和Mod3构建。现在,当我在安装了Product1的系统中安装Product2时,只应安装Mod3。

我正在使用WIX 3.5。

任何帮助都将不胜感激。

先谢谢。

1 个答案:

答案 0 :(得分:3)

如果不进行测试,我会说您可以使用ComponentSearch执行此操作。定义此类搜索,搜索产品1的组件并将结果写入变量。然后,您可以检查变量是否为空,以确定是否已安装产品1.

 <Property Id="EXISTING_PRODUCT">
      <ComponentSearch Id="SearchMyProduct" Guid="{YOUR-OWN-GUID}" Type="file"/>
</Property>

然后您可以在功能中使用Condition

<Feature Title="Product2">
    <Condition Level="0">EXISTING_PRODUCT <> ""</Condition>
</Feature>

您还可以使用CustomAction根据搜索结果定义所需的值,以禁用Feature。 (应该是Level的值)。

我没有用这种方式测试,但我认为它应该可行。请尝试并提供反馈。

其他链接:

http://wix.tramontana.co.hu/tutorial/getting-started/conditional-installation