installscript.js Example File | Qt Installer Framework Manual

- Qt Installer Framework Manual
- Dynamic Page Installer Example
- installscript.js Example File

# installscript.js Example File

dynamicpage/packages/org.qtproject.ifw.example.dynamicpage/meta/installscript.js

     /**************************************************************************
     **
     ** Copyright (C) 2017 The Qt Company Ltd.
     ** Contact: https://www.qt.io/licensing/
     **
     ** This file is part of the Qt Installer Framework.
     **
     ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
     ** Commercial License Usage
     ** Licensees holding valid commercial Qt licenses may use this file in
     ** accordance with the commercial license agreement provided with the
     ** Software or, alternatively, in accordance with the terms contained in
     ** a written agreement between you and The Qt Company. For licensing terms
     ** and conditions see https://www.qt.io/terms-conditions. For further
     ** information use the contact form at https://www.qt.io/contact-us.
     **
     ** GNU General Public License Usage
     ** Alternatively, this file may be used under the terms of the GNU
     ** General Public License version 3 as published by the Free Software
     ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
     ** included in the packaging of this file. Please review the following
     ** information to ensure the GNU General Public License requirements will
     ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
     **
     ** $QT_END_LICENSE$
     **
     **************************************************************************/

     var ComponentSelectionPage = null;

     var Dir = new function () {
         this.toNativeSparator = function (path) {
             if (systemInfo.productType === "windows")
                 return path.replace(/\//g, '\\');
             return path;
         }
     };

     function Component() {
         if (installer.isInstaller()) {
             component.loaded.connect(this, Component.prototype.installerLoaded);
             ComponentSelectionPage = gui.pageById(QInstaller.ComponentSelection);

             installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
             installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
             installer.setDefaultPageVisible(QInstaller.LicenseCheck, false);
             if (systemInfo.productType === "windows")
                 installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false);
             installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false);
         }
     }

     Component.prototype.installerLoaded = function () {
         if (installer.addWizardPage(component, "TargetWidget", QInstaller.TargetDirectory)) {
             var widget = gui.pageWidgetByObjectName("DynamicTargetWidget");
             if (widget != null) {
                 widget.targetChooser.clicked.connect(this, Component.prototype.chooseTarget);
                 widget.targetDirectory.textChanged.connect(this, Component.prototype.targetChanged);

                 widget.windowTitle = "Installation Folder";
                 widget.targetDirectory.text = Dir.toNativeSparator(installer.value("TargetDir"));
             }
         }

         if (installer.addWizardPage(component, "InstallationWidget", QInstaller.ComponentSelection)) {
             var widget = gui.pageWidgetByObjectName("DynamicInstallationWidget");
             if (widget != null) {
                 widget.customInstall.toggled.connect(this, Component.prototype.customInstallToggled);
                 widget.defaultInstall.toggled.connect(this, Component.prototype.defaultInstallToggled);
                 widget.completeInstall.toggled.connect(this, Component.prototype.completeInstallToggled);

                 widget.defaultInstall.checked = true;
                 widget.windowTitle = "Select Installation Type";
             }

             if (installer.addWizardPage(component, "LicenseWidget", QInstaller.LicenseCheck)) {
                 var widget = gui.pageWidgetByObjectName("DynamicLicenseWidget");
                 if (widget != null) {
                     widget.acceptLicense.toggled.connect(this, Component.prototype.checkAccepted);

                     widget.complete = false;
                     widget.declineLicense.checked = true;
                     widget.windowTitle = "License Agreement";
                 }
             }

             if (installer.addWizardPage(component, "ReadyToInstallWidget", QInstaller.ReadyForInstallation)) {
                 var widget = gui.pageWidgetByObjectName("DynamicReadyToInstallWidget");
                 if (widget != null) {
                     widget.showDetails.checked = false;
                     widget.windowTitle = "Ready to Install";
                 }
                 var page = gui.pageByObjectName("DynamicReadyToInstallWidget");
                 if (page != null) {
                     page.entered.connect(this, Component.prototype.readyToInstallWidgetEntered);
                 }
             }
         }
     }

     Component.prototype.targetChanged = function (text) {
         var widget = gui.pageWidgetByObjectName("DynamicTargetWidget");
         if (widget != null) {
             if (text != "") {
                 if (!installer.fileExists(text + "/components.xml")) {
                     widget.complete = true;
                     installer.setValue("TargetDir", text);
                     return;
                 }
             }
             widget.complete = false;
         }
     }

     Component.prototype.chooseTarget = function () {
         var widget = gui.pageWidgetByObjectName("DynamicTargetWidget");
         if (widget != null) {
             var newTarget = QFileDialog.getExistingDirectory("Choose your target directory.", widget
                 .targetDirectory.text);
             if (newTarget != "")
                 widget.targetDirectory.text = Dir.toNativeSparator(newTarget);
         }
     }

     Component.prototype.customInstallToggled = function (checked) {
         if (checked) {
             if (ComponentSelectionPage != null)
                 ComponentSelectionPage.selectDefault();
             installer.setDefaultPageVisible(QInstaller.ComponentSelection, true);
         }
     }

     Component.prototype.defaultInstallToggled = function (checked) {
         if (checked) {
             if (ComponentSelectionPage != null)
                 ComponentSelectionPage.selectDefault();
             installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
         }
     }

     Component.prototype.completeInstallToggled = function (checked) {
         if (checked) {
             if (ComponentSelectionPage != null)
                 ComponentSelectionPage.selectAll();
             installer.setDefaultPageVisible(QInstaller.ComponentSelection, false);
         }
     }

     Component.prototype.checkAccepted = function (checked) {
         var widget = gui.pageWidgetByObjectName("DynamicLicenseWidget");
         if (widget != null)
             widget.complete = checked;
     }

     Component.prototype.readyToInstallWidgetEntered = function () {
         var widget = gui.pageWidgetByObjectName("DynamicReadyToInstallWidget");
         if (widget != null) {
             var html = "<b>Components to install:</b><ul>";
             var components = installer.components();
             for (i = 0; i < components.length; ++i) {
                 if (components[i].installationRequested())
                     html = html + "<li>" + components[i].displayName + "</li>"
             }
             html = html + "</ul>";
             widget.showDetailsBrowser.html = html;
         }
     }