2013-05-01 4 views
2

Мне нравится показывать флажок в диалоговом окне, который не установлен, если значение реестра DWORD равно 0 или в противном случае.Wix CheckBox checked condition

Я понял, что флажок установлен/снят флажок, если свойство существует или нет. Есть ли способ изменить его работу со значением или условно установить или удалить свойство.

Checkbox всегда проверяется, как он нашел значение в реестре 0 или отлична от нуля и установить свойство, и это я пытался до сих пор -

<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> 

ответ

4

Вы можете проверить состояние в 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> 

Edit:

Удалить 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> 
+0

Thanks @Vinoth Решает проблему чтения DWORD и применения к флажку. Я все еще не могу снять флажок, если значение реестра вообще не существует. Я попробовал , который не имеет никакого значения. – Gurinder

+0

Используйте , чтобы снять флажок. – Vinoth

+0

Работы по решению; Интересно, можете ли вы объяснить, как это значение «{}» работает для установки значений по умолчанию. Many Thanks – Gurinder