初步支持安装deb

This commit is contained in:
2024-01-23 22:48:21 +08:00
parent ea4e1d5da7
commit 14ac76396e
5 changed files with 69 additions and 23 deletions

View File

@@ -1,10 +1,11 @@
#include "installdeb.h"
#include "messagebox.h"
#include <QDateTime>
#include <QObject>
#include <QMessageBox>
#include <QMainWindow>
InstallDEB::InstallDEB(QTermWidget *terminal, QMainWindow *mainWindow)
InstallDEB::InstallDEB(QTermWidget *terminal, DMainWindow *mainWindow)
{
this->terminal = terminal;
this->mainWindow = mainWindow;
@@ -14,7 +15,7 @@ void InstallDEB::AddCommand(QString command){
this->commandList.append(command);
}
void InstallDEB::RunCommand(){
void InstallDEB::RunCommand(bool withRoot){
this->terminal->setEnabled(true);
this->runStatus = true;
// 写入为 Bash 文件,方便执行
@@ -33,12 +34,22 @@ void InstallDEB::RunCommand(){
file.close();
system(("chmod +x '" + bashPath + "'").toUtf8()); // 赋予运行权限
this->terminal->setColorScheme("DarkPastels");
this->terminal->setShellProgram("/usr/bin/bash");
this->terminal->setArgs(QStringList() << bashPath);
if(withRoot){
this->terminal->setShellProgram("/usr/bin/pkexec");
this->terminal->setArgs(QStringList() << "/usr/bin/bash" << bashPath);
}
else{
this->terminal->setShellProgram("/usr/bin/bash");
this->terminal->setArgs(QStringList() << bashPath);
}
//this->terminal->setAutoClose(1);
this->terminal->setAutoFillBackground(1);
this->terminal->startShellProgram();
QObject::connect(this->terminal, &QTermWidget::finished, this->mainWindow, [this](){
QMessageBox::information(this->mainWindow, "A", "B");
//QMessageBox::information(this->mainWindow, "A", "B");
MessageBox *message = new MessageBox();
message->information("提示", "应用安装完成");
this->mainWindow->sendMessage(QIcon(":/Icon/MessageBox/dialog-information.svg"), "应用安装完成");
});
this->terminal->startShellProgram();
}

View File

@@ -3,18 +3,19 @@
#include <QObject>
#include <qtermwidget5/qtermwidget.h>
#include <QMainWindow>
#include <DMainWindow>
using namespace Dtk::Widget;
class InstallDEB
{
public:
InstallDEB(QTermWidget *terminal, QMainWindow *mainWindow = NULL);
InstallDEB(QTermWidget *terminal, DMainWindow *mainWindow = NULL);
void AddCommand(QString command);
void RunCommand();
void RunCommand(bool withRoot=false);
QStringList commandList;
private:
QTermWidget *terminal;
QMainWindow *mainWindow = NULL;
DMainWindow *mainWindow = NULL;
bool runStatus;
};

View File

@@ -3,11 +3,30 @@
#include <QLocale>
#include <QTranslator>
#include <DApplication>
#include <DMessageBox>
#include <iostream>
using namespace Dtk::Widget;
using namespace std;
int main(int argc, char *argv[])
{
DApplication a(argc, argv);
// 强制使用 DTK 平台插件
QVector<char *> fakeArgs(argc + 2);
fakeArgs[0] = argv[0];
fakeArgs[1] = const_cast<char *>("-platformtheme");
fakeArgs[2] = const_cast<char *>("deepin");
for(int i = 1; i < argc; i++){
fakeArgs[i + 2] = argv[i];
}
int fakeArgc = argc + 2;
DApplication a(fakeArgc, fakeArgs.data());
DApplication::setOrganizationName("gfdgd_xi");
DApplication::setApplicationName("deepin-wine-runner-aptss-installer");
if(system("which aptss")){
DMessageBox::information(NULL, "错误", "无法检测到 aptss\n请确保您已安装星火应用商店并更新至最新版本");
return 1;
}
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();

View File

@@ -10,9 +10,9 @@ MainWindow::MainWindow(QWidget *parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
MessageBox *message = new MessageBox();
/*MessageBox *message = new MessageBox();
message->information("A", "B");
this->close();
this->close();*/
}
MainWindow::~MainWindow()
@@ -25,16 +25,11 @@ void MainWindow::on_installPath_clicked()
{
QTermWidget *terminal = new QTermWidget(0);
terminal->setColorScheme("DarkPastels");
terminal->setShellProgram("/usr/bin/bash");
terminal->setArgs(QStringList() << "-c" << "gedit");
connect(terminal, &QTermWidget::finished, this, [&, this](){
//QMessageBox::information(NULL, "提示", "系统安装完成");
MessageBox *message = new MessageBox();
message->information("A", "B");
});
terminal->startShellProgram();
terminal->setAutoClose(1);
InstallDEB *deb = new InstallDEB(terminal, this);
deb->AddCommand("aptss update");
deb->AddCommand("aptss install \"" + ui->debPath->text() + "\"");
deb->RunCommand(1);
ui->gridLayout->addWidget(terminal, 1, 0);
}

View File

@@ -20,6 +20,13 @@
<item>
<widget class="QLineEdit" name="debPath"/>
</item>
<item>
<widget class="QPushButton" name="browserButton">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="installPath">
<property name="text">
@@ -29,6 +36,19 @@
</item>
</layout>
</item>
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<action name="action1">