2017-01-20 11 views
0

私がやっていることは、特定のレジストリ値がマシン上に見つからない場合、追加する値を選択できるカスタムダイアログが表示されることです。問題は、そのレジストリに関連するプロパティが既に埋め込まれているため、その値を選択して「次へ」をクリックし、「戻る」をクリックするときです。インストーラを再実行しない限り、カスタムダイアログは表示されません。私は十分に明確であることを願っています。コードのスニペットです。レジストリ検索に基づくダイアログシーケンス

<Property Id="REG_VAL" Value="NoValueFound"> 
    <RegistrySearch ... /> 
</Property> 

<Component ...> 
    <RegistryValue Value="[REG_VAL]".../> 
</Component> 

<UI...> 
    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="ChooseValueDlg"> 
    <![CDATA[(REG_VAL="NoValueFound")]]> 
    </Publish> 

    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"> 
    <![CDATA[(REG_VAL<>"NoValueFound")]]> 
    </Publish> 

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="ChooseValueDlg"> 
    <![CDATA[(REG_VAL="NoValueFound")]]> 
    </Publish> 

    <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg"> 
    <![CDATA[(REG_VAL<>"NoValueFound")]]> 
    </Publish> 
</UI> 

<UI> 
    <Dialog Id="ChooseValueDlg" ...> 
    <Control Id="rdoBtnGrp" Type="RadioButtonGroup" Property="REG_VAL" ...> 
     <RadioButtonGroup Property="REG_VAL"> 
     <RadioButton Value="NoValueFound" .../> 
     <RadioButton Value="Value1" .../> 
     <RadioButton Value="Value2" .../> 
     </RadioButtonGroup> 
    </Control> 
    </Dialog> 
</UI> 

答えて

1

次の2つのプロパティにレジストリ検索の結果を保存し、ユーザーと相互に排他的なコントロールイベントのための条件として使用されるもので、編集するためのUIにそれらのいずれかをバインドする必要があります。この方法では、両方ともnullで始めるとダイアログが表示され、ユーザーがデータを入力するともう一方はまだnullであり、ダイアログは引き続き表示されます。

私は不要なCDATAを捨て、PROPERTYとNOT PROPERTYを使いたいです。私は読むのが簡単だと思います。

関連する問題