| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529 |
- CPack IFW Generator
- -------------------
- .. versionadded:: 3.1
- Configure and run the Qt Installer Framework to generate a Qt installer.
- .. only:: html
- .. contents::
- Overview
- ^^^^^^^^
- This :manual:`cpack generator <cpack-generators(7)>` generates
- configuration and meta information for the `Qt Installer Framework
- <https://doc.qt.io/qtinstallerframework/index.html>`_ (QtIFW),
- and runs QtIFW tools to generate a Qt installer.
- QtIFW provides tools and utilities to create installers for
- the platforms supported by `Qt <https://www.qt.io>`_: Linux,
- Microsoft Windows, and macOS.
- To make use of this generator, QtIFW needs to be installed.
- The :module:`CPackIFW` module looks for the location of the
- QtIFW command-line utilities, and defines several commands to
- control the behavior of this generator. See `Hints for Finding QtIFW`_.
- Variables
- ^^^^^^^^^
- You can use the following variables to change the behavior of the CPack ``IFW``
- generator.
- Debug
- """""
- .. variable:: CPACK_IFW_VERBOSE
- .. versionadded:: 3.3
- Set to ``ON`` to enable addition debug output.
- By default is ``OFF``.
- Package
- """""""
- .. variable:: CPACK_IFW_PACKAGE_TITLE
- Name of the installer as displayed on the title bar.
- If not specified, it defaults to :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`.
- .. variable:: CPACK_IFW_PACKAGE_PUBLISHER
- Publisher of the software (as shown in the Windows Control Panel).
- If not specified, it defaults to :variable:`CPACK_PACKAGE_VENDOR`.
- .. variable:: CPACK_IFW_PRODUCT_URL
- URL to a page that contains product information on your web site.
- .. variable:: CPACK_IFW_PACKAGE_ICON
- Filename for a custom installer icon. It must be an absolute path.
- This should be a ``.icns`` file on macOS and a ``.ico`` file on Windows.
- It is ignored on other platforms.
- .. variable:: CPACK_IFW_PACKAGE_WINDOW_ICON
- Filename for a custom window icon in PNG format for the Installer
- application. It must be an absolute path.
- .. variable:: CPACK_IFW_PACKAGE_LOGO
- Filename for a logo image in PNG format, used as ``QWizard::LogoPixmap``.
- It must be an absolute path.
- .. variable:: CPACK_IFW_PACKAGE_WATERMARK
- .. versionadded:: 3.8
- Filename for a watermark image in PNG format, used as
- ``QWizard::WatermarkPixmap``. It must be an absolute path.
- .. variable:: CPACK_IFW_PACKAGE_BANNER
- .. versionadded:: 3.8
- Filename for a banner image in PNG format, used as ``QWizard::BannerPixmap``.
- It must be an absolute path.
- .. variable:: CPACK_IFW_PACKAGE_BACKGROUND
- .. versionadded:: 3.8
- Filename for a background image in PNG format, used as
- ``QWizard::BackgroundPixmap`` (only used by ``MacStyle``). It must be an
- absolute path.
- .. variable:: CPACK_IFW_PACKAGE_WIZARD_STYLE
- .. versionadded:: 3.8
- Wizard style to be used (``Modern``, ``Mac``, ``Aero`` or ``Classic``).
- .. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH
- .. versionadded:: 3.8
- Default width of the wizard in pixels. Setting a banner image will override
- this.
- .. variable:: CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT
- .. versionadded:: 3.8
- Default height of the wizard in pixels. Setting a watermark image will
- override this.
- .. variable:: CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST
- .. versionadded:: 3.20
- Set to ``OFF`` if the widget listing installer pages on the left side of the
- wizard should not be shown.
- It is ``ON`` by default, but will only have an effect if using QtIFW 4.0 or
- later.
- .. variable:: CPACK_IFW_PACKAGE_TITLE_COLOR
- .. versionadded:: 3.8
- Color of the titles and subtitles (takes an HTML color code, such as
- ``#88FF33``).
- .. variable:: CPACK_IFW_PACKAGE_STYLE_SHEET
- .. versionadded:: 3.15
- Filename for a stylesheet. It must be an absolute path.
- .. variable:: CPACK_IFW_TARGET_DIRECTORY
- Default target directory for installation.
- If :variable:`CPACK_PACKAGE_INSTALL_DIRECTORY` is set, this defaults to
- ``@ApplicationsDir@/${CPACK_PACKAGE_INSTALL_DIRECTORY}``. If that variable
- isn't set either, the default used is ``@RootDir@/usr/local``.
- Predefined variables of the form ``@...@`` are expanded by the
- `QtIFW scripting engine <https://doc.qt.io/qtinstallerframework/scripting.html>`_.
- .. variable:: CPACK_IFW_ADMIN_TARGET_DIRECTORY
- Default target directory for installation with administrator rights.
- You can use predefined variables.
- .. variable:: CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR
- .. versionadded:: 3.11
- Set to ``OFF`` if the target directory should not be deleted when uninstalling.
- Is ``ON`` by default
- .. variable:: CPACK_IFW_PACKAGE_GROUP
- The group, which will be used to configure the root package.
- .. variable:: CPACK_IFW_PACKAGE_NAME
- The root package name, which will be used if the configuration group is not
- specified.
- .. variable:: CPACK_IFW_PACKAGE_START_MENU_DIRECTORY
- .. versionadded:: 3.3
- Name of the default program group for the product in the Windows Start menu.
- If not specified, it defaults to :variable:`CPACK_IFW_PACKAGE_NAME`.
- .. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME
- .. versionadded:: 3.3
- Filename of the generated maintenance tool.
- The platform-specific executable file extension will be appended.
- If not specified, QtIFW provides a default name (``maintenancetool``).
- .. variable:: CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE
- .. versionadded:: 3.3
- Filename for the configuration of the generated maintenance tool.
- If not specified, QtIFW uses a default file name (``maintenancetool.ini``).
- .. variable:: CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS
- .. versionadded:: 3.3
- Set to ``ON`` if the installation path can contain non-ASCII characters.
- Only supported for QtIFW 2.0 and later. Older QtIFW versions will always
- allow non-ASCII characters.
- .. variable:: CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH
- .. versionadded:: 3.3
- Set to ``OFF`` if the installation path cannot contain space characters.
- Is ``ON`` for QtIFW less 2.0 tools.
- .. variable:: CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE
- .. versionadded:: 3.23
- Set to ``ON`` if command line interface features should be disabled.
- It is ``OFF`` by default and will only have an effect if using QtIFW 4.0 or
- later.
- .. variable:: CPACK_IFW_PACKAGE_CONTROL_SCRIPT
- .. versionadded:: 3.3
- Filename for a custom installer control script.
- .. variable:: CPACK_IFW_PACKAGE_RESOURCES
- .. versionadded:: 3.7
- List of additional resources (``.qrc`` files) to include in the installer
- binary. They should be specified as absolute paths and no two resource files
- can have the same file name.
- You can use the :command:`cpack_ifw_add_package_resources` command to resolve
- relative paths.
- .. variable:: CPACK_IFW_PACKAGE_FILE_EXTENSION
- .. versionadded:: 3.10
- The target binary extension.
- On Linux, the name of the target binary is automatically extended with
- ``.run``, if you do not specify the extension.
- On Windows, the target is created as an application with the extension
- ``.exe``, which is automatically added, if not supplied.
- On Mac, the target is created as an DMG disk image with the extension
- ``.dmg``, which is automatically added, if not supplied.
- .. variable:: CPACK_IFW_REPOSITORIES_ALL
- The list of remote repositories.
- The default value of this variable is computed by CPack and contains
- all repositories added with :command:`cpack_ifw_add_repository`
- or updated with :command:`cpack_ifw_update_repository`.
- .. variable:: CPACK_IFW_DOWNLOAD_ALL
- If this is ``ON``, all components will be downloaded. If not set, the
- behavior is determined by whether :command:`cpack_configure_downloads` has
- been called with the ``ALL`` option or not.
- .. variable:: CPACK_IFW_PACKAGE_PRODUCT_IMAGES
- .. versionadded:: 3.23
- A list of images to be shown on the ``PerformInstallationPage``. These
- must be absolute paths and the images must be in PNG format.
- This feature is available for QtIFW 4.0.0 and later.
- .. variable:: CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS
- .. versionadded:: 3.31
- A list of URLs associated with the ProductImages.
- Only used if ``CPACK_IFW_PACKAGE_PRODUCT_IMAGES`` is defined
- and it has the same size.
- This feature is available for QtIFW 4.0.0 and later.
- .. variable:: CPACK_IFW_PACKAGE_RUN_PROGRAM
- .. versionadded:: 3.23
- Command executed after the installer is finished, if the user accepts the
- action. Provide the full path to the application, as found when installed.
- This typically means the path should begin with the QtIFW predefined variable
- ``@TargetDir@``.
- This feature is available for QtIFW 4.0.0 and later.
- .. variable:: CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS
- .. versionadded:: 3.23
- List of arguments passed to the program specified in
- :variable:`CPACK_IFW_PACKAGE_RUN_PROGRAM`.
- This feature is available for QtIFW 4.0.0 and later.
- .. variable:: CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION
- .. versionadded:: 3.23
- Text shown next to the check box for running the program after the
- installation. If :variable:`CPACK_IFW_PACKAGE_RUN_PROGRAM` is set but no
- description is provided, QtIFW will use a default message like
- ``Run <Name> now``.
- This feature is available for QtIFW 4.0.0 and later.
- .. variable:: CPACK_IFW_PACKAGE_SIGNING_IDENTITY
- .. versionadded:: 3.23
- Allows specifying a code signing identity to be used for signing the generated
- app bundle. Only available on macOS, ignored on other platforms.
- .. variable:: CPACK_IFW_ARCHIVE_FORMAT
- .. versionadded:: 3.23
- Set the format used when packaging new component data archives. If you omit
- this option, the ``7z`` format will be used as a default. Supported formats:
- * 7z
- * zip
- * tar.gz
- * tar.bz2
- * tar.xz
- .. note::
- If the Qt Installer Framework tools were built without libarchive support,
- only ``7z`` format is supported.
- This feature is available for QtIFW 4.2.0 and later.
- .. variable:: CPACK_IFW_ARCHIVE_COMPRESSION
- .. versionadded:: 3.23
- Archive compression level. The allowable values are:
- * 0 (*No compression*)
- * 1 (*Fastest compression*)
- * 3 (*Fast compression*)
- * 5 (*Normal compression*)
- * 7 (*Maximum compression*)
- * 9 (*Ultra compression*)
- If this variable is not set, QtIFW will use a default compression level,
- which will typically be 5 (*Normal compression*).
- .. note::
- Some formats do not support all the possible values. For example ``zip``
- compression only supports values from 1 to 7.
- This feature is available for QtIFW 4.2.0 and later.
- Components
- """"""""""
- .. variable:: CPACK_IFW_RESOLVE_DUPLICATE_NAMES
- Resolve duplicate names when installing components with groups.
- .. variable:: CPACK_IFW_PACKAGES_DIRECTORIES
- Additional prepared packages directories that will be used to resolve
- dependent components.
- .. variable:: CPACK_IFW_REPOSITORIES_DIRECTORIES
- .. versionadded:: 3.10
- Additional prepared repository directories that will be used to resolve and
- repack dependent components.
- This feature is available for QtIFW 3.1 and later.
- QtIFW Tools
- """""""""""
- .. variable:: CPACK_IFW_FRAMEWORK_VERSION
- .. versionadded:: 3.3
- The version of the QtIFW tools that will be used. This variable is set
- by the :module:`CPackIFW` module.
- The following variables provide the locations of the QtIFW
- command-line tools as discovered by the :module:`CPackIFW` module.
- These variables are cached, and may be configured if needed.
- .. variable:: CPACK_IFW_ARCHIVEGEN_EXECUTABLE
- .. versionadded:: 3.19
- The path to ``archivegen``.
- .. variable:: CPACK_IFW_BINARYCREATOR_EXECUTABLE
- The path to ``binarycreator``.
- .. variable:: CPACK_IFW_REPOGEN_EXECUTABLE
- The path to ``repogen``.
- .. variable:: CPACK_IFW_INSTALLERBASE_EXECUTABLE
- The path to ``installerbase``.
- .. variable:: CPACK_IFW_DEVTOOL_EXECUTABLE
- The path to ``devtool``.
- Hints for Finding QtIFW
- """""""""""""""""""""""
- Generally, the CPack ``IFW`` generator automatically finds QtIFW tools.
- The following (in order of precedence) can also be set to augment the
- locations normally searched by :command:`find_program`:
- .. variable:: CPACK_IFW_ROOT
- .. versionadded:: 3.9
- CMake variable
- .. envvar:: CPACK_IFW_ROOT
- .. versionadded:: 3.9
- Environment variable
- .. variable:: QTIFWDIR
- CMake variable
- .. envvar:: QTIFWDIR
- Environment variable
- .. note::
- The specified path should not contain ``bin`` at the end
- (for example: ``D:\\DevTools\\QtIFW2.0.5``).
- Other Settings
- ^^^^^^^^^^^^^^
- Online installer
- """"""""""""""""
- By default, this generator generates an *offline installer*. This means
- that all packaged files are fully contained in the installer executable.
- In contrast, an *online installer* will download some or all components from
- a remote server.
- The ``DOWNLOADED`` option in the :command:`cpack_add_component` command
- specifies that a component is to be downloaded. Alternatively, the ``ALL``
- option in the :command:`cpack_configure_downloads` command specifies that
- ``all`` components are to be be downloaded.
- The :command:`cpack_ifw_add_repository` command and the
- :variable:`CPACK_IFW_DOWNLOAD_ALL` variable allow for more specific
- configuration.
- When there are online components, CPack will write them to archive files.
- The help page of the :module:`CPackComponent` module, especially the section
- on the :command:`cpack_configure_downloads` function, explains how to make
- these files accessible from a download URL.
- Internationalization
- """"""""""""""""""""
- .. versionadded:: 3.9
- Some variables and command arguments support internationalization via
- CMake script. This is an optional feature.
- Installers created by QtIFW tools have built-in support for
- internationalization and many phrases are localized to many languages,
- but this does not apply to the description of your components and groups.
- Localization of the description of your components and groups is useful for
- users of your installers.
- A localized variable or argument can contain a single default value, and
- after that a set of pairs with the name of the locale and the localized value.
- For example:
- .. code-block:: cmake
- set(LOCALIZABLE_VARIABLE "Default value"
- en "English value"
- en_US "American value"
- en_GB "Great Britain value"
- )
- See Also
- ^^^^^^^^
- Qt Installer Framework Manual:
- * Index page:
- https://doc.qt.io/qtinstallerframework/index.html
- * Component Scripting:
- https://doc.qt.io/qtinstallerframework/scripting.html
- * Predefined Variables:
- https://doc.qt.io/qtinstallerframework/scripting.html#predefined-variables
- * Promoting Updates:
- https://doc.qt.io/qtinstallerframework/ifw-updates.html
- Download Qt Installer Framework for your platform from Qt site:
- https://download.qt.io/official_releases/qt-installer-framework
|