Wix installer - условно отображать «Launch application» на ExitDialog на основе пользовательского диалогового ввода - PullRequest
3 голосов
/ 26 ноября 2010

Я новичок в установщике Windows и Wix, поэтому, пожалуйста, прости вопрос новичка.

Я использую WixUI_InstallDir и добавил настраиваемое диалоговое окно, которое показывает 3 флажка после LicenseAgreementDlg и перед InstallDirDlg. Есть ли способ условно отобразить флажок «Запуск установленного приложения» на ExitDialog только тогда, когда установлен первый флажок, и установщик выполняется в первый раз?

В моем файле wxs у меня есть

<!-- Property for each checkbox value (first checkbox checked by default) -->
<Property Id="Checkbox1" Value="1"/>
<Property Id="Checkbox2"/>
<Property Id="Checkbox3"/>

<!-- Custom action to set exit dialog checkbox -->
<CustomAction Id="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch application."/>

<InstallUISequence>
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom>
</InstallUISequence>

<!-- User Interface -->
<UI>
    <UIRef Id="WixUI_InstallDir"/>
    <UIRef Id="WixUI_ErrorProgressText"/>
    <DialogRef Id="MyCheckboxesDlg"/>
    <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyCheckboxesDlg" Order="3">LicenseAccepted = "1"</Publish>
    <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="MyCheckboxesDlg">1</Publish>
</UI>

Моя проблема заключается в том, что если я сниму первый флажок, значение свойства Checkbox1 будет установлено равным 0 после завершения InstallUISequence, поэтому приложение запуска в диалоговом окне выхода по-прежнему отображается.

Где я должен установить свойство, в UISequence или ExecuteSequence?

1 Ответ

1 голос
/ 01 декабря 2010

Кажется, я понял это ... просто вызвал пользовательское действие CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT, когда кнопка Next в моем пользовательском диалоге нажата вместо вызова его в InstallUISequence.

<!-- NO LONGER NEEDED
<InstallUISequence>
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom>
</InstallUISequence>
-->

<Fragment>
  <UI>
      <Dialog Id="MyCheckboxesDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes">
        <Control Id="ChkBox1" Type="CheckBox" X="25" Y="75" Width="200" Height="17" Property='Checkbox1' CheckBoxValue='1' >
          <Text>First checkbox</Text>
        </Control>
        <Control Id="ChkBox2" Type="CheckBox" X="25" Y="95" Width="200" Height="17" Property='Checkbox2' CheckBoxValue='1'>
          <Text>Second checkbox</Text>
        </Control>
        <Control Id="ChkBox3" Type="CheckBox" X="25" Y="115" Width="200" Height="17" Property='Checkbox3' CheckBoxValue='1'>
          <Text>Third checkbox</Text>
        </Control>

        <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next">
          <Publish Event="DoAction" Value="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Order="1">Checkbox1= 1</Publish>
          <Publish Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish>
        </Control>

        <!-- Other UI controls... -->

    </Dialog>
  </UI>
</Fragment>
...