1

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

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

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

我正在使用 WIX 3.5。

任何帮助,将不胜感激。

提前致谢。

4

1 回答 1

3

如果没有测试,我会说你可以用ComponentSearch. 定义这样的搜索,搜索产品 1 的组件并将结果写入变量。然后,您可以检查该变量是否不为空,以确定产品 1 是否已安装。

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

然后你可以Condition在 Feature 中使用 a。

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

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

我还没有测试过这种方式,但我认为它应该可以工作。请尝试并提供反馈。

附加链接:

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

于 2013-02-15T06:45:52.310 回答