我使用的是最新的Qt Installer版本2.0.3 我已经为我的应用程序创建了一个安装程序,但是当我尝试安装它时,我收到以下错误消息:"您选择的文件夹已经存在且包含安装。选择不同的安装目标"
如何指示Qt Installer覆盖旧版本?这是官方支持吗?
答案 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);
}
}