我有一个Wix-Installer并在我的TargetFolder-Selection-Dialog中添加了一个单选按钮组:
<Property Id="INSTALLATION_TYPE" Secure="yes" Value="Server"/>
<RadioButtonGroup Property="INSTALLATION_TYPE">
<RadioButton Height="17" Text="Client" Value="Client" Width="342" X="0" Y="0" />
<RadioButton Height="17" Text="Server" Value="Server" Width="342" X="0" Y="18" />
</RadioButtonGroup>
在服务器和客户端之间切换时,以下输出将打印到MSI-Logfile:
MSI (c) (04:B4) [17:17:56:295]: PROPERTY CHANGE: Modifying INSTALLATION_TYPE property. Its current value is 'Server'. Its new value: 'Client'.
我的功能表锁定如下:
<PropertyRef Id="INSTALLATION_TYPE"/>
<Feature Id="CommonFeature" Level="1" Title="Common Feature">
<ComponentGroupRef Id="Common"/>
<ComponentGroupRef Id="RegistryKeys"/>
<Feature Id="FeatureServer" Title="Server" Level="2">
<Condition Level="1"><![CDATA[INSTALLATION_TYPE="Server"]]></Condition>
<ComponentGroupRef Id="Server"/>
<ComponentGroupRef Id="AdminConsole"/>
</Feature>
<Feature Id="FeatureClient" Title="Client" Level="2">
<Condition Level="1"><![CDATA[INSTALLATION_TYPE="Client"]]></Condition>
<ComponentGroupRef Id="Client"/>
</Feature>
</Feature>
但是在选择RadioButton“Client”时从不安装Feature Client和Server。始终安装Feature Server。日志文件说:
MSI (s) (DC:5C) [17:18:35:750]: Feature: FeatureServer; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:5C) [17:18:35:753]: Feature: FeatureClient; Installed: Absent; Request: Null; Action: Null
MSI (s) (DC:5C) [17:18:35:755]: Feature: CommonFeature; Installed: Absent; Request: Local; Action: Local
我做错了什么?
答案 0 :(得分:1)
尝试在&lt;中定义INSTALLATION_TYPE。产品与GT;安装程序的一部分。
我认为正在发生的事情是您只在安装的客户端(UI)中定义INSTALLATION_TYPE属性,即使它被标记为安全。
在日志的小片段中,我们可以看到
MSI(c)
这表示此部分日志记录在安装的UI部分期间发生。而,
MSI(s)
表示此日志记录发生在安装的服务器(提升)部分。
在安装文件的末尾,您可能会有一堆像这样开始的行
属性(S)
带有(S)的所有属性都是安装的提升部分可以访问的属性。我打算打赌INSTALLATION_TYPE未在(S)属性中列出,并且您仅在技术上为安装的UI(客户端)部分定义它。这可以解释为什么没有安装任何客户端或服务器功能。
此外,在默认情况下使用“不安装”的有条件安装功能时,您需要在打开它们的条件中添加“OR Installed”。
当我创作一些安装程序时,我的默认功能是关闭的,如果我安装它们,则卸载或升级(我不记得是哪个)导致安装程序无法正常完全卸载时出现问题。这使机器处于奇怪的状态,安装程序无法工作。将“OR Installed”条件添加到功能启用条件中为我解决了这个问题。