CPack WIX 生成器

CPack WIX 生成器特定选项

在 3.7 版本加入: 支持 CPACK_COMPONENT_<compName>_DISABLED 变量。

特定于 CPack WIX 生成器的变量

以下变量特定于使用 WiX 在 Windows 上构建的安装程序。

CPACK_WIX_UPGRADE_GUID

升级 GUID(Product/@UpgradeCode

除非明确提供,否则将自动生成。

它应该明确设置为一个常量生成的全局唯一标识符 (GUID),以允许您的安装程序替换使用相同 GUID 的现有安装。

例如,您可以在 CMakeLists.txt 中将此变量显式设置为默认生成的值。您不应使用不是您自己生成的或可能属于其他项目的 GUID。

GUID 应具有以下固定长度语法:

XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

(每个X代表一个大写的十六进制数字)

CPACK_WIX_PRODUCT_GUID

产品 GUID(Product/@Id

除非明确提供,否则将自动生成。

如果明确提供,这将设置您的安装程序的产品 ID。

如果安装程序检测到使用相同 GUID 的预先存在的安装,它将中止。

GUID 应使用为 CPACK_WIX_UPGRADE_GUID 描述的语法。

CPACK_WIX_LICENSE_RTF

RTF 许可证文件

如果 CPACK_RESOURCE_FILE_LICENSE 具有 .rtf 扩展名,则按原样使用。

如果 CPACK_RESOURCE_FILE_LICENSE 具有 .txt 扩展名,它会被 WIX 生成器隐式转换为 RTF。 .txt 文件的预期编码为 UTF-8。

使用 CPACK_WIX_LICENSE_RTF 您可以覆盖 WIX 生成器使用的许可证文件,以防 CPACK_RESOURCE_FILE_LICENSE 格式不受支持或 .txt -> .rtf 转换无法按预期工作。

CPACK_WIX_PRODUCT_ICON

添加/删除程序中程序名称旁边显示的图标。

如果设置,则使用此图标代替默认图标。

CPACK_WIX_UI_REF

此变量允许您覆盖 WiX 模板中 <UIRef> 元素的 ID。

如果没有定义 CPack 组件,则默认为“WixUI_InstallDir”,否则为“WixUI_FeatureTree”。

CPACK_WIX_UI_BANNER

位图将出现在除欢迎和完成对话框之外的所有安装程序页面的顶部。

如果设置,此图像将替换默认的横幅图像。

此图像必须为 493 x 58 像素。

CPACK_WIX_UI_DIALOG

欢迎和完成对话框中使用的背景位图。

如果设置了此变量,安装程序将替换默认对话框图像。

此图像必须为 493 x 312 像素。

CPACK_WIX_PROGRAM_MENU_FOLDER

启动器的开始菜单文件夹名称。

如果未设置此变量,它将使用 CPACK_PACKAGE_NAME 进行初始化

在 3.16 版本加入: 如果此变量设置为 .,则应用程序快捷方式将直接在开始菜单中创建,卸载程序快捷方式将被省略。

CPACK_WIX_CULTURES

安装程序的语言

语言被编译到 WixUI 扩展库中。要使用它们,只需提供文化的名称。如果您在逗号或分号分隔列表中指定多个区域性标识符,将使用找到的第一个。您可以在以下位置找到支持的语言列表:https://wixtoolset.org//documentation/manual/v3/wixui/wixui_localization.html

CPACK_WIX_TEMPLATE

用于生成 WiX 的模板文件

如果设置了这个变量,指定的模板将用于生成 WiX wxs 文件。如果需要进一步自定义输出,则应使用此选项。

如果未设置此变量,将使用 CMake 中包含的默认 MSI 模板。

CPACK_WIX_PATCH_FILE

可选的 XML 文件列表,其中包含要插入到生成的 WiX 源中的片段。

在 3.5 版本加入: 支持列出多个补丁文件。

此可选变量可用于指定 WIX 生成器将用于将片段注入其生成的源文件的 XML 文件。

CPack WIX 生成器理解的补丁文件大致遵循此 RELAX NG 紧凑模式:

start = CPackWiXPatch

CPackWiXPatch = element CPackWiXPatch { CPackWiXFragment* }

CPackWiXFragment = element CPackWiXFragment
{
    attribute Id { string },
    fragmentContent*
}

fragmentContent = element * - CPackWiXFragment
{
    (attribute * { text } | text | fragmentContent)*
}

目前,可以将片段注入到大多数组件、文件、目录和功能元素中。

在 3.3 版本加入: 可以使用以下额外的特殊 ID:

  • #PRODUCT 用于``<Product>`` 元素。

  • #PRODUCFEATURE 用于根 <Feature> 元素。

在 3.7 版本加入: 支持修补任意 <Feature> 元素。

在 3.9 版本加入: 允许设置附加属性。

以下示例说明了这是如何工作的。

假设 WIX 生成器创建了以下 XML 元素:

<Component Id="CM_CP_applications.bin.my_libapp.exe" Guid="*"/>

以下 XML 补丁文件可用于将环境元素注入其中:

<CPackWiXPatch>
  <CPackWiXFragment Id="CM_CP_applications.bin.my_libapp.exe">
    <Environment Id="MyEnvironment" Action="set"
      Name="MyVariableName" Value="MyVariableValue"/>
  </CPackWiXFragment>
</CPackWiXPatch>
CPACK_WIX_EXTRA_SOURCES

额外的 WiX 源文件

该变量提供了一个可选的额外 WiX 源文件 (.wxs) 列表,这些文件应该被编译和链接。需要源文件的完整路径。

CPACK_WIX_EXTRA_OBJECTS

额外的 WiX 对象文件或库

此变量提供额外 WiX 对象 (.wixobj) 和/或 WiX 库 (.wixlib) 文件的可选列表。需要对象和库的完整路径。

CPACK_WIX_EXTENSIONS

此变量为 WiX 工具 light 和 candle 提供了一个附加扩展列表。

CPACK_WIX_<TOOL>_EXTENSIONS

这是 CPACK_WIX_EXTENSIONS 的工具特定版本。 <TOOL> 可以是 LIGHT 或 CANDLE。

CPACK_WIX_<TOOL>_EXTRA_FLAGS

此列表变量允许您将附加标志传递给 WiX 工具“<TOOL>”。

需要您自担风险使用它。 CPack 的未来版本可能会生成可能与您自己的标志冲突的标志。

<TOOL> 可以是 LIGHT 或 CANDLE。

CPACK_WIX_CMAKE_PACKAGE_REGISTRY

如果设置了此变量,生成的安装程序将在 Windows 注册表项 HKEY_LOCAL_MACHINE\Software\Kitware\CMake\Packages\<PackageName> 中创建一个条目``<PackageName>`` 的值由此变量提供。

假设您还安装了 CMake 配置文件,这将允许其他 CMake 项目使用 find_package() 命令找到您的包。

CPACK_WIX_PROPERTY_<PROPERTY>

在 3.1 版本加入.

此变量可用于为 Windows Installer 属性“<PROPERTY>”提供值

以下列表包含一些示例属性,可用于自定义“程序和功能”(也称为“添加或删除程序”)下的信息

  • ARPCOMMENTS - 评论

  • ARPHELPLINK - 帮助和支持信息 URL

  • ARPURLINFOABOUT - 一般信息 URL

  • ARPURLUPDATEINFO - 更新信息 URL

  • ARPHELPTELEPHONE - 帮助和支持电话号码

  • ARPSIZE - 应用程序的大小(以千字节为单位)

CPACK_WIX_ROOT_FEATURE_TITLE

在 3.7 版本加入.

在 WIX 安装程序中设置根安装功能的名称。与组件的 CPACK_COMPONENT_<compName>_DISPLAY_NAME 相同。

CPACK_WIX_ROOT_FEATURE_DESCRIPTION

在 3.7 版本加入.

在 WIX 安装程序中设置根安装功能的描述。与组件的 CPACK_COMPONENT_<compName>_DESCRIPTION 相同。

CPACK_WIX_SKIP_PROGRAM_FOLDER

在 3.7 版本加入.

如果此变量设置为 true,则生成的包的默认安装位置将直接为 CPACK_PACKAGE_INSTALL_DIRECTORY。安装位置不会相对低于 ProgramFiles 或 ProgramFiles64。

备注

使用此功能创建的安装程序不会考虑创建安装程序的系统与可能使用安装程序的系统之间的差异。

因此,安装程序可能是这样的。可能会尝试安装到不可用或意外的驱动器上,或者安装到不遵循执行安装的系统的本地化或约定的路径上。

CPACK_WIX_ROOT_FOLDER_ID

在 3.9 版本加入.

此变量允许指定自定义根文件夹 ID。生成器特定的“<64>”令牌可用于 32 位和 64 位变体的文件夹 ID。在 32 位构建中,令牌将扩展为空,而在 64 位构建中,它将扩展为“64”。

当取消设置时,生成的安装程序将默认安装到“ProgramFiles<64>Folder”。

CPACK_WIX_ROOT

可以选择将此变量设置为自定义 WiX 工具集安装的根目录。

当未指定的 CPack 将尝试通过 WIX 环境变量定位 WiX 工具集安装时。

CPACK_WIX_CUSTOM_XMLNS

在 3.19 版本加入.

此变量提供使用 WiX 扩展所需的自定义命名空间声明的列表。每个声明都应该采用 name=url 的形式,其中 name 是没有通常的 xmlns: 前缀的普通命名空间,url 是一个不带引号的命名空间 url。可以在此处找到常见的 WiX 模式列表:https://wixtoolset.org/documentation/manual/v3/xsd/

CPACK_WIX_SKIP_WIX_UI_EXTENSION

在 3.23 版本加入.

如果设置了此变量,则跳过包含 WixUIExtensions,即在执行 WiX light 工具期间不包含 -ext "WixUIExtension" 命令行。

CPACK_WIX_ARCHITECTURE

在 3.24 版本加入.

可以选择设置此变量以指定安装程序的目标体系结构。例如,可以设置为 x64arm64

未指定时,CPack 将默认为 x64x86