5

我创建了一个基于 Qt 安装程序框架的安装程序包,其中包含多个组件。我需要将每个组件安装在适当的目录中。

是否可以为单个组件指定目标目录?我指的是这样的事情:

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

先感谢您。

4

2 回答 2

12

这个问题已经回答了,但我想我会添加一个更详细的答案。

文档指出“对于每个组件,您可以指定一个脚本来准备安装程序要执行的操作。”

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 中

于 2013-11-26T14:06:11.953 回答
1

您需要根据文档进行此操作:

Extract "Extract" archive target directory Extracts archive to target directory.

于 2013-09-27T20:02:11.557 回答