2013-05-01 105 views
2

我喜歡在對話框中顯示一個複選框,如果DWORD註冊表值爲0或未選中,則取消選中該複選框。Wix複選框檢查條件

我明白複選框檢查/取消選中屬性是否存在。有沒有辦法改變它的工作價值或有條件地設置或刪除財產。

框總是檢查,因爲它在註冊表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> 

編輯:

刪除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 2013-05-02 09:02:40

+0

使用取消複選框。 – Vinoth 2013-05-02 09:22:54

+0

解決方案有效;我想知道你能否解釋這個值「{}」是如何設定默認值的。許多感謝 – Gurinder 2013-05-02 10:08:30