我想在对话框中显示一个复选框,如果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>
答案 0 :(得分: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>
修改强>
删除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>