Quit Installer Example | Qt Installer Framework Manual

Qt Installer Framework Manual | Quit Installer Example

# Quit Installer Example

Quit Installer illustrates how to use the `Component()` function to display a message box to end users for quitting the installation if some requirements for the installation are not met.

      <?xml version="1.0" encoding="UTF-8"?>
      <Installer>
          <Name>Quit Installer Example</Name>
          <Version>1.0.0</Version>
          <Title>Quit Installer Example</Title>
          <Publisher>Qt-Project</Publisher>
          <StartMenuDir>Qt IFW Examples</StartMenuDir>
          <TargetDir>@HomeDir@/IfwExamples/quitinstaller</TargetDir>
      </Installer>

- The `<Default>` element is set to `true` to preselect the component in the installer.
- The `<Script>` element specifies the file name of the JavaScript file that is loaded to perform operations.

      <?xml version="1.0"?>
      <Package>
          <DisplayName>Quit an installer</DisplayName>
          <Description>Quits the installer in a nice way, if there is something missing</Description>
          <Version>1.0.1</Version>
          <ReleaseDate>2013-02-27</ReleaseDate>
          <Default>true</Default>
          <Script>installscript.js</Script>
      </Package>

## Quitting the Installation

In installscript.js, we use the `Component()` function to display a message box for quitting the installer to end users:

      function Component()
      {
          var result = QMessageBox["question"]("test.quit", "Installer", "Do you want to quit the installer?<br>" +
              "This message box was created using JavaScript.", QMessageBox.Ok | QMessageBox.Cancel);

If end users select OK, we use the `installer::setValue()` function to display a message and the `installer.setDefaultPageVisible()` function to hide the subsequent installer pages:

          if (result == QMessageBox.Ok) {
              installer.setValue("FinishedText", "<font color='red' size=3>The installer was quit.</font>");
              installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
              installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
              installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
              installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
              installer.setDefaultPageVisible(QInstaller.PerformInstallation, false);
              installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
              gui.clickButton(buttons.NextButton);

If end users select Cancel, we display the default installer pages and use the `installer::setValue()` function to display another message on the last installer page:

          } else {
              installer.setValue("FinishedText",
                  "<font color='green' size=3>The installer was not quit by JavaScript.</font>");
          }
      }

Files:

- quitinstaller/config/config.xml
- quitinstaller/packages/org.qtproject.ifw.example.quitinstaller/meta/installscript.js
- quitinstaller/packages/org.qtproject.ifw.example.quitinstaller/meta/package.xml
- quitinstaller/quitinstaller.pro