安装内核的基础框架

This commit is contained in:
2024-04-23 22:50:08 +08:00
parent cae8205d95
commit 07c164a11d
5 changed files with 35 additions and 2 deletions

6
Resource.qrc Normal file
View File

@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/shell">
<file>kernel-installer-template.sh</file>
</qresource>
<qresource prefix="/icon"/>
</RCC>

View File

@@ -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

View File

@@ -0,0 +1,3 @@
#!/bin/bash
apt update
apt install ${KernelList} -y

View File

@@ -6,7 +6,7 @@
#include <QFile>
#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()

View File

@@ -25,6 +25,7 @@ private:
QString tempDir = "/tmp";
void StartInstaller();
QString BuildKernelInstallerBash(QStringList kernelList, QString tempFilePath) const;
};
#endif // KERNELINSTALLER_H