Место установки компонента инфраструктуры Qt Installer

Я создал пакет установщика на основе инфраструктуры установщика Qt с несколькими компонентами. Мне нужно было установить каждый компонент в соответствующем каталоге.

Можно ли указать целевой каталог для отдельного компонента? Я имею в виду что-то вроде этого:

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

Заранее спасибо.

3 ответа

Решение

Вам нужно это на основе документации:

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

На этот вопрос уже дан ответ, но я подумал, что добавлю более подробный ответ.

В документации говорится, что "для каждого компонента вы можете указать один сценарий, который подготавливает операции, выполняемые установщиком".

Среда установки 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.

В моем случае строка component.addOperation("Extract",... привела к извлечению в @ [email protected]

Вместо этого используйте один из параметров «Операции>» в файле Package.xml.

Другие вопросы по тегам