mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-20 03:01:36 +08:00
update:更新终端调用aptss命令展示可更新列表
This commit is contained in:
@@ -23,6 +23,7 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
|||||||
qt_add_executable(Spark-Update-Tool
|
qt_add_executable(Spark-Update-Tool
|
||||||
MANUAL_FINALIZATION
|
MANUAL_FINALIZATION
|
||||||
${PROJECT_SOURCES}
|
${PROJECT_SOURCES}
|
||||||
|
aptssupdater.h aptssupdater.cpp
|
||||||
)
|
)
|
||||||
# Define target properties for Android with Qt 6 as:
|
# Define target properties for Android with Qt 6 as:
|
||||||
# set_property(TARGET Spark-Update-Tool APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
# set_property(TARGET Spark-Update-Tool APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
||||||
|
|||||||
36
src/aptssupdater.cpp
Normal file
36
src/aptssupdater.cpp
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#include "aptssupdater.h"
|
||||||
|
#include <QProcess>
|
||||||
|
#include <QTextStream>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
aptssUpdater::aptssUpdater(QWidget *parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
QStringList aptssUpdater::getUpdateablePackages()
|
||||||
|
{
|
||||||
|
QStringList packageDetails;
|
||||||
|
QProcess process;
|
||||||
|
process.start("bash", QStringList() << "-c" << "aptss list --upgradable");
|
||||||
|
process.waitForFinished();
|
||||||
|
|
||||||
|
QString output = process.readAllStandardOutput();
|
||||||
|
QTextStream stream(&output);
|
||||||
|
|
||||||
|
// 跳过第一行(提示信息)
|
||||||
|
stream.readLine();
|
||||||
|
|
||||||
|
while (!stream.atEnd()) {
|
||||||
|
QString line = stream.readLine();
|
||||||
|
QRegularExpression regex(R"((\S+)/\S+\s+\S+\s+\S+\s+\[可从该版本升级:(.+)\])");
|
||||||
|
QRegularExpressionMatch match = regex.match(line);
|
||||||
|
|
||||||
|
if (match.hasMatch()) {
|
||||||
|
QString packageName = match.captured(1);
|
||||||
|
QString updateDetails = match.captured(2);
|
||||||
|
packageDetails << QString("%1: %2").arg(packageName, updateDetails);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return packageDetails;
|
||||||
|
}
|
||||||
19
src/aptssupdater.h
Normal file
19
src/aptssupdater.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#ifndef APTSSUPDATER_H
|
||||||
|
#define APTSSUPDATER_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
class aptssUpdater : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit aptssUpdater(QWidget *parent = nullptr);
|
||||||
|
|
||||||
|
QStringList getUpdateablePackages(); // 查询可更新包列表及更新内容
|
||||||
|
qint64 getTotalDownloadSize(); // 获取更新总大小预估
|
||||||
|
|
||||||
|
signals:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // APTSSUPDATER_H
|
||||||
@@ -5,8 +5,22 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
{
|
{
|
||||||
|
checkUpdates();
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
}
|
}
|
||||||
|
void MainWindow::checkUpdates()
|
||||||
|
{
|
||||||
|
aptssUpdater updater;
|
||||||
|
|
||||||
|
// 获取可更新包列表
|
||||||
|
QStringList updateablePackages = updater.getUpdateablePackages();
|
||||||
|
qDebug() << "可更新包列表:";
|
||||||
|
for (const QString &package : updateablePackages) {
|
||||||
|
qDebug() << package;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#define MAINWINDOW_H
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include "aptssupdater.h"
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
@@ -19,5 +19,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
void checkUpdates();
|
||||||
};
|
};
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|||||||
Reference in New Issue
Block a user