我使用 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
我的不是只在一个条件下工作,当他检查这个时,注册表确实得到 1,但它要么被禁用,要么保持未选中状态,注册表什么也得不到。
我该如何解决这个问题?