CPack IFW 生成器

版本 3.1 中新增。

配置并运行 Qt Installer Framework 来生成 Qt 安装程序。

概述

这个 cpack generatorQt Installer Framework (QtIFW) 生成配置和元信息,并运行 QtIFW 工具来生成 Qt 安装程序。

QtIFW 提供了工具和实用程序,用于为 Qt 支持的平台(Linux、Microsoft Windows 和 macOS)创建安装程序。

要使用此生成器,需要安装 QtIFW。CPackIFW 模块会查找 QtIFW 命令行工具的位置,并定义了几个命令来控制此生成器的行为。请参阅 查找 QtIFW 的提示

变量

您可以使用以下变量来更改 CPack IFW 生成器的行为。

调试

CPACK_IFW_VERBOSE

3.3 版本中新增。

设置为 ON 可启用额外的调试输出。默认值为 OFF

打包

CPACK_IFW_PACKAGE_TITLE

显示在标题栏上的安装程序名称。如果未指定,则默认为 CPACK_PACKAGE_DESCRIPTION_SUMMARY

CPACK_IFW_PACKAGE_PUBLISHER

软件的发布者(如在 Windows 控制面板中所示)。如果未指定,则默认为 CPACK_PACKAGE_VENDOR

CPACK_IFW_PRODUCT_URL

指向包含您网站上产品信息的页面的 URL。

CPACK_IFW_PACKAGE_ICON

自定义安装程序图标的文件名。它必须是绝对路径。在 macOS 上应为 .icns 文件,在 Windows 上应为 .ico 文件。在其他平台上将被忽略。

CPACK_IFW_PACKAGE_WINDOW_ICON

安装程序应用程序的自定义窗口图标(PNG 格式)的文件名。它必须是绝对路径。

用作 QWizard::LogoPixmap 的徽标图像(PNG 格式)的文件名。它必须是绝对路径。

CPACK_IFW_PACKAGE_WATERMARK

版本 3.8 新增。

用作 QWizard::WatermarkPixmap 的水印图像(PNG 格式)的文件名。它必须是绝对路径。

CPACK_IFW_PACKAGE_BANNER

版本 3.8 新增。

用作 QWizard::BannerPixmap 的横幅图像(PNG 格式)的文件名。它必须是绝对路径。

CPACK_IFW_PACKAGE_BACKGROUND

版本 3.8 新增。

用作 QWizard::BackgroundPixmap 的背景图像(PNG 格式)的文件名(仅用于 MacStyle)。它必须是绝对路径。

CPACK_IFW_PACKAGE_WIZARD_STYLE

版本 3.8 新增。

要使用的向导样式(ModernMacAeroClassic)。

CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH

版本 3.8 新增。

向导的默认宽度(以像素为单位)。设置横幅图像将覆盖此设置。

CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT

版本 3.8 新增。

向导的默认高度(以像素为单位)。设置水印图像将覆盖此设置。

CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST

在 3.20 版本中添加。

设置为 OFF 可隐藏在向导左侧列出安装程序页面的控件。

默认值为 ON,但仅在 QtIFW 4.0 或更高版本中使用时才有效。

CPACK_IFW_PACKAGE_TITLE_COLOR

版本 3.8 新增。

