summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/dependencies/README5
-rw-r--r--examples/dependencies/config/config.xml10
-rw-r--r--examples/dependencies/dependencies.pro13
-rw-r--r--examples/dependencies/packages/componentA/data/installcontent.txt2
-rw-r--r--examples/dependencies/packages/componentA/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentB/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentC/meta/package.xml9
-rw-r--r--examples/dependencies/packages/componentD/meta/package.xml9
-rw-r--r--examples/dependencies/packages/componentE/meta/package.xml9
-rw-r--r--examples/dependencies/packages/componentF.subcomponent1.subsubcomponent1/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF.subcomponent1.subsubcomponent2/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF.subcomponent1/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF.subcomponent2.subsubcomponent1/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF.subcomponent2.subsubcomponent2/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF.subcomponent2/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentF/meta/package.xml8
-rw-r--r--examples/dependencies/packages/componentG/meta/package.xml10
-rw-r--r--examples/doc/dependencies.qdoc118
-rw-r--r--examples/doc/images/qtifw-examples-dependencies.pngbin0 -> 29846 bytes
-rw-r--r--examples/examples.pro1
20 files changed, 258 insertions, 0 deletions
diff --git a/examples/dependencies/README b/examples/dependencies/README
new file mode 100644
index 000000000..e7b510d7e
--- /dev/null
+++ b/examples/dependencies/README
@@ -0,0 +1,5 @@
+Create an installer that shows how the dependency solving works
+
+Generate installer with:
+
+binarycreator -c config/config.xml -p packages installer
diff --git a/examples/dependencies/config/config.xml b/examples/dependencies/config/config.xml
new file mode 100644
index 000000000..4a1b42501
--- /dev/null
+++ b/examples/dependencies/config/config.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Installer>
+ <Name>Dependency Solving Example</Name>
+ <Version>1.0.0</Version>
+ <Title>Dependency Solving Example</Title>
+ <Publisher>Qt-Project</Publisher>
+ <StartMenuDir>Qt IFW Examples</StartMenuDir>
+ <TargetDir>@HomeDir@/IfwDependencySolvingExample</TargetDir>
+ <CreateLocalRepository>true</CreateLocalRepository>
+</Installer>
diff --git a/examples/dependencies/dependencies.pro b/examples/dependencies/dependencies.pro
new file mode 100644
index 000000000..415df49d5
--- /dev/null
+++ b/examples/dependencies/dependencies.pro
@@ -0,0 +1,13 @@
+TEMPLATE = aux
+
+INSTALLER = installer
+
+INPUT = $$PWD/config/config.xml $$PWD/packages
+example.input = INPUT
+example.output = $$INSTALLER
+example.commands = ../../bin/binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT}
+example.CONFIG += target_predeps no_link combine
+
+QMAKE_EXTRA_COMPILERS += example
+
+OTHER_FILES = README
diff --git a/examples/dependencies/packages/componentA/data/installcontent.txt b/examples/dependencies/packages/componentA/data/installcontent.txt
new file mode 100644
index 000000000..f40001983
--- /dev/null
+++ b/examples/dependencies/packages/componentA/data/installcontent.txt
@@ -0,0 +1,2 @@
+This file will be installed into the target directory....
+
diff --git a/examples/dependencies/packages/componentA/meta/package.xml b/examples/dependencies/packages/componentA/meta/package.xml
new file mode 100644
index 000000000..095735eb1
--- /dev/null
+++ b/examples/dependencies/packages/componentA/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component A</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentB/meta/package.xml b/examples/dependencies/packages/componentB/meta/package.xml
new file mode 100644
index 000000000..2d51fee6e
--- /dev/null
+++ b/examples/dependencies/packages/componentB/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component B</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>90</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentC/meta/package.xml b/examples/dependencies/packages/componentC/meta/package.xml
new file mode 100644
index 000000000..c829970e7
--- /dev/null
+++ b/examples/dependencies/packages/componentC/meta/package.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component C (depends on A and B)</DisplayName>
+ <Description>This component depends on Component A and Component B. Selecting this component for installation also marks Component A and Component B for installation, which in turn marks Component D, because it has an automatic dependency on Component A and Component B.</Description>
+ <Dependencies>componentA, componentB</Dependencies>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>80</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentD/meta/package.xml b/examples/dependencies/packages/componentD/meta/package.xml
new file mode 100644
index 000000000..d2af2e64c
--- /dev/null
+++ b/examples/dependencies/packages/componentD/meta/package.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component D (auto depends on A and B)</DisplayName>
+ <Description>This component has an automatic dependency on Component A and Component B. If both A and B are marked for installation, this component is also installed.</Description>
+ <AutoDependOn>componentA, componentB</AutoDependOn>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>70</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentE/meta/package.xml b/examples/dependencies/packages/componentE/meta/package.xml
new file mode 100644
index 000000000..3f41c095c
--- /dev/null
+++ b/examples/dependencies/packages/componentE/meta/package.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component E (forced)</DisplayName>
+ <Description>This is a forced component that is always installed.</Description>
+ <ForcedInstallation>true</ForcedInstallation>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>60</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent1/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent1/meta/package.xml
new file mode 100644
index 000000000..4bb53fca2
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent1/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subsubcomponent 1</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent2/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent2/meta/package.xml
new file mode 100644
index 000000000..ade4cf15a
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent1.subsubcomponent2/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subsubcomponent 2</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent1/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent1/meta/package.xml
new file mode 100644
index 000000000..5eb6fd46a
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent1/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subcomponent 1</DisplayName>
+ <Description>This component contains 2 leaf components.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent1/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent1/meta/package.xml
new file mode 100644
index 000000000..4bb53fca2
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent1/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subsubcomponent 1</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>100</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent2/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent2/meta/package.xml
new file mode 100644
index 000000000..ade4cf15a
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent2.subsubcomponent2/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subsubcomponent 2</DisplayName>
+ <Description>This component does not depend on any other component.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF.subcomponent2/meta/package.xml b/examples/dependencies/packages/componentF.subcomponent2/meta/package.xml
new file mode 100644
index 000000000..8f2cfdc64
--- /dev/null
+++ b/examples/dependencies/packages/componentF.subcomponent2/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Subcomponent 2</DisplayName>
+ <Description>This component contains 2 leaf components.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>50</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentF/meta/package.xml b/examples/dependencies/packages/componentF/meta/package.xml
new file mode 100644
index 000000000..74756bae6
--- /dev/null
+++ b/examples/dependencies/packages/componentF/meta/package.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component F</DisplayName>
+ <Description>This component contains 2 subcomponents.</Description>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <SortingPriority>40</SortingPriority>
+</Package>
diff --git a/examples/dependencies/packages/componentG/meta/package.xml b/examples/dependencies/packages/componentG/meta/package.xml
new file mode 100644
index 000000000..3e14256b4
--- /dev/null
+++ b/examples/dependencies/packages/componentG/meta/package.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<Package>
+ <DisplayName>Component G (default, depends on A)</DisplayName>
+ <Description>By default, this component is selected for installation. It depends on component A.</Description>
+ <Default>true</Default>
+ <Version>1.0.0</Version>
+ <ReleaseDate>2014-08-25</ReleaseDate>
+ <Dependencies>componentA</Dependencies>
+ <SortingPriority>30</SortingPriority>
+</Package>
diff --git a/examples/doc/dependencies.qdoc b/examples/doc/dependencies.qdoc
new file mode 100644
index 000000000..96be950c2
--- /dev/null
+++ b/examples/doc/dependencies.qdoc
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Installer Framework.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** 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. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example dependecies
+ \ingroup qtifwexamples
+ \title Dependency Solving Example
+
+ \brief Using components' package.xml files to define dependencies and
+ automatic dependencies between components.
+
+ \image qtifw-examples-dependencies.png
+
+ \e{Dependency Solving} illustrates how to specify dependencies and automatic
+ dependencies between components in the package information files and how
+ that influences the installation and maintenance processes.
+
+ \include installerfw-examples-configuring.qdocinc
+
+ \list
+ \li The \c <CreateLocalRepository> element is set to \c true to create
+ a local repository. This enables end users to run the maintenance
+ tool after the initial installation to install additional components
+ or to uninstall components. The changes in the installation will
+ respect the dependencies defined in the example.
+ \endlist
+
+ \quotefile dependencies/config/config.xml
+
+ \include installerfw-examples-packaging.qdocinc
+
+ \list
+ \li The \c <SortingPriority> element specifies the location of the
+ component in the component tree. The tree is sorted from highest to
+ lowest priority, with the highest priority on the top.
+ \endlist
+
+ In this example, the package.xml files for the components contain additional
+ elements that specify the dependencies. The following sections illustrate
+ how the elements are used.
+
+ \section1 Specifying Dependencies on Other Components
+
+ We define a dependency for \e{Component C} on \e{Component A} and
+ \e{Component B}. Thus, if we select Component C for installation, both
+ Component A and Component B are installed as well. We define the
+ dependencies in the \c <Dependencies> element in Component C's package.xml
+ file as a comma-separated list of the identifiers of the components that
+ this component depends on:
+
+ \quotefile dependencies/packages/componentC/meta/package.xml
+
+ \section1 Specifying Automatic Dependencies on Other Components
+
+ We define an automatic dependency for \e{Component D} on Component A and
+ Component B. Thus, if Component A and Component B are both marked for
+ installation, Component D is automatically installed as well.
+ We define the automatic dependency in the \c <AutoDependOn> element in
+ Component D's package.xml file:
+
+ \quotefile dependencies/packages/componentD/meta/package.xml
+
+ \section1 Forcing the Installation of a Component
+
+ We define that \e{Component E} is always automatically installed and the end
+ user cannot deselect it. To define this, we set the \c <ForcedInstallation>
+ element to \c true in Component E's package.xml file:
+
+ \quotefile dependencies/packages/componentE/meta/package.xml
+
+ \section1 Installing Components by Default
+
+ We define a dependency for \e{Component G} on Component A, and we mark G as
+ a default component. Thus, Component G is marked for installation by
+ default, and so is Component A, because it is required by G. To define this,
+ we set the value of the \c <Default> element to \c true in Component G's
+ package.xml file:
+
+ \quotefile dependencies/packages/componentG/meta/package.xml
+
+ \section1 Solving the Dependencies
+
+ Selecting component C for installation also selects the following
+ components:
+
+ \list
+ \li Component A and Component B, because Component C requires them.
+ \li Component D, because both Component A and Component B are marked for
+ installation and thus the conditions for installing Component D are
+ met.
+ \endlist
+
+ \include installerfw-examples-generating.qdocinc
+*/
diff --git a/examples/doc/images/qtifw-examples-dependencies.png b/examples/doc/images/qtifw-examples-dependencies.png
new file mode 100644
index 000000000..2af737d66
--- /dev/null
+++ b/examples/doc/images/qtifw-examples-dependencies.png
Binary files differ
diff --git a/examples/examples.pro b/examples/examples.pro
index 1e5a816cd..d88e5611f 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -3,6 +3,7 @@ TEMPLATE = subdirs
SUBDIRS += \
changeuserinterface \
componenterror \
+ dependencies \
dynamicpage \
licenseagreement \
modifyextract \