From 07c164a11d9741cde4a706a80bc8b122f08d48d8 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Tue, 23 Apr 2024 22:50:08 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E8=A3=85=E5=86=85=E6=A0=B8=E7=9A=84?=
=?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A1=86=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Resource.qrc | 6 ++++++
gxde-kernel-manager.pro | 3 +++
kernel-installer-template.sh | 3 +++
kernelinstaller.cpp | 24 ++++++++++++++++++++++--
kernelinstaller.h | 1 +
5 files changed, 35 insertions(+), 2 deletions(-)
create mode 100644 Resource.qrc
create mode 100644 kernel-installer-template.sh
diff --git a/Resource.qrc b/Resource.qrc
new file mode 100644
index 0000000..8c54a21
--- /dev/null
+++ b/Resource.qrc
@@ -0,0 +1,6 @@
+
+
+ kernel-installer-template.sh
+
+
+
diff --git a/gxde-kernel-manager.pro b/gxde-kernel-manager.pro
index 9c3c3ed..ab66745 100644
--- a/gxde-kernel-manager.pro
+++ b/gxde-kernel-manager.pro
@@ -28,3 +28,6 @@ qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
unix:!macx: LIBS += -lqtermwidget5
+
+RESOURCES += \
+ Resource.qrc
diff --git a/kernel-installer-template.sh b/kernel-installer-template.sh
new file mode 100644
index 0000000..e2f7ce3
--- /dev/null
+++ b/kernel-installer-template.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+apt update
+apt install ${KernelList} -y
\ No newline at end of file
diff --git a/kernelinstaller.cpp b/kernelinstaller.cpp
index 3f309f8..467653a 100644
--- a/kernelinstaller.cpp
+++ b/kernelinstaller.cpp
@@ -6,7 +6,7 @@
#include
#define MAX_TMP_NUM 1024
-#define MIN_TMP_NUM 1024
+#define MIN_TMP_NUM 0
KernelInstaller::KernelInstaller(QStringList kernelList, QWidget *parent) :
QMainWindow(parent),
@@ -16,20 +16,40 @@ KernelInstaller::KernelInstaller(QStringList kernelList, QWidget *parent) :
this->kernelList = kernelList;
terminal = new QTermWidget(0);
terminal->setColorScheme("DarkPastels");
+ terminal->setAutoClose(true);
ui->verticalLayout->addWidget(terminal);
StartInstaller();
}
void KernelInstaller::StartInstaller()
{
+ terminal->setShellProgram("/usr/bin/pkexec");
// 随机生成目录
srand(time(0));
int randomNumber = (rand() % (MAX_TMP_NUM - MIN_TMP_NUM)) + 1; // 左闭右闭
QString tempPath = tempDir + "/gxde-kernel-manager-installer-" + QString::number(randomNumber) + ".sh";
QFile file(tempPath);
file.open(QFile::WriteOnly);
- //file.write("#/bin/bash")
+ file.write(BuildKernelInstallerBash(this->kernelList, tempPath).toUtf8());
file.close();
+ terminal->setArgs(QStringList() << "bash" << tempPath);
+ terminal->startShellProgram();
+}
+
+QString KernelInstaller::BuildKernelInstallerBash(QStringList kernelList, QString tempFilePath) const
+{
+ // 转换数据
+ QString kernel = "";
+ foreach (QString name, kernelList) {
+ kernel += name + " ";
+ }
+ QFile file(":/shell/kernel-installer-template.sh");
+ file.open(QFile::ReadOnly);
+ QString data = file.readAll();
+ data = data.replace("${KernelList}", kernel);
+ data += "\nrm -v '" + tempFilePath + "'";
+ file.close();
+ return data;
}
KernelInstaller::~KernelInstaller()
diff --git a/kernelinstaller.h b/kernelinstaller.h
index 2b00cae..528a7c5 100644
--- a/kernelinstaller.h
+++ b/kernelinstaller.h
@@ -25,6 +25,7 @@ private:
QString tempDir = "/tmp";
void StartInstaller();
+ QString BuildKernelInstallerBash(QStringList kernelList, QString tempFilePath) const;
};
#endif // KERNELINSTALLER_H