2016-03-15 68 views
0

与Qt应用程序的联机安装程序捆绑在一起的维护工具据称可以通过“--checkupdates”标志无恶意运行,如果可用,返回更新信息(请参阅Qt Installer Framework: Auto Update)。不幸的是,即使存在已知的更新,我也无法获得该命令实际返回任何内容。我可以从命令行启动maintenancetool,并且更新可见,但试图使用--checkupdates标志不会产生任何结果。Qt安装程序框架:maintenancetool --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标志我能得到这个代码来打开maintenancetool,但是数据始终是空的,即使有更新。如果我尝试在命令行中运行进程,它也不会产生任何内容,所以我认为这不是代码问题。有任何想法吗?这里似乎没有很多信息。

+0

您是否尝试过使用命令行进行操作?因为通常您的示例应该可以工作 – Felix

+0

是的,如果我的语言有点含糊不清:使用--checkupdates标志从命令行调用维护工具不会产生输出。 –

+0

通常,这意味着没有更新可用 - 如果您使用UI,您能看到更新吗?如果是,请检查--checkupdates运行的退出代码,如果它为0,则表示已找到更新,如果为1,则表示没有更新。 – Felix

回答

0

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

0

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

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

findstr /c:"updates" checkUpdate.txt 

if %errorlevel% == 0 maintenancetool.exe --script=script.qs