Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Checkbox 在WiX中存储复选框的值_Checkbox_Wix_Registry_Wix3.6 - Fatal编程技术网

Checkbox 在WiX中存储复选框的值

Checkbox 在WiX中存储复选框的值,checkbox,wix,registry,wix3.6,Checkbox,Wix,Registry,Wix3.6,我用WIX3.6RC编写了一个安装程序。我在对话框UI中有一个复选框,该复选框最初被禁用和取消选中。旁边有一个验证按钮。当我按下此按钮时,将立即执行一个自定义操作,并设置一个参数值,该参数值决定是否启用该复选框。代码如下: <Control Id="VirtualCheckBox" Type="CheckBox" CheckBoxValue="1" X="35" Y="100"

我用WIX3.6RC编写了一个安装程序。我在对话框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将变为false,并且复选框保持禁用状态:注册表将获得值0 3如果他单击按钮并启用复选框,但他没有选中复选框:注册表获取值0 4如果他单击按钮并选中复选框启用,并且他确实选中了复选框:Registry获取值1

我的不是只在一个条件下工作,当他检查这个时,注册表确实得到1,但要么它被禁用,要么保持未选中状态,注册表什么也得不到


如何解决此问题?

您是否尝试过为变量指定默认值

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

像这样简单的事情应该能奏效

您是否尝试过给变量一个默认值

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

像这样简单的事情应该能奏效

好的,我试试这个,复选框被选中,但在UI中保持禁用状态,注册表项显示为0。但现在我有了一个有效的验证按钮操作和复选框启用,但仍处于选中状态。我继续安装,我看到注册表值仍然是0哦,伙计!!!相反,它应该是1。这就是问题所在。这不起作用的原因是,只有当复选框使用的属性没有值时,复选框才被取消选中。通过为其使用的属性指定默认值,无论该属性是什么,都将检查控件。我仍在寻找此问题的解决方案。好的,我尝试此方法,复选框已选中,但在UI中仍处于禁用状态,注册表项显示为0很棒。但现在我有了一个有效的验证按钮操作和复选框启用,但仍处于选中状态。我继续安装,我看到注册表值仍然是0哦,伙计!!!相反,它应该是1。这就是问题所在。这不起作用的原因是,只有当复选框使用的属性没有值时,复选框才被取消选中。通过为其使用的属性指定默认值,无论该属性是什么,都将检查控件。我仍在寻找解决这个问题的办法。