支持跟进vbox安装功能

This commit is contained in:
2023-08-16 09:53:59 +08:00
parent 83f49a8c7e
commit e625bf97ad
9 changed files with 176 additions and 107 deletions

View File

@@ -7,7 +7,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -77,7 +77,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -147,7 +147,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -217,7 +217,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -287,7 +287,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -357,7 +357,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -427,7 +427,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -497,7 +497,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -567,7 +567,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -637,7 +637,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -707,7 +707,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -777,7 +777,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -847,7 +847,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -917,7 +917,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -987,7 +987,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -1057,77 +1057,7 @@
"-I", "-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore", "/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I", "-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt", "/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc",
"-nostdinc++",
"-pipe",
"-std=gnu++11",
"-Wall",
"-Wextra",
"-D_REENTRANT",
"-fPIC",
"-fsyntax-only",
"-m64",
"--target=x86_64-linux-gnu",
"-DQ_CREATOR_RUN",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_NO_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_GUI_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-I",
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source",
"-I",
"/usr/include/x86_64-linux-gnu/qt5",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtNetwork",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
"-I",
"/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++",
"-isystem",
"/usr/include/c++/11",
"-isystem",
"/usr/include/x86_64-linux-gnu/c++/11",
"-isystem",
"/usr/include/c++/11/backward",
"-isystem",
"/usr/local/include",
"-isystem",
"/usr/lib/llvm-13/lib/clang/13.0.1/include",
"-isystem",
"/usr/include/x86_64-linux-gnu",
"-isystem",
"/usr/include",
"-fmessage-length=0",
"-fdiagnostics-show-note-include-stack",
"-fretain-comments-from-system-headers",
"-fmacro-backtrace-limit=0",
"-ferror-limit=1000",
"-x",
"c++-header",
"-Wno-unknown-pragmas",
"-Wno-unknown-warning-option",
"-Wno-documentation-unknown-command",
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
],
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
},
{
"arguments": [
"clang",
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders",
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-NXqKOr/clang-uiheader-YSsUJt",
"-nostdinc", "-nostdinc",
"-nostdinc++", "-nostdinc++",
"-pipe", "-pipe",
@@ -1188,5 +1118,75 @@
], ],
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd", "directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_qemusetting.h" "file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_qemusetting.h"
},
{
"arguments": [
"clang",
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders",
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"-nostdinc",
"-nostdinc++",
"-pipe",
"-std=gnu++11",
"-Wall",
"-Wextra",
"-D_REENTRANT",
"-fPIC",
"-fsyntax-only",
"-m64",
"--target=x86_64-linux-gnu",
"-DQ_CREATOR_RUN",
"-DQT_DEPRECATED_WARNINGS",
"-DQT_NO_DEBUG",
"-DQT_WIDGETS_LIB",
"-DQT_GUI_LIB",
"-DQT_NETWORK_LIB",
"-DQT_CORE_LIB",
"-I",
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source",
"-I",
"/usr/include/x86_64-linux-gnu/qt5",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtNetwork",
"-I",
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
"-I",
"/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++",
"-isystem",
"/usr/include/c++/11",
"-isystem",
"/usr/include/x86_64-linux-gnu/c++/11",
"-isystem",
"/usr/include/c++/11/backward",
"-isystem",
"/usr/local/include",
"-isystem",
"/usr/lib/llvm-13/lib/clang/13.0.1/include",
"-isystem",
"/usr/include/x86_64-linux-gnu",
"-isystem",
"/usr/include",
"-fmessage-length=0",
"-fdiagnostics-show-note-include-stack",
"-fretain-comments-from-system-headers",
"-fmacro-backtrace-limit=0",
"-ferror-limit=1000",
"-x",
"c++-header",
"-Wno-unknown-pragmas",
"-Wno-unknown-warning-option",
"-Wno-documentation-unknown-command",
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
],
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
} }
] ]

View File

