2010-07-15 4 views
7

Я создал пользовательскую диалоговую страницу в wix и имеет текстовое поле. Я хочу отключить следующую кнопку установщика, если текстовое поле пуст, включите его, если пользователь набрал значение. Следующий код работает частично. Он не отключает следующую кнопку, но не переходит на следующую страницу, если вы не заполните это значение. Проблема в том, что статус следующей кнопки не обновляется, когда вы вводите значение в текстовое поле редактирования. Если я удалю значение из текстового поля редактирования, а затем вернусь к предыдущему экрану, а затем, следующая, кнопка будет отключена.Включить или отключить следующую кнопку, основанную на текущем значении управления текстом в Wix?

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Fragment> 
    <UI> 
     <Dialog Id="MyCustomDialog" Width="370" Height="270" Title="Custom Dialog Options"> 
     <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> 
      <Condition Action="disable">USERNAME1 = ""</Condition> 
      <Condition Action="enable">NOT(USERNAME1 = "")</Condition> 
      <Publish Event="NewDialog" Value="VerifyReadyDlg">NOT(USERNAME1 = "")</Publish> 
     </Control> 
     <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back"> 
      <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish> 
     </Control> 
     <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> 
      <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> 
     </Control> 

     <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="Please type the value" /> 

     <Control Id="UserNameText" Type="Text" X="20" Y="60" Width="290" Height="13" NoPrefix="yes" Text="Please type the username" /> 
     <Control Id="UserNameEdit" Type="Edit" X="20" Y="72" Width="290" Height="18" Multiline="no" Property="USERNAME1"/> 

     </Dialog> 
    </UI> 
</Fragment> 
</Wix> 

ответ

3

Вот как я это сделал.

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next"> 
     <Condition Action="enable"><![CDATA[InDBCONNECTION_STRING_VALID = "1"]]></Condition> 
     <Condition Action="disable"><![CDATA[InDBCONNECTION_STRING_VALID = "0"]]></Condition> 
</Control> 
+0

Вы хотите попробовать ответить на другой вопрос Wix? http://stackoverflow.com/questions/19355537/wix-setting-install-folder-correctly/ –

7

Отключение и включение кнопки «Далее» практически невозможно в WIX. Ответ от @ Wjdavis5 отключил кнопку «Далее» для меня, но кнопка будет включена, только если пользователь нажмет на другое текстовое поле. Это сбивает с толку.

Следующий код составлен на основе this answer. Он показывает одно окно ввода текста, когда пользователь нажимает «Далее», либо он показывает диалог с ошибкой, либо переходит к экрану установки.

<Dialog Id="UserRegistrationDialog" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes"> 
    <Control Id="UserIdEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="UserID" Text="{80}" /> 

    <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next" > 
     <Publish Event="NewDialog" Value="VerifyReadyDlg">2</Publish> 
     <Publish Event="SpawnDialog" Value="UserIdError"><![CDATA[UserID = ""]]></Publish> 
    </Control> 
</Dialog> 

<Dialog Id="UserIdError" Width="260" Height="85" NoMinimize="no" Title="[ProductName]"> 
    <Control Id="UserIdErrorDesc" Type="Text" Width="194" Height="30" X="48" Y="15" Text="Please enter a User ID." /> 
    <Control Id="UserIdErrorOk" Type="PushButton" X="97" Y="57" Width="56" Height="17" Text="Ok"> 
     <Publish Event="EndDialog" Value="Return">1</Publish> 
    </Control> 
</Dialog> 
+0

Хорошо, я использую это обходное решение для проверки ввода с использованием результата пользовательского действия. –