Quit Installer Example | Qt Installer Framework Manual

- Qt Installer Framework Manual
- Qt Installer Framework Examples
- Quit Installer Example

# Quit Installer Example

Using a component script to quit an installer.

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.

#### Configuring the Example Installer

The installer configuration file, config.xml, in the `config` directory specifies the text and default values used in the installer:

- The `<Name>` element sets the application name and adds it to the page name and introduction text.
- The `<Version>` element sets the application version number.
- The `<Title>` element sets the installer name and displays it on the title bar.
- The `<Publisher>` element sets the publisher of the software (as shown in the Windows Control Panel, for example).
- The `<StartMenuDir>` element sets the name of the default program group for the product in the Windows Start menu.
- The `<TargetDir>` element sets the default target directory location to be within the `IfwExamples` directory in the home directory of the current user (because it uses the pre-existing variable `,` @HomeDir@, as part of the value). For more information, see Predefined Variables.

     <?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>

#### Creating the Example Package Information File

The installer package information file, package.xml, in the `meta` directory specifies the components that are available for installation:

- The `<DisplayName>` element sets the human-readable name of the component.
- The `<Description>` element sets the human-readable description of the component.
- The `<Version>` element sets the version number of the component.
- The `<ReleaseDate>` element sets the date of release for this component version.

- 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>");
         }
     }

#### Generating the Example Installer

To create the example installer, switch to the example source directory on the command line and enter the following command:

- On Windows:

       ..\..\bin\binarycreator.exe -c config\config.xml -p packages installer.exe

- On Linux or macOS:

       ../../bin/binarycreator -c config/config.xml -p packages installer

This creates the installer to the current directory.

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