我正在为企业产品开发Windows安装程序,它具有不同的变体作为单独的MSI产品。如果已经安装了另一个变体,我们必须检查,我们无法安装产品。我创建了不同的WIX脚本,用于将它们构建为单独的产品(MSI)。
每个变体都有一个基本框架和多个模块。我创建了每个模块作为一个功能,并根据构建的变体将它们与基本功能(基本功能必须安装到目前)一起包含在内。
我收到了要求,我们必须允许在任何已安装的变体上安装另一个变体。例如,我安装了具有2个模块的Product1和基础框架作为三个功能(Base,Mod1,Mod2)。 Product2使用Base和Mod3构建。现在,当我在安装了Product1的系统中安装Product2时,只应安装Mod3。
我正在使用WIX 3.5。
任何帮助都将不胜感激。
先谢谢。
答案 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