QtIFW - независимые от платформы пути в файле конфигурации установщика. Является ли это возможным? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующий файл конфигурации для моего установщика:

<Installer>
    <Name>Application</Name>
    <Version>1.0.0</Version>
    <Title>Application</Title>
    <StartMenuDir>Application</StartMenuDir>
    <TargetDir>@HomeDir@\Company\Application</TargetDir>
    <MaintenanceToolName>MaintenanceTool</MaintenanceToolName>
    <AllowSpaceInPath>true</AllowSpaceInPath>
</Installer>

Есть ли возможность установки пути \Company\Application с независимыми от платформы слешами? Оригинальная документация не отвечает на этот вопрос https://doc.qt.io/qtinstallerframework/ifw-globalconfig.html

1 Ответ

1 голос
/ 09 апреля 2020

Да, это возможно с помощью скриптов. Где-то (я не могу вспомнить, где сейчас, но это был официальный учебник по qt) Я нашел эту функцию, которая выполняет преобразование, которое вы хотите:

var Dir = new function () {
    this.toNativeSparator = function (path) {
        if (systemInfo.productType === "windows")
            return path.replace(/\//g, '\\');
        return path;
    }
};

Эта функция может использоваться в скрипте для преобразования в собственные разделители (предупреждение с этого момента я объясняю концепцию: не принимайте код навсегда, так как он не проверен и может содержать ошибки). Вы можете создать сценарий, например

var Dir = new function () {
    this.toNativeSparator = function (path) {
        if (systemInfo.productType === "windows")
            return path.replace(/\//g, '\\');
        return path;
    }
};

function Controller()
{
  if (installer.isInstaller()) {
    installer.setValue("TargetDir", Dir.toNativeSparator(installer.value("TargetDir")));
  }
}

. Затем вам нужно изменить конфигурацию. xml, чтобы включить сценарий, добавив

<ControlScript>installer.js</ControlScript>

Если это не установлено должным образом, Вы можете попробовать установить его в компоненте. Вот документация для сценариев в контроллер и компонент .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...