1

与 Qt 应用程序的在线安装程序捆绑在一起的维护工具据说可以使用“--checkupdates”标志无头运行,该标志返回更新信息(如果可用)(请参阅Qt 安装程序框架:自动更新)。不幸的是,即使有可用的已知更新,我也无法让此命令实际返回任何内容。我可以从命令行启动维护工具并且更新是可见的,但是尝试使用 --checkupdates 标志不会产生任何结果。

QProcess update;
update.setWorkingDirectory(QDir::currentPath());
update.start("maintenancetool --checkupdates");

// Wait until the maintenancetool is finished
update.waitForFinished();

// Read the output
QByteArray data = update.readAllStandardOutput();

如果删除 --checkupdates 标志,我可以获得此代码以打开维护工具,但即使有更新,数据也始终为空。如果我尝试在命令行中运行该过程,它也不会产生任何结果,所以我认为这不是代码问题。有任何想法吗?似乎没有很多关于这方面的信息。

4

2 回答 2

1

虽然我不知道它的原因,但问题似乎是--checkupdates标志没有返回任何数据。但是,根据是否有可用的更新,它确实具有适当的退出代码。我已经重写了我的应用程序以捕获退出代码并相应地启动维护工具(或不启动)。感觉像一个黑客,但它的工作原理。

于 2016-03-16T21:44:19.933 回答
0

如果没有可用的更新,维护工具将不返回任何内容。在启动维护工具之前,我将结果发送到文本文件,如下所示:

@echo off
maintenancetool.exe --checkupdates > checkUpdate.txt

findstr /c:"updates" checkUpdate.txt

if %errorlevel% == 0 maintenancetool.exe --script=script.qs
于 2016-12-12T14:32:09.423 回答