1

我知道,无论放在包/组件目录/数据中的任何数据,都将被复制到安装目录。我的意思是,如果我在 package/component dir/data/myapp、package/component dir/data/readme、package/component dir/data/license.txt 中有一个二进制文件、自述文件、license.txt,如果我选择了我的目标安装目录为“/opt/myfirstapp”,然后是inisde /opt/myfirstapp,我将复制3个文件,myapp,readme,license.txt。

话虽如此,我在包/组件目录/数据/中也有一个“/usr”目录,但这不是标准的“/usr”,它将位于根目录“/”中,它只是一个副本。现在在我的副本“/usr”中,我有一些目录层次结构和一些文件,例如 /usr/bin/myapp、/usr/lib/libmyapp.so、/usr/share/icons”等等,事实上很多。现在我希望将副本“/usr”内容复制到“/usr”(根文件夹中的原始 usr)。我还应该确保我只是将新内容添加到“/usr”(根 /usr),但删除任何现有内容。

问题很明确,我的数据目录中的一些文件必须转到目标安装目录,但必须将一些选定的文件(例如:/usr)复制到其他路径。我如何做到这一点。

4

2 回答 2

1

目前我们在我的公司有同样的问题:我们需要 2 个目标目录,一个用于 exe,一个用于库(嗯,它有点复杂,但简而言之......)。

在与Qt支持人员交谈并得到实际上不可能的答案后(“只有提取后才有可能。提取后,您可以使用复制或移动操作,不幸的是目前没有其他方法。”)我决定使用AdminTargetDir 作为第二个目标目录。这是因为没有其他方法可以将动态变量传递给 IFW。因此,在安装后,我调用了一个“finalizeInstall_patch.bat”文件,传递了 TargetDir 和 AdminTargetDir,这会将库目录从 TargetDir 移动到 AdminTargetDir。为什么是 .bat 补丁文件?因为实际上不可能使用 IFW 提供的方法移动目录。Qt 支持刚刚为我们的问题打开了一个建议票:https ://bugreports.qt-project.org/browse/QTIFW-595

我希望这个答案能帮助其他有同样类似问题的人。

注意:有一种方法可以移动目录(在 Windows 上),调用addOperation("Execute", "cmd /C move source dest...")但这会导致其他问题超出主题。

于 2014-12-04T08:49:23.963 回答
0

这对我们有用(Qt Installer,macOS):

var args = ["cp", "-R", "@TargetDir@/MyApp.app", "/Applications"];
component.addOperation("Execute", args);
于 2019-12-23T19:40:36.823 回答