Qt安装框架组件安装位置

5

我使用Qt安装程序框架创建了一个具有多个组件的安装程序包。

我需要将每个组件安装到适当的目录中。

是否可以为各个组件指定目标目录?我的意思是像这样的东西:

var appData = installer.environmentVariable("AppData");
     if (appData != "")
         component.setValue("TargetDir", appData+ "/MyComponent");

Thank you in advance.


我通过添加“提取”操作解决了我的问题。 - Rustem
3个回答

12
这个问题已经有了答案,但我想补充一个更详细的答案。 documentation中指出:“对于每个组件,您可以指定一个脚本来准备安装程序执行的操作。”
Qt安装程序框架QtIFW附带了一组示例,其中之一称为modifyextract。使用它,我修改了我的package.xml文件以包含该行。
<Script>installscript.qs</Script>

我随后在我的软件包元目录中添加了一个名为installscript.qs的文件,其内容如下:

function Component()
{
}

Component.prototype.createOperationsForArchive = function(archive)
{
    // don't use the default operation
    // component.createOperationsForArchive(archive);

    // add an extract operation with a modified path
    component.addOperation("Extract", archive, "@TargetDir@/SubDirectoryName");
}

软件包数据文件夹中的文件随后被安装在子文件夹SubDirectoryName中。

与此同时,为了控制存档过程以及通过此回调流动的内容,请使用 archivegen:http://doc.qt.io/qtinstallerframework/ifw-tools.html#archivegen。QtIFW 将基本保持您的 7zip 文件不变,而不是将它们隐式地打包到另一个存档中。这将使您能够更加精确地使用此处的机制。请注意,它们的文件名将以软件包版本作为前缀,并在评估 archive 参数时包括该细节。示例存档参数:installer://com.mycompany.mypackage/1.0.0.0myarchive.7z - BuvinJ

1
根据文档,您需要这个:
提取 "Extract" 存档目标目录 将存档提取到目标目录。

0
在我的情况下,component.addOperation("Extract", ... 这一行代码导致提取到了 @TargetDir@。
相反,应该在 Package.xml 文件中使用 'Operations' 选项之一。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接