【问题标题】:Qt Installer framework - Copying files to location other than install directoryQt 安装程序框架 - 将文件复制到安装目录以外的位置
【发布时间】:2014-02-26 22:48:43
【问题描述】:

我知道,无论放在包/组件目录/数据中的任何数据,都会被复制到安装目录。我的意思是,如果我在 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)复制到其他路径。我如何做到这一点。

【问题讨论】:

标签: linux qt build qt-installer


【解决方案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...") 但这会带来其他问题题外话。

【讨论】:

  • 我的做法或多或少相似,但想知道是否有更好的方法。在有人提出更好的答案之前,这对我来说已经足够了。
【解决方案2】:

这对我们有用(Qt 安装程序,macOS):

var args = ["cp", "-R", "@TargetDir@/MyApp.app", "/Applications"];
component.addOperation("Execute", args);

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2013-06-17
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多