From a285c02cc9c49eb2bd3af7e68d272426c60b5be0 Mon Sep 17 00:00:00 2001 From: momen Date: Sat, 4 Oct 2025 23:49:32 +0800 Subject: [PATCH] =?UTF-8?q?chore:=E8=BE=93=E5=87=BA=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/aptssupdater.cpp | 26 +++++++++++++++++--------- src/mainwindow.cpp | 9 ++++++++- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/aptssupdater.cpp b/src/aptssupdater.cpp index c4bd906..60e697a 100644 --- a/src/aptssupdater.cpp +++ b/src/aptssupdater.cpp @@ -18,8 +18,9 @@ QStringList aptssUpdater::getUpdateablePackages() QString command = R"(env LANGUAGE=en_US /usr/bin/apt -c /opt/durapps/spark-store/bin/apt-fast-conf/aptss-apt.conf list --upgradable -o Dir::Etc::sourcelist="/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list" -o Dir::Etc::sourceparts="/dev/null" -o APT::Get::List-Cleanup="0" | awk 'NR>1')"; process.start("bash", QStringList() << "-c" << command); - if (!process.waitForFinished()) { - qWarning() << "Process failed to finish."; + if (!process.waitForFinished(30000)) { // 30秒超时 + qWarning() << "Process failed to finish within 30 seconds."; + process.kill(); return packageDetails; } @@ -83,8 +84,9 @@ QStringList aptssUpdater::getPackageSizes() "-o Dir::Etc::sourceparts=\"/dev/null\"").arg(packageName); process.start("bash", QStringList() << "-c" << command); - if (!process.waitForFinished()) { - qWarning() << "获取包信息失败:" << packageName; + if (!process.waitForFinished(30000)) { // 30秒超时 + qWarning() << "获取包信息失败:" << packageName << "(超时)"; + process.kill(); continue; } @@ -130,7 +132,11 @@ QStringList aptssUpdater::getDesktopAppNames() // 获取包文件列表 dpkgProcess.start("dpkg", QStringList() << "-L" << packageName); - dpkgProcess.waitForFinished(); + if (!dpkgProcess.waitForFinished(30000)) { // 30秒超时 + qWarning() << "获取包文件列表失败:" << packageName << "(超时)"; + dpkgProcess.kill(); + continue; + } QStringList files = QString(dpkgProcess.readAllStandardOutput()).split('\n', Qt::SkipEmptyParts); // 先检查常规应用目录 @@ -236,7 +242,11 @@ QStringList aptssUpdater::getPackageIcons() // 获取包文件列表 dpkgProcess.start("dpkg", QStringList() << "-L" << packageName); - dpkgProcess.waitForFinished(); + if (!dpkgProcess.waitForFinished(30000)) { // 30秒超时 + qWarning() << "获取包文件列表失败:" << packageName << "(超时)"; + dpkgProcess.kill(); + continue; + } QStringList files = QString(dpkgProcess.readAllStandardOutput()).split('\n', Qt::SkipEmptyParts); // 查找.desktop文件 @@ -393,6 +403,4 @@ QJsonArray aptssUpdater::getUpdateInfoAsJson() } qDebug()<