Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt安装程序框架:maintenancetool--checkupdates标志不返回任何内容_Qt_Qt Installer - Fatal编程技术网

Qt安装程序框架:maintenancetool--checkupdates标志不返回任何内容

Qt安装程序框架:maintenancetool--checkupdates标志不返回任何内容,qt,qt-installer,Qt,Qt Installer,与Qt应用程序的在线安装程序捆绑的维护工具可以无头运行,并带有“-checkupdates”标志,该标志返回更新信息(如果可用)(请参阅)。不幸的是,即使有已知的更新可用,我也无法让这个命令实际返回任何内容。我可以从命令行启动maintenancetool,更新是可见的,但是尝试使用--checkupdates标志不会产生任何结果 QProcess update; update.setWorkingDirectory(QDir::currentPath()); update.start("mai

与Qt应用程序的在线安装程序捆绑的维护工具可以无头运行,并带有“-checkupdates”标志,该标志返回更新信息(如果可用)(请参阅)。不幸的是,即使有已知的更新可用,我也无法让这个命令实际返回任何内容。我可以从命令行启动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,但即使有更新,数据也始终为空。如果我尝试在命令行中运行该进程,它也不会产生任何结果,因此我认为代码没有问题。有什么想法吗?关于这方面的信息似乎不多。

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

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

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

findstr /c:"updates" checkUpdate.txt

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

你试过使用命令行吗?因为通常情况下,您的示例应该可以工作是的,如果我的语言有点含糊不清,那么很抱歉:使用--checkupdates标志从命令行调用维护工具不会创建任何输出。通常,这意味着没有可用的更新-如果使用UI,您可以看到更新吗?如果是,请检查--checkupdates运行的退出代码,如果是0,则表示已找到更新,如果是1,则没有更新。如果使用UI,我确实可以看到更新。我刚刚检查了退出代码,它是0,显然这意味着它正在查找更新?但如果是这样的话,那么不清楚为什么没有产出。我链接到的帖子指出应该捕获输出以确定是否有更新,但看起来我应该使用退出代码来确定是否有更新并相应地启动更新程序。不理想,但如果这是我的选择,那就是我的选择。