summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorLeena Miettinen <riitta-leena.miettinen@nokia.com>2012-02-15 12:24:54 +0100
committerLeena Miettinen <riitta-leena.miettinen@nokia.com>2012-02-15 12:31:20 +0100
commitb21c03e7b4567f6a1833232c42096bd08561a7aa (patch)
treed75975148b4e8440056bde689737d643939da76b /doc
parent53843415e95e976e4224f62266f4036c5c91791d (diff)
Doc: restructure and add information.
Overview, getting started, use cases. Add screen shots. Edit all files. Change-Id: I0437e179a9ea0d59dd132f1560d7b6315ee67498 Reviewed-by: Niels Weber <niels.2.weber@nokia.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/images/ifw-add-components-introduction.pngbin0 -> 9980 bytes
-rw-r--r--doc/images/ifw-add-components-selection.pngbin0 -> 16590 bytes
-rw-r--r--doc/images/ifw-installation-finished.pngbin0 -> 9872 bytes
-rw-r--r--doc/images/ifw-introduction-page.pngbin0 -> 9425 bytes
-rw-r--r--doc/images/ifw-license-check-page.pngbin0 -> 20709 bytes
-rw-r--r--doc/images/ifw-perform-installation.pngbin0 -> 9897 bytes
-rw-r--r--doc/images/ifw-perform-update.pngbin0 -> 14320 bytes
-rw-r--r--doc/images/ifw-ready-for-installation.pngbin0 -> 10221 bytes
-rw-r--r--doc/images/ifw-ready-to-uninstall.pngbin0 -> 11046 bytes
-rw-r--r--doc/images/ifw-ready-to-update.pngbin0 -> 9634 bytes
-rw-r--r--doc/images/ifw-removing-components.pngbin0 -> 19792 bytes
-rw-r--r--doc/images/ifw-select-components.pngbin0 -> 12576 bytes
-rw-r--r--doc/images/ifw-settings-network.pngbin0 -> 10653 bytes
-rw-r--r--doc/images/ifw-settings-repositories.pngbin0 -> 10788 bytes
-rw-r--r--doc/images/ifw-target-directory-page.pngbin0 -> 9538 bytes
-rw-r--r--doc/images/ifw-tutorial-files.pngbin0 -> 3227 bytes
-rw-r--r--doc/images/ifw-tutorial-introduction-page.pngbin0 -> 9737 bytes
-rw-r--r--doc/images/ifw-tutorial-license-check.pngbin0 -> 20754 bytes
-rw-r--r--doc/images/ifw-tutorial-select-components.pngbin0 -> 12720 bytes
-rw-r--r--doc/images/ifw-update-finished.pngbin0 -> 9451 bytes
-rw-r--r--doc/images/ifw-updating-components.pngbin0 -> 16908 bytes
-rw-r--r--doc/images/ifw-updating-introduction.pngbin0 -> 10279 bytes
-rw-r--r--doc/images/ifw-user-flow-adding.pngbin0 -> 2665 bytes
-rw-r--r--doc/images/ifw-user-flow-installing.pngbin0 -> 5021 bytes
-rw-r--r--doc/images/ifw-user-flow-removing.pngbin0 -> 3574 bytes
-rw-r--r--doc/images/ifw-user-flow-updating.pngbin0 -> 2644 bytes
-rw-r--r--doc/images/ifw-warning-existing-installation.pngbin0 -> 5736 bytes
-rw-r--r--doc/images/ifw-win-program-group.pngbin0 -> 13403 bytes
-rw-r--r--doc/installerfw-getting-started.qdoc110
-rw-r--r--doc/installerfw-overview.qdoc84
-rw-r--r--doc/installerfw-reference.qdoc42
-rw-r--r--doc/installerfw-using.qdoc355
-rw-r--r--doc/installerfw.qdoc1139
-rw-r--r--doc/installerfw.qdocconf2
-rw-r--r--doc/noninteractive.qdoc172
-rw-r--r--doc/operations.qdoc299
-rw-r--r--doc/scripting.qdoc214
-rw-r--r--doc/tutorial.qdoc211
38 files changed, 1913 insertions, 715 deletions
diff --git a/doc/images/ifw-add-components-introduction.png b/doc/images/ifw-add-components-introduction.png
new file mode 100644
index 000000000..d17310f1e
--- /dev/null
+++ b/doc/images/ifw-add-components-introduction.png
Binary files differ
diff --git a/doc/images/ifw-add-components-selection.png b/doc/images/ifw-add-components-selection.png
new file mode 100644
index 000000000..c4354bd38
--- /dev/null
+++ b/doc/images/ifw-add-components-selection.png
Binary files differ
diff --git a/doc/images/ifw-installation-finished.png b/doc/images/ifw-installation-finished.png
new file mode 100644
index 000000000..2b14de743
--- /dev/null
+++ b/doc/images/ifw-installation-finished.png
Binary files differ
diff --git a/doc/images/ifw-introduction-page.png b/doc/images/ifw-introduction-page.png
new file mode 100644
index 000000000..989f6aaf2
--- /dev/null
+++ b/doc/images/ifw-introduction-page.png
Binary files differ
diff --git a/doc/images/ifw-license-check-page.png b/doc/images/ifw-license-check-page.png
new file mode 100644
index 000000000..3367115c7
--- /dev/null
+++ b/doc/images/ifw-license-check-page.png
Binary files differ
diff --git a/doc/images/ifw-perform-installation.png b/doc/images/ifw-perform-installation.png
new file mode 100644
index 000000000..a41eee861
--- /dev/null
+++ b/doc/images/ifw-perform-installation.png
Binary files differ
diff --git a/doc/images/ifw-perform-update.png b/doc/images/ifw-perform-update.png
new file mode 100644
index 000000000..0149527ef
--- /dev/null
+++ b/doc/images/ifw-perform-update.png
Binary files differ
diff --git a/doc/images/ifw-ready-for-installation.png b/doc/images/ifw-ready-for-installation.png
new file mode 100644
index 000000000..bbb1a130a
--- /dev/null
+++ b/doc/images/ifw-ready-for-installation.png
Binary files differ
diff --git a/doc/images/ifw-ready-to-uninstall.png b/doc/images/ifw-ready-to-uninstall.png
new file mode 100644
index 000000000..d56070539
--- /dev/null
+++ b/doc/images/ifw-ready-to-uninstall.png
Binary files differ
diff --git a/doc/images/ifw-ready-to-update.png b/doc/images/ifw-ready-to-update.png
new file mode 100644
index 000000000..5bef16d39
--- /dev/null
+++ b/doc/images/ifw-ready-to-update.png
Binary files differ
diff --git a/doc/images/ifw-removing-components.png b/doc/images/ifw-removing-components.png
new file mode 100644
index 000000000..8ab10478d
--- /dev/null
+++ b/doc/images/ifw-removing-components.png
Binary files differ
diff --git a/doc/images/ifw-select-components.png b/doc/images/ifw-select-components.png
new file mode 100644
index 000000000..85dcce1be
--- /dev/null
+++ b/doc/images/ifw-select-components.png
Binary files differ
diff --git a/doc/images/ifw-settings-network.png b/doc/images/ifw-settings-network.png
new file mode 100644
index 000000000..c8b81967a
--- /dev/null
+++ b/doc/images/ifw-settings-network.png
Binary files differ
diff --git a/doc/images/ifw-settings-repositories.png b/doc/images/ifw-settings-repositories.png
new file mode 100644
index 000000000..940df5207
--- /dev/null
+++ b/doc/images/ifw-settings-repositories.png
Binary files differ
diff --git a/doc/images/ifw-target-directory-page.png b/doc/images/ifw-target-directory-page.png
new file mode 100644
index 000000000..fffe6d23a
--- /dev/null
+++ b/doc/images/ifw-target-directory-page.png
Binary files differ
diff --git a/doc/images/ifw-tutorial-files.png b/doc/images/ifw-tutorial-files.png
new file mode 100644
index 000000000..8e66be97f
--- /dev/null
+++ b/doc/images/ifw-tutorial-files.png
Binary files differ
diff --git a/doc/images/ifw-tutorial-introduction-page.png b/doc/images/ifw-tutorial-introduction-page.png
new file mode 100644
index 000000000..f2c114db0
--- /dev/null
+++ b/doc/images/ifw-tutorial-introduction-page.png
Binary files differ
diff --git a/doc/images/ifw-tutorial-license-check.png b/doc/images/ifw-tutorial-license-check.png
new file mode 100644
index 000000000..074c7c927
--- /dev/null
+++ b/doc/images/ifw-tutorial-license-check.png
Binary files differ
diff --git a/doc/images/ifw-tutorial-select-components.png b/doc/images/ifw-tutorial-select-components.png
new file mode 100644
index 000000000..908df07c3
--- /dev/null
+++ b/doc/images/ifw-tutorial-select-components.png
Binary files differ
diff --git a/doc/images/ifw-update-finished.png b/doc/images/ifw-update-finished.png
new file mode 100644
index 000000000..32c70e6cc
--- /dev/null
+++ b/doc/images/ifw-update-finished.png
Binary files differ
diff --git a/doc/images/ifw-updating-components.png b/doc/images/ifw-updating-components.png
new file mode 100644
index 000000000..068e3c3c9
--- /dev/null
+++ b/doc/images/ifw-updating-components.png
Binary files differ
diff --git a/doc/images/ifw-updating-introduction.png b/doc/images/ifw-updating-introduction.png
new file mode 100644
index 000000000..aaae77603
--- /dev/null
+++ b/doc/images/ifw-updating-introduction.png
Binary files differ
diff --git a/doc/images/ifw-user-flow-adding.png b/doc/images/ifw-user-flow-adding.png
new file mode 100644
index 000000000..0627303b3
--- /dev/null
+++ b/doc/images/ifw-user-flow-adding.png
Binary files differ
diff --git a/doc/images/ifw-user-flow-installing.png b/doc/images/ifw-user-flow-installing.png
new file mode 100644
index 000000000..7de611c92
--- /dev/null
+++ b/doc/images/ifw-user-flow-installing.png
Binary files differ
diff --git a/doc/images/ifw-user-flow-removing.png b/doc/images/ifw-user-flow-removing.png
new file mode 100644
index 000000000..921f00f98
--- /dev/null
+++ b/doc/images/ifw-user-flow-removing.png
Binary files differ
diff --git a/doc/images/ifw-user-flow-updating.png b/doc/images/ifw-user-flow-updating.png
new file mode 100644
index 000000000..b6e33f43f
--- /dev/null
+++ b/doc/images/ifw-user-flow-updating.png
Binary files differ
diff --git a/doc/images/ifw-warning-existing-installation.png b/doc/images/ifw-warning-existing-installation.png
new file mode 100644
index 000000000..4224701d8
--- /dev/null
+++ b/doc/images/ifw-warning-existing-installation.png
Binary files differ
diff --git a/doc/images/ifw-win-program-group.png b/doc/images/ifw-win-program-group.png
new file mode 100644
index 000000000..e2d9e4eb8
--- /dev/null
+++ b/doc/images/ifw-win-program-group.png
Binary files differ
diff --git a/doc/installerfw-getting-started.qdoc b/doc/installerfw-getting-started.qdoc
new file mode 100644
index 000000000..a15bfe164
--- /dev/null
+++ b/doc/installerfw-getting-started.qdoc
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
+/*!
+ \contentspage {index.html}{Qt Installer Framework}
+ \previouspage ifw-use-cases-settings.html
+ \page ifw-getting-started.html
+ \nextpage ifw-tutorial.html
+
+ \title Getting Started
+
+ Qt Installer Framework is developed as part of the Qt project. Fetch the
+ sources from Gitorious and build the necessary tools before you start to
+ create installers for your products.
+
+ \section1 Supported Platforms
+
+ You can use the Qt Installer Framework to create installers for all
+ platforms supported by
+ \l{http://doc.qt.nokia.com/5.0-snapshot/supported-platforms.html}
+ {desktop Qt}.
+
+ The installers have been tested on the following platforms:
+
+ \list
+ \o Microsoft Windows XP, and later
+ \o Ubuntu Linux 8.04, and later
+ \o Mac OS X 10.6, and later
+ \endlist
+
+ \section1 Configuring Qt
+
+ If you use a statically built Qt to create your installer, you do not have
+ to deliver Qt libraries, which enables you to distribute the installer as
+ one package.
+
+ \section2 Configuring Qt for Windows
+
+ Specify the following settings in the qmake.conf configuration file:
+
+ \code
+ MAKEFILE_GENERATOR = MSVC.NET
+ TEMPLATE = app
+ CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
+ QT += core gui
+ DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT
+ QMAKE_COMPILER_DEFINES += _MSC_VER=1400 WIN32
+ QMAKE_YACCFLAGS = -d
+ QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
+ QMAKE_CFLAGS_WARN_ON = -W3
+ QMAKE_CFLAGS_WARN_OFF = -W0
+ QMAKE_CFLAGS_RELEASE = -O2 -MT
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
+ QMAKE_CFLAGS_DEBUG = -Zi -MTd
+ QMAKE_CFLAGS_YACC =
+ QMAKE_CFLAGS_LTCG = -GL
+ \endcode
+
+ We recommend that you use the following options when you configure Qt for
+ Windows:
+
+ \code
+ configure.exe -platform win32-msvc20XX -release -static -no-webkit -no-phonon -no-dbus -no-opengl -no-qt3support -no-xmlpatterns -no-svg -no-multimedia -no-declarative -no-declarative-debug -nomake examples -nomake demos -qt-sql-sqlite -plugin-sql-sqlite -opensource
+ \endcode
+
+ \section2 Configuring Qt for Linux and Mac OS X
+
+ We recommend that you use the following configuration options for Linux and
+ Mac OS X:
+
+ \code
+ configure -nomake examples -nomake demos -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -opensource -developer-build -static -no-webkit -no-phonon -no-dbus -no-opengl -no-qt3support -no-xmlpatterns -no-svg -release
+ \endcode
+
+ \section1 Setting up Qt Installer Framework
+
+ \list 1
+
+ \o Clone the Qt Installer Framework source code from
+ \l{http://gitorious.org/qt-labs/installer-framework}
+ to get the sources for the tools.
+
+ \o Build the \c installerbase, \c binarycreator, and \c repogen tool
+ in the \c installerbuilder directory, as any Qt project.
+
+ \endlist
+
+ \note To contribute patches to Qt Installer Framework, follow the standard
+ Qt processes and guidelines. For more information, see
+ \l{http://qt-project.org/}{Contribute to the Qt Project}.
+
+*/
diff --git a/doc/installerfw-overview.qdoc b/doc/installerfw-overview.qdoc
new file mode 100644
index 000000000..5d92afb58
--- /dev/null
+++ b/doc/installerfw-overview.qdoc
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
+/*!
+ \contentspage {index.html}{Qt Installer Framework}
+ \previouspage index.html
+ \page ifw-overview.html
+ \nextpage ifw-use-cases.html
+
+ \title Overview of Qt Installer Framework
+
+ The Qt Installer Framework provides a set of tools and utilities to
+ create installers once, and deploy them across all the supported desktop
+ Qt platforms without rewriting the source code. The installers will have the
+ native look and feel on the platform where they are run: Linux, Microsoft
+ Windows, and Mac OS X.
+
+ The Qt Installer Framework tools generate installers with a set of pages
+ that guide the users during the installation, update, or uninstallation
+ process. You provide the installable content and specify information about
+ it, such as the name of the product and the installer and the text for the
+ license agreement.
+
+ You can customize the installers by adding widgets to the predefined pages
+ or by adding whole pages to provide users with additional options. You can
+ create scripts to add operations to the installer.
+
+ You can create either \e offline or \e online installers. Offline installers
+ contain all the installable components and do not require network
+ connections during or after the installation.
+
+ Online installers download components from a repository on a Web server.
+ They enable users to install additional components from the server after the
+ initial setup, as well as to receive automatic updates to content as soon as
+ the updates are published on the server.
+
+ \section1 Choosing Installer Type
+
+ You can provide end users with an offline or online installer, or both,
+ depending on your use cases.
+
+ Create an offline installer to enable users to directly download the
+ installation package on a media for installation on a computer later. You
+ can also distribute the installation package on a CD-ROM or USB stick, for
+ example.
+
+ Create an online installer if you expect the users to have reliable network
+ access, because it provides the users with automatic updates to installed
+ content and easy access to all content that is added later.
+
+ \section1 Promoting Updates
+
+ Create online installers to be able to promote updates to end users who
+ install your product. The easiest way to provide an update is to recreate
+ the repository and upload it to the web server. For large repositories, you
+ can update only the the changed components.
+
+ \section1 Providing Content for Installers
+
+ You can enable other content providers to add components to the installer
+ as add-on components. The component providers must set up repositories that
+ contain the installable components and deliver the URL that points to the
+ repositories to end users. End users must then configure the URL in the
+ installer. The add-on components are visible in the package manager.
+
+*/
diff --git a/doc/installerfw-reference.qdoc b/doc/installerfw-reference.qdoc
new file mode 100644
index 000000000..d29dd2976
--- /dev/null
+++ b/doc/installerfw-reference.qdoc
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
+/*!
+ \contentspage {index.html}{Qt Installer Framework}
+ \previouspage ifw-customizing-installers.html
+ \page ifw-reference.html
+ \nextpage ifw-globalconfig.html
+
+ \title Reference
+
+ The following sections contain detailed information about the Qt Installer
+ Framework:
+
+ \list
+ \o \l{Configuration File}
+ \o \l{Package Directory}
+ \o \l{Installer Pages}
+ \o \l{Tools}
+ \o \l{Component Scripting}
+ \o \l{Operations}
+ \endlist
+
+*/
diff --git a/doc/installerfw-using.qdoc b/doc/installerfw-using.qdoc
new file mode 100644
index 000000000..61d4ca94b
--- /dev/null
+++ b/doc/installerfw-using.qdoc
@@ -0,0 +1,355 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
+/*!
+ \contentspage {index.html}{Qt Installer Framework}
+ \previouspage ifw-overview.html
+ \page ifw-use-cases.html
+ \nextpage ifw-use-cases-install.html
+
+ \title Using Qt Installers
+
+ The end user experience is similar for both offline and online installers.
+ The installers consist of a package manager and an updater that enable end
+ users to add, update, and remove components.
+
+ You can support the following end user workflows:
+
+ \list
+
+ \o \l{Initial Installation}
+
+ \o \l{Adding Components}
+
+ \o \l{Removing Components}
+
+ \o \l{Updating Components}
+
+ \o \l{Specifying Settings}
+
+ \endlist
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-use-cases.html
+ \page ifw-use-cases-install.html
+ \nextpage ifw-use-cases-add.html
+
+ \title Initial Installation
+
+ The following image illustrates the default workflow for installing
+ applications:
+
+ \image ifw-user-flow-installing.png "Installation workflow"
+
+ This section uses the \e {Your Application Installer} example run on Windows
+ to illustrate the default workflow for end users. The installers have the
+ native look and feel on each supported desktop platform, and therefore they
+ look and feel different when run on Linux and Mac OS X.
+
+ The example files are stored in the \c{examples\tutorial} directory
+ in the Qt Installer Framework repository. You can use the \c binarycreator
+ tool to create \e {Your Application Installer}.
+
+ \section1 Starting Installer
+
+ When end users start the installer, the introduction page opens:
+
+ \image ifw-introduction-page.png "Introduction page"
+
+ You specify the name of the installer and the product to install in the
+ \c config.xml configuration file.
+
+ When end users select \gui Next, the target directory selection page opens.
+
+ \section1 Selecting Target Directory
+
+ End users must specify the target directory for the installation. You can
+ specify a default value in the \c config.xml configuration file.
+
+ \image ifw-target-directory-page.png "Target directory selection page"
+
+ When end users select \gui Next, the component selection page opens.
+
+ If the directory already contains files, a warning page opens:
+
+ \image ifw-warning-existing-installation.png "Warning page"
+
+ \section1 Selecting Components
+
+ The component selection page lists the components available for installation
+ and a short description of each component. End users select the components
+ to install. They can select \gui {Select All} to select all components,
+ \gui {Deselect All} to deselect them, or \gui Default to revert to the
+ default selection.
+
+ \image ifw-select-components.png "Component selection page"
+
+ You add the installable components to the \c data directory in the package
+ directory. You specify information about the components in the
+ \c package.xml file in the \c meta directory.
+
+ You can use a boolean operator or a script to specify whether a component is
+ selected by default.
+
+ When end users select \gui Next, the license check page opens.
+
+ \section1 Accepting License Agreements
+
+ On the license check page, end users must accept the terms of the license
+ agreement for the installation to continue.
+
+ \image ifw-license-check-page.png "License check page"
+
+ The license check page is displayed, if you specify a license file in the
+ \c package.xml file and copy the file to the \c meta directory.
+
+ \section1 Selecting Windows Program Group
+
+ On Windows, the Start menu directory selection page enables end users to
+ select the program group for the product in the Windows \gui Start menu.
+
+ \image ifw-win-program-group.png "Start menu directory selection page"
+
+ You specify a default value for the program group in the \c config.xml
+ configuration file.
+
+ When end users select \gui Next, the ready for installation page opens.
+
+ \section1 Installing Components
+
+ The ready for installation page informs end users that the installation can
+ begin when users select \gui Install.
+
+ \image ifw-ready-for-installation.png "Ready for installation page"
+
+ During the installation, the perform installation page displays information
+ about how the installation is progressing. End users can select
+ \gui {Show Details} to view more information.
+
+ \image ifw-perform-installation.png "Perform installation page"
+
+ When the installation is complete, the installation finished page opens.
+
+ \image ifw-installation-finished.png "Installation finished page"
+
+ To this page, you can add the option to start the installed product upon
+ closing the installer. You specify the product to start and the text to
+ display in the \c config.xml configuration file.
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-use-cases-install.html
+ \page ifw-use-cases-add.html
+ \nextpage ifw-use-cases-remove.html
+
+ \title Adding Components
+
+ The following image illustrates the default workflow for installing
+ additional components:
+
+ \image ifw-user-flow-adding.png "Add components workflow"
+
+ This section uses the Qt SDK Maintenance Tool run on Windows to illustrate
+ how end users add components after the initial installation.
+
+ \section1 Starting Package Manager
+
+ When end users start the Maintenance Tool, the introduction page opens:
+
+ \image ifw-add-components-introduction.png "Introduction page"
+
+ When end users select \gui {Package manager}, and then \gui Next, the
+ component selection page opens.
+
+ \section1 Selecting Additional Components
+
+ The component selection page lists the components available for installation
+ and a short description of each component. Installed components are
+ displayed selected in the list. End users select additional components to
+ install. They can select \gui Reset to display the currently installed
+ components again.
+
+ \image ifw-add-components-selection.png "Component selection page"
+
+ When end users select \gui Next, the ready to update page opens.
+
+ \section1 Installing Selected Components
+
+ The ready to update page informs end users that the components are installed
+ when users select \gui Update.
+
+ \image ifw-ready-to-update.png "Ready to update page"
+
+ The update page displays information about how installation is progressing.
+ End users can select \gui {Show Details} to view more information.
+
+ \image ifw-perform-update.png "Update page"
+
+ When the installation is complete, the update finished page opens.
+
+ \image ifw-update-finished.png "Update finished page"
+
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-use-cases-add.html
+ \page ifw-use-cases-remove.html
+ \nextpage ifw-use-cases-update.html
+
+ \title Removing Components
+
+ The following image illustrates the default workflow for removing either
+ all or some installed components:
+
+ \image ifw-user-flow-removing.png "Remove components workflow"
+
+ This section uses the Qt SDK Maintenance Tool run on Windows to illustrate
+ how end users remove components.
+
+ \section1 Removing All Components
+
+ When end users start the Maintenance Tool, the introduction page opens:
+
+ \image ifw-add-components-introduction.png "Introduction page"
+
+ End users can select \gui {Remove all components}, and then \gui Next, to
+ remove all installed components.
+
+ The ready to uninstall page informs end users that the uninstallation can
+ begin when users select \gui Uninstall.
+
+ \image ifw-ready-to-uninstall.png "Ready to uninstall page"
+
+ \section1 Removing Selected Components
+
+ End users can select \gui {Package manager}, and then \gui Next, to select
+ components to remove on the component selection page:
+
+ \image ifw-add-components-selection.png "Component selection page"
+
+ When end users deselect the components to remove, and then select \gui Next,
+ the ready to update page opens. It informs end users that the components are
+ removed when users select \gui Update.
+
+ \image ifw-ready-to-update.png "Ready to update page"
+
+ The update page displays information about how removal is progressing.
+ End users can select \gui {Show Details} to view more information.
+
+ \image ifw-removing-components.png "Update page"
+
+ When the removal is complete, the update finished page opens.
+
+ \image ifw-update-finished.png "Update finished page"
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-use-cases-remove.html
+ \page ifw-use-cases-update.html
+ \nextpage ifw-use-cases-settings.html
+
+ \title Updating Components
+
+ The following image illustrates the default workflow for installing
+ additional components:
+
+ \image ifw-user-flow-updating.png "Updating workflow"
+
+ This section uses the Qt SDK Maintenance Tool run on Windows to illustrate
+ how end users remove components.
+
+ \section1 Starting Updater
+
+ When end users start the Maintenance Tool, the introduction page opens:
+
+ \image ifw-updating-introduction.png "Introduction page"
+
+ When end users select \gui {Update components}, and then \gui Next, the
+ component selection page opens.
+
+ \section1 Selecting Components to Update
+
+ The updater displays a list of available updates that end users can select
+ from.
+
+ \image ifw-updating-components.png "Component selection page"
+
+ When end users select \gui Next, the ready to update page opens.
+
+ \section1 Updating Selected Components
+
+ The ready to update page informs end users that the components are updated
+ when users select \gui Update.
+
+ \image ifw-ready-to-update.png "Ready to update page"
+
+ The update page displays information about how updating is progressing.
+ End users can select \gui {Show Details} to view more information.
+
+ \image ifw-perform-update.png "Update page"
+
+ When update is complete, the update finished page opens.
+
+ \image ifw-update-finished.png "Update finished page"
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-use-cases-update.html
+ \page ifw-use-cases-settings.html
+ \nextpage ifw-getting-started.html
+
+ \title Specifying Settings
+
+ Settings pages enable end users to specify proxy settings or install add-on
+ components. End users select \gui Settings on the introduction page to
+ specify the settings.
+
+ \section1 Specifying Proxy Settings
+
+ By default, the installer does not use any proxy settings. End users can
+ select to use the system proxy settings or specify the proxy settings
+ manually.
+
+ \image ifw-settings-network.png "Network tab on Settings page"
+
+ \section1 Installing Add-on Components
+
+ To install add-on components, end users select the \gui Repositories tab.
+
+ \image ifw-settings-repositories.png "Repositories tab on Settings page"
+
+ If the web server requires authentication, end users can add their username
+ and password. To display passwords, end users select \gui {Show Passwords}.
+
+ To add their own repositories to the installer, end users can select
+ \gui Add and specify the URL that points to the repository.
+
+ Temporary repositories can be used only once, for initial installation.
+ After the installation, only default and user-defined repositories will be
+ available.
+
+*/
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index 0f9308496..31b5cec40 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -1,3 +1,24 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
@@ -5,71 +26,119 @@
// **********************************************************************
/*!
- \contentspage{index.html}{InstallerFramework}
+ \contentspage{index.html}{Qt Installer Framework}
\page index.html
- \nextpage ifw-globalconfig.html
+ \nextpage ifw-overview.html
\title Qt Installer Framework Manual
\section1 Version 1.2.1
The Qt Installer Framework provides a set of tools and utilities to
- create installers for all supported desktop Qt platforms.
+ create installers for the supported desktop Qt platforms: Linux, Microsoft
+ Windows, and Mac OS X.
+
+ \note Report bugs and suggestions for the Qt Installer Framework project
+ in the \l{https://bugreports.qt-project.org/browse/QTIFW}{Qt Bugtracker}.
- Tested platforms currently include:
\list
- \o Microsoft Windows (Windows XP and following)
- \o Linux (Ubuntu 8.04 and following)
- \o Mac OS-X (10.6 and following)
+ \o \l{Overview of Qt Installer Framework}
+ \o \l{Using Qt Installers}
+ \list
+ \o \l{Initial Installation}
+ \o \l{Adding Components}
+ \o \l{Removing Components}
+ \o \l{Updating Components}
+ \o \l{Specifying Settings}
+ \endlist
+ \o \l{Getting Started}
+ \o \l{Tutorial: Creating an Installer}
+ \o \l{Creating Qt Installers}
+ \list
+ \o \l{Creating Offline Installers}
+ \o \l{Creating Online Installers}
+ \o \l{Promoting Updates}
+ \o \l{Customizing Installers}
+ \endlist
+ \o \l{Reference}
+ \list
+ \o \l{Configuration File}
+ \o \l{Package Directory}
+ \o \l{Installer Pages}
+ \o \l{Component Scripting}
+ \o \l{Operations}
+ \o \l{Tools}
+ \endlist
+ \o \l{Known Issues}
\endlist
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-tutorial.html
+ \page ifw-creating-installers.html
+ \nextpage ifw-offline-installers.html
+
+ \title Creating Qt Installers
+
+ The following steps are needed to create offline and online installers:
+
+ \list 1
- Those installers can either be stand-alone or download content from a
- networking resource via http transfer. For installers fetching data from
- a webserver, tools are available to post install items after the initial
- setup as well as update mechanisms are provided as soon as those are
- published on the server.
+ \o Create a \e {package directory} for the installable components.
+ For more information, see \l{Package Directory}.
+ \o Create a configuration file called \c config.xml in the \c config
+ directory. It contains information about how to build the installer
+ binaries and online repositories. For more information about the
+ file format and available settings, see
+ \l{Configuration File}.
- \note Please report bugs in the Qt SDK bugtracking system
- \l{http://bugreports.qt-project.org/browse/QTIFW}{here}.
+ \o Create a package information file called \c package.xml in the
+ \c {config\meta} directory. It contains settings for deployment and
+ the installation process. For more information, see
+ \l{Meta Directory}.
+
+ \o Create installer content and copy it to the package directory.
+ For more information, see \l{Data Directory}.
+
+ \o For online installers, use the \c repogen tool to create the
+ repository that contains the installable content and upload the
+ repository to a web server.
+
+ \o Use the \c binarycreator tool to create the installer. For more
+ information, see \l{Tools}.
+
+ \endlist
+
+ For an example of how to create a simple installer that uses the predefined
+ installer pages, see \l{Tutorial: Creating an Installer}.
+
+ The following sections describe how to create different types of installers:
\list
- \o Structure of a installer creation setup
- \list
- \o \l{Global Configuration}
- \o \l{Component Description}
- \o \l{Included Tools}
- \endlist
- \o \l{Tutorial}
- \o \l{Component Scripting}
- \list
- \o \l{Operations}
- \endlist
- \o Enhanced instructions
- \list
- \o \l{Creating online installers}
- \o \l{Pure offline installers}
- \o \l{Creating updates}
- \o \l{Non Interactive Installation}
- \endlist
- \o \l{Known Issues}
+ \o \l{Creating Offline Installers}
+ \o \l{Creating Online Installers}
+ \o \l{Promoting Updates}
+ \o \l{Customizing Installers}
\endlist
*/
/*!
\contentspage index.html
- \previouspage index.html
+ \previouspage ifw-reference.html
\page ifw-globalconfig.html
\nextpage ifw-component-description.html
- \title Global Configuration
+ \title Configuration File
+
+ A configuration file called \c config.xml specifies how to build the
+ installer binaries and online repositories. The file is located in the
+ \c config directory.
- For creation of installer binaries and online repositories, you need to
- provide a config directory. This directory needs to contain at least a file
- named \bold{config.xml} containing XML information about how to build the
- installer.
+ \section1 Configuration File Syntax
- This file can look like this:
+ The configuration file has the following syntax:
\code
<?xml version="1.0"?>
@@ -80,7 +149,6 @@
<Publisher>Your Company</Publisher>
<ProductUrl>http://www.your-fantastic-company.com</ProductUrl>
<Logo>logo.png</Logo>
- <License>license.txt</License>
<Watermark>watermark.png</Watermark>
<RunProgram></RunProgram>
<RunProgramDescription></RunProgramDescription>
@@ -113,77 +181,190 @@
</Installer>
\endcode
- The following settings are contained in this file.
+ \section2 Summary of Configuration Settings
- \list
- \o \bold{ Name} The name of the product being installed
- \o \bold{ Version} The version of the product being installed
- \o \bold{ Title} The title text of the generated installer, i.e. its name
- \o \bold{ MaintenanceTitle} The title text of the generated maintenance tool, i.e. its name
- \o \bold{ Publisher} The publisher of the software
- \o \bold{ ProductUrl} URL of the product
- \o \bold{ Logo} Filename for a logo used as QWizard::LogoPixmap
- \o \bold{ License} Filename of the license text to be accepted by the installing user
- \o \bold{ Watermark} Filename for a watermark used as QWizard::WatermarkPixmap
- \o \bold{ Background} Filename for an image used as QWizard::BackgroundPixmap
- \o \bold{ RunProgram} Command executed after the installer is done, if the user accepts it
- \o \bold{ RunProgramDescription} Text shown next to the checkbox for running the program. Defaults to "Run <Name>"
- \o \bold{ StartMenuDir} Name of the predefined group in the Windows Start Menu
- \o \bold{ Icon} Filename of the installer icon. On Windows, .ico is appended, on Mac, .icns is appended and on Linux, .png is appended.
- \o \bold{ PublicKey} RSA public key to be used to verify component signatures
- \o \bold{ PrivateKey} RSA private key to be used to sign components
- \o \bold{ TargetDir} Predefined target directory for installation
- \o \bold{ RemoteRepositories} List of remote repositories
- \o \bold{ UninstallerName} File name of the generated uninstaller. Defaults to "uninstall". The platform specific executable suffixes is appended.
- \o \bold{ AllowNonAsciiCharacters } Set this to true if the installation path can contain non ASCII characters.
- \endlist
+ The following table summarizes the settings in the configuration file.
- It is suggested that you place all files that are referred inside the
- configuration also into the config directory. However, you can also use
- relative paths, which the tools will resolve relative to the location of
+ \note We recommend that you place all files that you refer to in the
+ configuration file in the \c config directory. However, you can also use
+ relative paths, which the tools resolve relative to the location of
the config.xml file.
- \bold{Remote Repositories}
-
- The installer configuration file can contain a list of several remote
- repositories. Each of them has two properties. The first one is the
- repository URL. In the example above, this is
- "http://www.your-repo-location/packages/" The URL needs to contain a file
- Updates.xml listing the available packages. See \l{Creating online installers}{Online Repository generation}
- to read more about online repositories. The second parameter is called
- "Required". If you set this to true, the installer won't work if this
- repository is not available. In case the repository is accessed after an
- installation, this will cause the maintenance tool to reject installation.
- However, uninstallation is still possible. If you set it to false, the
- installer will continue to work, but exclude any configuration which should
- be on the server.
+ \table
+ \header
+ \o Setting
+ \o Description
+ \row
+ \o Name
+ \o Name of the product being installed.
+ \row
+ \o Version
+ \o Version number of the product being installed.
+ \row
+ \o Title
+ \o Name of the installer as displayed on the title bar.
+ \row
+ \o MaintenanceTitle
+ \o Name of the maintenance tool as displayed on the title bar.
+ \row
+ \o Publisher
+ \o Publisher of the software.
+ \row
+ \o ProductUrl
+ \o URL to a page that contains product information on your web
+ site.
+ \row
+ \o Logo
+ \o Filename for a logo used as \a QWizard::LogoPixmap.
+ \row
+ \o Watermark
+ \o Filename for a watermark used as \a QWizard::WatermarkPixmap.
+ \row
+ \o Background
+ \o Filename for an image used as \a QWizard::BackgroundPixmap.
+ \row
+ \o RunProgram
+ \o Command executed after the installer is done if the user accepts
+ the action.
+ \row
+ \o RunProgramDescription
+ \o Text shown next to the check box for running the program after
+ the installation. Defaults to \gui {Run <Name>}.
+ \row
+ \o StartMenuDir
+ \o Name of the default program group for the product in the Windows
+ \gui Start menu.
+ \row
+ \o Icon
+ \o Filename of the installer icon. On Windows, .ico is appended,
+ on Mac, .icns is appended, and on Linux, .png is appended.
+ \row
+ \o PublicKey
+ \o RSA public key that is used to verify component signatures.
+ \row
+ \o PrivateKey
+ \o RSA private key that is used to sign components.
+ \row
+ \o TargetDir
+ \o Default target directory for installation.
+ \row
+ \o RemoteRepositories
+ \o List of remote repositories. You can add several \c Repository
+ sections that each specify the \c Url to access the repository.
+ Optionally, you can add a \c Required section to specify whether
+ the installer should go ahead even if it cannot access the
+ server. Acceptable values are \c true and \c false. For more
+ information, see \l{Configuring Repositories}.
+ \row
+ \o UninstallerName
+ \o Filename of the generated uninstaller. Defaults to
+ \e uninstall. The platform-specific executable file extension is
+ appended.
+ \row
+ \o AllowNonAsciiCharacters
+ \o Set to \c true if the installation path can contain non-ASCII
+ characters.
+ \endtable
+
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage ifw-updates.html
+ \page ifw-customizing-installers.html
+ \nextpage ifw-reference.html
+
+ \title Customizing Installers
+
+ The following sections describe how you can extend the predefined installer
+ by adding operations to the pages and by adding new pages and language
+ variants.
+
+ \section1 Adding Operations
+
+ Components can use the ECMAScript scripting language to perform additional
+ operations at any time during the installation process. Typically,
+ components manipulate files by moving, copying, or patching them.
+
+ For more information about scripting, see \l{Component Scripting}.
+
+ \section1 Adding Pages
+
+ A component can contain one or more user interface files, which are placed
+ into the installer by a script. The installer automatically loads all user
+ interface files listed in package.xml. You can access the loaded widgets
+ by calling \a QInstaller::Component::userInterface with the class name of
+ the widget, as illustrated by the following code snippet:
+
+ \code
+ component.userInterface( "MyPage" ).checkbox.checked = true;
+ \endcode
+
+ To add a new page to the installer, use
+ the \a QInstaller::Installer::addWizardPage method and specify the location
+ of the new page. For example, the following code adds an instance of
+ \a MyPage before the ready for installation page:
+
+ \code
+ installer.addWizardPage( component, "MyPage", QInstaller.ReadyForInstallation );
+ \endcode
+
+ \section1 Adding Widgets
+
+ You can also insert custom user interface elements into the installer as
+ single widgets (such as a check box).
+
+ To insert a single widget, use the
+ \a QInstaller::Installer::addWizardPageItem method.
+ For example, the following code snippet adds an instance of \a MyWidget to
+ the component selection page from within a script:
+
+ \code
+ installer.addWizardPageItem( component, "MyWidget", QInstaller.ComponentSelection );
+ \endcode
+
+ \section1 Translating Pages
+
+ The installer uses the Qt Translation system to support the translation of
+ user-readable output to several languages. To provide end users with
+ localized versions of strings contained in the component scripts and user
+ interfaces, create QTranslator files that the installation system loads
+ along with the the component. The installer loads the translation file that
+ matches the current system locale. For example, if the system locale is
+ German, the de_de.qm file is loaded.
+
+ Use the \a {qsTr()} function for literal text within scripts. Additionally,
+ you can add the \a Component.prototype.retranslateUi method to the script.
+ It is called when the language of the installer changes and the translation
+ file is loaded.
+
+ The context being used for translation is the basename of the script file
+ when using \a qsTr or the class name of the UI file when translating a user
+ interface.
+
*/
/*!
\contentspage index.html
\previouspage ifw-globalconfig.html
\page ifw-component-description.html
- \nextpage ifw-tools.html
+ \nextpage noninteractive.html
- \title Component Description
+ \title Package Directory
- \section1 Documentation on how to create installer components.
+ Installers contain components that are either embedded to the installer
+ or loaded from a remote repository. In both cases, you need to use a file
+ format and structure for the components that the installer can read.
- The Installer is based on the idea of having several components, which are
- either embedded in the installer itself or loaded from a remote repository.
- For both, embedding components into the installer and creating an online
- repository, you need to keep your components in a certain format readable
- by the installer.
+ \section1 Package Directory Structure
- \section1 Directory Structure
+ Place all components in the same root directory, which is called the
+ \e {package directory}. The directory name acts as a domain-like identifier,
+ which identifies all components. For example, \c com.vendor.root.
- All components need to be located inside the same root directory, which is
- called \bold{package directory}. Components
- are identified by a domain-like identifier. This has to be the name of the
- directory the component data has to be placed in. Within this directory,
- two subdirectories have to exist, called \bold{data} and \bold{meta}.
+ Within the root directory, create subdirectories called \c data and \c meta.
- A package directory can look like this:
+ A package directory can look as follows:
\code
-packages
- com.vendor.root
@@ -200,17 +381,18 @@
- meta
\endcode
+ \section1 Meta Directory
- \section1 Contents of the meta data directory
-
- The meta data directory contains all files which are not to be extracted by
- the installer but contain information about deployment and the installation
- process.
+ The \c meta directory contains files that specify settings for deployment
+ and the installation process. The files are not extracted by the installer.
+ The directory must contain at least a package information file and all files
+ that you refer to in the package information file, such as scripts,
+ user interface files, and translations.
- \section2 package.xml
+ \section2 Package Information File Syntax
- The file package.xml is the main source of information about the component.
- The format of this file is XML and has for instance the following shape:
+ The package.xml file is the main source of information about a component.
+ The following is an example of a package file:
\code
<?xml version="1.0"?>
@@ -222,6 +404,9 @@
<Name>com.vendor.root.component2</Name>
<Dependencies>com.vendor.root.component1</Dependencies>
<Virtual>false</Virtual>
+ <Licenses>
+ <License name="License Agreement" file="license.txt" />
+ </Licenses>
<Script>installscript.qs</Script>
<UserInterfaces>
<UserInteface>specialpage.ui</UserInterface>
@@ -234,420 +419,576 @@
</Package>
\endcode
- \section3 package value list
-
+ \section2 Summary of Package Information File Settings
+
+ \table
+ \header
+ \o Setting
+ \o Description
+ \row
+ \o DisplayName
+ \o Human-readable name of the component. Required.
+ \row
+ \o Description
+ \o Human-readable description of the component. Required.
+ \row
+ \o Version
+ \o Version number of the component in the following format:
+ [0-9]+((\.|-)[0-9]+)* such as 1-1; 1.2-2; 3.4.7. Required.
+ \row
+ \o ReleaseDate
+ \o Date when this component version was released. Optional.
+ \row
+ \o Name
+ \o Domain-like identification for this component. Required.
+ \row
+ \o Dependencies
+ \o Comma-separated list of identifiers of components that this
+ component depends on. Optionally, you can specify version
+ numbers, separated by a dash (-). You can prefix version numbers
+ with a comparison operator (=, >, <, >= or <=). Optional. For
+ more information, see \l{Component Dependencies}.
+ \row
+ \o AutoDependOn
+ \o Opposite of dependencies. Defines that this component should be
+ loaded if the specified component is loaded.
+ \row
+ \o Virtual
+ \o Set to \c true to hide the component from the installer.
+ \row
+ \o SortingPriority
+ \o Priority of the component in the tree. The tree is sorted from
+ lowest to highest priority, with the lowest priority on the top.
+ \row
+ \o Licenses
+ \o List of license agreements to be accepted by the installing
+ user. To add several licenses, specify several \c License
+ sections that each specify the license \c name and \c file.
+ \row
+ \o Script
+ \o File name of a script being loaded. Optional.
+ For more information, see \l{Adding Operations}.
+ \row
+ \o UserInterfaces
+ \o List of pages to load. To add several pages, specify several
+ \c UserInterface sections that each specify the filename of a
+ page. Optional. For more information, see \l{Adding Pages}.
+ \row
+ \o Translations
+ \o List of translation files to load. To add several language
+ variants, specify several \c Translation sections that each
+ specify the filename of a language variant. Optional. For more
+ information, see \l{Translating Pages}.
+ \row
+ \o UpdateText
+ \o Description added to the component description if this is an
+ update to the component. Optional.
+ \row
+ \o Default
+ \o Possible values are: \c true, \c false, and \c script. Set to
+ \c true to preselect the component in the installer.
+ The boolean values are evaluated directly, while \c script is
+ resolved during runtime. Add the name of the script as a value
+ of the \c Script setting in this file. For an example script,
+ see \l{Selecting Default Contents}.
+ \row
+ \o Essential
+ \o Marks the package as essential to force a restart of the
+ \c UpdateAgent or \c MaintenanceTool. This is relevant for
+ updates found with \c UpdateAgent.
+ \row
+ \o ForcedInstallation
+ \o Determines that the package must always be installed. End users
+ cannot deselect it in the installer.
+ \row
+ \o Replaces
+ \o Comma-separated list of components to replace. Optional.
+ \endtable
+
+ \section2 Component Dependencies
+
+ Components can depend on one or several real or virtual components.
+ Dependencies are defined by using the component identifier and, optionally,
+ component version. Use a dash (-) to separate version numbers from
+ identifiers.
+
+ You can prefix version numbers with a comparison operator (=, >, <, >= or
+ <=) to indicate that the version number of the package is compared to the
+ required version and has to be equal to, greater than, less than, greater
+ than or equal to, or less than or equal to the version number specified in
+ the dependency. If no comparison operator is given, it defaults to =.
+
+ \section1 Data Directory
+
+ The \c data directory contains the content that is extracted during the
+ installation. The Qt Installer Framework uses the archivegen tool to extract
+ the files from a 7zip archive (.7z).
+
+ You have the following options:
\list
- \o \bold{DisplayName} The human readable name of the component - required.
- \o \bold{Description} The human readable description of the component - required.
- \o \bold{Version} The version number of the component needs the following format: [0-9]+((\.|-)[0-9]+)* such as 1-1; 1.2-2; 3.4.7 - required.
- \o \bold{ReleaseDate} The day this component version was released - optional.
- \o \bold{Name} domain-like identification for this component - required.
- \o \bold{Dependencies} Comma-separated list of dependencies - optional.
- \o \bold{AutoDependOn} Is the opposite of dependencies: "If foo is being loaded, load me also."
- \o \bold{Virtual} Set to true if this is a virtual component not showing up in the installer.
- \o \bold{SortingPriority} Priority of this component when visible in the tree. Lowest priority number is on top.
- \o \bold{Script} File name of a script being loaded - optional.
- \o \bold{UserInterfaces} One ore more file names of user interfaces being loaded - optional.
- \o \bold{Translations} One ore more file names of translations being loaded - optional.
- \o \bold{UpdateText} A description added to the component description if the component is an update - optional.
- \o \bold{Default} If that value is set to true the component will be preselected in the installer mode
- \o \bold{Essential} The package is marked as essential. This is relevant for updates found with UpdateAgent and it will force a restart of the UpdateAgent/MaintenanceTool.
- \o \bold{ForcedInstallation} This packages must always be installed and can't get unchecked by the user.
- \o \bold{Replaces} Comma-separated list of components to replace - optional.
+ \o Copy the files to the \c data directory. Before the installer is
+ created, the files are packaged into a 7zip archive.
+ \o Use the archivegen tool to package the files as a 7zip archive and
+ copy it to the \c data directory.
+ \o Use some other tool to package the files as a 7zip compatible
+ archive and copy it to the \c data directory.
\endlist
- \section2 Additional features
+ \note Each of the above options has advantages and disadvantages. We
+ recommend that you use archivegen because it offers faster archive creation
+ and compatibility with 7zip.
+*/
+
+/*!
+ \contentspage index.html
+ \previouspage operations.html
+ \page ifw-tools.html
+ \nextpage ifw-knownissues.html
+
+ \title Tools
- Additionally, all files named in the package.xml - scripts, user interfaces
- and translations - have to be in the meta data directory. Referring to
- previous example, the directory structure looks like this:
+ The Qt Installer Framework contains the following tools:
- \code
- -packages
- - com.vendor.root.component2
- - data
- - meta
- - de_de.qm
- - errorpage.ui
- - installscript.qs
- - package.xml
- - specialpage.ui
- - sv_se.qm
- \endcode
+ \list
- \section3 Scripting
+ \o \c installerbase
- Each component can utilize ECMA scripting to perform additional operations
- at any time of the installation process. Typical use cases are file
- manipulations like moving, copying, patching.
+ \o \c binarycreator
- For all full documentation on scripting, see \l{Component Scripting}{here}.
+ \o \c repogen
- \section3 Component Dependencies
+ \endlist
- Each component can have one or more components it depends on. This can be
- other real or virtual components. Every dependency as defined via its
- identifier and optionally its version. The version, if given, is separated
- by the identifier by a dash ('-') and can be prefixed by a comparison
- operator like '=', '>', '<', '>=' or '<=', which means that the version of
- the matching package is compared to the required version and has to be
- equal, greater, less, greater or equal or less or equal as the version
- number given in the dependency. If no comparison operator is given, it
- defaults to '='.
+ \section1 installerbase
+ The \c installerbase tool describes the core installer itself. All data and
+ meta information will be packed to this binary. For the installer creation
+ process you will not need to call it directly.
- \section3 Component Translation
+ \section1 binarycreator
+ Use the \c binarycreator tool to create offline and online installers.
+ Component information and data are appended to the offline installer binary,
+ which enables the file extraction and post installation scripts to work
+ without an Internet connection.
- As the installer makes use of the Qt Translation system, all user readable
- output can be translated to other languages. To make this work for strings
- contained in component scripts and user interfaces, components can provide
- QTranslator files, which get loaded by the installation system when loading
- the component. The Installer always loads the translation file with a name
- matching the current system locale. For the system locale being German
- (Germany), this would be de_de.qm.
+ Online installers store the location of the repository that contains the
+ data. On startup, they load the component information, not the data.
- Inside of scripts, you have to use the function qsTr() for literal text.
- Additionally your script can contain a method Component.prototype.retranslateUi
- which is called whenever the language of the Installer has changed, i.e.
- after your translation file was loaded.
+ You can also create hybrid installers that store some components locally
+ and receive others via a network connection. For more information, see
+ ###TODO insert link here.
- The context being used for translation is the basename of the script file
- when using qsTr or the class name of the UI file when translating an user
- interface.
+ For information about how to implement data integration into the
+ installer binary, see \a QInstaller::BinaryContent ###TODO insert link here.
- \section3 Component User Interfaces
+ \note If you change this configuration, you must recompile the
+ \c installerbase tool.
- A component can contain one or more user interface files, which are placed
- into the installer by the script. The installer is automatically loading
- all ui files listed in the package.xml. You can access the loaded widgets
- by calling QInstaller::Component::userInterface with the class name of the
- widget:
+ \section2 Using binarycreator
- \code
- component.userInterface( "MyPage" ).checkbox.checked = true;
- \endcode
+ You can use the \c binarycreator tool to create offline and online
+ installers. Some options have default values, and therefore, you can omit
+ them.
- There are two ways of inserting custom user interface widgets into the
- installer: Inserting them as a single widget or inserting them as their own
- page.
+ To create an offline installer (in Windows), enter the following command:
- To insert them as a single widget, use QInstaller::Installer::addWizardPageItem.
- From within the script, this is done by:
+ \list
+ \o On Windows:
\code
- // add the instance of MyWidget to the component selection page
- installer.addWizardPageItem( component, "MyWidget", QInstaller.ComponentSelection );
+ <location-of-ifw>\binarycreator.exe -t <location-of-ifw>\installerbase.exe -p <package_directory> -c <config_directory> <installer_name> <packages>
\endcode
- To add a completely new page into the Installer, you need to specify in
- front of which page you want to add it. Adding the page is done with
- QInstaller::Installer::addWizardPage.
+ \o On Linux and Mac OS X
\code
- // add the instance of MyPage in front of the "Ready to Installation" page
- installer.addWizardPage( component, "MyPage", QInstaller.ReadyForInstallation );
+ <location-of-ifw>/binarycreator -t <location-of-ifw>/installerbase -p <package_directory> -c <config_directory> <installer_name> <packages>
\endcode
- \section2 Contents of the data directory
+ \endlist
- The data directory contains all the content, which will be extracted during
- the installation phases. There are multiple options of content:
+ To create an online installer, add the -e parameter which defines the
+ packages to install from an online repository on a web server:
\list
- \o Copy all the files into the data location. The directory structure will
- be identical between the on in the data location and the installation
- directory. Before the installer is created, the included tools will create
- a 7zip archive.
- \o Create a .7z archive via archivegen, which is included in the Installer
- Framework.
- \o Place a 7zip compatible archive into the data directory.
+
+ \o On Windows:
+ \code
+ <location-of-ifw>\binarycreator.exe -t <location-of-ifw>\installerbase.exe -p <package_directory> -c <config_directory> -e <packages> <installer_name> <packages>
+ \endcode
+
+ \o On Linux and Mac OS X
+
+ \code
+ <location-of-ifw>/binarycreator -t <location-of-ifw>/installerbase -p <package_directory> -c <config_directory> -e <packages> <installer_name> <packages>
+ \endcode
+
\endlist
- \note Each of those ways has advantages and disadvantages. From our experience,
- using archivegen provides the best solution due to faster creation time
- and compatibility with 7zip.
-*/
+ \section2 Summary of binarycreator Parameters
+
+ The \c binarycreator tool accepts the following parameters:
+ \table
+ \header
+ \o Parameter
+ \o Use
+ \row
+ \o -t or --template file
+ \o Use \c file as an installer template binary to which the
+ component information is appended. If you omit this parameter,
+ the \c installerbase template is used.
+ \row
+ \o -p or --packages directory
+ \o Use \c directory as the \l{Package Directory Structure}
+ {package directory}.
+ Defaults to the current working directory.
+ \row
+ \o -n or --nodeps
+ \o Compile only the selected packages. Do not compile their
+ dependencies.
+ \row
+ \o -c or --config directory
+ \o Use \c directory as the \l{Configuration File}
+ {config directory}.
+ \row
+ \o -e or --exclude p1,...,pn
+ \o Comma-separated list of packages to retrieve from an online
+ repository. The packages are not included in the installer
+ binary.
+ \row
+ \o --offline-only
+ \o Create an offline installer that never accesses online
+ repositories.
+ \row
+ \o -v or --verbose
+ \o Display debug output.
+ \row
+ \o -r or --resources
+ \o Comma-separated list of resources to include in the installer
+ binary.
+ \endtable
-/*!
- \contentspage index.html
- \previouspage ifw-component-description.html
- \page ifw-tools.html
- \nextpage ifw-tutorial.html
+ These parameters are followed by the name of the target binary and a list
+ of packages to be available for installation.
- \title Included Tools
+ \note The listed packages are included in the installer, as well as all
+ their dependencies and all packages that share the same prefix, unless you
+ specify the \c --nodeps parameter.
- \section1 installerbase
- \bold installerbase describes the core installer itself. All data and meta
- information will be packed to this binary. For the installer creation
- process you will not need to call it directly.
+ On Windows, the name of the target binary is automatically extended with
+ .exe, if you do not specify the extension. On Mac, the target is
+ created as an application bundle with the extension .app, which is automatically
+ added, if not supplied. Additionally, you can specify the .dmg extension,
+ which creates a DMG disk image that contains an .app bundle.
- \section1 binarycreator
- Installers are created using binarycreator. This applies to online as well
- as offline installers.
+ \section2 Using Icons
- In the offline case the component information and their data is appended to
- the binary, allowing extraction and post installation scripts to work
- without any internet connection.
+ On Mac OS X, if the target binary is suffixed with .app, a Mac OS X
+ application bundle is created. The icon that you specify in config.xml is
+ extended with .icns and used as the icon for the created bundle.
- Online installers store the location of the repository and on startup load
- the component information, not the data. Hence binarycreator does only a
- partial job in the online case.
+ On Windows, the icon that you specify in config.xml is extended with .ico
+ and used as the application icon for the .exe file.
- You can also create hybrid installers, which store some component locally
- and receive others via a network connection. For more information, continue
- reading at ###TODO insert link here.
+ On Linux, the icon that you specify in config.xml is extended with .png and
+ used as the window icon.
- For technical inside on the implementation of data integration into the
- installer binary, read the information on QInstaller::BinaryContent ###TODO insert link here.
- Please note that changing this configuration requires a recompilation of
- installerbase.
+ \section1 repogen
+
+ Use the \c repogen tool to generate online repositories.
- \section2 Usage
+ The \c repogen tool expects the following parameters in the following order:
- binarycreator expects the following parameters:
\code
- -t or --template file Use file as input file
- This is the binary used to append component information.
- On Windows, this defaults to be installerbase.exe in the current working directory. On Unix, installerbase is used.
+ repogen.exe -p <package_directory> -c <config_directory> repository <repository_directory> <components>
+ \endcode
+
+ If config.xml contains a RSA private key, components and data are signed
+ with it. At installer runtime, the signature is used to verify the
+ components.
+
+ \note The private key is not included in the repository.
+ If the private key is protected with a password, end users are asked to
+ provide the password.
- -p or --packages directory Use directory as packages directory
- Specifies the directory to get package, i.e. component information from. See Component Definition to find out how this directory need to look like. This setting defaults to the current working directory.
+ When the repository has been created, you can upload it anywhere. You must
+ specify the location in the installer configuration file when creating an
+ installer for it.
+
+ \section2 Summary of repogen Parameters
+
+ \table
+ \header
+ \o Parameter
+ \o Use
+ \row
+ \o -p or --packages directory
+ \o Use \c directory as the \l{Package Directory Structure}
+ {package directory}.
+ Defaults to the current working directory.
+ \row
+ \o -c or --config directory
+ \o Use \c directory as the \l{Configuration File}
+ {config directory}.
+ \row
+ \o repository directory
+ \o Target directory to generate the repository. Must not yet exist.
+ \row
+ \o components
+ \o List of components to place into the repository. Includes
+ dependencies.
+ \row
+ \o -e or --exclude p1,...,pn
+ \o Comma-separated list of packages to be retrieved from an online
+ repository. The packages are not included in the installer
+ binary.
+ \row
+ \o -u updateurl
+ \o Receive updates from another repository.
+ \row
+ \o --single
+ \o Place only the specified packages in the repository, without
+ their dependencies.
+ \row
+ \o -v or --verbose
+ \o Display debug output.
+ \endtable
+*/
- -n or --nodeps Add only the selected packages to the compile. Don't add their dependencies.
+/*!
+ \contentspage index.html
+ \previouspage ifw-offline-installers.html
+ \page ifw-online-installers.html
+ \nextpage ifw-updates.html
- -c or --config directory Use directory as config directory
- Specifies the directory to be used for Installer Configuration.
+ \title Creating Online Installers
- -e or --exclude p1,...,pn Mark a comma separated list of packages to be retrieved from an online repository, i.e. not to be completely included in the installer binary.
+ Online installers fetch the repository description (Updates.xml), in
+ addition to the one stored inside of the binary. Create a repository and
+ upload it to a web server. Then specify the location of the repository in
+ the config.xml file that you use to create the installer.
- -v or --verbose Verbose output. Add this if you are into lots of debug output.
- \endcode
+ \section1 Creating Repositories
- These parameters are followed by the name of the target binary and a list
- of packages to be available for installation. Note that not only these
- packages will be inside of the installer, but even all their dependencies
- and all packages sharing the same prefix, as long as you add the --nodeps
- flag.
+ Use the \c repogen tool to create online repositories:
- On Windows, the name of the target binary is automatically extended with
- .exe, if it wasn't already added by the user. On Mac, the target will be
- created as application bundle with extension .app, which as automatically
- added, if not supplied. Additionally, the user can use a .dmg extension,
- which will create a DMG disk image containing an .app bundle.
+ repogen.exe -p <package_directory> -c <config_directory> repository <repository_directory> <components>
- \section2 Example
- \section3 Offline installer
- \code
- binarycreator.exe -c installer-config SDKInstaller.exe com.nokia.sdk
- \endcode
- This commands puts com.nokia.sdk as well as all packages com.nokia.sdk
- depends on into the installer binary SDKInstaller.exe. Additionally, this
- binary will contain all packages prefixed with com.nokia.sdk.*
+ For example, to create a repository that contains com.nokia.sdk.qt and
+ com.nokia.sdk.qtcreator, as well as their dependencies, enter the following
+ command:
- \section3 Online installer
\code
- binarycreator.exe -c installer-config -e com.nokia.sdk.qt,com.nokia.qtcreator SDKInstaller.exe com.nokia.sdk
+ repogen.exe -p packages -c installer-config repository com.nokia.sdk.qt com.nokia.sdk.qtcreator
\endcode
- The same as above, except that the data for com.nokia.sdk.qt and
- com.nokia.qtcreator will be downloaded from a remote repository.
+ When the repository has been created, upload it to a web server. You must
+ specify the location of the repository in the installer configuration file.
- If your config.xml contains a RSA private key, components and data will be
- signed with it. On installer runtime, this signature will be used to verify
- the components. Note that the private key is not embedded in the installer
- binary. If your private key is protected with a password, you will be asked
- to provide the password.
+ \section1 Configuring Repositories
- \section2 Platform specific notes
- \section3 Mac OS X
+ The \c RemoteRepositories setting in the installer configuration file
+ (confix.xml) can contain a list of several repositories. Each of them can
+ have the following settings:
- If the target binary is suffixed with .app, a shiny Mac OS X application bundle will be created
- The icon set in the config.xml is extended with ".icns" and used as icon for a created bundle
+ \list
- \section3 Windows
+ \o URL, which points to a list of available components.
- The icon set in the config.xml is extended with ".ico" and used as application icon for the .exe file.
+ \o Required, which determines whether the repository must be available
+ during the installation.
- \section3 Linux
+ \endlist
- The icon set in the config.xml is extended with ".png" and used as window icon.
+ The URL needs to point to the Updates.xml file that lists the available
+ components. For example:
- \section1 repogen
+ \code
+ <RemoteRepositories>
+ <Repository>
+ <Url>http://www.yourcompany.com/packages</Url>
+ </Repository>
+ </RemoteRepositories>
+ \endcode
- To generate online repositories, use the tool repogen.
- \section2 Usage
+ The \a Required setting specifies whether the installer should go ahead even
+ if it cannot access the server. If you set \c Required to \c true, the
+ installer works only if it can access the repository. If the repository is
+ accessed after the installation, the maintenance tool rejects installation.
+ However, uninstallation is still possible. If you set it to \c false, the
+ installer continues to work, but excludes any configuration that should
+ be on the server.
- repogen expects the following parameters in this order:
- \list
- \o \bold Packages directory Directory containing the packages. Same as for binarycreator.
- \o \bold Configuration directory Directory containing the installer configuration. Same as for binarycreator.
- \o \bold Repository directory Target directory to generate the repository. Must not yet exist.
- \o \bold Components List of components to be placed into the repository. Includes dependencies.
- \endlist
+ \section1 Creating Installer Binaries
- If your config.xml contains a RSA private key, components and data will be
- signed with it. On installer runtime, this signature will be used to verify
- the components. Note that the private key is not put into the repository.
- If your private key is protected with a password, you will be asked to
- provide the password.
+ To create an online installer by using the \c binarycreator tool, enter the
+ following command:
- When the repository has been created, you can upload it to anywhere. Just
- put the location into the installer configuration when creating an installer
- for it.
+ \code
+ <location-of-ifw>\binarycreator.exe -t <location-of-ifw>\installerbase.exe -p <package_directory> -c <config_directory> -e <packages> <installer_name> <packages>
+ \endcode
+
+ For example, enter the following command to create an installer binary
+ called SDKInstaller.exe that will not contain data for com.nokia.sdk.qt and
+ com.nokia.qtcreator, because those packages are downloaded from a remote
+ repository:
- \section3 Example
\code
- repogen.exe packages installer-config repository com.nokia.sdk.qt com.nokia.sdk.qtcreator
+ binarycreator.exe -c installer-config -e com.nokia.sdk.qt,com.nokia.qtcreator SDKInstaller.exe com.nokia.sdk
\endcode
- This command creates a repository inside of repository containing
- com.nokia.sdk.qt and com.nokia.sdk.qtcreator, including all dependencies.
+ If the config.xml contains an RSA private key, components and data are
+ signed with it. At installer runtime, the signature is used to verify
+ the components.
+
+ \note The private key is not embedded in the installer binary. If the
+ private key is protected with a password, end users are asked to provide the
+ password.
+
+ \section1 Reducing Installer Size
+ Even if the components are fetched from a web server, \c binarycreator adds
+ them to the installer binary by default. However, when the installer checks
+ the web server for updates, end users are spared a download if new versions
+ are not available.
+
+ Alternatively, you can create online installers that do not contain any data
+ and that fetch all the data from the web server. Use the \a{-n} parameter
+ of the \c binarycreator tool and only add the root component to the
+ installer. Usually the root component is empty and hence only adds the XML
+ description of the root.
+
+ For more information about the options that you have, see
+ \l{Summary of binarycreator Parameters}.
*/
/*!
\contentspage index.html
- \previouspage ifw-tutorial.html
- \page ifw-online-installers.html
- \nextpage ifw-offline-installers.html
+ \previouspage ifw-creating-installers.html
+ \page ifw-offline-installers.html
+ \nextpage ifw-online-installers.html
+
+ \title Creating Offline Installers
- \title Creating online installers
+ Offline installers do not try to connect to an online repository at all
+ during installation. However, the metadata configuration (config.xml)
+ enables users to add and update components online.
+
+ Offline installers are especially useful in cases where a corporate firewall
+ does not allow end users to connect to web servers. The network
+ administrator can set up a local update service within the network.
+
+ To create offline installers, use the \a{--offline-only} option of the
+ \c binarycreator tool.
+
+ To create an offline installer in Windows, enter the following command:
- \section1 Configuration changes
- Online installers fetch the repository description in addition to the one
- stored inside of the binary. The technical effort is very little. Inside
- the global \a{config.xml} file, you need to add the location of your
- repository like this:
\code
- <RemoteRepositories>
- <Repository>
- <Url>http://www.yourcompany.com/repository</Url>
- </Repository>
- </RemoteRepositories>
+ <location-of-ifw>\binarycreator.exe --offline-only -t <location-of-ifw>\installerbase.exe -p <package_directory> -c <config_directory> <installer_name> <packages>
+ \endcode
+
+ Some options have default values, and therefore, you can omit them.
+ For example, enter the following command to create an installer binary
+ called SDKInstaller.exe that contains the packages identified by
+ com.nokia.sdk and their dependencies:
+
+ \code
+ binarycreator.exe --offline-only -c installer-config SDKInstaller.exe com.nokia.sdk
\endcode
- The \a Required tag describes, if the installer should go forward even
- without accessing the server.
-
- \section2 Creating the binaries
- You will not need to change any of the arguments to create installer
- binaries. The process of creating installer binaries is documented
- \l{binarycreator}{here}.
-
- \section2 Reducing the size of online installers
- Even if a remote location is specified, this does not exclude the
- components to be added to the installer binary itself. This results
- in a bigger installer binary, which checks for the online repository.
- This has the advantage, that if no newer version is available on the
- server, the user will spare the additional download.
-
- However, this is sometimes not the desired scenario. Instead the online
- installer should not contain any data and fetch all its data from the
- network connection.
-
- To achieve this, use the \a{-n} parameter of binary creator and only add
- the root component to the installer. Usually the root component is empty
- and hence only adds the xml description of the root. For more information
- and a list of available options, please refer to \l{binarycreator}{here}.
*/
/*!
\contentspage index.html
\previouspage ifw-online-installers.html
- \page ifw-offline-installers.html
- \nextpage ifw-updates.html
+ \page ifw-updates.html
+ \nextpage ifw-customizing-installers.html
- \title Pure offline installers
+ \title Promoting Updates
- Pure offline installers describe the scenario in which the installer
- does not try to connect to an online repository at all during the install
- step. However, post installation as well as receiving updates will use
- the description stored in the meta configuration (\a{config.xml}).
+ Create online installers to be able to promote updates to end users who
+ install your product.
- This is especially useful in cases where a corporate firewall does not
- allow to connect to servers, but a successful installation is demanded.
+ The following steps are needed to promote updates:
- To create such installers, \l{binarycreator} has the \a{--offline-only}
- option which will output a installation binary with above settings.
-*/
+ \list 1
-/*!
- \contentspage index.html
- \previouspage ifw-offline-installers.html
- \page ifw-updates.html
- \nextpage ifw-knownissues.html
+ \o Copy the updated content to the package directory.
+
+ \o Increase the value of the \a{Version} setting for the updated
+ components in the config.xml file.
- \title Creating updates
+ \o Use the \c repogen tool to recreate the online repository with the
+ updated contents and to generate the update.xml file in the root
+ directory of the repository.
- Creating online installers has the advantage that updates can be promoted
- to the users who have the product installed. This section describes the
- steps to promote an update.
+ \o Upload the repository to the web server.
- \section1 Configuration changes
+ \o Use the \c binarycreator tool to create the installer.
- The maintenance/updater tool downloads the update description on startup
- and then compares the installed version with the promoted one on the server.
- If the online version number is greater than the local one, the component
- is displayed in the list of available updates.
+ \endlist
- To achieve this, the \a{Version} tag of the components needs to be increased.
+ \section1 Configuring Updates
- \section1 Recreating the repository
- The easiest solution to provide an update is to recreate the online
- repository and then upload it to the server location. This can be achieved
- by reusing \l{repogen}.
+ The installer downloads the Update.xml file on
+ startup and compares the installed version with the version in the file. If
+ the online version number in the file is greater than the local one, the
+ installer displays it in the list of available updates.
- \section1 Partial updates
- \section2 Scenario description
- Sometimes a full update of the whole repository might not be welcomed. The
- reasons might be
+ Increase the value of the \a{Version} setting for the component in the
+ config.xml file.
+
+ \section1 Recreating Repositories
+
+ The easiest way to provide an update is to recreate the repository and
+ upload it to the web server. For more information, see
+ \l{Creating Repositories}.
+
+ \section1 Partially Updating Repositories
+
+ A full update of the whole repository might not be optimal if:
\list
- \o The size of the repository is very big, so that uploading takes a
- significant amount of time
- \o Updates need to be provided to a separate entity, where only changed
- elements should be delivered to.
+ \o The repository is very large, as uploading would take a long time.
+ \o You want to deliver only the changed components.
\endlist
\note repogen recreates the 7zip archives each time it is being called. As
- 7zip stores the timestamp of included files (which get moved/copied during
- this process), the sha sum of each archive changes. SHA sums are used to
- verify the download of the archive and hence the SHA needs to match to the
- 7zip. As the SHAs are stored inside the global \a{Updates.xml} you will be
+ 7zip stores the timestamps of the included files (which are moved or copied
+ during this process), the SHA sum of each archive changes. SHA sums are used
+ to verify the download of the archive and hence the SHA needs to match the
+ 7zip. As the SHAs are stored in the Updates.xml file you will be
forced to upload the full repository. This can be circumvented by using the
\a{--single} option of repogen.
- \section2 Implementation
- When recreating the online repository, use the \a{--single} parameter. This
- takes an existing repository as input and only changes the components,
- which are specified as additional parameters. Only those SHA sums will be
+ \section2 Creating Partial Updates
+ When recreating the online repository, use the \a{--single} parameter. It
+ takes an existing repository as input and only changes the components that
+ are specified as additional parameters. Only those SHA sums are
changed in the global configuration as well.
- \section3 Uploading partial updates
- Assuming the repository has been updated like in above description, you will
- not have to upload the whole repository again. Instead only the following
- items are required:
+ \section2 Uploading Partial Updates
+ Upload the following items to the web server:
\list
- \o The component directory (usually something alike
- \a{com.vendor.foo.updatedpart}.
+ \o The component directory (usually something like
+ \a{com.vendor.product.updatedpart}).
\o The global \a{Updates.xml} stored in the root directory of the online
repository.
\endlist
- \note The order of uploading is very important. In case you update the
- repository on a live server, you should first update the component and
- only afterwards the xml configuration. As the archive names include the
- versioning the user will be provided with the old package until the update
- has finished.
+ \note The order of uploading items is very important. If you update the
+ repository on a live server, first update the component and
+ then Updates.xml. The package names include version numbers, and therefore,
+ end users receive old packages until the new ones are fully uploaded.
*/
/*!
\contentspage index.html
- \previouspage ifw-updates.html
+ \previouspage ifw-tools.html
\page ifw-knownissues.html
- \nextpage index.html
\title Known Issues
- Some of the items can be seen on the Nokia Qt SDK bugtracking system
- \l{http://bugreports.qt.nokia.com/browse/QTSDK}{here}.
+ Check the \l{https://bugreports.qt-project.org/browse/QTIFW}{Qt Bugtracker}
+ for known issues in the Qt Installer Framework project. If you cannot find
+ the issue there, create a bug report.
*/
diff --git a/doc/installerfw.qdocconf b/doc/installerfw.qdocconf
index 943f11546..9972287d8 100644
--- a/doc/installerfw.qdocconf
+++ b/doc/installerfw.qdocconf
@@ -1,4 +1,4 @@
-project = "installerfw"
+project = "Qt Installer Framework Manual"
description = "Qt Installer Framework Manual"
headerdirs =
diff --git a/doc/noninteractive.qdoc b/doc/noninteractive.qdoc
index 1a6be992a..36612b2e2 100644
--- a/doc/noninteractive.qdoc
+++ b/doc/noninteractive.qdoc
@@ -1,97 +1,162 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
/*!
- \contentspage{index.html}{InstallerFramework}
+ \contentspage{index.html}{Qt Installer Framework}
+ \previouspage ifw-component-description.html
\page noninteractive.html
+ \nextpage scripting.html
+
+ \title Installer Pages
- \title Non Interactive Installation
+ This section describes the functions that are called to implement the
+ installer pages and the widgets available on each page, such as push
+ buttons, radio buttons, and line edits.
- \section1 Installer Page Callbacks
+ \section1 Introduction Page
- \section2 builtinpages Built-in pages
+ Call the \a IntroductionPageCallback function to construct the introduction
+ page.
- \section3 IntroductionPageCallback
Wizard buttons:
\list
- \o Next
- \o Cancel
+ \o \gui Next
+ \o \gui Cancel
\endlist
- \section3 LicenseAgreementPageCallback
+ \section1 License Check Page
+
+ Call the \a LicenseAgreementPageCallback function to construct the license
+ check page.
+
Wizard buttons:
\list
- \o Next
- \o Cancel
- \o Back
+ \o \gui Next
+ \o \gui Cancel
+ \o \gui Back
\endlist
Radio buttons:
\list
- \o acceptLicenseRB (radio button): Accepts the license Agreement (unchecked by default)
- \o rejectLicenseRB (radio button): Rejects the license Agreement (checked by default)
+ \o \a acceptLicenseRB
+
+ Accepts the license agreement. Not selected by default.
+ \o \a rejectLicenseRB
+
+ Rejects the license agreement. Selected by default.
\endlist
- \section3 TargetDirectoryPageCallback
+ \section1 Target Directory Selection Page
+
+ Call the \a TargetDirectoryPageCallback function to implement the target
+ directory selection page.
+
Wizard buttons:
\list
- \o Next
- \o Cancel
- \o Back
+ \o \gui Next
+ \o \gui Cancel
+ \o \gui Back
\endlist
- targetDirectoryLE (line edit): The target directory for installation
+ To specify a default value for the target directory for installation, use
+ the \a targetDirectoryLE line edit widget.
+
+ \section1 Component Selection Page
+
+ Call the \a ComponentSelectionPageCallback function to implement the
+ component selection page.
- \section3 ComponentSelectionPageCallback
Wizard buttons:
\list
- \o Next
- \o Cancel
- \o Back
+ \o \gui Next
+ \o \gui Cancel
+ \o \gui Back
\endlist
Methods:
\list
- \o selectComponent( id ): selects the component with the ID id (string)
- \o deselectComponent( id ): deselects the component with the ID id (string)
+ \o \a {selectComponent( id )}
+
+ Selects the component with \c id (string).
+ \o \a {deselectComponent( id )}
+
+ Deselects the component with \c id (string).
\endlist
- In uninstallation mode, additional controls are available:
+ In uninstallation mode, additional radio buttons are available:
\list
- \o uninstallAllComponentsRB (radio button): Uninstall all components (default)
- \o keepSelectedComponentsRB (radio button): Uninstall only unselected components (deselectComponent/selectComponent to modify them)
+ \o \a uninstallAllComponentsRB
+
+ Uninstalls all components. Default.
+ \o \a keepSelectedComponentsRB
+
+ Uninstalls only unselected components. Mark components selected
+ (\a selectComponent) or not selected (\a deselectComponent) to add
+ and remove components.
\endlist
- \section3 ReadyForInstallationPageCallback
+ \section1 Ready for Installation Page
+
+ Call the \a ReadyForInstallationPageCallback function to implement the ready
+ for installation page.
+
Wizard buttons:
\list
- \o Next ("Install")
- \o Cancel
- \o Back
+ \o \gui Install
+ \o \gui Cancel
+ \o \gui Back
\endlist
- \section3 PerformInstallationPage
+ \section1 Perform Installation Page
- details.button (push button): Shows/hides installation details
+ Call the \a IntroductionPageCallback function to implement the perform
+ installation page.
+
+ To show or hide installation details, implement the \a details.button push
+ button widget.
Wizard buttons:
\list
- \o Cancel
+ \o \gui Cancel
\endlist
- \section3 FinishedPageCallback
+ \section1 Installation Finished Page
+
+ Call the \a FinishedPageCallback function to implement the installation
+ finished page.
Wizard buttons:
\list
- \o Finish
+ \o \gui Finish
\endlist
- \section2 Custom Pages
+ \section1 Custom Pages
Custom pages are registered as \a{Dynamic${ObjectName}}, where \a{${ObjectName}}
is the object name set in the UI file.
- Thus the callback called is \a{Dynamic${ObjectName}Callback()}. Widgets can
+ Thus, the \a{Dynamic${ObjectName}Callback()} function is called. Widgets can
be addressed using their object names (from the UI file):
\code
var page = pageWidgetByObjectName( "DynamicSomePage" )
- page.myButton.click //direct child of the UI file's widgte
+ page.myButton.click //direct child of the UI file's widget
page.someFancyWidget.subWidget.setText( "foobar" ) // nested widget
\endcode
@@ -103,25 +168,30 @@
\o Possible Answers
\o Description
\row
- \o cancelInstallation
+ \o \a cancelInstallation
\o Yes, No
- \o Confirmation for canceling the installation (Cancel button in the wizard)
+ \o Confirmation for canceling the installation when end
+ users select \gui Cancel on the installer pages.
\row
- \o overwriteTargetDirectory
+ \o \a overwriteTargetDirectory
\o Yes, No
- \o Confirmation to use an already existing directory as target
+ \o Confirmation for using an already existing directory as
+ the target directory for installation.
\row
- \o installationError
- \o Ok
- \o A fatal error occurred while performing the installation
+ \o \a installationError
+ \o OK
+ \o A fatal error occurred while performing the
+ installation.
\row
- \o installationErrorWithRetry
+ \o \a installationErrorWithRetry
\o Retry, Ignore, Cancel
- \o An error occurred while performing the installation, Retry possible
+ \o An error occurred while performing the installation.
+ End users can select \gui Retry to try again.
\row
- \o metaInfoJobError
- \o Ok
- \o Error occurred retrieving meta information (online installer)
+ \o \a metaInfoJobError
+ \o OK
+ \o An error occurred while retrieving meta information
+ when using an online installer.
\endtable
*/
diff --git a/doc/operations.qdoc b/doc/operations.qdoc
index dfe8110cb..a9ba63235 100644
--- a/doc/operations.qdoc
+++ b/doc/operations.qdoc
@@ -1,153 +1,170 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
/*!
- \contentspage{index.html}{InstallerFramework}
+ \contentspage{index.html}{Qt Installer Framework}
+ \previouspage scripting.html
\page operations.html
+ \nextpage ifw-tools.html
\title Operations
- \section1 Can be called manually on the uninstaller/installer if needed
+ You can call operations manually on the uninstaller or installer.
- qt version registration for example:
+ For example, to register the Qt version in Qt Creator, call the
+ "RegisterQtInCreatorV23" operation with the following syntax:
\code
SDKMaintenanceTool --runoperation "RegisterQtInCreatorV23" "<displayname>" "<qtpath>" "<target: Symbian/Maemo/Desktop/Simulator/WinCE>" "<internal_ID>"
\endcode
- \section1 Following a list of all available operations
-
- \section2 Copy
-
- \bold Syntax: "Copy" \a source \a target
-
- Copies a file from \a source to \a target.
-
-
- \section2 Move
-
- \bold Syntax: "Move" \a source \a target
-
- Moves a file from \a source to \a target.
-
-
- \section2 Delete
-
- \bold Syntax: "Delete" \a filename
-
- Deletes the file specified by \a filename.
-
-
- \section2 Mkdir
-
- \bold Syntax: "Mkdir" \a path
-
- Creates the directory path \a path.
-
-
- \section2 Rmdir
-
- \bold Syntax: "Rmdir" \a path
-
- Removes the directory path \a path.
-
-
- \section2 AppendFile
-
- \bold Syntax: "AppendFile" \a filename \a text
-
- Appends \a text to the file specified by \a filename. \a is threated as ASCII text.
-
-
- \section2 PrependFile
-
- \bold Syntax: "PrependFile" \a filename \a text
-
- Prepends \a text to the file specified by \a filename. \a is threated as ASCII text.
-
-
- \section2 Execute
-
- \bold Syntax: "Execute" [{\a exitcodes}] \a command [\a parameter1 [\a parameter2 [\a parameter3 [\a parameter4]]]]
-
- Executes the command specified by \a command. Up to four parameters can be passed.
-
- Optionally, you can pass a comma separated list of numbers in {} as first argument, which defines the "valid" exit codes
- of the process, i.e. the codes the execution is considered being successful. This defaults to "{0}".
-
- \section2 CreateShortcut
-
- \bold Syntax: "CreateShortcut" \a filename \a linkname [\a arguments]
-
- Creates a shortcut from the file specified by \a filename to \a linkname.
- On Windows, this will create a .lnk file which can have \a arguments, on Unix this will create a symobic link.
-
-
- \section2 CreateDesktopEntry
-
- \bold Syntax: "CreateDesktopEntry" \a filename \a "key=value[\nkey2=value2[\nkey3=value3]]]"
-
- Creates an INI-file like .desktop file as specified by freedesktop.org
- If \a filename is absolute, the desktop entry is stored there. Otherwise it's stored in locations defined in $XDG_DATA_DIRS/applications
- or $XDG_DATA_HOME/applications, including the default pathes for boths, as defined by freedesktop.org.
-
- The key/value pairs are written in the file.
-
- The file is set to a encoding of UTF-8.
-
- \section2 InstallIcons
-
- \bold Syntax: "InstallIcons" \a directory
-
- Installs the contents of \a directory into a location as specified by freedesktop.org, i.e. in any of $XDG_DATA_DIRS/icons or /usr/share/icons
- or $HOME/.icons. The files are removed from their initial location. Make sure to add this operation after the operation extracting them form the archive.
-
- \section2 Extract
-
- \bold Syntax: "Extract" \a archive \a targetdirectory
-
- Extracts \a archive to \a targetdirectory
-
-
- \section2 GlobalConfig
-
- \bold Syntax: "GlobalConfig" \a company \a application \a key \a value <br>
- \a or <br>
- \bold Syntax: "GlobalConfig" \a filename \a key \a value
-
- Stores \a value for \a key in a configuration file. The configuration file is either
- specified by \a filename (using QSettings::NativeFormat, which might be the Windows registry)
- or via the \a application and the \a company name.
-
-
- \section2 EnvironmentVariable
-
- \bold Syntax: "EnvironmentVariable" \a key \a value [[\a persistent] \a system]
-
- Sets the envirnoment variable \a key to a \a value. If \a persistent is set to true, the variable
- will be set persistently. This is currently only supported on Windows. If \a system is set to true, the
- persistent variable will be set system wide, not only for the current user.
-
-
- \section2 RegisterFileType
-
- \bold Syntax: "RegisterFileType" \a extension \a command [\a description [\a contentType [\a icon]]].
-
- Registers the file type with \a extension to be opened via \a command. Optionally, you can specify
- a \a description, a \a contentType and an \a icon. This is currently only supported on Windows.
-
-
- \section2 RegisterQtInCreatorV2
-
- \bold Syntax: "RegisterQtInCreatorV2", \a displayname, \a qt_or_qmake_path, [\a system_root, [\a sbs_path]].
-
- Registers the Qt version \a displayname to Qt Creator with \a qt_or_qmake_path (if the path does not end with the qmake binary, it will add bin/qmake to the path automatically). Optionally, you can specify a\ system_root which. For Symbian SDKs the instance root will be where Qt Creator will find the Symbian SDK root (EPOCROOT). For Symbian SDKs supporting sbs, you add the \a sbs_path .
-
- \note The minimum Qt Creator version it supports is 2.2
-
-
- \section2 RegisterQtInCreatorV23
-
- \bold Syntax: "RegisterQtInCreatorV23", \a displayname, \a qt_path, \a target, \a internal_id.
-
- Registers the Qt version \a displayname to Qt Creator with \a qt_path. Target means one of the Qt type in QtCreator(Symbian/Maemo/Desktop/Simulator/WinCE) and \a the internal_id is used to update or remove this Qt version.
-
- \note The minimum Qt Creator version it supports is 2.3
+ \section1 Summary of Operations
+
+ The following table summarizes the available operations and their syntax.
+
+ \table
+ \header
+ \o Operation
+ \o Syntax
+ \o Use
+ \row
+ \o Copy
+ \o "Copy" \a source \a target
+ \o Copies a file from \a source to \a target.
+ \row
+ \o Move
+ \o "Move" \a source \a target
+ \o Moves a file from \a source to \a target.
+ \row
+ \o Delete
+ \o "Delete" \a filename
+ \o Deletes the file specified by \a filename.
+ \row
+ \o Mkdir
+ \o "Mkdir" \a path
+ \o Creates the directory path \a path.
+ \row
+ \o Rmdir
+ \o "Rmdir" \a path
+ \o Removes the directory path \a path.
+ \row
+ \o AppendFile
+ \o "AppendFile" \a filename \a text
+ \o Appends \a text to the file specified by \a filename. \a text is
+ treated as ASCII text.
+ \row
+ \o PrependFile
+ \o "PrependFile" \a filename \a text
+ \o Prepends \a text to the file specified by \a filename. \a text
+ is treated as ASCII text.
+ \row
+ \o Execute
+ \o "Execute" [{\a exitcodes}] \a command [\a parameter1 [\a parameter2 [\a parameter3 [\a parameter4]]]]
+ \o Executes the command specified by \a command. Up to four
+ parameters can be passed.
+
+ Optionally, you can pass a comma-separated list of exit codes
+ within curly brackets ({}) as the first argument to specify the
+ exit codes for successful execution. This defaults to "{0}".
+ \row
+ \o CreateShortcut
+ \o "CreateShortcut" \a filename \a linkname [\a arguments]
+ \o Creates a shortcut from the file specified by \a filename to
+ \a linkname.
+ On Windows, this creates a .lnk file which can have
+ \a arguments. On Unix, this creates a symbolic link.
+ \row
+ \o CreateDesktopEntry
+ \o "CreateDesktopEntry" \a filename \a "key=value[\nkey2=value2[\nkey3=value3]]]"
+ \o Creates a .desktop initialization file, as specified by
+ freedesktop.org.
+
+ If \a filename is absolute, the desktop entry is stored there.
+ Otherwise, it is stored in the location specified in
+ \c{$XDG_DATA_DIRS/applications} or
+ \c{$XDG_DATA_HOME/applications}, including the default paths for
+ both, as defined by freedesktop.org.
+
+ The key-value pairs are written to the file.
+
+ The file is set to use UTF-8 encoding.
+ \row
+ \o InstallIcons
+ \o "InstallIcons" \a directory
+ \o Installs the contents of \a directory into a location, as
+ specified by freedesktop.org. That is, into
+ \c {$XDG_DATA_DIRS/icons}, \c {/usr/share/icons}, or
+ \c {$HOME/.icons}. The files are removed from their initial
+ location. Make sure to add this operation after the operation
+ that extracts the files from the archive.
+ \row
+ \o Extract
+ \o "Extract" \a archive \a targetdirectory
+ \o Extracts \a archive to \a targetdirectory.
+
+ \row
+ \o GlobalConfig
+ \o "GlobalConfig" \a company \a application \a key \a value
+
+ or
+
+ "GlobalConfig" \a filename \a key \a value
+ \o Stores \a value for \a key in a configuration file. The
+ configuration file is specified either by \a filename
+ (using \a QSettings::NativeFormat, which might be the Windows
+ registry) or by \a application and \a company name.
+ \row
+ \o EnvironmentVariable
+ \o "EnvironmentVariable" \a key \a value [[\a persistent] \a system]
+ \o Sets the environment variable \a key to \a value. If
+ \a persistent is set to \c true, the variable is set
+ persistently. This is currently only supported on Windows.
+ If \a system is set to \c true, the persistent variable is set
+ system-wide, not only for the current user.
+ \row
+ \o RegisterFileType
+ \o "RegisterFileType" \a extension \a command [\a description [\a contentType [\a icon]]].
+ \o Registers the file type with \a extension to be opened via
+ \a command. Optionally, you can specify \a description,
+ \a contentType, and \a icon. This is currently only supported on
+ Windows.
+ \row
+ \o RegisterQtInCreatorV2
+ \o "RegisterQtInCreatorV2", \a displayname, \a qt_or_qmake_path, [\a system_root, [\a sbs_path]].
+ \o Registers the Qt version \a displayname to Qt Creator with
+ \a qt_or_qmake_path (if the path does not end with the qmake
+ binary, adds \c{bin/qmake} to the path automatically). Optionally,
+ you can specify \a system_root. For Symbian SDKs, Qt Creator
+ finds the Symbian SDK root (EPOCROOT) in the instance root. For
+ Symbian SDKs that support SBS, add \a sbs_path.
+
+ \note Supports Qt Creator 2.2, or later.
+ \row
+ \o RegisterQtInCreatorV23
+ \o "RegisterQtInCreatorV23", \a displayname, \a qt_path, \a target, \a internal_id.
+ \o Registers the Qt version \a displayname to Qt Creator with
+ \a qt_path. \a target is a Qt version in Qt Creator (Symbian,
+ Maemo, Desktop, Qt Simulator, WinCE) and \a internal_id is used
+ to update or remove the Qt version.
+
+ \note Supports Qt Creator 2.3, or later.
+ \endtable
*/
diff --git a/doc/scripting.qdoc b/doc/scripting.qdoc
index 47b14491b..8b8e52a39 100644
--- a/doc/scripting.qdoc
+++ b/doc/scripting.qdoc
@@ -1,61 +1,102 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
/*!
- \contentspage{index.html}{InstallerFramework}
+ \contentspage{index.html}{Qt Installer Framework}
+ \previouspage noninteractive.html
\page scripting.html
+ \nextpage operations.html
\title Component Scripting
- \section1 Scripting abilities inside of components
+ For each component, you can specify one script that is loaded and run by the
+ installer. The script format has to be compatible with QScriptEngine.
- Each component can specify one script, which is loaded and run by the
- installer. The format has to be compatible to QScriptEngine.
+ \section1 Construction
- \section1 Contruction
+ The script has to contain a \c Component object that the installer creates
+ when it loads the script. Therefore, the script must contain at
+ least the \a Component() function, which performs initialization, such as
+ putting pages in the correct places or connecting signals and slots.
- The script has to provide an object Component, which will be created by the
- Installer when loading the script. Therefore the script must contains at
- least a function Component(), which can do all the initialization needed,
- like putting user interfaces in place or connecting signals/slots:
+ The following code snippet places the \a ErrorPage (which is the class
+ name of the user interface file loaded from errorpage.ui) in front of the
+ ready for installation page and sets its completeness to \c false.
\code
function Component()
{
- // let's assume we have a user interface ErrorPage - which should not be complete
+ // Add a user interface file called ErrorPage, which should not be complete
installer.addWizardPage( component, "ErrorPage", QInstaller.ReadyForInstallation );
component.userInterface( "ErrorPage" ).complete = false;
}
\endcode
- The example above places the user interface "ErrorPage" (which is the class
- name of the ui file loaded from errorpage.ui) in front of the installer
- page "Ready for Installation" and sets his completeness to false. See the
- documentation for addWizardPage and userInterface for details.
+ For more information, see the documentation for \a addWizardPage and
+ \a userInterface.
\section1 Installer Hooks
- You can add several hook methods into your script:
-
- \list
- \o \bold{Component.prototype.retranslateUi} is called, whenever the language of the Installer changes.
- \o \bold{Component.prototype.createOperations} - see QInstaller::Component::createOperations
- \o \bold{Component.prototype.createOperationsForArchive} - see QInstaller::Component::createOperationsForArchive
- \o \bold{Component.prototype.createOperationsForPath} - see QInstaller::Component::createOperationsForPath
- \endlist
-
- \section1 Global variables
-
- The Installer puts the following symbols into the scripts space:
-
- \list
- \o \bold{installer} A reference to the component's Installer
- \o \bold{component} A reference to the component's Component
- \endlist
-
- All methods marked with \a Q_INVOKABLE as well as all signals, slots and
+ You can add the following hook methods into your script:
+
+ \table
+ \header
+ \o Method
+ \o Description
+ \row
+ \o \a{Component.prototype.retranslateUi}
+ \o Called when the language of the installer changes.
+ \row
+ \o \a{Component.prototype.createOperations}
+ \o See \a QInstaller::Component::createOperations.
+ \row
+ \o \a{Component.prototype.createOperationsForArchive}
+ \o See \a QInstaller::Component::createOperationsForArchive.
+ \row
+ \o \a{Component.prototype.createOperationsForPath}
+ \o See \a QInstaller::Component::createOperationsForPath.
+ \endtable
+
+ \section1 Global Variables
+
+ The installer puts the following symbols into the script space:
+
+ \table
+ \header
+ \o Symbol
+ \o Description
+ \row
+ \o installer
+ \o Reference to the \a installer of the component
+ \row
+ \o component
+ \o Reference to the \a Component of the component
+ \endtable
+
+ All methods marked with \a Q_INVOKABLE as well as all signals, slots, and
properties can be used by the script.
- \section1 Message boxes
+ \section1 Message Boxes
- You can show a QMessageBox from within the script by using:
+ You can show a \a QMessageBox from within the script by using:
\code
QMessageBox.critical
@@ -64,27 +105,28 @@
QMessageBox.warning
\endcode
- For your convenience, the values for QMessageBox::StandardButton are made
- available by using QMessageBox.Ok, QMessageBox.Open, ...
+ For your convenience, the values for \a QMessageBox::StandardButton are made
+ available by using \a QMessageBox.Ok, \a QMessageBox.Open, and so on.
- \section1 Adding operations to the component
+ \section1 Adding Operations to Components
- In certain situations if it very useful to add custom operations after
- extracting the content. Those include copying files as well as patching
- content of files, etc.
- Update operations can be created and added to the installation from within
- a script using QInstaller::Component::addOperation.
- Every operation has an unique key used for identification and up to five
- parameters. Inside of the parameters, you can use variables as set in
- QInstaller::Installer::setValue. See the list of
- \l{Predefined variables}{predefined variables}.
+ You might want to add custom operations after extracting the content, when
+ copying files or patching file content, for example. You can create and add
+ update operations to the installation from within
+ a script using \a QInstaller::Component::addOperation.
- A list of all available operations can be found \l{Operations}{here}
+ Each operation has a unique key used for identification and can take up to
+ five parameters. In the parameter values, you can use variables as set in
+ \a QInstaller::Installer::setValue. For more information, see
+ \l{Predefined Variables}.
- \section1 Custom Operations
+ For a summary of all available operations, see \l{Operations}.
- It is possible to register custom installation operations in the Installer. This works by deriving KDUpdater::UpdateOperation.
- See the following code to know which methods must be implemented:
+ \section1 Registering Custom Operations
+
+ You can register custom installation operations in the installer by deriving
+ \a KDUpdater::UpdateOperation. The following code displays the methods that
+ you must implement:
\code
#include <KDUpdater/UpdateOperation>
@@ -152,33 +194,57 @@
};
\endcode
- Finally, you need to register your custom operation class:
+ Finally, you need to register your custom operation class, as follows:
\code
#include <KDupdater/UpdateOperationFactory>
KDUpdater::UpdateOperationFactory::instance().registerUpdateOperation< CustomOperation >( "CustomOperation" );
\endcode
- Now you can use your operation in the installer like every other of the predefined operations.
-
- \section1 Predefined variables
-
- Inside scripts you can use predefined variables to ease directory access. Those variables are
-
- \list
- \o \bold ProductName The name of the product to be installed as defined in config.xml
- \o \bold ProductVersion The version of the product to be installed as defined in config.xml
- \o \bold Title The title of the installation program as defined in config.xml
- \o \bold Publisher The publisher of the installation program as defined in config.xml
- \o \bold Url Product URL as defined in config.xml
- \o \bold StartMenuDir Start menu group as defined in config.xml. Applies only to Microsoft Windows
- \o \bold LicenseFile File name of the program license as defined in config.xml
- \o \bold TargetDir Target directory for installation as selected by the user.
- \o \bold DesktopDir Directory containing the user's desktop.
- \o \bold os The current platform, might be "x11", "win" or "mac"
- \endlist
-
- \note You can use these variables inside of the parameter list for
- installation operations. \a{"{TargetDir}/settings.xml"} might be expanded
- to \a{"C:/Program Files/My Program/settings.xml"}.
+ Now you can use your operation in the installer in the same way as the
+ predefined operations.
+
+ \section1 Predefined Variables
+
+ You can use the following predefined variables in scripts to facilitate
+ directory access:
+
+ \table
+ \header
+ \o Symbol
+ \o Description
+ \row
+ \o ProductName
+ \o Name of the product to be installed, as defined in config.xml.
+ \row
+ \o ProductVersion
+ \o Version number of the product to be installed, as defined in
+ config.xml.
+ \row
+ \o Title
+ \o Title of the installation program, as defined in config.xml.
+ \row
+ \o Publisher
+ \o Publisher of the installation program, as defined in config.xml.
+ \row
+ \o Url
+ \o Product URL, as defined in config.xml.
+ \row
+ \o StartMenuDir
+ \o Start menu group, as defined in config.xml. Available on
+ Windows, only.
+ \row
+ \o TargetDir
+ \o Target directory for installation, as selected by the user.
+ \row
+ \o DesktopDir
+ \o Name of the directory that contains the user's desktop.
+ \row
+ \o os
+ \o Current platform: \c "x11", \c "win", or \c "mac".
+ \endtable
+
+ \note You can use the variables in the parameter list for installation
+ operations. For example, \c{"{TargetDir}/settings.xml"} might be expanded
+ to: \c{"C:/Program Files/My Program/settings.xml"}.
*/
diff --git a/doc/tutorial.qdoc b/doc/tutorial.qdoc
index 24cfced18..5a10a7d06 100644
--- a/doc/tutorial.qdoc
+++ b/doc/tutorial.qdoc
@@ -1,83 +1,196 @@
+/****************************************************************************
+**
+** This file is part of Qt Installer Framework
+**
+** Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+**
+** GNU Free Documentation License
+**
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+****************************************************************************/
+
/*!
- \contentspage index.html{InstallerFramework}
- \previouspage ifw-tools.html
+ \contentspage {index.html}{Qt Installer Framework}
+ \previouspage ifw-getting-started.html
\page ifw-tutorial.html
- \nextpage ifw-online-installers.html
+ \nextpage ifw-creating-installers.html
- \title Tutorial
+ \title Tutorial: Creating an Installer
- This tutorial is designed to guide through the first steps to create
- a simple installer for a small project.
+ This tutorial describes how to create a simple installer for a small
+ project:
- \section1 Directory structure
+ \image ifw-introduction-page.png "Introduction page"
- First, we create a directory structure which will reflect the design
- of the installer as well as allow extensibility.
+ This section describes the following tasks that you must accomplish to
+ create the installer:
- In this example, it will look like this:
+ \list 1
- \code
- - tutorial
- - config
- - packages
- - com.vendor.product
- - data
- - meta
- \endcode
+ \o Create a \e {package directory} that will contain all the
+ configuration files and installable packages.
+
+ \o Create a \e {configuration file} that contains information about how
+ to build the installer binaries and online repositories.
+
+ \o Create a \e {package information file} that contains information
+ about the installable components.
+
+ \o Create installer content and copy it to the package directory.
+
+ \o Use the \c binarycreator tool to create the \e installer.
+
+ The installer pages are created by using the information you provide
+ in the configuration and package information file.
+
+ \endlist
+
+ The example files are located in the \c{examples\tutorial} directory in the
+ Qt Installer Framework repository.
- \section1 Global configuration
+ \section1 Creating a Package Directory
- Inside the \a config directory we create a config.xml file, which contains
- the following data:
+ Create a directory structure that reflects the design of the installer and
+ allows the installer to be extended in the future. The directory must
+ contain subdirectories called \c config and \c packages.
+
+ \image ifw-tutorial-files.png
+
+ For more information about the package directory, see \l{Package Directory}.
+
+ \section1 Creating a Configuration File
+
+ In the \c config directory, create a file called \c config.xml with the
+ following contents:
\quotefile ../examples/tutorial/config/config.xml
- The \a license section describes the location of the license file. This
- license will be displayed when the user starts the installer.
+ The configuration file specifies the following information that is
+ displayed on the introduction page:
+
+ \list
- \quotefile ../examples/tutorial/config/license.txt
+ \o The \c Title section specifies the installer name displayed on the
+ title bar (1).
- \note If you aim for installers on multiple platforms including Windows
- please make sure that the lineendings of the license file is in CRLF
- format. While the linux version manages to display windows lineending
- correctly, this does not apply the other way around.
+ \o The \c Name section specifies the application name that is added to
+ the page name and introduction text (2).
- \section1 Meta package information
+ \endlist
- In this easy scenario the installer handles only one component, which is
- named \a{com.vendor.product}. The installer needs to know a couple of
- information about this component, which is stored in a file called
- \a{package.xml} inside the meta directory. It has the following shape:
+ \image ifw-tutorial-introduction-page.png "Introduction page"
+
+ For more information about the configuration file format and the available
+ settings, see \l{Configuration File}.
+
+ \section1 Creating a Package Information File
+
+ In this easy scenario, the installer handles only one component that is
+ called \c{com.vendor.product}. To provide the installer with information
+ about the component, create a file called \c package.xml with the
+ following contents and place it in the \c meta directory:
\quotefile ../examples/tutorial/packages/com.vendor.product/meta/package.xml
- \section1 Installer content
+ For more information about the package information file, see
+ \l{Package Information File Syntax}.
+
+ \section2 Specifying Component Information
+
+ The package information file specifies the following information that is
+ displayed on the component selection page:
- Content to be installed is stored inside the data directory of each
- component. As in this tutorial there is only one component, we place the
- data into \a{packages/com.vendor.product/data}. The example already contains
- a file for testing purposes, but you can place basically anything inside
- there. For packaging rules and options, please read the
- \l{Contents of the data directory}{detailed information}.
+ \list
- \section1 Creating the installer binary
+ \o The \c DisplayName section specifies the name of the component in
+ the list of components (1).
- Now everything is prepared to create the first installer. Switch to the
- \a tutorial directory in your command line. Enter the following command:
+ \o The \c Description section specifies the text that is displayed when
+ the component is selected (2).
- \section2 Windows
+ \endlist
+
+ \image ifw-tutorial-select-components.png
+
+ \section2 Specifying Installer Version
+
+ The \c Version section enables you to promote updates to users when they
+ become available.
+
+ \section2 Adding Licenses
+
+ The \c License section specifies the name of the file that contains the text
+ for the license agreement (1) that is displayed on the license check page:
+
+ \image ifw-tutorial-license-check.png "License check page"
+
+ \note To create installers for multiple platforms, including Windows,
+ make sure that the line endings of the license file use the CRLF
+ format, as Windows does not apply Linux line endings correctly.
+
+ \section2 Selecting Default Contents
+
+ The \c Default section specifies whether the component is selected by
+ default. The value \c true sets the component as selected. In this example,
+ we use the value \c script to resolve the value during runtime. The
+ name of the script file, installscript.qs, is specified in the \c Script
+ section.
+
+ The script file should look as follows:
+
+ \quotefile ../examples/tutorial/packages/com.vendor.product/meta/installscript.qs
+
+ \section1 Creating Installer Content
+
+ Content to be installed is stored in the \c data directory of a component.
+ As there is only one component, place the data in the
+ \c{packages/com.vendor.product/data} directory. The example already contains
+ a file for testing purposes, but you can place basically any files in the
+ directory.
+
+ For more information about packaging rules and options, see
+ \l{Data Directory}.
+
+ \section1 Creating the Installer Binary
+
+ You are now ready to create your first installer. Switch to the
+ \a tutorial directory on the command line. To create an installer called
+ YourInstaller.exe that contains the packages identified by
+ com.vendor.product, enter the following command:
+
+ \list
+
+ \o On Windows:
\code
- <location-of-the-ifw>\binarycreator.exe -t <location-of-the-ifw>\installerbase.exe -p packages -c config YourInstaller.exe com.vendor.product
+ ..\..\installerbuilder\bin\binarycreator.exe -c config -p packages YourInstaller.exe com.vendor.product
\endcode
- \section2 Linux / Mac OS-X
+ \o On Linux or Mac OS X:
\code
- <location-of-the-ifw>/binarycreator -t <location-of-the-ifw>/installerbase -p packages -c config YourInstaller com.vendor.product
+ ../../installerbuilder/bin/binarycreator -c config -p packages YourInstaller com.vendor.product
\endcode
- Afterwards the installer has been created in the current directory and you
- ship those binaries.
+ \endlist
+
+ The installer is created in the current directory and you can deliver it to
+ end users.
+
+ For more information about using the \c binarycreator tool, see
+ \l{binarycreator}.
+ \note If an error message is displayed when you run the tutorial installer,
+ check that you used a statically built Qt to create the installer. For more
+ information, see \l{Configuring Qt}.
*/