fix:root账户更新卡死的问题

This commit is contained in:
2025-10-05 02:34:30 +08:00
parent a285c02cc9
commit 2257b3943c
2 changed files with 19 additions and 8 deletions

View File

@@ -69,7 +69,6 @@ QStringList aptssUpdater::getUpdateablePackages()
QStringList aptssUpdater::getPackageSizes()
{
QStringList packageDetails;
QProcess process;
// 获取可更新包名列表
QStringList updateablePackages;
@@ -78,6 +77,8 @@ QStringList aptssUpdater::getPackageSizes()
}
foreach (const QString &packageName, updateablePackages) {
QProcess process; // 在循环内部创建新的QProcess实例
// 构建新命令(包含包名参数)
QString command = QString("apt download %1 --print-uris -c /opt/durapps/spark-store/bin/apt-fast-conf/aptss-apt.conf "
"-o Dir::Etc::sourcelist=\"/opt/durapps/spark-store/bin/apt-fast-conf/sources.list.d/sparkstore.list\" "
@@ -118,7 +119,6 @@ QStringList aptssUpdater::getPackageSizes()
QStringList aptssUpdater::getDesktopAppNames()
{
QStringList appNames;
QProcess dpkgProcess;
// 获取当前系统语言环境
QString lang = QLocale().name().replace("_", "-");
@@ -127,6 +127,8 @@ QStringList aptssUpdater::getDesktopAppNames()
QStringList packages = packageName;
foreach (const QString &package, packages) {
QProcess dpkgProcess; // 在循环内部创建新的QProcess实例
QString packageName = package.split(":")[0];
QString finalName = packageName; // 默认使用包名
@@ -231,12 +233,13 @@ bool aptssUpdater::checkDesktopFiles(const QStringList &desktopFiles, QString &a
QStringList aptssUpdater::getPackageIcons()
{
QStringList packageIcons;
QProcess dpkgProcess;
// 遍历所有可更新包
QStringList packages = packageName;
foreach (const QString &package, packages) {
QProcess dpkgProcess; // 在循环内部创建新的QProcess实例
QString packageName = package.split(":")[0];
QString iconPath = ":/resources/default_icon.svg"; // 默认图标

View File

@@ -7,6 +7,7 @@
#include <QFutureWatcher> // 新增
#include <QIcon>
#include <qicon.h>
#include <unistd.h> // for geteuid
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
@@ -262,11 +263,18 @@ void MainWindow::filterAppsByKeyword(const QString &keyword)
void MainWindow::runAptssUpgrade()
{
QProcess process;
QStringList args;
args << "sudo" <<"aptss" << "ssupdate";
process.start("sudo", args);
// 检查是否已经是root用户如果是则直接执行命令否则使用sudo
if (geteuid() == 0) {
// root用户直接执行
process.start("aptss", QStringList() << "ssupdate");
} else {
// 非root用户使用sudo
process.start("sudo", QStringList() << "aptss" << "ssupdate");
}
if (!process.waitForStarted(5000)) {
QMessageBox::warning(this, "升级失败", "无法启动 sudo aptss ssupdate");
QMessageBox::warning(this, "升级失败", "无法启动 aptss ssupdate");
return;
}
process.write("n\n");
@@ -280,7 +288,7 @@ void MainWindow::runAptssUpgrade()
}
if (process.exitCode() != 0) {
QMessageBox::warning(this, "升级失败", "执行 sudo aptss ssupdate 失败,请检查系统环境或稍后再试。");
QMessageBox::warning(this, "升级失败", "执行 aptss ssupdate 失败,请检查系统环境或稍后再试。");
}
}
void MainWindow::closeEvent(QCloseEvent *event)