2015-05-29 76 views
0

我有一个插件(在后台运行的服务),我需要在各种计算机上安装。我需要根据安装的.Net版本安装不同的服务版本。最佳实践WIX有条件安装版本的软件

的.Net 3.5获得3.5版本的插件 的.NET 4.5得到4.5版本的插件,等

我知道如何使用各种NETFRAMEWORK ...性能检测维克斯的.Net版本,但我米有麻烦,安装插件的所有版本,而不是我想要的。

<Feature Id="ProductFeature451" Title="Plugin" Level="1"> 
      <Condition Level="1"> 
       <![CDATA[REMOVE~="ALL" OR (NETFRAMEWORK45 >= "#378675")]]> 
      </Condition> 
      <ComponentGroupRef Id="ProductComponents451" /> 
     </Feature> 

     <Feature Id="ProductFeature40" Title="Plugin" Level="1"> 
      <Condition Level="1"> 
       <![CDATA[REMOVE~="ALL" OR (NETFRAMEWORK45 < "#378675" AND NETFRAMEWORK40FULL) ]]> 
      </Condition> 
      <ComponentGroupRef Id="ProductComponents40" /> 
     </Feature> 

     <Feature Id="ProductFeature351" Title="Plugin" Level="1"> 
      <Condition Level="1"> 
       <![CDATA[REMOVE~="ALL" OR (NETFRAMEWORK35 AND NOT NETFRAMEWORK45 AND NOT NETFRAMEWORK40FULL) ]]> 
      </Condition> 
      <ComponentGroupRef Id="ProductComponents351" /> 
     </Feature> 

我试过使用“安装”而不是REMOVE〜=“ALL”,但同样的问题。我有错的地方吗?

在之前的尝试中,我遇到了“引用计数”问题,因为我试图将各种插件安装到同一目录中,所以现在我试图根据插件的版本安装到不同的目录中。

实际上,安装所有版本并不是世界末日,但我需要只为适当的版本创建/运行该服务。

任何想法?

回答

0

好吧,我想出了这个问题。

以Level =“0”(未安装)开始所需的功能。然后,条件将满足时将它们标记为Level =“1”,因此将被安装。

<Feature Id="ProductFeature351" Title="Plugin" Level="0"> 
      <Condition Level="1"> 
       <![CDATA[REMOVE~="ALL" OR (NETFRAMEWORK35 AND NOT NETFRAMEWORK45 AND NOT NETFRAMEWORK40FULL) ]]> 
      </Condition> 
      <ComponentGroupRef Id="ProductComponents351" /> 
     </Feature>