WiX - 功能 - 条件不起作用

时间:2016-04-14 15:54:04

标签: wix windows-installer msiexec

我有一个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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试在&lt;中定义INSTALLATION_TYPE。产品与GT;安装程序的一部分。

我认为正在发生的事情是您只在安装的客户端(UI)中定义INSTALLATION_TYPE属性,即使它被标记为安全。

在日志的小片段中,我们可以看到

  

MSI(c)

这表示此部分日志记录在安装的UI部分期间发生。而,

  

MSI(s)

表示此日志记录发生在安装的服务器(提升)部分。

在安装文件的末尾,您可能会有一堆像这样开始的行

  

属性(S)

带有(S)的所有属性都是安装的提升部分可以访问的属性。我打算打赌INSTALLATION_TYPE未在(S)属性中列出,并且您仅在技术上为安装的UI(客户端)部分定义它。这可以解释为什么没有安装任何客户端或服务器功能。

此外,在默认情况下使用“不安装”的有条件安装功能时,您需要在打开它们的条件中添加“OR Installed”。

当我创作一些安装程序时,我的默认功能是关闭的,如果我安装它们,则卸载或升级(我不记得是哪个)导致安装程序无法正常完全卸载时出现问题。这使机器处于奇怪的状态,安装程序无法工作。将“OR Installed”条件添加到功能启用条件中为我解决了这个问题。