CPack WIX 在安装树之外安装一个文件

Posted

技术标签:

【中文标题】CPack WIX 在安装树之外安装一个文件【英文标题】:CPack WIX install a file outside the install tree 【发布时间】:2018-05-16 05:39:40 【问题描述】:

我正在使用 CPack WIX 生成器来创建安装程序。安装程序需要在目标系统的 %ALLUSERSPROFILE%\foo\ 文件夹中安装一个文件。

我找不到在安装树之外安装文件的方法 (C:\Program Files\foo...)

如何做到这一点?

【问题讨论】:

如果可以通过这个,可以找到解决方案cmake.org/cmake/help/v3.9/module/CPackWIX.html 是否有一些指向此页面可能指示解决方案的位置的指针?我已经读了很多次这个页面,但还没有看到一个可能的解决方案。 Lil 很忙,我会努力寻找解决方案@Pat 【参考方案1】:

我对 CPack 不熟悉,但 MSI System Folder Property 通常是 CommonAppDataFolder。所以本质上,您可以将其用作组件的目标文件夹,该组件托管您希望在%ALLUSERSPROFILE% 中安装的文件和资源。


文件夹重定向:不用多说,您可能应该知道这些系统文件夹属性中的一些重定向基于是否安装了软件包per- machineper-user - 与安装期间ALLUSERS 的值有关。有关详细信息,请参阅链接(“安装上下文”和“单包创作”很有启发性)。你提到的文件夹应该是稳定的而不是重定向的。

个人意见:此文件夹重定向和按用户安装功能是我最不喜欢的 MSI 部分。我的做法是尽可能在每台机器上安装。重要的是(以及这个小小的咆哮的原因):能够安装每个用户的软件包,根本不应该以 CommonAppDataFolder 为目标(因为它不会重定向到每个用户的目标)。

【讨论】:

是的,我知道 MSI 支持这一点,但我需要使用 CPack 完成它。 CPack WIX 上的文档非常有限。它只解释了一般如何修补 WIX XML 文件,而不是如何修补它以完成此特定任务。【参考方案2】:

目前这是不可能的。 CMake 目前不允许修补目录。 见https://gitlab.kitware.com/cmake/cmake/issues/14890。

【讨论】:

以上是关于CPack WIX 在安装树之外安装一个文件的主要内容,如果未能解决你的问题,请参考以下文章

WiX创建了msi文件,奇怪的主要升级行为

Wix:在 Wix 之外运行命令时,运行外部 InstallShield 安装程序失败,退出代码为 -3

CMake系列:WIX打包

CMake系列:WIX打包

cpack:如何在安装过程中将程序与文件扩展名关联?

WIX 中功能的自定义操作