QtIFW - 安装程序配置文件中的平台独立路径。可能吗?
QtIFW - platform independent paths in installer configuration file. Is it possible?
我的安装程序有以下配置文件:
<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
是的,可以使用脚本。在某个地方(我不记得现在在哪里,但它是一个官方的 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")));
}
}
然后您必须修改 config.xml 以通过添加
来包含脚本
<ControlScript>installer.js</ControlScript>
如果这样设置不好,可以尝试在组件中设置。这是 controller and component.
中的脚本文档
我的安装程序有以下配置文件:
<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
是的,可以使用脚本。在某个地方(我不记得现在在哪里,但它是一个官方的 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")));
}
}
然后您必须修改 config.xml 以通过添加
来包含脚本<ControlScript>installer.js</ControlScript>
如果这样设置不好,可以尝试在组件中设置。这是 controller and component.
中的脚本文档