2013-05-01 4 views
2

DWORD 레지스트리 값이 0이거나 선택하지 않으면 대화 상자에 체크 표시를하지 않고 선택을 취소합니다.Wix 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> 

편집 :

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

감사합니다. @Vinoth 감사합니다. DWORD를 읽고 체크 박스에 적용하는 문제를 해결합니다. 레지스트리 값이 전혀 존재하지 않으면 확인란을 선택 취소 할 수 없습니다. 나는 어떤 차이도 내지 않는 을 시도했다. – Gurinder

+0

를 사용하여 확인란을 선택 취소하십시오. – Vinoth

+0

솔루션 작동; 이 값 "{}"이 어떻게 기본값을 설정하는지 설명해주십시오. 많은 감사 – Gurinder