我有一个插件(在后台运行的服务),我需要在各种计算机上安装。我需要根据他们安装的.Net版本安装不同版本的服务。
.Net 3.5获得3.5版本的插件 .Net 4.5获得4.5版本的插件等。
我知道如何使用各种NETFRAMEWORK ...属性在WIX中检测.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 :(得分:0)
好的,我弄明白了这个问题。
从Level =&#34; 0&#34;开始所需的功能(未安装)。然后条件将它们标记为Level =&#34; 1&#34;当遇到并因此将被安装。
<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>