Qt 安装脚本中的版本占位符
我们正在使用Qt安装程序框架创建产品安装程序。大多数事情都进行得很顺利,但仍有一些未解决的问题 每次我们创建一个新的产品版本时(这种情况经常发生),我们都必须更新Qt 安装脚本中的版本占位符,qt,qt-installer,Qt,Qt Installer,我们正在使用Qt安装程序框架创建产品安装程序。大多数事情都进行得很顺利,但仍有一些未解决的问题 每次我们创建一个新的产品版本时(这种情况经常发生),我们都必须更新package.xml中标记的内容。但是,我们还需要更改安装程序在installscript.qs中创建的链接的名称,以便客户端能够区分两个并行安装的程序版本 例如,在这里,安装后,类似于MyApplication-2.1的链接应出现在startmenu中 Component.prototype.createOperations = f
package.xml
中
标记的内容。但是,我们还需要更改安装程序在installscript.qs
中创建的链接的名称,以便客户端能够区分两个并行安装的程序版本
例如,在这里,安装后,类似于MyApplication-2.1
的链接应出现在startmenu中
Component.prototype.createOperations = function()
{
try {
// call the base create operations function
component.createOperations();
component.addOperation("CreateShortcut", "@TargetDir@/bin/MyApplication-2.1-vc14.exe", "@StartMenuDir@/MyApplication-2.1.lnk");
} catch (e) {
print(e);
}
}
不幸的是,我们无法编写@ProductVersion@
或@Version@
,而不是2.1
,它引用了package.xml
的
标记的内容。相反,@ProductVersion@
和@Version@
似乎是指config.xml
中
标记的内容,这不是所需的行为
我现在的问题是,每次版本编号时都需要同步,这似乎很容易出错。有一些解决方法吗?在Linux上,我使用sed,基于: 在我为生成安装程序而设置的qmake文件中:
# Generate version numbers in XML files
DATE_CMD="date --rfc-3339=date"
SED_DATE_CMD="find $$shell_path($$PWD) \\\( -name "package.xml" -or -name "config.xml" \\\) -exec sed -i \"s|@DATE@|`$$DATE_CMD`|g\" \"{}\" \;"
SED_VERSION_CMD="find $$shell_path($$PWD) \\\( -name "package.xml" -or -name "config.xml" \\\) -exec sed -i \"s|@VERSION@|$${VERSION}|g\" \"{}\" \;"
SED_DATE_UNDO="find $$shell_path($$PWD) \\\( -name "package.xml" -or -name "config.xml" \\\) -exec sed -i \"s|<ReleaseDate>`$$DATE_CMD`<|<ReleaseDate>@DATE@<|g\" \"{}\" \;"
SED_VERSION_UNDO="find $$shell_path($$PWD) \\\( -name "package.xml" -or -name "config.xml" \\\) -exec sed -i \"s|<Version>$${VERSION}<|<Version>@VERSION@<|g\" \"{}\" \;"
offlineInstaller.commands = \
$$SED_VERSION_CMD && \
$$SED_DATE_CMD && \
$$QTIFWDIR/bin/binarycreator --offline-only \
-c $$PWD/config/config.xml -p $$PWD/packages $$offlineInstaller.target && \
$$SED_VERSION_UNDO && \
$$SED_DATE_UNDO
#在XML文件中生成版本号
DATE_CMD=“日期--rfc-3339=日期”
SED\u DATE\u CMD=“find$$shell\u path($$PWD)\\(-name“package.xml”-或-name“config.xml”\\)-exec SED-i\'s|@DATE@`$$DATE\u CMD`$$g\\'{}\\”
SED\u VERSION\u CMD=“find$$shell\u path($$PWD)\\(-name“package.xml”-或-name“config.xml”\\)-exec SED-i\'s |@VERSION@|$${VERSION}g\“{}\”
SED\u DATE\u UNDO=“find$$shell\u path($$PWD)\\(-name“package.xml”-或-name“config.xml”\\)-exec SED-i\”您可以编写一个脚本,从packages.xml
中提取版本
,然后为附加版本的应用程序名创建一个变量,并将该变量用于TargetDir
和StartMenuDir
中的,但这可以调整为在不同的包中有不同的版本变量。我的沮丧与你的正好相反:我只想使用产品版本,但QtIFW强制使用软件包版本。