mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-17 01:21:36 +08:00
fix:root账户更新卡死的问题
This commit is contained in:
@@ -69,7 +69,6 @@ QStringList aptssUpdater::getUpdateablePackages()
|
|||||||
QStringList aptssUpdater::getPackageSizes()
|
QStringList aptssUpdater::getPackageSizes()
|
||||||
{
|
{
|
||||||
QStringList packageDetails;
|
QStringList packageDetails;
|
||||||
QProcess process;
|
|
||||||
|
|
||||||
// 获取可更新包名列表
|
// 获取可更新包名列表
|
||||||
QStringList updateablePackages;
|
QStringList updateablePackages;
|
||||||
@@ -78,6 +77,8 @@ QStringList aptssUpdater::getPackageSizes()
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach (const QString &packageName, updateablePackages) {
|
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 "
|
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\" "
|
"-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 aptssUpdater::getDesktopAppNames()
|
||||||
{
|
{
|
||||||
QStringList appNames;
|
QStringList appNames;
|
||||||
QProcess dpkgProcess;
|
|
||||||
|
|
||||||
// 获取当前系统语言环境
|
// 获取当前系统语言环境
|
||||||
QString lang = QLocale().name().replace("_", "-");
|
QString lang = QLocale().name().replace("_", "-");
|
||||||
@@ -127,6 +127,8 @@ QStringList aptssUpdater::getDesktopAppNames()
|
|||||||
QStringList packages = packageName;
|
QStringList packages = packageName;
|
||||||
|
|
||||||
foreach (const QString &package, packages) {
|
foreach (const QString &package, packages) {
|
||||||
|
QProcess dpkgProcess; // 在循环内部创建新的QProcess实例
|
||||||
|
|
||||||
QString packageName = package.split(":")[0];
|
QString packageName = package.split(":")[0];
|
||||||
QString finalName = packageName; // 默认使用包名
|
QString finalName = packageName; // 默认使用包名
|
||||||
|
|
||||||
@@ -231,12 +233,13 @@ bool aptssUpdater::checkDesktopFiles(const QStringList &desktopFiles, QString &a
|
|||||||
QStringList aptssUpdater::getPackageIcons()
|
QStringList aptssUpdater::getPackageIcons()
|
||||||
{
|
{
|
||||||
QStringList packageIcons;
|
QStringList packageIcons;
|
||||||
QProcess dpkgProcess;
|
|
||||||
|
|
||||||
// 遍历所有可更新包
|
// 遍历所有可更新包
|
||||||
QStringList packages = packageName;
|
QStringList packages = packageName;
|
||||||
|
|
||||||
foreach (const QString &package, packages) {
|
foreach (const QString &package, packages) {
|
||||||
|
QProcess dpkgProcess; // 在循环内部创建新的QProcess实例
|
||||||
|
|
||||||
QString packageName = package.split(":")[0];
|
QString packageName = package.split(":")[0];
|
||||||
QString iconPath = ":/resources/default_icon.svg"; // 默认图标
|
QString iconPath = ":/resources/default_icon.svg"; // 默认图标
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <QFutureWatcher> // 新增
|
#include <QFutureWatcher> // 新增
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <qicon.h>
|
#include <qicon.h>
|
||||||
|
#include <unistd.h> // for geteuid
|
||||||
MainWindow::MainWindow(QWidget *parent)
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
@@ -262,11 +263,18 @@ void MainWindow::filterAppsByKeyword(const QString &keyword)
|
|||||||
void MainWindow::runAptssUpgrade()
|
void MainWindow::runAptssUpgrade()
|
||||||
{
|
{
|
||||||
QProcess process;
|
QProcess process;
|
||||||
QStringList args;
|
|
||||||
args << "sudo" <<"aptss" << "ssupdate";
|
// 检查是否已经是root用户,如果是则直接执行命令,否则使用sudo
|
||||||
process.start("sudo", args);
|
if (geteuid() == 0) {
|
||||||
|
// root用户直接执行
|
||||||
|
process.start("aptss", QStringList() << "ssupdate");
|
||||||
|
} else {
|
||||||
|
// 非root用户使用sudo
|
||||||
|
process.start("sudo", QStringList() << "aptss" << "ssupdate");
|
||||||
|
}
|
||||||
|
|
||||||
if (!process.waitForStarted(5000)) {
|
if (!process.waitForStarted(5000)) {
|
||||||
QMessageBox::warning(this, "升级失败", "无法启动 sudo aptss ssupdate");
|
QMessageBox::warning(this, "升级失败", "无法启动 aptss ssupdate");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
process.write("n\n");
|
process.write("n\n");
|
||||||
@@ -280,7 +288,7 @@ void MainWindow::runAptssUpgrade()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (process.exitCode() != 0) {
|
if (process.exitCode() != 0) {
|
||||||
QMessageBox::warning(this, "升级失败", "执行 sudo aptss ssupdate 失败,请检查系统环境或稍后再试。");
|
QMessageBox::warning(this, "升级失败", "执行 aptss ssupdate 失败,请检查系统环境或稍后再试。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void MainWindow::closeEvent(QCloseEvent *event)
|
void MainWindow::closeEvent(QCloseEvent *event)
|
||||||
|
|||||||
Reference in New Issue
Block a user