Место установки компонента инфраструктуры 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.