mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-13 20:32:05 +08:00
fix:root账户更新卡死的问题
This commit is contained in:
@@ -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"; // 默认图标
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user