From 30acad75166b1303897c736d5213846d558d9727 Mon Sep 17 00:00:00 2001 From: momen Date: Tue, 15 Jul 2025 00:45:42 +0800 Subject: [PATCH] =?UTF-8?q?chore:=E4=BD=BF=E7=94=A8pkexec=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=9B=B4=E6=96=B0=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mainwindow-dtk.cpp | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/mainwindow-dtk.cpp b/src/mainwindow-dtk.cpp index 9993c43..5baca0e 100755 --- a/src/mainwindow-dtk.cpp +++ b/src/mainwindow-dtk.cpp @@ -345,7 +345,7 @@ void MainWindow::refreshTheme(bool isDarkMode) ui->applistpage->setTheme(isDarkMode); ui->applistpage_1->setTheme(isDarkMode); ui->appintopage->setTheme(isDarkMode); - ui->settingspage->setTheme(isDarkMode); + ui->settingspage->setTheme(isDarkMode); } void MainWindow::initConnections() @@ -551,16 +551,15 @@ void MainWindow::on_pushButton_14_clicked() QFile upgradeStatus("/tmp/spark-store/upgradeStatus.txt"); if (!upgradeStatus.exists()) { - QString appPath; + QString appPath; - // 开发环境路径(构建目录) - #ifdef QT_DEBUG - appPath = QCoreApplication::applicationDirPath() + - "/spark-update-tool/spark-update-tool"; - #else - // 安装后路径(系统PATH) - appPath = QStandardPaths::findExecutable("spark-update-tool"); - #endif + // 判断路径:开发环境 vs 安装后 + #ifdef QT_DEBUG + appPath = QCoreApplication::applicationDirPath() + + "/spark-update-tool/spark-update-tool"; + #else + appPath = QStandardPaths::findExecutable("spark-update-tool"); + #endif if (appPath.isEmpty()) { qWarning() << "spark-update-tool not found!"; @@ -568,17 +567,27 @@ void MainWindow::on_pushButton_14_clicked() } QProcess *process = new QProcess(this); - process->start(appPath, {"--silent"}); - connect(process, QOverload::of(&QProcess::finished), - [=](int exitCode) { + #ifdef QT_DEBUG + // 开发模式:直接运行本地构建的更新器 + process->start(appPath, {"--silent"}); + #else + // 安装模式:使用 pkexec 提权运行系统路径下的 spark-update-tool + QString program = "pkexec"; + QStringList arguments; + arguments << appPath << "--silent"; + process->start(program, arguments); + #endif + + QObject::connect(process, QOverload::of(&QProcess::finished), + [process](int exitCode) { if (exitCode == 0) { qDebug() << "Update check successful"; } else { - qDebug() << "Update check failed"; + qWarning() << "Update check failed with exit code:" << exitCode; } process->deleteLater(); }); - } - } + } + } }