Qt 安装脚本中的版本占位符

Qt 安装脚本中的版本占位符,qt,qt-installer,Qt,Qt Installer,我们正在使用Qt安装程序框架创建产品安装程序。大多数事情都进行得很顺利,但仍有一些未解决的问题 每次我们创建一个新的产品版本时(这种情况经常发生),我们都必须更新package.xml中标记的内容。但是,我们还需要更改安装程序在installscript.qs中创建的链接的名称,以便客户端能够区分两个并行安装的程序版本 例如,在这里,安装后,类似于MyApplication-2.1的链接应出现在startmenu中 Component.prototype.createOperations = f

我们正在使用Qt安装程序框架创建产品安装程序。大多数事情都进行得很顺利,但仍有一些未解决的问题

每次我们创建一个新的产品版本时(这种情况经常发生),我们都必须更新
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强制使用软件包版本。