安装内核的基础框架
This commit is contained in:
6
Resource.qrc
Normal file
6
Resource.qrc
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/shell">
|
||||||
|
<file>kernel-installer-template.sh</file>
|
||||||
|
</qresource>
|
||||||
|
<qresource prefix="/icon"/>
|
||||||
|
</RCC>
|
||||||
@@ -28,3 +28,6 @@ qnx: target.path = /tmp/$${TARGET}/bin
|
|||||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
!isEmpty(target.path): INSTALLS += target
|
!isEmpty(target.path): INSTALLS += target
|
||||||
unix:!macx: LIBS += -lqtermwidget5
|
unix:!macx: LIBS += -lqtermwidget5
|
||||||
|
|
||||||
|
RESOURCES += \
|
||||||
|
Resource.qrc
|
||||||
|
|||||||
3
kernel-installer-template.sh
Normal file
3
kernel-installer-template.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
apt update
|
||||||
|
apt install ${KernelList} -y
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
|
||||||
#define MAX_TMP_NUM 1024
|
#define MAX_TMP_NUM 1024
|
||||||
#define MIN_TMP_NUM 1024
|
#define MIN_TMP_NUM 0
|
||||||
|
|
||||||
KernelInstaller::KernelInstaller(QStringList kernelList, QWidget *parent) :
|
KernelInstaller::KernelInstaller(QStringList kernelList, QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
@@ -16,20 +16,40 @@ KernelInstaller::KernelInstaller(QStringList kernelList, QWidget *parent) :
|
|||||||
this->kernelList = kernelList;
|
this->kernelList = kernelList;
|
||||||
terminal = new QTermWidget(0);
|
terminal = new QTermWidget(0);
|
||||||
terminal->setColorScheme("DarkPastels");
|
terminal->setColorScheme("DarkPastels");
|
||||||
|
terminal->setAutoClose(true);
|
||||||
ui->verticalLayout->addWidget(terminal);
|
ui->verticalLayout->addWidget(terminal);
|
||||||
StartInstaller();
|
StartInstaller();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KernelInstaller::StartInstaller()
|
void KernelInstaller::StartInstaller()
|
||||||
{
|
{
|
||||||
|
terminal->setShellProgram("/usr/bin/pkexec");
|
||||||
// 随机生成目录
|
// 随机生成目录
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
int randomNumber = (rand() % (MAX_TMP_NUM - MIN_TMP_NUM)) + 1; // 左闭右闭
|
int randomNumber = (rand() % (MAX_TMP_NUM - MIN_TMP_NUM)) + 1; // 左闭右闭
|
||||||
QString tempPath = tempDir + "/gxde-kernel-manager-installer-" + QString::number(randomNumber) + ".sh";
|
QString tempPath = tempDir + "/gxde-kernel-manager-installer-" + QString::number(randomNumber) + ".sh";
|
||||||
QFile file(tempPath);
|
QFile file(tempPath);
|
||||||
file.open(QFile::WriteOnly);
|
file.open(QFile::WriteOnly);
|
||||||
//file.write("#/bin/bash")
|
file.write(BuildKernelInstallerBash(this->kernelList, tempPath).toUtf8());
|
||||||
file.close();
|
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()
|
KernelInstaller::~KernelInstaller()
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ private:
|
|||||||
QString tempDir = "/tmp";
|
QString tempDir = "/tmp";
|
||||||
|
|
||||||
void StartInstaller();
|
void StartInstaller();
|
||||||
|
QString BuildKernelInstallerBash(QStringList kernelList, QString tempFilePath) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KERNELINSTALLER_H
|
#endif // KERNELINSTALLER_H
|
||||||
|
|||||||
Reference in New Issue
Block a user