chore:更新按钮14逻辑

This commit is contained in:
2025-08-02 17:09:57 +08:00
parent 31575a4a35
commit 77dde49653

View File

@@ -531,7 +531,7 @@ void MainWindow::on_pushButton_14_clicked()
if (false) if (false)
{ {
qDebug() << "UOS Developer Mode has not been enabled!"; qDebug() << "UOS Developer Mode has not been enabled!";
QtConcurrent::run([=] (void)QtConcurrent::run([=]
{ {
auto upgradeP = new QProcess(); auto upgradeP = new QProcess();
upgradeP->startDetached("zenity", QStringList() << "--info" upgradeP->startDetached("zenity", QStringList() << "--info"
@@ -544,20 +544,96 @@ void MainWindow::on_pushButton_14_clicked()
); );
upgradeP->waitForStarted(); upgradeP->waitForStarted();
upgradeP->waitForFinished(30); upgradeP->waitForFinished(30);
upgradeP->deleteLater(); }); upgradeP->deleteLater();
});
}else
{
QFile upgradeStatus("/tmp/spark-store/upgradeStatus.txt");
if (!upgradeStatus.exists())
{
QString appPath;
// 判断路径:开发环境 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!";
return;
} }
QProcess *process = new QProcess(this);
#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, &QProcess::finished,
[process](int exitCode, QProcess::ExitStatus) {
if (exitCode == 0) {
qDebug() << "Update check successful";
} else {
qWarning() << "Update check failed with exit code:" << exitCode;
}
process->deleteLater();
});
}
}
// ...existing code...
else else
{ {
QFile upgradeStatus("/tmp/spark-store/upgradeStatus.txt"); QFile upgradeStatus("/tmp/spark-store/upgradeStatus.txt");
if (!upgradeStatus.exists()) if (!upgradeStatus.exists())
{ {
QtConcurrent::run([=] QString appPath;
{
auto upgradeP = new QProcess(); // 判断路径:开发环境 vs 安装后
upgradeP->startDetached("/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh", QStringList()); #ifdef QT_DEBUG
upgradeP->waitForStarted(); appPath = QCoreApplication::applicationDirPath() +
upgradeP->waitForFinished(-1); "/spark-update-tool/spark-update-tool";
upgradeP->deleteLater(); }); #else
appPath = QStandardPaths::findExecutable("spark-update-tool");
#endif
if (appPath.isEmpty()) {
qWarning() << "spark-update-tool not found!";
return;
}
QProcess *process = new QProcess(this);
#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<int>::of(&QProcess::finished),
[process](int exitCode) {
if (exitCode == 0) {
qDebug() << "Update check successful";
} else {
qWarning() << "Update check failed with exit code:" << exitCode;
}
process->deleteLater();
});
}
}
} }
} }
} }