From de748023e53ce84afd01cde0ca380cddad057a4d Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 3 Dec 2014 10:41:48 +0100 Subject: Expose systemInfo API Add systemInfo as a wrapper for QSystemInfo. Task-number: QTIFW-592 Change-Id: Ib54fcea8b0ef3a397a74f5315202f3000abd63cd Reviewed-by: Niels Weber Reviewed-by: Jarek Kobus --- examples/systeminfo/README | 13 +++ examples/systeminfo/config/config.xml | 10 ++ .../systeminfo/packages/root.i386/meta/package.xml | 8 ++ .../packages/root.x86_64/meta/package.xml | 8 ++ .../systeminfo/packages/root/meta/installscript.qs | 121 +++++++++++++++++++++ examples/systeminfo/packages/root/meta/package.xml | 8 ++ examples/systeminfo/systeminfo.pro | 13 +++ 7 files changed, 181 insertions(+) create mode 100644 examples/systeminfo/README create mode 100644 examples/systeminfo/config/config.xml create mode 100644 examples/systeminfo/packages/root.i386/meta/package.xml create mode 100644 examples/systeminfo/packages/root.x86_64/meta/package.xml create mode 100644 examples/systeminfo/packages/root/meta/installscript.qs create mode 100644 examples/systeminfo/packages/root/meta/package.xml create mode 100644 examples/systeminfo/systeminfo.pro (limited to 'examples/systeminfo') diff --git a/examples/systeminfo/README b/examples/systeminfo/README new file mode 100644 index 000000000..69440c088 --- /dev/null +++ b/examples/systeminfo/README @@ -0,0 +1,13 @@ +Shows how to use the systemInfo JS API. + +The installer rejects installations on Windows XP, +and OS X 10.6 or older. It shows a warning if +it is run on any Linux distribution other than openSUSE 13.2. + +It also shows only one of the two sub-packages, based on +the CPU architecture: "i386" on an 32-bit system, and +"x86_64" on an 64-bit system. + +Generate installer with + +binarycreator --offline-only -c config/config.xml -p packages installer diff --git a/examples/systeminfo/config/config.xml b/examples/systeminfo/config/config.xml new file mode 100644 index 000000000..ffbfd9d7f --- /dev/null +++ b/examples/systeminfo/config/config.xml @@ -0,0 +1,10 @@ + + + SystemInfo Example + 1.0.0 + SystemInfo Example + The Qt Company + + Qt Installer Framework Example + @HomeDir@/IFWSystemInfoExample + diff --git a/examples/systeminfo/packages/root.i386/meta/package.xml b/examples/systeminfo/packages/root.i386/meta/package.xml new file mode 100644 index 000000000..4d56928ce --- /dev/null +++ b/examples/systeminfo/packages/root.i386/meta/package.xml @@ -0,0 +1,8 @@ + + + i386 binaries + Binaries that require a x86 CPU. + 1.0.0-1 + 2014-12-01 + false + diff --git a/examples/systeminfo/packages/root.x86_64/meta/package.xml b/examples/systeminfo/packages/root.x86_64/meta/package.xml new file mode 100644 index 000000000..66cffdfd4 --- /dev/null +++ b/examples/systeminfo/packages/root.x86_64/meta/package.xml @@ -0,0 +1,8 @@ + + + x86-64 bit binaries + Binaries that require a x86-64 CPU. + 1.0.0-1 + 2014-12-01 + false + diff --git a/examples/systeminfo/packages/root/meta/installscript.qs b/examples/systeminfo/packages/root/meta/installscript.qs new file mode 100644 index 000000000..213a3c42c --- /dev/null +++ b/examples/systeminfo/packages/root/meta/installscript.qs @@ -0,0 +1,121 @@ +/************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Installer Framework. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** +** $QT_END_LICENSE$ +** +**************************************************************************/ + +// Skip all pages and go directly to finished page. +// (see also componenterror example) +function cancelInstaller(message) +{ + installer.setDefaultPageVisible(QInstaller.Introduction, false); + installer.setDefaultPageVisible(QInstaller.TargetDirectory, false); + installer.setDefaultPageVisible(QInstaller.ComponentSelection, false); + installer.setDefaultPageVisible(QInstaller.ReadyForInstallation, false); + installer.setDefaultPageVisible(QInstaller.StartMenuSelection, false); + installer.setDefaultPageVisible(QInstaller.PerformInstallation, false); + installer.setDefaultPageVisible(QInstaller.LicenseCheck, false); + + var abortText = "" + message +""; + installer.setValue("FinishedText", abortText); +} + +// Returns the major version number as int +// string.split(".", 1) returns the string before the first '.', +// parseInt() converts it to an int. +function majorVersion(str) +{ + return parseInt(str.split(".", 1)); +} + +function Component() +{ + // + // Check whether OS is supported. + // + // For Windows and OS X we check the kernel version: + // - Require at least Windows Vista (winnt kernel version 6.0.x) + // - Require at least OS X 10.7 (Lion) (darwin kernel version 11.x) + // + // If the kernel version is older we move directly + // to the final page & show an error. + // + // For Linux, we check the distribution and version, but only + // show a warning if it does not match our preferred distribution. + // + + // start installer with -v to see debug output + console.log("OS: " + systemInfo.productType); + console.log("Kernel: " + systemInfo.kernelType + "/" + systemInfo.kernelVersion); + + var validOs = false; + + if (systemInfo.kernelType === "winnt") { + if (majorVersion(systemInfo.kernelVersion) >= 6) + validOs = true; + } else if (systemInfo.kernelType === "darwin") { + if (majorVersion(systemInfo.kernelVersion) >= 11) + validOs = true; + } else { + if (systemInfo.productType !== "opensuse" + || systemInfo.productVersion !== "13.2") { + QMessageBox["warning"]("os.warning", "Installer", + "Note that the binaries are only tested on OpenSUSE 13.2.", + QMessageBox.Ok); + } + validOs = true; + } + + if (!validOs) { + cancelInstaller("Installation on " + systemInfo.prettyProductName + " is not supported"); + return; + } + + // + // Hide/select packages based on architecture + // + // Marking a component as "Virtual" will hide it in the UI. + // Marking a component with "Default" will check it. + // + console.log("CPU Architecture: " + systemInfo.currentCpuArchitecture); + + installer.componentByName("root.i386").setValue("Virtual", "true"); + installer.componentByName("root.x86_64").setValue("Virtual", "true"); + + if ( systemInfo.currentCpuArchitecture === "i386") { + installer.componentByName("root.i386").setValue("Virtual", "false"); + installer.componentByName("root.i386").setValue("Default", "true"); + } + if ( systemInfo.currentCpuArchitecture === "x86_64") { + installer.componentByName("root.x86_64").setValue("Virtual", "false"); + installer.componentByName("root.x86_64").setValue("Default", "true"); + } +} diff --git a/examples/systeminfo/packages/root/meta/package.xml b/examples/systeminfo/packages/root/meta/package.xml new file mode 100644 index 000000000..0e67c1bc9 --- /dev/null +++ b/examples/systeminfo/packages/root/meta/package.xml @@ -0,0 +1,8 @@ + + + systemInfo example + Shows the use of the systemInfo JS API. + 1.0.0-1 + 2013-01-01 + + diff --git a/examples/systeminfo/systeminfo.pro b/examples/systeminfo/systeminfo.pro new file mode 100644 index 000000000..415df49d5 --- /dev/null +++ b/examples/systeminfo/systeminfo.pro @@ -0,0 +1,13 @@ +TEMPLATE = aux + +INSTALLER = installer + +INPUT = $$PWD/config/config.xml $$PWD/packages +example.input = INPUT +example.output = $$INSTALLER +example.commands = ../../bin/binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT} +example.CONFIG += target_predeps no_link combine + +QMAKE_EXTRA_COMPILERS += example + +OTHER_FILES = README -- cgit v1.2.3