Wix CheckBox检查条件

Gur*_*der 2 wix wix3.5

我想在对话框中显示一个复选框,如果DWORD注册表值为0或未选中,则取消选中该复选框.

如果属性存在与否,我理解复选框选中/取消选中.有没有办法改变它的工作价值或有条件地设置或删除属性.

复选框总是被检查,因为它在注册表0或nonZero中找到了值并设置了属性,这是我到目前为止尝试的 -

<Property Id="SOUNDSERVER">
  <RegistrySearch Id="SoundServer"
  Root="HKLM"
  Key="[APPLICATIONHIVE]"
  Name="SoundServer"
  Type="raw"
  Win64="yes" />
</Property>

<SetProperty Id="WIXUI_SOUNDSERVER" After="AppSearch" Value="[SOUNDSERVER]" />
<SetProperty Id="WIXUI_SOUNDSERVERADDR" After="AppSearch" Value="[ACTANTSOUNDSERVERADDR]" />

<Control Id="SoundServerCheck" Type="CheckBox" X="20" Y="148" Width="80" Height="10" Property="WIXUI_SOUNDSERVER" CheckBoxValue="#1" Text="Sound Server">
</Control>
Run Code Online (Sandbox Code Playgroud)

Vin*_*oth 5

您可以在SetProperty本身中检查条件.您可以在您的要求中使用以下条件.

 <Property Id="SOUNDSERVER">
    <RegistrySearch Id="SoundServer"   
    Root="HKLM" 
    Key="[APPLICATIONHIVE]" 
    Name="SoundServer" 
    Type="raw" 
    Win64="yes" />
  </Property>

<Property Id="WIXUI_SOUNDSERVER" Value="1" />
<SetProperty Id="WIXUI_SOUNDSERVER" After="AppSearch" Value="{}">
    SOUNDSERVER="#0"
</SetProperty>

<Control Id="SoundServerCheck" Type="CheckBox" X="20" Y="148" Width="80" Height="10" Property="WIXUI_SOUNDSERVER" CheckBoxValue="#1" Text="Sound Server"></Control>
Run Code Online (Sandbox Code Playgroud)

编辑:

删除WIXUI_SOUNDSERVER属性并在所有位置使用SOUNDSERVER属性,以在注册表不存在时取消选中该复选框.

 <SetProperty Id="SOUNDSERVER" After="AppSearch" Value="{}">
    (SOUNDSERVER="#0")
    </SetProperty>

<Control Id="SoundServerCheck" Type="CheckBox" X="20" Y="148" Width="80" Height="10" Property="SOUNDSERVER" CheckBoxValue="#1" Text="Sound Server"></Control>
Run Code Online (Sandbox Code Playgroud)