Qt安装程序,覆盖以前的版本

时间:2016-06-21 09:14:43

标签: qt qt-installer

我使用的是最新的Qt Installer版本2.0.3 我已经为我的应用程序创建了一个安装程序,但是当我尝试安装它时,我收到以下错误消息:"您选择的文件夹已经存在且包含安装。选择不同的安装目标"

如何指示Qt Installer覆盖旧版本?这是官方支持吗?

4 个答案:

答案 0 :(得分:2)

使用MaintenanceTool。它位于qt instalation的根文件夹中

答案 1 :(得分:0)

但是有点晚了但无论如何。

由于安装不一致,覆盖已被禁用 看一下这个错误报告:https://bugreports.qt.io/browse/QTIFW-482

但是,您可以通过在Controller Script中添加以下语句来实现此目的:

installer.setMessageBoxAutomaticAnswer( "OverwriteTargetDirectory", QMessageBox.Yes );

示例脚本(sample.qs):

function Controller()
{
    installer.autoRejectMessageBoxes();
    installer.setMessageBoxAutomaticAnswer( "OverwriteTargetDirectory", QMessageBox.Yes );

    // ...
}

这里是Controller Scripting文档的链接: http://doc.qt.io/qtinstallerframework/noninteractive.html

您现在可以使用自定义脚本启动安装程序:

$ installer --script sample.qs

答案 2 :(得分:0)

不,由于某种原因,它没有得到官方支持。为了让它工作,你必须做一些黑客攻击。我在my question的答案中列出了适合我的步骤。

答案 3 :(得分:0)

您应该在下面使用此代码。您的应用程序将始终拥有相同的 ID,并且您可以覆盖您的应用程序。

function Controller()
{
    installer.setValue("ProductUUID", "YourApplicationName");

    var previous = installer.value("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\YourApplicationName\\InstallLocation");
    if(previous !== "")
    {
        installer.setValue("TargetDir", previous);
        installer.setDefaultPageVisible(QInstaller.TargetDirectory, false);
    }
}