在WiX中存储CheckBox的值

时间:2012-06-15 05:19:57

标签: checkbox wix registry wix3.6

我使用Wix 3.6 RC编写了一个安装程序。我在对话框UI中有一个复选框,该复选框最初被禁用和取消选中。有一个"验证"旁边的按钮。当我按下此按钮时,会执行自定义操作(立即)并设置参数值,该参数值决定是否启用复选框。这是代码:

<Control Id="VirtualCheckBox"
                 Type="CheckBox"
                 CheckBoxValue="1"
                 X="35" Y="100"
                 Width="160" Height="20"
                 Disabled="yes"
                 Text="!(loc.VirtualizationDlg_ChkBox)" Property="ENABLEVIRTUALIZATION">
  <Condition Action="enable"><![CDATA[INTEGRATED = "1"]]></Condition>
  <Condition Action="disable"><![CDATA[INTEGRATED = "0"]]></Condition>
</Control>

我将这个复选框的值存储在注册表中:

<Component Id="Virtualization_RegistryEntries" Guid="GUID-IS-HERE">
    <Condition>Not Installed</Condition>
    <RegistryKey Root="HKCU"
                 Key="Software\!(loc.CompanyName)\!(loc.ProductName)">
      <RegistryValue Type="string" Name="Virtualization" Value="[ENABLEVIRTUALIZATION]" KeyPath="yes"/>
    </RegistryKey>
  </Component>

现在我必须这样做:
1)如果用户未单击“验证”按钮:注册表获取值0
2)如果他点击按钮(CA得到错误,复选框保持禁用):注册表获得值0
3)如果他点击按钮并且复选框启用但他没有选中复选框:注册表获得值0
4)如果他点击按钮并启用了复选框,他确实勾选了复选框:注册表获得值1

Mine只是在一个条件下工作,当他检查这个时,注册表确实得到1但是它被禁用或者未经检查注册表什么都没有。

如何解决此问题?

1 个答案:

答案 0 :(得分:-1)

您是否尝试过为变量提供默认值?

<Property Id="ENABLEVIRTUALIZATION" Value="0" />

这样简单应该可以解决问题!