根据用户输入安装功能

Install a feature according to a user input

我有两个特点。

  1. 网络设备。
  2. USB 设备。

我需要他们安装,一次安装一个。自定义对话框允许一次安装这两个功能,我想避免这种情况,所以我删除了 "Customize" 对话框(我使用的是 "WixUI_Mondo")并添加了一个带有 2 个单选按钮的自定义对话框。

<Control Id ="ConnectionType" Type="RadioButtonGroup" Property="CONPROPERTY" X="20" Y="60" Width="330" Height="100" Text="test">
  <RadioButtonGroup Property="CONPROPERTY">
    <RadioButton Text="!(loc.ChooseConnectionTypeDevice)" Value="network" Height="18" Width="370" X="0" Y="20" />
    <RadioButton Text="!(loc.ChooseConnectionTypeUSB)" Value="usb" Height="18" Width="370" X="0" Y="40" />
  </RadioButtonGroup>
</Control>

现在我想根据单选按钮的选择安装以上功能。

我尝试为我的功能添加条件。但它似乎不起作用。我想这在 运行 时间不起作用。

<Feature Id='NetworkDevice' Level="1"> 

<ComponentRef Id='cmpConfig' />
<ComponentRef Id='cmpCatalog' />

<Condition Level="0"><![CDATA[CONPROPERTY<>"network"]]></Condition>
</Feature>

<Feature Id='UsbDevice' Level="1">
<ComponentRef Id='cmpConfig' />
<ComponentRef Id='cmpCatalog' />
<ComponentRef Id='cmpUsbInstallation' />

<Condition Level='0'><![CDATA[CONPROPERTY<>"usb"]]></Condition>
</Feature>

我怎样才能实现这种情况。谁能告诉我一条路?

这不会按您预期的方式工作。代码中的 'Condition' 引用最终生成 MSI 条件 Table 整体。这些是在 UI 弹出之前进行评估的。您想要的是 'Publish' ControlEvents,它会在用户单击 "Next" 按钮时打开功能 on/off。像这样:

<Publish Dialog="YourDialog" Control="Next" Event="AddLocal" Value="NetworkDevice" Order="1">![CDATA[CONPROPERTY=network]]</Publish>
<Publish Dialog="YourDialog" Control="Next" Event="Remove" Value="NetworkDevice" Order="2">![CDATA[CONPROPERTY<>network]]</Publish>
<Publish Dialog="YourDialog" Control="Next" Event="AddLocal" Value="UsbDevice" Order="3">![CDATA[CONPROPERTY=usb]]</Publish>
<Publish Dialog="YourDialog" Control="Next" Event="Remove" Value="UsbDevice" Order="4">![CDATA[CONPROPERTY<>usb]]</Publish>