Online Installer Example
Using the repogen tool and the configuration file to set up an online installer.
Online Installer illustrates how to set up an online installer that fetches the original packages and updates to them from a server.
Configuring the Example Installer
The installer configuration file, config.xml, in the config
directory specifies the text and default values used in the installer:
- The
<Name>
element sets the application name and adds it to the page name and introduction text. - The
<Version>
element sets the application version number. - The
<Title>
element sets the installer name and displays it on the title bar. - The
<Publisher>
element sets the publisher of the software (as shown in the Windows Control Panel, for example). - The
<StartMenuDir>
element sets the name of the default program group for the product in the Windows Start menu. - The
<TargetDir>
element sets the default target directory location to be within theIfwExamples
directory in the home directory of the current user (because it uses the pre-existing variable,
@HomeDir@, as part of the value). For more information, see Predefined Variables.
- The
<RemoteRepositories>
element is specific to an online installer. It can contain one or several<Repository>
child elements that specify a connection to an online repository. For more information about the available options, see Configuring Repositories.
<?xml version="1.0" encoding="UTF-8"?> <Installer> <Name>Online Installer Example</Name> <Version>1.0.0</Version> <Title>Online Installer Example</Title> <Publisher>The Qt Company</Publisher> <StartMenuDir>Qt IFW Examples</StartMenuDir> <TargetDir>@HomeDir@/IfwExamples/online</TargetDir> <RemoteRepositories> <Repository> <Url>http://localhost/repository</Url> </Repository> </RemoteRepositories> </Installer>
Creating the Example Package Information File
The installer package information file, package.xml, in the meta
directory specifies the components that are available for installation:
- The
<DisplayName>
element sets the human-readable name of the component. - The
<Description>
element sets the human-readable description of the component. - The
<Version>
element sets the version number of the component. - The
<ReleaseDate>
element sets the date of release for this component version.
- The
<Default>
element is set totrue
to preselect the component in the installer.
<?xml version="1.0" encoding="UTF-8"?> <Package> <DisplayName>A</DisplayName> <Description>Example component A</Description> <Version>1.0.2-1</Version> <ReleaseDate>2015-01-01</ReleaseDate> <Default>true</Default> </Package>
This installer contains two components, A and B, that each have their own package information file with slightly different contents.
Generating the Online Repository
The packages need to be converted to a file structure that the installer can fetch at runtime. To use the repogen
tool to convert the packages, switch to the example source directory on the command line and enter the following command:
- On Windows:
..\..\bin\repogen.exe -p packages repository
- On Linux or macOS:
../../bin/repogen -p packages repository
The generated repository
directory will now contain a full copy of the package data and some additionally generated metadata, such as SHA checksums.
The directory now needs to be made available at the URL set in config.xml
: http://localhost/repository
. How this is done depends on the platform and web server used. If you do not have a running web server yet, but have Python available, you should be able to start a minimal web server from the command line. Make sure you are in the example directory, and then enter:
python -m SimpleHTTPServer 80
You should now be able to open and explore http://localhost/repository in your web browser.
Note: If you do not have enough permissions to set up a web server locally, you can also specify an absolute file:///
URL as the value of the URL
element in config.xml
. For example, file:///C:/Qt/QtIFW/examples/online/repository
would be a valid URL on Windows if repository
is located in C:\Qt\QtIFW\examples\online
.
Generating the Example Installer
To create the example installer, switch to the example source directory on the command line and enter the following command:
- On Windows:
..\..\bin\binarycreator.exe --online-only -c config\config.xml -p packages installer.exe
- On Linux or macOS:
../../bin/binarycreator --online-only -c config/config.xml -p packages installer
You should now be able to run the installer and install from the repository.
Providing Updates
A benefit of using an online installer is that you can add new packages over time or update the existing ones. During new installations, the new and updated packages are automatically used, and existing installations can be upgraded to use them.
To update a package, you need to increase its <Version>
element in package.xml
. The packages_update
directory in the example folder is a copy of the
package directory, with an updated component A. To deploy an update, you again use repogen
:
- On Windows:
..\..\bin\repogen.exe --update-new-components -p packages_update repository
- On Linux or macOS:
../../bin/repogen --update-new-components -p packages_update repository
--update-new-components
lets repogen
compare the version numbers of components in the repository and the packages directory, and only updates packages that are new, or have a higher version number. See also the Summary of repogen Parameters.
If you then run the maintenance tool from the previous installation and select Update Components, you should see that an update of package A
is available.
For more information on providing updates, see Promoting Updates.
Files:
- online/config/config.xml
- online/online.pro
- online/packages/A/data/A.txt
- online/packages/A/meta/package.xml
- online/packages/B/data/B.txt
- online/packages/B/meta/package.xml
- online/packages_update/A/data/A.txt
- online/packages_update/A/meta/package.xml
- online/packages_update/B/data/B.txt
- online/packages_update/B/meta/package.xml
© 2021 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. The Qt Company, Qt and their respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.