@@ -106,7 +106,7 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
//vbox *box = new vbox("Window"); //vbox *box = new vbox("Window");
//vbox vm("Windows"); //vbox vm("Windows");
qemu vm("Windows"); qemu vm("Windows");
bool setISOAlready = 0;
switch (id) { switch (id) {
case 0: case 0:
vm.Create("Windows7"); vm.Create("Windows7");
@@ -129,20 +129,42 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
vm.Create("Windows11_64"); vm.Create("Windows11_64");
vm.SetDisplayMemory(128); vm.SetDisplayMemory(128);
vm.EnabledUEFI(true); vm.EnabledUEFI(true);
setISOAlready = 1;
break;
case 5:
vm.Create("WindowsXP_32");
vm.SetDisplayMemory(32);
setISOAlready = 1;
break;
case 6:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
setISOAlready = 1;
break;
case 7:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
vm.EnabledUEFI(true);
setISOAlready = 1;
break; break;
} }
vm.CreateDiskControl(); vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2"); //vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072); vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2"); vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
vm.MountISO(isoPath, "storage_controller_1", 0, 1); if(!setISOAlready){
switch (id) { vm.MountISO(isoPath, "storage_controller_1", 0, 1);
case 0: switch (id) {
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2); case 0:
break; vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
case 1: break;
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2); case 1:
break; vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
break;
}
}
else{
vm.AutoInstall(isoPath);
} }
/*vm.MountISO(isoPath, "storage_controller_1", 0, 1); /*vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) { switch (id) {
@@ -184,7 +206,7 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
//vbox *box = new vbox("Window"); //vbox *box = new vbox("Window");
vbox vm("Windows"); vbox vm("Windows");
//qemu vm("Windows"); //qemu vm("Windows");
bool setISOAlready = 1;
switch (id) { switch (id) {
case 0: case 0:
vm.Create("Windows7"); vm.Create("Windows7");
@@ -207,22 +229,44 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
vm.Create("Windows11_64"); vm.Create("Windows11_64");
vm.SetDisplayMemory(128); vm.SetDisplayMemory(128);
vm.EnabledUEFI(true); vm.EnabledUEFI(true);
setISOAlready = 1;
break; break;
} case 5:
vm.Create("WindowsXP_32");
vm.SetDisplayMemory(32);
setISOAlready = 1;
break;
case 6:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
setISOAlready = 1;
break;
case 7:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
vm.EnabledUEFI(true);
setISOAlready = 1;
break;
}
QDir dir("/home/gfdgd_xi/Qemu/Windows/"); QDir dir("/home/gfdgd_xi/Qemu/Windows/");
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/"); dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
vm.CreateDiskControl(); vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2"); //vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072); vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi"); vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
vm.MountISO(isoPath, "storage_controller_1", 0, 1); if(!setISOAlready){
switch (id) { vm.MountISO(isoPath, "storage_controller_1", 0, 1);
case 0: switch (id) {
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0); case 0:
break; vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
case 1: break;
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0); case 1:
break; vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
break;
}
}
else{
vm.AutoInstall(isoPath);
} }
// 判断 VirtualBox Guest ISO 是否存在 // 判断 VirtualBox Guest ISO 是否存在

View File

@@ -197,6 +197,9 @@ void MainWindow::on_install_clicked()
} }
break; break;
case 4: case 4:
case 5:
case 6:
case 7:
if(ui->vmChooser->currentIndex() == 0){ if(ui->vmChooser->currentIndex() == 0){
QMessageBox::warning(this, "提示", "Qemu 不支持该选项!"); QMessageBox::warning(this, "提示", "Qemu 不支持该选项!");
return; return;

View File

@@ -99,6 +99,21 @@
<string>安装 WIndows 11不支持自动安装</string> <string>安装 WIndows 11不支持自动安装</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>安装其他 Windows XP支持自动安装只支持 VirtualBox</string>
</property>
</item>
<item>
<property name="text">
<string>安装其他 Windows (支持自动安装,传统启动,只支持 VirtualBox</string>
</property>
</item>
<item>
<property name="text">
<string>安装其他 Windows支持自动安装UEFI 启动,只支持 VirtualBox</string>
</property>
</item>
</widget> </widget>
</item> </item>
</layout> </layout>

View File

@@ -133,3 +133,6 @@ int qemu::EnabledUEFI(bool status){
} }
return 1; return 1;
} }
int qemu::AutoInstall(QString iso){
return 0;
}

View File

@@ -39,6 +39,7 @@ public:
int SetKeyboardPS2(); int SetKeyboardPS2();
int OpenUSB(); int OpenUSB();
int EnabledUEFI(bool status); int EnabledUEFI(bool status);
int AutoInstall(QString iso);
private: private:
QString commandOption = ""; QString commandOption = "";

View File

@@ -108,3 +108,6 @@ int vbox::EnabledUEFI(bool status){
} }
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --firmware=bios").toLatin1()); return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --firmware=bios").toLatin1());
} }
int vbox::AutoInstall(QString iso){
return system(("vboxmanage unattended install '" + name + "' '--iso=" + iso + "'").toLatin1());
}

View File

@@ -39,7 +39,7 @@ public:
int SetKeyboardPS2(); int SetKeyboardPS2();
int OpenUSB(); int OpenUSB();
int EnabledUEFI(bool status); int EnabledUEFI(bool status);
int AutoInstall(QString iso);
private: private:
}; };

View File

@@ -9,7 +9,7 @@ Check: binaries
Type: binary, udeb Type: binary, udeb
Priority: optional Priority: optional
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip, bubblewrap, zenity Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip, bubblewrap, zenity
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386, libc6:armhf Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386, libc6:armhf, libwine
Section: utils Section: utils
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52 Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52 Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52