标题和副标题的颜色(接受 HTML 颜色代码,例如 #88FF33)。

CPACK_IFW_PACKAGE_STYLE_SHEET

版本 3.15 新增。

样式表的文件名。它必须是绝对路径。

CPACK_IFW_TARGET_DIRECTORY

默认安装目标目录。如果设置了 CPACK_PACKAGE_INSTALL_DIRECTORY,则默认为 @ApplicationsDir@/${CPACK_PACKAGE_INSTALL_DIRECTORY}。如果该变量也未设置,则默认使用 @RootDir@/usr/local@...@ 形式的预定义变量会被 QtIFW 脚本引擎 扩展。

CPACK_IFW_ADMIN_TARGET_DIRECTORY

需要管理员权限的默认安装目标目录。

您可以使用预定义变量。

CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR

3.11 版本新增。

设置为 OFF 可在卸载时删除目标目录。

默认值为 ON

CPACK_IFW_PACKAGE_GROUP

用于配置根软件包的组。

CPACK_IFW_PACKAGE_NAME

根软件包的名称,如果未指定配置组,则使用该名称。

CPACK_IFW_PACKAGE_START_MENU_DIRECTORY

3.3 版本中新增。

在 Windows 开始菜单中,产品默认程序组的名称。如果未指定,则默认为 CPACK_IFW_PACKAGE_NAME

CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME

3.3 版本中新增。

生成的维护工具的文件名。将附加特定于平台的*.exe*扩展名。

如果未指定,QtIFW 会提供一个默认名称(maintenancetool)。

CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE

3.3 版本中新增。

生成的维护工具的配置文件名。

如果未指定,QtIFW 会使用默认文件名(maintenancetool.ini)。

CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS

3.3 版本中新增。

设置为 ON 可允许安装路径包含非 ASCII 字符。仅支持 QtIFW 2.0 及更高版本。较旧的 QtIFW 版本将始终允许非 ASCII 字符。

CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH

3.3 版本中新增。

设置为 OFF 可禁止安装路径包含空格字符。

对于 QtIFW 2.0 以下的工具,此值为 ON

CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE

在版本 3.23 中添加。

设置为 ON 可禁用命令行界面功能。默认值为 OFF,并且仅在 QtIFW 4.0 或更高版本中使用时才有效。

CPACK_IFW_PACKAGE_CONTROL_SCRIPT

3.3 版本中新增。

自定义安装程序控制脚本的文件名。

CPACK_IFW_PACKAGE_RESOURCES

3.7 版本中新增。

要包含在安装程序二进制文件中的其他资源(.qrc 文件)的列表。应指定为绝对路径,并且不能有两个资源文件具有相同的文件名。

您可以使用 cpack_ifw_add_package_resources() 命令来解析相对路径。

CPACK_IFW_PACKAGE_FILE_EXTENSION

3.10 版本新增。

目标二进制文件的扩展名。

在 Linux 上,如果未指定扩展名,则目标二进制文件的名称会自动附加 .run

在 Windows 上,目标将创建为带有 .exe 扩展名的应用程序,如果未提供,此扩展名会自动添加。

在 Mac 上,目标将创建为带有 .dmg 扩展名的 DMG 磁盘映像,如果未提供,此扩展名会自动添加。

CPACK_IFW_REPOSITORIES_ALL

远程存储库列表。

此变量的默认值由 CPack 计算,并包含通过 cpack_ifw_add_repository() 添加或通过 cpack_ifw_update_repository() 更新的所有存储库。

CPACK_IFW_DOWNLOAD_ALL

如果此项为 ON,则将下载所有组件。如果未设置,则行为由是否已调用 cpack_configure_downloads() 并使用 ALL 选项决定。

CPACK_IFW_PACKAGE_PRODUCT_IMAGES

在版本 3.23 中添加。

要在 PerformInstallationPage 上显示的图像列表。这些必须是绝对路径,并且图像必须是 PNG 格式。

此功能适用于 QtIFW 4.0.0 及更高版本。

CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS

在版本 3.31 中添加。

与 ProductImages 关联的 URL 列表。仅当定义了 CPACK_IFW_PACKAGE_PRODUCT_IMAGES 且大小相同时使用。

此功能适用于 QtIFW 4.0.0 及更高版本。

CPACK_IFW_PACKAGE_RUN_PROGRAM

在版本 3.23 中添加。

如果用户接受该操作,则在安装程序完成后执行的命令。提供安装时找到的应用程序的完整路径。这通常意味着路径应以 QtIFW 预定义变量 @TargetDir@ 开头。

此功能适用于 QtIFW 4.0.0 及更高版本。

CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS

在版本 3.23 中添加。

传递给 CPACK_IFW_PACKAGE_RUN_PROGRAM 中指定的程序的参数列表。

此功能适用于 QtIFW 4.0.0 及更高版本。

CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION

在版本 3.23 中添加。

显示在安装后运行程序的复选框旁边的文本。如果设置了 CPACK_IFW_PACKAGE_RUN_PROGRAM 但未提供描述,QtIFW 将使用默认消息,例如 Run <Name> now

此功能适用于 QtIFW 4.0.0 及更高版本。

CPACK_IFW_PACKAGE_SIGNING_IDENTITY

在版本 3.23 中添加。

允许指定用于为生成的应用程序包签名(codesigning)的代码签名身份。仅在 macOS 上可用,在其他平台上被忽略。

CPACK_IFW_ARCHIVE_FORMAT

在版本 3.23 中添加。

设置打包新组件数据存档时使用的格式。如果省略此选项,则默认使用 7z 格式。支持的格式:

  • 7z

  • zip

  • tar.gz

  • tar.bz2

  • tar.xz

注意

如果 Qt Installer Framework 工具在没有 libarchive 支持的情况下构建,则仅支持 7z 格式。

此功能适用于 QtIFW 4.2.0 及更高版本。

CPACK_IFW_ARCHIVE_COMPRESSION

在版本 3.23 中添加。

存档压缩级别。允许的值为:

  • 0 (无压缩)

  • 1 (最快压缩)

  • 3 (快速压缩)

  • 5 (普通压缩)

  • 7 (最大压缩)

  • 9 (超强压缩)

如果未设置此变量,QtIFW 将使用默认压缩级别,通常为 5(普通压缩)。

注意

某些格式不支持所有可能的值。例如,zip 压缩仅支持 1 到 7 的值。

此功能适用于 QtIFW 4.2.0 及更高版本。

组件

CPACK_IFW_RESOLVE_DUPLICATE_NAMES

在安装具有组的组件时,解决重复名称的问题。

CPACK_IFW_PACKAGES_DIRECTORIES

用于解析依赖组件的附加已准备好的软件包目录。

CPACK_IFW_REPOSITORIES_DIRECTORIES

3.10 版本新增。

用于解析和重新打包依赖组件的附加已准备好的存储库目录。

此功能适用于 QtIFW 3.1 及更高版本。

QtIFW 工具

CPACK_IFW_FRAMEWORK_VERSION

3.3 版本中新增。

将使用的 QtIFW 工具的版本。此变量由 CPackIFW 模块设置。

以下变量提供了 CPackIFW 模块发现的 QtIFW 命令行工具的位置。这些变量已缓存,如有需要可以进行配置。

CPACK_IFW_ARCHIVEGEN_EXECUTABLE

3.19 版本新增。

archivegen 的路径。

CPACK_IFW_BINARYCREATOR_EXECUTABLE

binarycreator 的路径。

CPACK_IFW_REPOGEN_EXECUTABLE

repogen 的路径。

CPACK_IFW_INSTALLERBASE_EXECUTABLE

installerbase 的路径。

CPACK_IFW_DEVTOOL_EXECUTABLE

devtool 的路径。

查找 QtIFW 的提示

通常,CPack IFW 生成器会自动找到 QtIFW 工具。以下变量(按优先级顺序)也可以设置,以增强 find_program() 通常搜索的位置:

CPACK_IFW_ROOT

版本 3.9 中添加。

CMake 变量

CPACK_IFW_ROOT

版本 3.9 中添加。

环境变量

QTIFWDIR

CMake 变量

QTIFWDIR

环境变量

注意

指定的路径不应以 bin 结尾(例如:D:\\DevTools\\QtIFW2.0.5)。

其他设置

在线安装程序

默认情况下,此生成器生成的是*离线安装程序*。这意味着所有打包的文件都完全包含在安装程序的可执行文件中。

相比之下,*在线安装程序*将从远程服务器下载部分或全部组件。

cpack_add_component() 命令中的 DOWNLOADED 选项指定要下载组件。或者,cpack_configure_downloads() 命令中的 ALL 选项指定将下载*所有*组件。

cpack_ifw_add_repository() 命令和 CPACK_IFW_DOWNLOAD_ALL 变量允许更具体的配置。

当存在在线组件时,CPack 会将它们写入存档文件。 CPackComponent 模块的帮助页,特别是关于 cpack_configure_downloads() 函数的部分,解释了如何使这些文件可从下载 URL 访问。

国际化

版本 3.9 中添加。

某些变量和命令参数通过 CMake 脚本支持国际化。这是一个可选功能。

由 QtIFW 工具创建的安装程序具有内置的国际化支持,许多短语都已本地化为多种语言,但这不适用于您的组件和组的描述。

对您的组件和组描述进行本地化对于安装程序用户很有用。

本地化变量或参数可以包含一个默认值,之后是一组带有区域设置名称和本地化值的对。

例如

set(LOCALIZABLE_VARIABLE "Default value"
  en "English value"
  en_US "American value"
  en_GB "Great Britain value"
  )

另请参阅

Qt Installer Framework 手册

从 Qt 网站下载适用于您平台的 Qt Installer Framework

https://download.qt.io/official_releases/qt-installer-framework