安装内核的基础框架

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

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()