我正在为一个企业产品开发Windows installer,它有不同的变体作为单独的MSI产品。我们必须检查,如果已经安装了另一个变体,则不能安装产品。我创建了不同的WIX脚本,并用于将它们构建为单独的产品(MSI)。
每个变体都有一个基本框架和若干模块。我创建了每个模块作为一个功能,并包括它们与基本功能(基本功能必须安装到目前为止)基于变体构建。
我收到的要求是,我们必须允许在任何已安装的变体之上安装另一个变体。例如,我安装了Product1,它有两个模块和三个基本框架( base,Mod1,Mod2)。使用Base和Mod3构建的Product2。现在,当我在安装了Product1的系统中安装Product2时,应该只安装Mod3。
我使用的是WIX 3.5。
任何帮助都将不胜感激。
提前谢谢。
发布于 2013-02-15 14:45:52
在没有测试的情况下,我会说你可以用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
https://stackoverflow.com/questions/14854756
复制相似问题