Compare commits

...

205 Commits

Author SHA1 Message Date
5eb7bcd358 更新预编译文件 2024-06-01 16:41:57 +08:00
5818d109b0 更新README 2024-06-01 15:39:25 +08:00
01adbc9e20 调整Mips Qemu路径 2024-06-01 15:08:20 +08:00
35246e6046 支持使用本地的qemu 2024-06-01 13:07:04 +08:00
d84191d17e 添加独立的qemu mips包 2024-06-01 11:03:02 +08:00
950eca478c 启动脚本跟进logo 2024-06-01 10:37:06 +08:00
1bf5eab4e0 新增虚拟机logo显示 2024-06-01 09:55:22 +08:00
3966cd0b70 忘记拷贝了 2024-06-01 08:57:08 +08:00
c4923fa5b9 新增驱动文件 2024-06-01 08:56:18 +08:00
d369503284 修复虚拟机模块选择其它选项自动跳回默认选项的问题 2024-06-01 07:30:01 +08:00
e26bf4e30f 补充linglong依赖 2024-05-25 15:38:11 +08:00
bdb53267ee 调整url 2024-05-25 13:09:39 +08:00
dae29fd54e 调整脚本 2024-05-23 22:34:29 +08:00
40c52bd1a8 调整默认启动条目 2024-05-23 22:23:49 +08:00
47ebb5ca29 添加linglong配置文件 2024-05-23 22:12:58 +08:00
e28dc5927e 调整打包器包名识别机制 2024-05-07 22:03:56 +08:00
1825136eac adjust: change spark wine launcher path 2024-05-07 21:47:51 +08:00
9cce5771e5 !3 adjust: change spark wine launcher path
Merge pull request !3 from shenmo/N/A
2024-05-07 13:26:42 +00:00
20c2cc9949 adjust: change spark wine launcher path
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2024-05-07 06:24:10 +00:00
c84ca04f96 !2 update spark-dwine-helper/spark_run_v4.sh.
Merge pull request !2 from shenmo/N/A
2024-05-06 14:50:50 +00:00
6f039e7355 update spark-dwine-helper/spark_run_v4.sh.
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2024-05-06 00:57:16 +00:00
44514dfc78 修改dpkg-deb参数以减少打包时间 2024-05-05 11:38:52 +08:00
840fb73ba8 banner并入运行器 2024-05-03 21:48:34 +08:00
4485ff3b74 新增转包脚本 2024-05-01 08:09:44 +08:00
808cbfd228 修复简易打包器生产的deb无法运行的问题 2024-04-28 22:19:08 +08:00
4ecd03a520 修复lat安装无法开启的问题 2024-04-27 21:56:21 +08:00
37a8742f21 更新README 2024-04-27 18:16:03 +08:00
1006f920b0 更新.gitignore 2024-04-27 17:51:07 +08:00
3aae2d7221 更新编译包 2024-04-27 17:41:50 +08:00
5607f176d1 3.8.0 2024-04-27 15:46:25 +08:00
193be8e4de 调整更新内容 2024-04-27 15:43:50 +08:00
7dab0f8592 支持磁盘扩容 2024-04-27 15:42:25 +08:00
c790f0fbfe 修复在新版本Qemu上提示无--soundhw参数的问题 2024-04-27 14:40:56 +08:00
274ef4003b 调整更新内容 2024-04-27 14:30:40 +08:00
2925576ac1 调整 2024-04-27 14:24:42 +08:00
feaf6326da 默认开启英语翻译 2024-04-27 14:22:26 +08:00
f8fa1f2a9f 更新geek.exe 2024-04-27 14:12:58 +08:00
75fc007863 新增架构列表 2024-04-26 21:23:20 +08:00
09aeaba3c8 调整README 2024-04-25 20:25:09 +08:00
250d4280ec 修复问题https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I9B4L0 2024-04-25 20:10:46 +08:00
992fe50266 修复因为换行符问题导致打包出现EOF错误的问题 2024-04-25 20:04:51 +08:00
21ef782ebb 更新dxvk 2024-04-20 13:15:01 +08:00
320b07202d 调整README 2024-04-18 13:04:35 +08:00
b7b0b360c3 调整依赖以便能在sw64安装 2024-04-16 21:52:14 +08:00
efd0c591dc 更新运行库下载地址 2024-04-10 22:20:49 +08:00
fec8b56f90 移除争议内容 2024-04-04 17:56:56 +08:00
52d8d006db Merge branch 'main' of https://gitee.com/gfdgd-xi/deep-wine-runner 2024-04-04 12:17:15 +08:00
ef3f504d67 针对loongarch ace做特别优化 2024-04-04 12:17:04 +08:00
ece7607da0 不会将 .deb 文件加入 git 仓库 2024-03-15 02:12:29 +00:00
80be3ff03e 暂时移除声音(最新的 qemu 移除了该参数) 2024-03-15 02:10:55 +00:00
8ce51e8161 Repair program tips with line 44 in postinst file during installing 2024-02-17 16:33:37 +08:00
da3991b470 调整终端顺序以获得更好的体验 2024-02-17 13:16:49 +08:00
79924d99ea 修改README 2024-02-12 21:57:53 +08:00
28c712ceae 修复在deepin23 beta3 pyquery库错误的问题 2024-02-12 11:22:25 +08:00
0cac56de72 修改README年份错误的问题 2024-02-11 12:17:59 +08:00
2d829f4243 调整README 2024-02-02 21:16:10 +08:00
9c3707b419 3.7.0 2024-02-02 19:34:23 +08:00
3b8e8566bc 调整 2024-02-02 19:13:55 +08:00
37082fe085 调整以支持pip可以在deepin23 beta3安装所缺失的库 2024-02-02 18:55:57 +08:00
15c28a4820 修复rpm更新失败的问题 2024-02-02 18:14:24 +08:00
7e4620f4c3 初步rpm更新 2024-02-02 18:07:06 +08:00
b0e62a888c 新增rpm包自动构建工程 2024-02-02 13:49:01 +08:00
586b6efb59 Makefile支持构建rpm 2024-02-02 12:41:31 +08:00
c82897fc7b 初步适配Fedora 2024-02-02 11:49:30 +08:00
b6e510eb26 调整更新内容 2024-02-02 10:06:04 +08:00
ca5edef486 漏了 2024-02-02 09:26:21 +08:00
44c7d4fe3b 新增转包功能 2024-02-02 09:23:42 +08:00
1092c2ac2c 脚本有误 2024-02-02 08:31:06 +08:00
a0bc9059de 调整Makefile 2024-02-02 08:29:02 +08:00
c0781b4f3a 初步新增rpm配置文件 2024-02-01 22:58:36 +08:00
de06de7637 初步支持拷贝快捷方式至桌面 2024-02-01 22:31:19 +08:00
e0b2aca8ef 在安装应用时无需手动确认 2024-02-01 18:52:19 +08:00
ff41344e97 arch更新链接错误 2024-02-01 18:47:47 +08:00
0ec98cffcb 修改检测方式 2024-02-01 18:39:47 +08:00
d27c31ae6f 检测有误 2024-02-01 18:37:22 +08:00
5e325a873e 调整更新策略 2024-02-01 18:35:21 +08:00
71917c5451 漏改内容 2024-01-31 22:52:00 +08:00
9cff5358fe 调整postinst 2024-01-31 22:20:43 +08:00
c8786b59bf 语法错误 2024-01-31 22:07:32 +08:00
c46aa8fbea 修改VMInstaller Qemu安装脚本以支持Arch Linux 2024-01-31 22:06:36 +08:00
4f29c5debc 调整依赖关系 2024-01-31 21:35:07 +08:00
d9c52d4aa1 调整Makefile以便可以清理Arch Linux生成的安装包 2024-01-31 21:22:44 +08:00
c77a9b3290 调整依赖关系 2024-01-31 21:21:12 +08:00
fcdd8e7622 调整自动编译工程 2024-01-31 21:06:14 +08:00
9ce7c8a7d0 修复make clean错误 2024-01-31 21:02:37 +08:00
eab5e11e8b 初步支持Arch Linux 2024-01-31 20:54:58 +08:00
d57d53a659 调整README 2024-01-31 15:49:18 +08:00
78de66961e 修复部分机器因为信息识别有误导致无法正常启动虚拟机的问题 2024-01-29 15:24:31 +08:00
b7b798d491 打包器新增 维护打包工具箱 入口 2024-01-29 14:20:20 +08:00
8351dc2838 调整目录 2024-01-29 14:02:28 +08:00
e0717e4fc5 高级打包器支持在选择可执行文件在 c:/User/xxx 时给出提示 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I8XRWP 2024-01-28 19:01:36 +08:00
99539c58f7 新增spark wine9支持 2024-01-26 13:14:46 +08:00
88bec61044 添加helper脚本 2024-01-21 21:45:18 +08:00
05549090fe 调整postinst以解决老pip无--break-system-packages参数的问题 2024-01-21 08:41:28 +08:00
dc3477eae2 修复简易打包器在UOS无法正常启动的问题 2024-01-20 14:29:57 +08:00
59064fb1c6 漏了mkdir 2024-01-15 22:24:24 +08:00
4669c756c4 修复打包器生成的 deb 包在非 Deepin 系统无法正常在启动器显示快捷方式的问题 2024-01-14 22:25:53 +08:00
0ae06f118c Repair some problems 2024-01-14 17:53:27 +08:00
0c9da25093 Change pardus chroot 2024-01-14 15:06:22 +08:00
a4e8b17ac5 优化公告链接打开 2024-01-14 10:43:43 +08:00
800c523935 新增提示新版本/公告功能 2024-01-14 10:22:50 +08:00
ab7a5c18c5 Change README.md 2024-01-01 13:24:02 +08:00
c34708cbc5 Change README.md 2024-01-01 13:23:40 +08:00
0231e1d461 Change README.md 2024-01-01 13:22:59 +08:00
1ba1ee6b75 Change README.md 2024-01-01 13:21:37 +08:00
dc7a301a45 Change README.md 2024-01-01 13:06:54 +08:00
f6efb8e448 添加arm bwrap 2023-12-29 19:48:31 +08:00
fd410549c3 小调README 2023-12-25 22:29:38 +08:00
269c800341 3.6.1 2023-12-25 22:18:19 +08:00
1390ca65aa Repairing some machine can't open the runner problem 2023-12-25 22:13:03 +08:00
194f086b58 修改错别字 2023-12-24 11:59:27 +08:00
e12ca11b08 3.6.0 2023-12-24 10:03:34 +08:00
506c33085f Add youtube link 2023-12-24 09:52:01 +08:00
f7a683ebf0 调整构建脚本 2023-12-24 09:14:11 +08:00
6d6aa30557 调整构建脚本 2023-12-24 09:07:44 +08:00
c0aaf54ea4 调整构建脚本 2023-12-24 08:44:30 +08:00
4a47d95cd6 新增频道链接 2023-12-23 22:51:41 +08:00
6be5b433ca Repairing off line runner can't read /opt wine problem 2023-12-23 21:25:14 +08:00
08e7d2997d Repairing off line runner can't read /opt wine problem 2023-12-23 21:14:06 +08:00
a991d7de04 Repairing off line runner can't read /opt wine problem 2023-12-23 20:38:21 +08:00
d0dc90b95d Update github action 2023-12-23 16:42:33 +08:00
10b2d8c72b Update github action 2023-12-23 16:41:05 +08:00
5d819b3c8e Add makefile 2023-12-23 16:32:08 +08:00
c7166d9330 Change runner version 2023-12-23 16:17:23 +08:00
053f32e5f2 Change log reporter template 2023-12-23 16:11:22 +08:00
07db3bf724 Have finished log report maker 2023-12-23 12:24:20 +08:00
949fd1a07f Develop log report saver preliminary 2023-12-22 21:55:38 +08:00
1f5cc8f6c6 Support to run okylin wine 2023-12-21 22:18:34 +08:00
4fc20d94aa Add asking for star text 2023-12-21 22:12:30 +08:00
eb049f8560 Remove out of date wine installer 2023-12-21 22:07:27 +08:00
0173dae3e2 Support to run or pack deepin wine8 stable applications 2023-12-21 20:56:22 +08:00
e60b7fbbd0 调整关于窗口图标 2023-12-11 20:27:52 +08:00
bdcae751c7 add a file 2023-12-11 20:02:36 +08:00
c7eb70780e repair advanced builder problem about spark dwine helper config shell https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I8I110 2023-12-11 12:11:23 +08:00
b30be9ff48 able to identify wine in /opt 2023-12-03 11:12:40 +08:00
6ee9e2a85f Update tools can update program without dpkg 2023-12-03 10:33:04 +08:00
02c882c33c Forget to code off-line-shell/GetNewestDebUrl.py 2023-12-03 10:10:11 +08:00
e811970e08 Wine runner off-line packager for github action 2023-12-03 10:01:56 +08:00
7436ae72a5 Change README 2023-12-02 14:55:27 +08:00
f1498a376b Add some mainwindow translate 2023-11-26 14:34:08 +08:00
516a854f84 lead qt translator into mainwindow.py (preliminary) 2023-11-26 09:11:26 +08:00
d019d0d223 国外IP判断以实现自动选择合适源 2023-11-26 08:58:42 +08:00
be57235f02 新增sourceforge源 2023-11-25 20:26:25 +08:00
fd9d08b328 初步多语言支持 2023-11-25 16:38:14 +08:00
a8c5acfae2 初步多语言支持 2023-11-25 16:03:47 +08:00
81ac91b180 3.5.0 2023-11-17 19:42:36 +08:00
e477b94cda loongarch64 2023-11-15 23:06:15 +08:00
57db5a2630 调整测试机制 2023-11-12 12:18:36 +08:00
4812a9a872 虚拟机工具支持强制关闭 VirtualBox/Qemu,并增加了对 Windows 7 安装脚本的检测 2023-11-12 11:13:42 +08:00
ff15b60e4c github action新增ace构建 2023-11-12 10:22:20 +08:00
9b82a3818b github action新增ace构建 2023-11-12 10:21:06 +08:00
275379e4ba 修改makefile bug 2023-11-12 10:20:11 +08:00
9e7ad17ea2 将kgithub源修改为githubfast源 2023-11-12 09:57:06 +08:00
03942892fd ace包支持 2023-11-11 23:12:30 +08:00
370bde5e63 生态适配脚本打包器支持正确根据打包结果显示打包成功/失败 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7D83Z 2023-11-11 22:37:57 +08:00
c6e722de60 生态适配脚本打包器设置使用 xz 格式打包 deb 2023-11-11 22:30:18 +08:00
de76733f3f 修复简易打包器无法打开的问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I85F9M 2023-11-11 22:24:15 +08:00
37ad313a66 修改程序标题 2023-11-11 22:18:20 +08:00
d62ec78926 qemu-system检测 2023-11-11 22:10:49 +08:00
7d1d121c01 缺少return 0; 2023-11-11 21:52:13 +08:00
f20565af53 调整 2023-11-11 21:41:46 +08:00
8b0d0f1018 修复虚拟机工具在系统版本选择第 5 项及以后出现不会挂载 ISO 的问题(使用 Qemu 的情况下) 2023-11-11 21:37:49 +08:00
e7cbbc62b9 设置第一启动项为CD/DVD 2023-11-11 21:29:51 +08:00
844f709480 移除端口转发 2023-11-11 21:26:53 +08:00
7571a6aafc 启动器虚拟机快捷方式支持启动arm32、arm64架构系统 2023-11-11 21:24:13 +08:00
47bdde1eb3 支持使用Qemu运行armhf、aarch64系统 2023-11-11 20:53:27 +08:00
f5b2a3fd93 新增arm32、arm64 uefi固件 2023-11-11 19:54:24 +08:00
bc0c9039fd 微调 2023-11-11 19:44:28 +08:00
3f6c4a47ff Qemu安装功能新增安装qemu-efi-aarch64 2023-11-11 19:38:02 +08:00
bab6115348 新增新的系统选项 2023-11-11 18:54:02 +08:00
5f8387e14e 新增lat安装功能 2023-11-11 15:00:12 +08:00
1a786145fb 优化安装量检测 2023-11-11 10:04:00 +08:00
0c2f37c187 新增虚拟机测试;测试系统支持多行文本 2023-11-07 21:00:32 +08:00
134fff9f17 新增虚拟机日志输出和读取功能(不使用安装器) 2023-11-07 19:34:28 +08:00
4853cafb67 新增虚拟机日志输出和读取功能 2023-11-07 19:26:33 +08:00
0300f8e599 在主界面点击“安装”按钮后自动切换至帮助页面 2023-11-07 18:47:21 +08:00
97b761067b 新增kvm检测 2023-11-05 14:36:43 +08:00
d93e7475ff 修改安装器文本提示 2023-11-05 13:56:43 +08:00
b031667887 修改Windows安装器提示文本
Signed-off-by: gfdgd xi <3025613752@qq.com>
2023-11-01 08:22:51 +00:00
3fde8e01bc 漏改版本号 2023-09-30 13:04:32 +08:00
09a95ebac4 3.4.1 2023-09-30 13:00:22 +08:00
2dc251fcb5 支持识别deepin-wine6-vannila 2023-09-30 10:52:13 +08:00
b873d3e8ab 移除debian文件夹 2023-09-30 10:21:38 +08:00
61ea114669 调整自动构建 2023-09-30 10:17:59 +08:00
96f02440ca 回滚 2023-09-30 10:15:15 +08:00
6a2bb2e9ca 调整错误 2023-09-30 10:09:04 +08:00
e617c24bd1 修改readme 2023-09-30 10:05:53 +08:00
858617a3ae 调整自动构建 2023-09-30 10:03:12 +08:00
30e4c9d8bb 调整架构 2023-09-30 09:52:17 +08:00
361f3cf859 优化wine打入deb包的run.sh 2023-09-30 09:50:18 +08:00
368a9d218a 调整Makefile 2023-09-29 14:38:27 +08:00
dc7cb37d7f makefile忘记创建文件夹 2023-09-29 14:04:08 +08:00
036639d830 调整ICON 2023-09-29 14:03:15 +08:00
07f56b820d makefile调整 2023-09-29 14:01:25 +08:00
0bef686aa6 debian文件 2023-09-29 13:58:42 +08:00
982521b0c3 修改makefile 2023-09-29 13:42:21 +08:00
87a54b8d72 修改makefile 2023-09-29 13:41:48 +08:00
ac12c24afd 支持识别spark-wine8-wow 2023-09-18 22:01:35 +08:00
0f96e1d91a 修改box86安装器至使用自建源 2023-09-10 09:07:45 +08:00
6689a5edb1 英语README雏形 2023-09-06 22:32:37 +08:00
b4ef46ee38 新增wine应用架构批量转换脚本 2023-09-03 11:48:17 +08:00
a83e0bb2b6 新增交流群入口 2023-09-02 10:16:48 +08:00
9fdc39446e 修复部分机器无法输入密码安装box86的问题 2023-09-01 13:52:32 +08:00
9892ff71a2 Change README 2023-08-27 22:16:12 +08:00
2bfa809caf 新增QQ群号 2023-08-19 12:38:41 +08:00
300 changed files with 20529 additions and 2304 deletions

69
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,69 @@
---
name: 程序bug
about: 反馈程序的故障
---
需要把下面的替换成自己的信息,下面为例子
# 故障表现(最好带图、日志)
按右上角叉叉可以关闭运行器
![图片.png](https://storage.deepin.org/thread/202308132203366743_图片.png)
## 日志(终端输入 `deepin-wine-runner` 输出的内容)
```
gfdgd_xi@gfdgdxi-PC:~$ deepin-wine-runner
/usr/bin/deepin-terminal
/usr/bin/deepin-wine6-stable
/usr/bin/deepin-wine
/usr/bin/qemu-i386-static
/usr/bin/qemu-i386
/usr/bin/qemu-x86_64
['', '']
/usr/bin/qemu-i386
/usr/bin/qemu-x86_64
['', '']
{'基于 UOS box86 的 deepin-wine6-stable': "WINEPREDLL='/opt/apps/deepin-wine-runner/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib BOX86_NOSIGSEGV=1 /opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine ", '基于 UOS exagear 的 deepin-wine6-stable': "WINEPREDLL='/opt/apps/deepin-wine-runner/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix /home/gfdgd_xi/.deepinwine/debian-buster --utmp-paths-list /home/gfdgd_xi/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list /home/gfdgd_xi/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list /home/gfdgd_xi/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine ", '使用 Flatpak 安装的 Wine': 'flatpak run org.winehq.Wine', 'deepin-wine6 stable': 'deepin-wine6-stable', 'deepin-wine5 stable': 'deepin-wine5-stable', 'spark-wine': 'spark-wine', 'spark-wine7-devel': 'spark-wine7-devel', 'spark-wine8': 'spark-wine8', 'deepin-wine': 'deepin-wine', 'deepin-wine5': 'deepin-wine5', 'wine': 'wine', 'wine64': 'wine64', 'ukylin-wine': 'ukylin-wine', 'mono这不是 wine但可以实现初步调用运行 .net 应用)': 'mono', '基于 linglong 的 deepin-wine6-stable不推荐': "ll-cli run '' --exec '/bin/deepin-wine6-stable'", '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-amd64/bin/wine': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-amd64/bin/wine', '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-amd64/bin/wine-aarch64': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-amd64/bin/wine-aarch64', '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine', '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-i386': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-i386', '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-aarch64': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-aarch64', '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-x86_64': '/opt/apps/deepin-wine-runner/wine/wine-ce-8.13-riscv64/bin/wine-x86_64', '/home/gfdgd_xi/.deepinwine/wine-ce-8.13-amd64/bin/wine': '/home/gfdgd_xi/.deepinwine/wine-ce-8.13-amd64/bin/wine'}
[['cmd', 'cmd'], ['cmd', 'cmd.exe'], ['cmd', 'wineBottonPath/drive_c/windows/system32/cmd.exe'], ['Internet Explorer', 'iexplore'], ['Internet Explorer', 'iexplore.exe'], ['Internet Explorer', 'wineBottonPath/drive_c/Program Files/Internet Explorer/iexplore.exe'], ['Internet Explorer', 'wineBottonPath/drive_c/Program Files (x86)/Internet Explorer/iexplore.exe'], ['微信', 'wineBottonPath/drive_c/Program Files/Tencent/WeChat/WeChat.exe'], ['微信', 'wineBottonPath/drive_c/Program Files (x86)/Tencent/WeChat/WeChat.exe'], ['UltraISO', 'wineBottonPath/drive_c/Program Files/UltraISO/UltraISO.exe'], ['UltraISO', 'wineBottonPath/drive_c/Program Files (x86)/UltraISO/UltraISO.exe'], ['迅雷', 'wineBottonPath/drive_c/Program Files/Thunder Network/MiniThunder/Bin/ThunderMini.exe'], ['迅雷', 'wineBottonPath/drive_c/Program Files (x86)/Thunder Network/MiniThunder/Bin/ThunderMini.exe'], ['Microsoft Office Word', 'wineBottonPath/drive_c/Program Files/Microsoft Office/Office12/WINWORD.EXE'], ['Microsoft Office Word', 'wineBottonPath/drive_c/Program Files (x86)/Microsoft Office/Office12/WINWORD.EXE'], ['腾讯会议', 'wineBottonPath/drive_c/Program Files/Tencent/WeMeet/wemeetapp.exe'], ['腾讯会议', 'wineBottonPath/drive_c/Program Files (x86)/Tencent/WeMeet/wemeetapp.exe'], ['腾讯课堂', 'wineBottonPath/drive_c/Program Files/Tencent/EDU/bin/TXEDU.exe'], ['腾讯课堂', 'wineBottonPath/drive_c/Program Files (x86)/Tencent/EDU/bin/TXEDU.exe'], ['QQ', 'wineBottonPath/drive_c/Program Files/Tencent/QQ/Bin/QQ.exe'], ['QQ', 'wineBottonPath/drive_c/Program Files (x86)/Tencent/QQ/Bin/QQ.exe'], ['TIM', 'wineBottonPath/drive_c/Program Files/Tencent/TIM/Bin/TIM.exe'], ['TIM', 'wineBottonPath/drive_c/Program Files (x86)/Tencent/TIM/Bin/TIM.exe']]
lock
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
create icon [font] engine failed.[theme:bloom-dark] nonCache[theme].size[0] (No such file or directory)
create icon [floppy_unmount] engine failed.[theme:bloom-dark] nonCache[theme].size[1] (No such file or directory)
create icon [3floppy_unmount] engine failed.[theme:bloom-dark] nonCache[theme].size[2] (No such file or directory)
检测到库 riscv64
检测到库 arm64
检测到库 armhf
检测到库 i386
检测到库 s390x
检测到库 mips64el
检测到库 ppc64el
检测到库 amd64
版本号为3.4.0
普通版本
qt.qpa.xcb: QXcbConnection: XCB error: 5 (BadAtom), sequence: 390, resource id: 0, major code: 20 (GetProperty), minor code: 0
```
# 系统版本
- 系统Deepin 23
- 硬件:
![图片.png](https://storage.deepin.org/thread/202308132200482953_图片.png)
- 其他补充信息
# 之前做过什么操作
在终端里输入了内容
```bash
sudo apt upgrade
```
更新了系统
# 复现步骤
1. 打开运行器,然后点击右上角叉叉可以关闭
# 推测故障原因(可选)
Qt 默认有一套配置好的退出事件
# 联系方式(可选)

29
.github/workflows/auto-building-rpm.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: Auto Building Wine Runnerrpm
run-name: ${{ github.actor }} Auto Building Wine Runnerrpm 🚀
on:
push:
workflow_dispatch:
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: Building RPM
env:
GUSER: ${{ secrets.GUSER }}
PASSWORD: ${{ secrets.PASSWORD }}
UPLOADURL: ${{ secrets.UPLOADURL }}
run: |
# 配置环境
sudo apt update
sudo apt install git dpkg-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qt5-qmake rpm -y
git clone https://github.com/gfdgd-xi/deep-wine-runner
cd deep-wine-runner
make package-rpm
mv spark-deepin-wine-runner*.rpm /home/runner/spark-deepin-wine-runner.rpm
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner.rpm
path: /home/runner/spark-deepin-wine-runner.rpm

View File

@@ -1,5 +1,5 @@
name: Auto Building Wine Runner
run-name: ${{ github.actor }} Auto Building Wine Runner 🚀
name: Auto Building Wine Runnerdeb
run-name: ${{ github.actor }} Auto Building Wine Runnerdeb 🚀
on:
push:
workflow_dispatch:
@@ -18,13 +18,18 @@ jobs:
sudo apt install git dpkg-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qt5-qmake -y
git clone https://github.com/gfdgd-xi/deep-wine-runner
cd deep-wine-runner
make build
make package-deb
mv spark-deepin-wine-runner.deb ~
mv spark-deepin-wine-runner-ace.deb ~
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner.deb
path: /home/runner/spark-deepin-wine-runner.deb
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner-ace.deb
path: /home/runner/spark-deepin-wine-runner-ace.deb

View File

@@ -0,0 +1,78 @@
name: Building Wine Runner Off-line Pages(amd64)
run-name: ${{ github.actor }} Building Wine Runner Off-line Pages(amd64) 🚀
on:
workflow_dispatch:
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: Building DEB
env:
GUSER: ${{ secrets.GUSER }}
PASSWORD: ${{ secrets.PASSWORD }}
UPLOADURL: ${{ secrets.UPLOADURL }}
run: |
# 获取所需数据
cpu=$(cat /proc/cpuinfo | grep processor | wc -l)
# 配置环境
sudo apt update
sudo apt install python3-requests debootstrap xz-utils -y
sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools psmisc -y
cd ~
mkdir package
# 部署 chroot 环境
sudo debootstrap bookworm debian
wget https://github.com/gfdgd-xi/deep-wine-runner/raw/main/pardus-chroot
sudo cp pardus-chroot /usr/bin
sudo chmod 777 /usr/bin/pardus-chroot
sudo pardus-chroot debian
### 配置容器
## 加入 wine 源
sudo chroot debian dpkg --add-architecture i386
sudo chroot debian apt update
sudo chroot debian apt install wget -y
sudo chroot debian wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo chroot debian wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources
sudo chroot debian apt update
## 获取 Wine 运行器安装包
git clone https://github.com/gfdgd-xi/deep-wine-runner --depth=1
cd deep-wine-runner
make package-deb
cd ..
url=`python3 deep-wine-runner/off-line-shell/GetNewestDebUrl.py`
#wget $url
mv deep-wine-runner/spark-deepin-wine-runner.deb debian/tmp/wine-runner.deb
## 安装
sudo chroot debian apt install locales /tmp/wine-runner.deb winehq-devel fcitx xfce4-terminal -y
# 构建软件包
mkdir package/opt -p
mkdir package/runner -p
sudo cp debian/opt/wine-devel package/opt -rv
sudo cp debian/usr/bin package -rv
sudo cp debian/usr/lib package -rv
sudo cp debian/usr/lib32 package -rv
sudo cp debian/usr/lib64 package -rv
sudo cp debian/opt/apps/deepin-wine-runner/* package/runner -rv
cp deep-wine-runner/off-line-shell/run.sh package -rv
cp deep-wine-runner/off-line-shell/bwrap_amd64 package/bwrap -rv
sudo chmod 777 -Rv package ; true
cd package
# 添加 Wine 运行器离线模式标识
touch runner/off-line.lock
tar -cvf ../spark-deepin-wine-runner-off-line.tar *
cd ..
xz -T $cpu spark-deepin-wine-runner-off-line.tar
cp deep-wine-runner/off-line-shell/compression-packager.sh spark-deepin-wine-runner-off-line.sh
cat spark-deepin-wine-runner-off-line.tar.xz >> spark-deepin-wine-runner-off-line.sh
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner-off-line.tar.xz
path: /home/runner/spark-deepin-wine-runner-off-line.tar.xz
- name: upload result
uses: actions/upload-artifact@v1
with:
name: spark-deepin-wine-runner-off-line.sh
path: /home/runner/spark-deepin-wine-runner-off-line.sh

6
.gitignore vendored Normal file
View File

@@ -0,0 +1,6 @@
*.user*
__pycache__
*.deb
VM-source/Makefile
*.rpm
*.pro.user

View File

@@ -38,6 +38,11 @@ def InstallSparkWine(wine):
else:
os.system(f"sudo apt install \"{wine}\" -y")
def InstallWineWithYay(wine):
if os.system("which yay > /dev/null"):
os.system("sudo pacman -S yay --noconfirm")
os.system(f"yay -S \"{wine}\"")
###################
# 程序功能
###################
@@ -53,6 +58,40 @@ m m "
print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input()
# 如果是 Fedora
if os.path.exists("/etc/fedora-release"):
os.system("sudo pacman -Syu")
print("请问是否要安装原版 winewine64[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo yum install wine")
print("全部完成!")
exit()
# 判断系统版本,如果是 Arch Linux则另外处理
if os.path.exists("/etc/arch-release"):
os.system("sudo pacman -Syu")
print("请问是否要安装原版 winewine64[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo pacman -S wine")
if os.system("which deepin-wine5-stable > /dev/null"):
print("请问是否要安装 deepin-wine5-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallWineWithYay("deepin-wine5-stable")
if os.system("which deepin-wine6-stable > /dev/null"):
print("请问是否要安装 deepin-wine6-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallWineWithYay("deepin-wine6-stable")
if os.system("which deepin-wine8-stable > /dev/null"):
print("请问是否要安装 deepin-wine8-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallWineWithYay("deepin-wine8-stable")
print("全部完成!")
exit()
os.system("sudo apt update")
print("请问是否要更新操作系统?[Y/N]", end=' ')
choose = input().upper()
@@ -81,6 +120,11 @@ if os.system("which deepin-wine6-stable > /dev/null"):
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine6-stable -y")
if os.system("which deepin-wine8-stable > /dev/null"):
print("请问是否要安装 deepin-wine8-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine6-stable -y")
if os.system("which spark-wine7-devel > /dev/null"):
print("请问是否要安装 spark-wine7-devel需要安装最新版星火应用商店[Y/N]", end=' ')
choose = input().upper()

View File

@@ -1,8 +1,19 @@
#!/usr/bin/env python3
# 读取设置单独用一个 py 文件
import os
import sys
import json
import base64
import shutil
import getpass
import datetime
import traceback
import subprocess
import webbrowser
import configparser
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
# 获取用户主目录
def get_home():
@@ -18,7 +29,7 @@ def readtxt(path):
defultProgramList = {
"Architecture": "Auto",
"Debug": True,
"DefultWine": "deepin-wine6 stable",
"DefultWine": "deepin-wine8-stable",
"DefultBotton" : get_home() + "/.wine",
"TerminalOpen": False,
"WineOption": "",
@@ -36,6 +47,15 @@ defultProgramList = {
"FontSize": 1
}
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
try:
information = json.loads(readtxt(f"{programPath}/information.json"))
setting = json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineSetting.json"))
except:
traceback.print_exc()
setting = defultProgramList
def SetFont(app):
defaultFont = app.font()
size = setting["FontSize"]
@@ -47,7 +67,358 @@ def SetFont(app):
font.setPointSize(int(defaultFont.pointSize() / size))
app.setFont(font)
try:
setting = json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineSetting.json"))
except:
setting = defultProgramList
def getFileFolderSize(fileOrFolderPath):
"""get size for file or folder"""
totalSize = 0
try:
if not os.path.exists(fileOrFolderPath):
return totalSize
if os.path.isfile(fileOrFolderPath):
totalSize = os.path.getsize(fileOrFolderPath) # 5041481
return totalSize
if os.path.islink(fileOrFolderPath):
return 0
if os.path.isdir(fileOrFolderPath):
with os.scandir(fileOrFolderPath) as dirEntryList:
for curSubEntry in dirEntryList:
curSubEntryFullPath = os.path.join(fileOrFolderPath, curSubEntry.name)
if curSubEntry.is_dir():
curSubFolderSize = getFileFolderSize(curSubEntryFullPath) # 5800007
totalSize += curSubFolderSize
elif curSubEntry.is_file():
curSubFileSize = os.path.getsize(curSubEntryFullPath) # 1891
totalSize += curSubFileSize
return totalSize
except:
return totalSize
def FileToBase64(filePath):
src = ""
with open(filePath, "rb") as f:
base64Byte = base64.b64encode(f.read())
src += base64Byte.decode("utf-8")
return src
def SaveLogWindow():
pass
def OpenUrl(url):
print(url.url())
# 判断是否可以使用小窗打开
webbrowser.open_new_tab(url.url())
def Appreciate():
global messageAppreciate
messageAppreciate = QtWidgets.QTextBrowser()
messageAppreciate.setHtml(f"""<h3>请作者喝杯茶</h3>
<p>如果您觉得 Wine 运行器对你有帮助,可以请作者喝杯茶 </p>
<p>
<img src="{programPath}/Icon/QR/Wechat.png" width="250" />
<img src="{programPath}/Icon/QR/Alipay.jpg" width="250" />
<img src="{programPath}/Icon/QR/QQ.png" width="250" >
</p>
<hr/>
<h3>广告</h3>
<p>支付宝官方活动,扫描获得支付红包!</p>
<p><img src="{programPath}/Icon/QR/advertisement0.jpg" width="250" ></p>""")
messageAppreciate.resize(int(messageAppreciate.frameGeometry().width() * 1.5), int(messageAppreciate.frameGeometry().height() * 1.2))
messageAppreciate.setWindowTitle("赞赏作者/请作者喝杯茶")
messageAppreciate.show()
# 显示“关于这个程序”窗口
def about_this_program()->"显示“关于这个程序”窗口":
global about
global title
global iconPath
global clickIconTime
clickIconTime = 0
QT.message = QtWidgets.QMainWindow()
QT.message.setWindowIcon(QtGui.QIcon(iconPath))
messageWidget = QtWidgets.QWidget()
messageWidget.setObjectName("messageWidget")
messageWidget.setStyleSheet(f"QWidget#messageWidget {{background: url({programPath}/Icon/Program/about-background.png) no-repeat;background-position: left bottom;}}")
QT.message.setWindowTitle(f"关于 {title}")
messageLayout = QtWidgets.QGridLayout()
iconShow = QtWidgets.QLabel(f"<a href='https://www.gfdgdxi.top'><img width=256 src='{iconPath}'></a>")
def ChangeIcon():
global clickIconTime
if clickIconTime >= 0:
clickIconTime = clickIconTime + 1
if clickIconTime > 0:
clickIconTime = -1
for k in ["", "Function", "Program"]:
try:
for i in os.listdir(f"{programPath}/Icon/{k}"):
if i[-4:] == ".svg" or i[-4:] == ".png":
iconPathList.append(f"{programPath}/Icon/{k}/{i}")
except:
traceback.print_exec()
randomNumber = random.randint(0, len(iconPathList) - 1)
iconShow.setText(f"<a href='https://www.gfdgdxi.top'><img width=256 src='{iconPathList[randomNumber]}'></a><p align='center'>{randomNumber + 1}/{len(iconPathList)}</p>")
iconShow.linkActivated.connect(ChangeIcon)
messageLayout.addWidget(iconShow, 0, 0, 1, 1, QtCore.Qt.AlignTop)
aboutInfo = QtWidgets.QTextBrowser(messageWidget)
aboutInfo.setFocusPolicy(QtCore.Qt.NoFocus)
#aboutInfo.copyAvailable.connect(lambda: print("b"))
aboutInfo.anchorClicked.connect(OpenUrl)
aboutInfo.setOpenLinks(False)
aboutInfo.setHtml(about)
aboutInfo.setOpenExternalLinks(False)
messageLayout.addWidget(aboutInfo, 0, 1, 1, 1)
ok = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "确定"))
ok.clicked.connect(QT.message.close)
messageLayout.addWidget(ok, 1, 1, 1, 1, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight)
messageWidget.setLayout(messageLayout)
QT.message.setCentralWidget(messageWidget)
QT.message.resize(int(messageWidget.frameGeometry().width() * 1.5), int(messageWidget.frameGeometry().height() * 1.5))
QT.message.show()
class SaveLogReport():
userName = getpass.getuser()
time = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
kernelVersion = subprocess.getoutput("uname -a")
wineRunnerVersion = information["Version"]
architecture = subprocess.getoutput("arch")
cpuInfo = subprocess.getoutput("lscpu")
lsmod = subprocess.getoutput("lsmod")
lshw = subprocess.getoutput("lshw")
cpu = subprocess.getoutput("cat /proc/cpuinfo | grep 'model name' | head -n 1 | awk -F: '{print $2}'")
gpu = subprocess.getoutput("lspci | grep -i 'VGA\|3D\|2D'")
def __init__(self, chooseWineName, chooseWineCommand, runCommand, binPath, logOut, description="", imgPath=[]) -> None:
self.chooseWineName = chooseWineName
self.chooseWineCommand = chooseWineCommand
self.runCommand = runCommand
self.binPath = binPath
self.logOut = logOut
self.description = description
self.imgPath = imgPath
# 读取可执行文件信息
if os.path.exists(binPath):
try:
self.binSize = f"{str(int(getFileFolderSize(binPath) / 1024 / 1024))}MB"
except:
self.binSize = "Error"
traceback.print_exc()
os.system(f"'{programPath}/wrestool' '{binPath}' -x -t 14 > '/tmp/wine-runner-log-icon.png'")
# 如果提取成功
if os.path.exists("/tmp/wine-runner-log-icon.png"):
# 转换成 base64 编码
self.binIcon = "data:image/jpg;base64," + FileToBase64("/tmp/wine-runner-log-icon.png")
self.binIconPath = "/tmp/wine-runner-log-icon.png"
else:
self.binIcon = "Not Found"
self.binIconPath = "Not Found"
else:
self.binSize = "Not Found"
self.binIcon = "Not Found"
self.binIconPath = "Not Found"
try:
self.memoryInfo = readtxt("/proc/meminfo")
except:
traceback.print_exc()
self.memoryInfo = traceback.format_exc()
# 读取系统信息
try:
with open("/etc/os-release", "r") as file:
text = "[Default]\n" + file.read()
conf = configparser.ConfigParser()
conf.read_string(text)
self.systemVersion = conf.get("Default", "PRETTY_NAME")
except:
traceback.print_exc()
self.systemVersion = subprocess.getoutput("lsb_release -a")
def SetWindow(self):
def AddImageToListClicked():
choose = QtWidgets.QFileDialog.getOpenFileNames(messagebox, "选择图像", get_home(), "图片文件(*.png *.jpg *.bmp *.gif *.svg);;所有文件(*.*)")
print(choose)
for i in choose[0]:
if i in imageList:
continue
imageList.append(i)
nmodel = QtGui.QStandardItemModel(messagebox)
for i in imageList:
item = QtGui.QStandardItem(i)
nmodel.appendRow(item)
imageListView.setModel(nmodel)
def DeleteImageToListClicked():
index = imageListView.currentIndex().row()
if index < 0:
QtWidgets.QMessageBox.information(messagebox, "提示", "您未选择任何项")
return
del imageList[index]
nmodel = QtGui.QStandardItemModel(messagebox)
for i in imageList:
item = QtGui.QStandardItem(i)
nmodel.appendRow(item)
imageListView.setModel(nmodel)
# 选择第一项
imageListView.setCurrentIndex(nmodel.index(0, 0))
def OkClicked():
self.description = description.toPlainText()
self.imgPath = imageList
path = QtWidgets.QFileDialog.getSaveFileName(messagebox, "保存日志报告", get_home(), "7z 文件(*.7z);;所有文件(*.*)")
print(path)
if path[0] != "":
try:
self.To7z(path[0])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(messagebox, "错误", traceback.format_exc())
return
messagebox.close()
QtWidgets.QMessageBox.information(messagebox, "提示", "生成完成!\n建议将报告与可执行文件一并提交以便排除错误")
def CancelClicked():
messagebox.close()
# 权重
size = QtWidgets.QSizePolicy()
size.setHorizontalPolicy(0)
imageList = []
messagebox = QtWidgets.QDialog()
layout = QtWidgets.QGridLayout()
description = QtWidgets.QTextEdit()
imageListView = QtWidgets.QListView()
addImageToList = QtWidgets.QPushButton("+")
deleteImageToList = QtWidgets.QPushButton("-")
controlLayout = QtWidgets.QHBoxLayout()
ok = QtWidgets.QPushButton("保存")
cancel = QtWidgets.QPushButton("取消")
description.setPlaceholderText("可以填写故障的现象、复现步骤以及其他有关的信息,同时也可以填写联系方式")
addImageToList.clicked.connect(AddImageToListClicked)
deleteImageToList.clicked.connect(DeleteImageToListClicked)
ok.clicked.connect(OkClicked)
cancel.clicked.connect(CancelClicked)
addImageToList.setSizePolicy(size)
deleteImageToList.setSizePolicy(size)
ok.setSizePolicy(size)
cancel.setSizePolicy(size)
layout.addWidget(QtWidgets.QLabel("<h2>描述(建议填写)</h2>"), 0, 0)
layout.addWidget(description, 1, 0, 1, 3)
layout.addWidget(QtWidgets.QLabel("<hr>"), 2, 0, 1, 4)
layout.addWidget(QtWidgets.QLabel("<h2>截图(建议选择)</h2>"), 3, 0)
layout.addWidget(imageListView, 4, 0, 4, 3)
layout.addWidget(addImageToList, 5, 3)
layout.addWidget(deleteImageToList, 6, 3)
layout.addLayout(controlLayout, 8, 2, 1, 2)
controlLayout.addWidget(cancel)
controlLayout.addWidget(ok)
messagebox.setLayout(layout)
messagebox.exec_()
def To7z(self, savePath):
os.system("rm -rfv /tmp/wine-runner-log")
os.system("mkdir -v /tmp/wine-runner-log")
self.ToHtml("/tmp/wine-runner-log/index.html", toZip=True)
if os.path.exists(self.binIconPath):
shutil.copy(self.binIconPath, f"/tmp/wine-runner-log/{os.path.basename(self.binIconPath)}")
lists = ["wine-runner-log-icon.png", "index.html"]
for i in self.imgPath:
name = os.path.basename(i)
if os.path.basename(i) in lists:
while name in lists:
name = os.path.splitext(name)[0] + "-copy" + os.path.splitext(name)[1]
lists.append(name)
else:
lists.append(name)
shutil.copy(i, f"/tmp/wine-runner-log/{name}")
os.system(f"7z a '{savePath}' /tmp/wine-runner-log")
def ToHtml(self, savePath, toZip=False):
print(self.userName, self.time)
# 对文本进行处理
description = ""
logOut = ""
cpuInfo = ""
memoryInfo = ""
imgPath = ""
lsmod = ""
lshw = ""
charReplaceMap = {
"<": "&lt;",
">": "&gt;",
"&": "&amp;",
'"': "&quot;"
}
for i in self.description.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
description += f'<span class="line code">{i}</span>\n'
for i in self.logOut.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
logOut += f'<span class="line code">{i}</span>\n'
for i in self.cpuInfo.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
cpuInfo += f'<span class="line code">{i}</span>\n'
for i in self.memoryInfo.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
memoryInfo += f'<span class="line code">{i}</span>\n'
for i in self.lsmod.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
lsmod += f'<span class="line code">{i}</span>\n'
for i in self.lshw.splitlines():
for k in charReplaceMap:
i = i.replace(k, charReplaceMap[k])
lshw += f'<span class="line code">{i}</span>\n'
text = readtxt(f"{programPath}/Resources/LogTemplate/template.html")
if toZip:
binIcon = os.path.basename(self.binIconPath)
# 重名排除
lists = ["wine-runner-log-icon.png", "index.html"]
for i in self.imgPath:
name = os.path.basename(i)
if os.path.basename(i) in lists:
while name in lists:
name = os.path.splitext(name)[0] + "-copy" + os.path.splitext(name)[1]
lists.append(name)
else:
lists.append(name)
imgPath += f'<p align="center"><img src="{name}" class="imgShow"></p>\n'
else:
binIcon = self.binIcon
for i in self.imgPath:
try:
path = "data:image/jpg;base64," + FileToBase64(i)
except:
traceback.print_exc()
path = "Error"
imgPath += f' <p align="center"><img src="{path}" class="imgShow"></p>\n'
replaceMap = {
"%UserName%": self.userName,
"%Time%": self.time,
"%KernelVersion": self.kernelVersion,
"%ChooseWineName%": self.chooseWineName,
"%ChooseWineCommand%": self.chooseWineCommand,
"%RunCommand%": self.runCommand,
"%BinPath%": self.binPath,
"%WineRunnerVersion%": self.wineRunnerVersion,
"%BinSize%": self.binSize,
"%BinIcon%": binIcon,
"%CPUInfo%": cpuInfo,
"%Architecture%": self.architecture,
"%MemoryInfo%": memoryInfo,
"%LogOut%": logOut,
"%Description%": description,
"%ImgPath%": imgPath,
"%Lsmod%": lsmod,
"%Lshw%": lshw,
"%CPU%": self.cpu,
"%GPU%": self.gpu,
"%SystemVersion%": self.systemVersion
}
for i in replaceMap.keys():
text = text.replace(i, replaceMap[i])
with open(savePath, "w") as file:
file.write(text)

View File

@@ -0,0 +1,12 @@
[Desktop Entry]
Type=Application
X-Categories=System;Wine;
Exec=/usr/bin/deepin-wine-package-builder "~/.wine" %F
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Package Builder
Name[zh]=Wine 打包器
Terminal=false
StartupNotify=true
NoDisplay=true
Keywords=exe;scr;
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;

View File

@@ -0,0 +1,12 @@
[Desktop Entry]
Type=Application
X-Categories=System;Wine;
Exec=/usr/bin/deepin-wine-packager-easy-builder %F
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Package Builder
Name[zh]=Wine 简易打包器
Terminal=false
StartupNotify=true
NoDisplay=true
Keywords=exe;scr;
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
X-Categories=System;Wine;
Exec=/usr/bin/deepin-wine-packager-with-script
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Package Builder For UOS
NoDisplay=true
Name[zh]=Wine 打包器(基于活动脚本)
Terminal=false
StartupNotify=true

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
X-Categories=System;Wine;
Exec=/opt/apps/deepin-wine-runner/RunVM.sh %F
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Setting VirtualMachine
Name[zh]=设置 Windows 虚拟机
NoDisplay=true
Terminal=false
StartupNotify=true

View File

@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
X-Categories=System;
Exec=/opt/apps/deepin-wine-runner/StartVM.sh %F
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Start Windows VirtualMachine
Name[zh]=开启 Windows 虚拟机
Terminal=false
StartupNotify=true

View File

@@ -0,0 +1,11 @@
[Desktop Entry]
Type=Application
X-Categories=System;Wine;
Exec=/usr/bin/deepin-wine-runner %F
Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
Name=Wine Runner
Name[zh]=Wine 运行器
Terminal=false
StartupNotify=true
Keywords=exe;scr;
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;

View File

@@ -1,5 +1,11 @@
#!/usr/bin/env python3
import os
import sys
import json
import base64
import requests
print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9JbnN0YWxsLnBocD9WZXJzaW9uPQ==").decode("utf-8") + sys.argv[1]).text)
# 读取版本号
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
with open(f"{programPath}/information.json") as file:
version = json.loads(file.read())["Version"]
print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9JbnN0YWxsLnBocD9WZXJzaW9uPQ==").decode("utf-8") + version).text)

10
GetProgramVersion.py Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/env python3
# 读取程序版本号
import os
import json
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
try:
with open(f"{programPath}/information.json") as file:
print(json.loads(file.read())["Version"])
except:
print("1.0.0")

View File

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

BIN
Icon/Program/AboutIcon1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

BIN
Icon/QR/Alipay.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

BIN
Icon/QR/QQ.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
Icon/QR/Wechat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
Icon/QR/advertisement0.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

View File

@@ -21,13 +21,13 @@ if [[ $? == 0 ]]; then
fi
echo 使用国内源
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/debian ./ > /etc/apt/sources.list.d/box86.list"
wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
sudo bash -c "echo deb http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box86-debs/debian ./ > /etc/apt/sources.list.d/box86.list"
wget -qO- http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
echo "adding key..."
installBox=box86-generic-arm
if [[ $PCArch == "arm64" ]]; then
sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/debian ./ > /etc/apt/sources.list.d/box64.list"
wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
sudo bash -c "echo deb http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box64-debs/debian ./ > /etc/apt/sources.list.d/box64.list"
wget -qO- http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
installBox="box86-generic-arm box64-generic-arm"
sudo dpkg --add-architecture armhf
fi
@@ -40,8 +40,8 @@ echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generi
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
echo " - Box64https://github.com/ryanfortner/box64-debs/"
echo " - Box86https://github.com/ryanfortner/box86-debs/"
echo " - Box64国内镜像http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs"
echo " - Box64国内镜像http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs"
echo " - Box64国内镜像http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box64-debs"
echo " - Box64国内镜像http://gfdgdxi.v5.idcfengye.com/spark-deepin-wine-runner/data/box86-debs"
read
sudo apt install -y $installBox
echo 安装完成!按回车键退出

31
InstallBox86-own.sh Executable file
View File

@@ -0,0 +1,31 @@
#!/bin/bash
if [[ `whoami` != root ]]; then
echo 请以 root 权限运行
echo 按任意键退出
read
exit 1
fi
PCArch=`dpkg --print-architecture`
echo 使用国内源
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
#sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/debian ./ > /etc/apt/sources.list.d/box86.list"
#wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
#echo "adding key..."
#installBox=box86-generic-arm
#if [[ $PCArch == "arm64" ]]; then
# sudo bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/debian ./ > /etc/apt/sources.list.d/box64.list"
# wget -qO- http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg
# installBox="box86-generic-arm box64-generic-arm"
# sudo dpkg --add-architecture armhf
#fi
wget http://deb.box86.wine-runner.gfdgdxi.top/sources/github.sh
bash github.sh
rm github.sh
echo " + sudo apt update"
sudo apt update
sudo apt install binfmt-support -y
sudo apt install libc6:armhf -y
sudo apt install -y box86
sudo apt install -y box64
echo 安装完成!按回车键退出
read

22
InstallLat.sh Executable file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
echo lat只能在loongarch架构安装
# 检查是否有 aptss
aptPath=apt
if [[ -f /usr/bin/aptss ]]; then
aptPath=aptss
fi
# 判断新旧世界
if [[ `dpkg --print-architecture` == "loong64" ]]; then
# 新世界
sudo $aptPath update
sudo $aptPath install lat lat-runtime-i386 lat-runtime-amd64
echo 按回车键退出
read
exit
fi
# 旧世界
sudo $aptPath update
sudo $aptPath install lat i386-runtime-base i386-runtime-extra
echo 按回车键退出
read
exit

View File

@@ -14,7 +14,10 @@ import os
import sys
import updatekiller
import traceback
import pyquery
try:
import pyquery
except:
os.system("python3 -m pip install --upgrade pyquery --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple")
if "--help" in sys.argv:
print("作者gfdgd xi")

View File

@@ -6,6 +6,22 @@ if [[ $? == 0 ]]; then
read
exit 1
fi
# 判断是不是 Fedora
if [[ -f /etc/fedora-release ]]; then
sudo yum update -y
sudo yum install qemu-user qemu-user-static -y
echo 安装完成,按回车键后退出
read
exit
fi
# 判断是不是 Arch Linux
if [[ -f /etc/arch-release ]]; then
sudo pacman -Syu
sudo pacman -S qemu-user qemu-user-static --noconfirm
echo 安装完成,按回车键后退出
read
exit
fi
sudo apt update
sudo apt install binfmt-support qemu-user qemu-user-static -y
echo 安装完成,按回车键后退出

View File

@@ -2,8 +2,9 @@
arch=amd64
libPath=/usr/lib/x86_64-linux-gnu/
version=1.0.1
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=arm64
libPath=/usr/lib/aarch64-linux-gnu
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=armhf
libPath=/usr/lib/arm-linux-gnueabihf/
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=i386
libPath=/usr/lib/i386-linux-gnu/
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=mips64el
libPath=/usr/lib/mips64el-linux-gnuabi64
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=ppc64el
libPath=/usr/lib/powerpc64le-linux-gnu/
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=riscv64
libPath=/usr/lib/riscv64-linux-gnu/
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -2,8 +2,9 @@
arch=s390x
libPath=/usr/lib/s390x-linux-gnu/
version=1.0.0
url="https://jihulab.com/gfdgd-xi/qemu-runtime/-/raw/main/$arch-runtime-for-qemu_${version}_all.deb"
url="https://sourceforge.net/projects/deep-wine-runner-wine-download/files/${version}-${arch}-runtime-for-qemu/${arch}-runtime-for-qemu_${version}_all.deb/download"
fileName=`basename $url`
fileName=`basename $filename`
if [[ -d $libPath ]]; then
echo "已安装 $arch 运行库,按回车键退出"

View File

@@ -69,7 +69,8 @@ m m "
for i in [
["原版 WineWine64", "wine"],
["deepin-wine5-stable", "deepin-wine5-stable"],
["deepin-wine6-stable", "deepin-wine6-stable"]
["deepin-wine6-stable", "deepin-wine6-stable"],
["deepin-wine8-stable", "deepin-wine8-stable"]
]:
if not os.system(f"which {i[1]} > /dev/null"):
continue

5
LANG/Makefile Normal file
View File

@@ -0,0 +1,5 @@
build:
lrelease deepin-wine-packager-en_US.ts -qm deepin-wine-packager-en_US.qm
lrelease deepin-wine-runner-en_US.ts -qm deepin-wine-runner-en_US.qm
lrelease installwine-en_US.ts -qm installwine-en_US.qm
lrelease virtualmachine-en_US.ts -qm virtualmachine-en_US.qm

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,13 +1,40 @@
build:
make package -j$(nproc)
make package-deb -j$(nproc)
replace:
rm Icon/Program/*
rm Icon/*.svg
rm Icon/doge.png
echo "[[], []]" > IconList.json
clean:
python3 RemovePycacheFile.py
cd VM-source ; make clean
rm *.deb -fv
rm *.pkg.tar* -fv
cd VM-source ; qmake . ; make clean
rm VM-source/VirtualMachine -rfv
rm -rfv VM-source/.qmake.stash
package:
#package-rpm:
package-rpm:
sudo rm -rf /root/rpmbuild/
sudo rm -rf /tmp/deep-wine-runner-builder-source
mkdir /tmp/deep-wine-runner-builder-source -pv
cp * /tmp/deep-wine-runner-builder-source -rv
cp rpm/spark-deepin-wine-runner.spec /tmp/spark-deepin-wine-runner.spec
bash builddeb/ChangeDebVersion.sh
sudo rpmbuild -bb /tmp/spark-deepin-wine-runner.spec --target noarch
sudo bash -c 'cp /root/rpmbuild/RPMS/noarch/spark-deepin-wine-runner-*.rpm .'
sudo rm -rf /root/rpmbuild/
sudo rm -rf /tmp/deep-wine-runner-builder-source
package-pkg:
#sudo debtap -u
sudo debtap -Q spark-deepin-wine-runner.deb
sudo debtap -Q spark-deepin-wine-runner-ace.deb
package-deb:
#cd VM-source && qmake
#cd VM-source && make
#cd wine && make
@@ -15,10 +42,11 @@ package:
mkdir deb/opt/apps/deepin-wine-runner/LANG -pv
cp -rv helperset deb/opt/apps/deepin-wine-runner/
#cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM
cp -rv VM-source/Windows7X64Auto.iso VM
cp -rv VM-source/Windows7X86Auto.iso VM
cp -rv VM-source/test.qcow2 VM
cp -rv VM-source/*.fd VM
cp -rv wine/ deb/opt/apps/deepin-wine-runner/
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
cp -rv information.json package-script
@@ -60,6 +88,7 @@ package:
cp -rv RegShot deb/opt/apps/deepin-wine-runner
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
cp -rv AutoShell deb/opt/apps/deepin-wine-runner
cp -rv Resources deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager-with-script.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager.py deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-runner-update-bug deb/opt/apps/deepin-wine-runner
@@ -92,6 +121,7 @@ package:
cp -rv dxvk.7z deb/opt/apps/deepin-wine-runner
cp -rv InstallFont.py deb/opt/apps/deepin-wine-runner
cp -rv CheckDLL deb/opt/apps/deepin-wine-runner
cp -rv InstallLat.sh deb/opt/apps/deepin-wine-runner
#cp -rv exagear.7z deb/opt/apps/deepin-wine-runner
cp -rv dlls-arm.7z deb/opt/apps/deepin-wine-runner
cp -rv deepin.list deb/opt/apps/deepin-wine-runner
@@ -147,10 +177,18 @@ package:
ln -s /opt/apps/deepin-wine-runner/InstallNetFramework.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-runner-wine-netframework-installer
ln -s /opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-runner-wine-vscppruntime-installer
ln -s /opt/apps/deepin-wine-runner/deepin-wine-venturi-setter.py /tmp/spark-deepin-wine-runner-builder/usr/bin/deepin-wine-venturi-setter
bash builddeb/ChangeDebVersion.sh
chmod -Rv 777 /tmp/spark-deepin-wine-runner-builder/opt
chmod -Rv 777 /tmp/spark-deepin-wine-runner-builder/usr
dpkg-deb -Z xz -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
# 构建 ace 包
cp -rv deb-ace /tmp/spark-deepin-wine-runner-builder
cp -rv spark-deepin-wine-runner.deb /tmp/spark-deepin-wine-runner-builder/opt/apps/spark-deepin-wine-runner-ace
bash builddeb/ChangeDebVersion.sh
sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
dpkg-deb -Z xz -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
dpkg-deb -Z xz -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner-ace.deb
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
install:

View File

@@ -36,3 +36,21 @@ if terminal == "":
app = QtWidgets.QApplication(sys.argv)
QtWidgets.QMessageBox.critical(None, "错误", "无法识别到以下的任意一个终端\n" + " ".join(terminalList))
exit()
# 转包
class TurnDeb():
debPath = ""
def __init__(self, debPath):
self.debPath = debPath
def ToRpm(self):
if os.system("which alien"):
raise NameError("无法找到 alien 命令,请先安装 alien")
if os.system("which fakeroot"):
raise NameError("无法找到 fakeroot 命令,请先安装 fakeroot")
os.system(f"fakeroot alien -r '{self.debPath}' -c")
def ToTarZst(self):
if os.system("debtap"):
raise NameError("无法找到 debtap 命令,请先安装 debtap")
os.system(f"debtap -Q '{self.debPath}'")

View File

@@ -1,6 +1,22 @@
#!/bin/bash
# 如果是 Fedora
if [[-f /etc/fedora-release ]]; then
sudo yum update -y
sudo yum install qemu
echo 安装完成!按回车键退出
read
exit
fi
# 如果是 Arch Linux
if [[-f /etc/arch-release ]]; then
sudo pacman -Syu
sudo pacman -S qemu-user qemu-user-static qemu-full --noconfirm
echo 安装完成!按回车键退出
read
exit
fi
sudo apt update
sudo apt install qemu-system qemu-user qemu-efi -y
sudo apt install qemu-system qemu-user qemu-efi qemu-efi-aarch64 qemu-efi-arm -y
sudo apt install qemu-user-static binfmt-support qemu-system-gui -y
echo 安装完成!按回车键退出
read

262
README.md
View File

@@ -1,50 +1,55 @@
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
<h1 align="center">Wine 运行器 3.4.0.1</h1>
<h1 align="center">Wine 运行器 3.8.1</h1>
<hr>
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
## 介绍
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器运行库安装工具等。
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
此外它还简化了如下命令让你可以更简便地使用Wine
```bash
env WINEPREFIX=容器路径 winewine的路径 可执行文件路径
```
让你可以简易方便的使用 wine
是使用 Python3 的 PyQt5 构建的
测试平台deepin 20.8UOS 家庭版 22Ubuntu 22.04Ubuntu 20.04Ubuntu 23.04UOS 专业版 1050openkylincuteosyoyo os
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
而打包器可以方便的把您的 wine 容器打包成 deb 包供他人使用,程序创建的 deb 构建临时文件夹目录树如下:
```bash
/XXX
├── DEBIAN
│ └── control
│ └── postrm可选
└── opt
└── apps
└── XXX
├── entries
│ ├── applications
│ │ └── XXX.desktop
│ └── icons
│ └── hicolor
│ └── scalable
│ └── apps
│ └── XXX.pngXXX.svg
├── files
│ ├── files.7z
│ └── run.sh
└── info
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作且安装过程较为繁琐对小白不友好。于是该运行器为了解决该痛点内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器运行库安装工具等。
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
11 directories, 6 files
```
[![star](https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark)](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程小白专用链接https://bbs.deepin.org/post/246837
注:
**在使用运行器时不要随便动 .deepinwine 下的容器,否则会导致安装的 wine 应用无法正常打开**
**除非你有把握不会损坏容器**
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
[![star](https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark)](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程小白专用链接https://bbs.deepin.org/post/246837
打包器视频教程https://www.bilibili.com/video/BV1Bh4y1Q7nT/
Wine 运行器 QQ 交流群762985460
Wine 运行器离线包下载地址https://www.123pan.com/s/pDSKVv-pAJWv.html
### Debian sid 依赖
https://gfdgdxi.lanzouw.com/b0plly5cj
密码:b346
### 如何在 deepin23 for loong64 安装
可以在 星火应用商店 for loong64 安装,也可以手动补充依赖进行安装
依赖包地址二选一https://gitee.com/gfdgd-xi/deep-wine-runner-deepin23-loong64-depends
或 https://gfdgdxi.lanzouw.com/b0plktfvc
密码:f67c
### 注
spark-deepin-wine-runner 是普通包spark-deepin-wine-runner-ace 是使用 ace 兼容环境运行的运行器
## Wine 运行器离线包
### X86
123panhttps://www.123pan.com/s/pDSKVv-pAJWv.html
百度网盘https://pan.baidu.com/s/1klBw63tw2_ZQLzmi11dDBw?pwd=7bu5 提取码: 7bu5
诚通网盘http://ctfile.gfdgdxi.top/d/31540479-59254792-909739?p=2061 (访问密码: 2061)
Githubhttps://github.com/gfdgd-xi/deep-wine-runner/releases/
Sourceforgehttps://sourceforge.net/projects/deep-wine-runner/files/
更多需求需要私聊作者定制(有偿服务)
### ARM
需要私聊作者定制(有偿服务)
## 软件架构
理论上支持全架构,如果 Python 能运行的话
非 X86 架构会利用到 `box86``exagear``qemu` 等技术
非 X86 架构会利用到 `box86`/`box64``exagear``qemu` 等技术
## Wine 运行器自动构建Newest
此只供尝鲜不保证能用https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml
@@ -138,6 +143,109 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
### 3.9.02024年06月01日
**※1、UOS Mips64如 3a4000用户无需手动降级 Qemu 即可正常开启使用虚拟机**
**※2、修复开启部分 exe 提示参数有误的问题**
**※3、Qemu 在启动时可以按 ESC 键打开启动菜单**
**※4、虚拟机工具 Windows 7 自动安装镜像文件选项内置 Virtio 驱动安装包**
**※5、Qemu 虚拟机参数调整若干**
**※6、修复虚拟机安装工具系统安装选项会自动跳回第一项的问题**
**※7、优化简易打包器包名识别机制**
**※8、减少不必要的压缩以减少打包器打包 deb 所需时间**
**※9、修复简易打包器生成的 deb 包无法运行的问题**
10、优化 lat 安装脚本
11、调整星火 Wine 助手路径
![F87D3721C30A235F9F47E8A8899FC3B7.png](https://storage.deepin.org/thread/20240601073716327_F87D3721C30A235F9F47E8A8899FC3B7.png)
![image.png](https://storage.deepin.org/thread/202406010841258081_image.png)
### 3.8.02024年04月27日
**※1、修复系统/应用运行库无法下载的问题**
**※2、打包器支持指定打包架构为 loong64、loongarch64、armhf 和 amd64**
**※3、更新 Geek Uninstaller 版本**
**※4、默认开启英语翻译**
**※5、更新 dxvk 版本**
**※6、修复新版本 Qemu 没有 --soundhw 参数导致无法正常开启虚拟机的问题**
**※7、支持 Qemu 磁盘扩容**
8、修复问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I9B4L0
9、针对 Loongarch ACE 做特别优化
![image.png](https://storage.deepin.org/thread/202404271014409954_image.png)
### 3.7.02024年02月02日
**※1、修复简易打包器在 Deepin/UOS 上无法正常启动的问题**
**※2、打包器生成的 deb 修复在非 Deepin/UOS 且未安装星火应用商店的系统中启动器无程序图标的问题**
**※3、修复 Box86/64 国内源源失效的问题**
**※4、适配 Arch Linux**
**※5、适配 Fedora**
**※6、打包器支持将 deb 包转换为其它格式**
**※7、适配 deepin 23 beta3**
8、新增公告和新版本提示功能
9、修复公告的链接在部分机器无法正常打开的问题
10、新增赞赏入口
11、支持识别 spark-wine9、spark-wine9-wow
![截图_deepin-wine-runner_20240202211238.png](https://storage.deepin.org/thread/20240202131540242_截图_deepin-wine-runner_20240202211238.png)
![VirtualBox_Fedora_02_02_2024_21_00_31.png](https://storage.deepin.org/thread/202402021315383577_VirtualBox_Fedora_02_02_2024_21_00_31.png)
![VirtualBox_Manjaro_02_02_2024_20_46_37.png](https://storage.deepin.org/thread/202402021315363571_VirtualBox_Manjaro_02_02_2024_20_46_37.png)
### 3.6.12023年12月25日
**※1、修复应用无法打开的问题**
**※2、修改错别字**
### 3.6.02023年12月24日
**※1、修复高级打包器选择软件适配脚本后无法打包的问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I8I110**
**※2、支持调用 Deepin Wine8 Stable**
**※3、移除过时的 Wine 安装程序入口**
**※4、Wine 安装器支持根据地区自动选择国内源以及国际源**
**※5、Wine 安装器新增 Sourceforge 源**
**※6、新增 Wine 运行报告生成功能**
**※7、初步英语翻译**
**※8、新增离线安装包只支持 amd64**
**※9、支持识别 /opt 文件夹下的 Wine**
10、新增 Wine 运行器视频教程的 Youtube 入口
![图片.png](https://storage.deepin.org/thread/202312241003211288_图片.png)
### 3.5.02023年11月17日
**※1、虚拟机工具支持 kvm 检测**
**※2、修改虚拟机工具提示文本新增对 UOS 3a4000 用户无法正常使用 Qemu 的解决方案**
**※3、在主界面点击“安装”按钮后自动切换至帮助页面**
**※4、新增虚拟机日志输出和读取功能**
**※5、新增Qemu测试测试功能**
**※6、虚拟机工具支持安装/运行 arm32、arm64 架构的系统**
**※7、修复虚拟机工具在系统版本选择第 5 项及以后出现不会挂载 ISO 的问题(使用 Qemu 的情况下)**
**※8、修复简易打包器无法打开的问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I85F9M**
**※9、生态适配脚本打包器支持正确根据打包结果显示打包成功/失败 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7D83Z**
10、生态适配脚本打包器设置使用 xz 格式打包 deb
11、新增 ace 包
12、虚拟机工具支持强制关闭 VirtualBox/Qemu并增加了对 Windows 7 安装脚本的检测
13、新增 lat 翻译器安装选项
![图片.png](https://storage.deepin.org/thread/20231117194051562_图片.png)
### 3.4.12023年09月30日
**※1、支持识别 spark-wine8-wow 且打包时可以使用该 wine**
**※2、替换安装 Box86 的 pkexec 为 sudo**
**※3、Wine 下载工具新增更多 Wine**
![图片.png](https://storage.deepin.org/thread/202309301259131162_图片.png)
### 3.4.0.12023年08月18日
**※1、修复部分高性能机器打包器提示“无效的压缩参数”https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SMTJ**
**※2、支持设置程序字体大小https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SAYE**
@@ -547,40 +655,18 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
### 1.0.02021年01月29日
1. 实现内容
## 源码安装教程
1. 安装需要的依赖
## 构建安装包
### deb
```bash
sudo apt install git make
make package-deb -j4
```
2. 下载仓库
### pkg
```bash
git clone https://gitee.com/gfdgd-xi/deep-wine-runner.git
cd deep-wine-runner
```
3. 从源码运行程序(如果是从源码安装请跳过这一步)
```bash
make depend
make run
```
4. 从源码安装程序
```bash
make install
make package-deb -j4
make package-pkg -j4
```
## Openkylin 如何安装这个 Wine 运行器?
首先添加作者的源:
Gitlink 源(国内推荐):
```bash
wget https://code.gitlink.org.cn/gfdgd_xi/gfdgd-xi-apt-mirrors/raw/branch/master/sources/gitlink.sh && bash gitlink.sh && rm gitlink.sh
```
Github 源(国外推荐):
```bash
wget https://gfdgd-xi.github.io/gfdgd-xi-apt-mirrors/sources/github.sh && bash github.sh && rm github.sh
```
上面二选一,添加完后执行
```bash
sudo apt install spark-deepin-wine-runner
```
即可自动补全依赖安装(说实话 openkylin 缺的依赖好多)
现在可以直接安装了
## 对于 Deepin/UOSAMD64 平台)小白如何使用该程序?
下面是送给小白的 wine 运行器简单使用方法先声明wine 并***不能完美的运行所有 exe 文件***,利用此 wine 运行器简易安装可执行文件的方法如下:
@@ -594,42 +680,10 @@ sudo apt install spark-deepin-wine-runner
![image.png](https://storage.deepin.org/thread/202207191920282406_image.png)
## 稍微讲一下目前 deepin 23 Preview 运行自定义 exe 的方法Wine 运行器均已支持)
### 方法一
随便安装一个 linglong 格式包的 wine 程序(要记住包名),然后在终端输入
```bash
ll-cli run 包名 --exec '/bin/deepin-wine6-stable'
```
即可,缺陷可看运行器上方小提示第 6 点
### 方法二(容易翻车)
添加 Deepin 20 的**官方源和商店源**,然后输入如下的命令:**切记不能sudo apt upgrade**,会出现的问题可以看运行器的小提示第 7 点,以及无法保证所有 Wine 均可运行
```bash
sudo dpkg --add-architecture i386
sudo apt update
# 安装普通的 Wine
sudo apt install wine
# 安装 deepin-wine5-stable本机测试 X64 的 Wine 跑不了)
sudo apt install deepin-wine5-stable
# 安装 deepin-wine6-stable
sudo apt install deepin-wine6-stable
```
**使用完后最好删除掉 Deepin 20 的官方源和商店源,防止出问题**
可以看 [@ThinkYoung](user/18570) 写的 https://bbs.deepin.org/post/241148可以参考借鉴
### 方法三
我不知道了,希望能有大佬提供更好的解决方案
## 下载链接
Giteehttps://gitee.com/gfdgd-xi/deep-wine-runner
Githubhttps://github.com/gfdgd-xi/deep-wine-runner
Gitlinkhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
Sourceforgehttps://sourceforge.com/projects/deep-wine-runner
蓝奏云https://gfdgdxi.lanzouj.com/b01nz7y3e密码:7oii
星火应用商店spk://store/tools/spark-deepin-wine-runner
@@ -715,4 +769,14 @@ make install -j4
```
## 请作者喝杯茶
如果您觉得 Wine 运行器对你有帮助,可以请作者喝杯茶
<img src="Icon/QR/Wechat.png" width="250" />
<img src="Icon/QR/Alipay.jpg" width="250" />
<img src="Icon/QR/QQ.png" width="250" >
### 广告
支付宝官方活动,扫描获得支付红包!
<p><img src="Icon/QR/advertisement0.jpg" width="250" ></p>
# ©2020-Now gfdgd xi

65
README_en.md Normal file
View File

@@ -0,0 +1,65 @@
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
<h1 align="center">Wine Runner 3.4.0.1</h1>
<hr>
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
## Introduce
Wine Runner is a program that help Linux user to run Windows program. However,
![截图_选择区域_20221002221112.png](https://storage.deepin.org/thread/202210022215217037_截图_选择区域_20221002221112.png)
[![star](https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark)](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程小白专用链接https://bbs.deepin.org/post/246837
Wine Runner Packager Video tutorial: https://www.bilibili.com/video/BV1Bh4y1Q7nT/
Wine Runner QQ communication group:762985460
## Program Support Architecture
Runner is able to run for common architecture if these system can run Python.
Non-x86 system will use `box86/box64`, `exagear`, `qemu` and so on.
## Wine Runner Auto Builder(Newest Version)
This version can't sure what bug will happen when you are using.
Download Website: https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml
## Which App Store You Can Download Wine Runner
### Deepin/UOS App Store
![图片.png](https://storage.deepin.org/thread/202304192211278050_图片.png)
### Spark Store
![图片.png](https://storage.deepin.org/thread/202304192212308212_图片.png)
### Loongson App Store
![图片.png](https://storage.deepin.org/thread/20230603201852396_图片.png)
## Git Branch Introduce
### main
The main branch
## Different Of Version(It No longer Distinguishing From 3.1.0)
### Normal
Normal Version(It usually from Gitee, Github, Gitlink, etc)
### `-spark` In Version
Install runner from Spark Store
### `-uos` In Version
Install runner from Deepin/UOS App Store, and you can install without open the develop mode.
### `-52` In Version
It only release for 52pojie, and some function was removed such as updater, bug uploader and so on.
![image.png](https://storage.deepin.org/thread/202209251259142818_image.png)
Nobody want to see this error when you are using.
## Program Tips
I don't want to write, it's too long and too old.
## Update Log
### 3.4.0.1(August 18th, 2023)
1. **Repair some machine tips `无效的压缩参数` when you are packing program in Wine Runner Packager, you also can see this isscue: https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SMTJ**
2. **Runner support to set program font size, you also can see this isscue: https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SAYE**
### 3.4.0(August 11th, 2023)
1. **Repair Easy Packager can't open and check wine error problem.**
2. **Professional Packager support to set different mimetype value for different .desktop file**
3. **Repair install runner problem in Ubuntu 23.04**
4. **Professional Packager support to save pack info what you are inputing**
5. **Deepin23 support run Winetricks with runner**
6. **Add video help website**
7. and so on

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,26 @@
#!/usr/bin/env python3
import os
import sys
def ReadTXT(path):
with open(path, "r") as file:
thing = file.read()
return thing
def WriteTXT(path, data):
with open(path, "w") as file:
file.write(data)
debList = sys.argv[1:]
for i in debList:
# 解包
os.system("rm -rf /tmp/change-old-to-new")
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": all", ": amd64")
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_all', '_amd64')}'")
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": amd64", ": arm64")
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_all', '_arm64')}'")
# 检查是否能正常安装

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env python3
import os
import sys
def ReadTXT(path):
with open(path, "r") as file:
thing = file.read()
return thing
def WriteTXT(path, data):
with open(path, "w") as file:
file.write(data)
debList = sys.argv[1:]
for i in debList:
# 解包
os.system("rm -rf /tmp/change-old-to-new")
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace(": loongarch64", ": loong64").replace("Depends: ", "Depends: liblol, ")
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
os.system(f"dpkg-deb -Z xz -z 9 -b /tmp/change-old-to-new '{os.path.basename(i).replace('_loongarch64', '_loong64')}'")
# 检查是否能正常安装

View File

@@ -0,0 +1,26 @@
#!/usr/bin/env python3
import os
import sys
def ReadTXT(path):
with open(path, "r") as file:
thing = file.read()
return thing
def WriteTXT(path, data):
with open(path, "w") as file:
file.write(data)
debList = sys.argv[1:]
for i in debList:
# 解包
os.system("rm -rf /tmp/change-old-to-new")
os.system(f"dpkg -x '{i}' /tmp/change-old-to-new")
os.system(f"dpkg -e '{i}' /tmp/change-old-to-new/DEBIAN")
info = ReadTXT("/tmp/change-old-to-new/DEBIAN/control").replace("spark-dwine-helper | store.spark-app.spark-dwine-helper", "deepin-wine-helper (>= 5.1.30-1)")
WriteTXT("/tmp/change-old-to-new/DEBIAN/control", info)
path = os.listdir("/tmp/change-old-to-new/opt/apps")[0]
info = ReadTXT(f"/tmp/change-old-to-new/opt/apps/{path}/files/run.sh").replace("/opt/deepinwine/tools/spark_run_v4.sh", "/opt/deepinwine/tools/run_v4.sh")
WriteTXT(f"/tmp/change-old-to-new/opt/apps/{path}/files/run.sh", info)
os.system(f"dpkg-deb -Z xz -z 0 -b /tmp/change-old-to-new '{os.path.basename(i)}'")
# 检查是否能正常安装

View File

@@ -7,10 +7,12 @@
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建
###########################################################################################
cd `dirname $0`
CURRENT_DIR=$(cd $(dirname $0); pwd)
VBoxManage showvminfo Windows
if [[ 0 == $? ]]; then
# 检测到虚拟机存在,启动虚拟机
VBoxManage startvm Windows
VBoxManage startvm Windows > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
exit
fi
# 检查是否有 QEMU
@@ -22,40 +24,163 @@ if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
python3 ./VM/StartQemu.py
exit
fi
if [[ -f $HOME/.config/deepin-wine-runner/QEMU-EFI ]]; then
echo 使用 UEFI 启动
if [[ -f /usr/share/qemu/OVMF.fd ]]; then
qemuUEFI="--bios /usr/share/qemu/OVMF.fd"
else
if [[ -f `dirname $0`/VM/OVMF.fd ]]; then
qemuUEFI="--bios `dirname $0`/VM/OVMF.fd"
fi
fi
echo $qemuUEFI
fi
# 查看CPU个数
CpuSocketNum=`cat /proc/cpuinfo | grep "cpu cores" | uniq | wc -l`
# 查看CPU核心数
CpuCoreNum=`grep 'core id' /proc/cpuinfo | sort -u | wc -l`
# 查看逻辑CPU的个数
CpuCount=`cat /proc/cpuinfo| grep "processor"| wc -l`
# 判断是否检测异常,如果异常则使用默认值
if [[ $CpuSocketNum == 0 ]]; then
CpuSocketNum=1
fi
if [[ $CpuCoreNum == 0 ]]; then
CpuCoreNum=1
fi
if [[ $CpuCount == 0 ]]; then
CpuCount=2
fi
# 总内存大小GB
MemTotal=`awk '($1 == "MemTotal:"){printf "%.2f\n",$2/1024/1024}' /proc/meminfo`
use=$(echo "scale=4; $MemTotal / 3" | bc)
if [[ `arch` == "x86_64" ]]; then
echo X86 架构,使用 kvm 加速
kvm -cpu host --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep amd64
if [[ $? == 0 ]] || [[ ! -e ~/.config/deepin-wine-runner/QEMU-ARCH ]]; then
# amd64 架构
if [[ -f $HOME/.config/deepin-wine-runner/QEMU-EFI ]]; then
echo 使用 UEFI 启动
if [[ -f /usr/share/qemu/OVMF.fd ]]; then
qemuUEFI="--bios /usr/share/qemu/OVMF.fd -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 "
else
if [[ -f `dirname $0`/VM/OVMF.fd ]]; then
qemuUEFI="--bios `dirname $0`/VM/OVMF.fd -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 "
fi
fi
else
qemuUEFI="-vga virtio -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 "
fi
echo $qemuUEFI
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "x86_64" ]]; then
echo X86 架构,使用 kvm 加速
qemu-system-x86_64 --enable-kvm -cpu host --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
# 判断系统版本以选择 Qemu
isUOS=0
qemuPath=qemu-system-x86_64
cat /etc/os-version | grep -i uos
if [[ $? == 0 ]]; then
isUOS=1
fi
cat /etc/os-version | grep -i unio
if [[ $? == 0 ]]; then
isUOS=1
fi
if [[ $isUOS == 1 ]]; then
arch=`uname -m`
if [[ $arch == "mips64" ]] || [[ $arch == "mips64el" ]]; then
qemuPath="bwrap --dev-bind / / --bind ./VM/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so /usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so ./VM/MipsQemu/usr/bin/qemu-system-x86_64"
fi
fi
echo 不使用 kvm 加速
$qemuPath --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
echo 非 X86 架构,不使用 kvm 加速
qemu-system-x86_64 --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI
exit
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep armhf
if [[ $? == 0 ]]; then
# armhf 架构
# 寻找 UEFI 固件
if [[ -f /usr/share/AAVMF/AAVMF32_CODE.fd ]]; then
qemuUEFI="--bios /usr/share/AAVMF/AAVMF32_CODE.fd"
else
if [[ -f ./VM/AAVMF32_CODE.fd ]]; then
qemuUEFI="--bios ./VM/AAVMF32_CODE.fd"
fi
fi
echo $qemuUEFI
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "aarch64" ]]; then
qemu-system-arm --enable-kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-cpu max -M virt -device virtio-gpu-pci \
-device nec-usb-xhci,id=xhci,addr=0x1b \
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
qemu-system-arm --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-cpu max -M virt -device virtio-gpu-pci \
-device nec-usb-xhci,id=xhci,addr=0x1b \
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep aarch64
if [[ $? == 0 ]]; then
# aarch64 架构
# 寻找 UEFI 固件
if [[ -f /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ]]; then
qemuUEFI="--bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd"
else
if [[ -f ./VM/QEMU_AARCH64_EFI.fd ]]; then
qemuUEFI="--bios ./VM/QEMU_AARCH64_EFI.fd"
fi
fi
echo $qemuUEFI
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "aarch64" ]]; then
qemu-system-aarch64 --enable-kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-cpu max -M virt \
-device virtio-gpu-pci \
-device nec-usb-xhci,id=xhci,addr=0x1b \
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
qemu-system-aarch64 --hda "$HOME/Qemu/Windows/Windows.qcow2" \
-smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) \
-m ${use}G -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI \
-cpu max -M virt \
-device virtio-gpu-pci \
-device nec-usb-xhci,id=xhci,addr=0x1b \
-device usb-tablet,id=tablet,bus=xhci.0,port=1 \
-device usb-kbd,id=keyboard,bus=xhci.0,port=2 \
-device AC97 -device ES1370 -device intel-hda -device hda-duplex \
--boot 'splash=VM/boot.jpg,menu=on,splash-time=2000' \
> /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 # 最新的 qemu 已经移除参数 -soundhw all
exit
fi
fi
zenity --question --no-wrap --text="检查到您未创建所指定的虚拟机,是否创建虚拟机并继续?\n如果不创建将无法使用"
if [[ 1 == $? ]]; then
# 用户不想创建虚拟机,结束
exit
fi
cd `dirname $0`
./VM/VirtualMachine

1
VM-source/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.user*

View File

@@ -7,7 +7,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -77,7 +77,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -147,7 +147,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -217,7 +217,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -287,7 +287,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -357,7 +357,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -427,7 +427,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -497,7 +497,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -567,7 +567,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -637,7 +637,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -707,7 +707,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -777,7 +777,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -847,7 +847,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -917,7 +917,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -987,7 +987,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -1057,7 +1057,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",
@@ -1127,7 +1127,7 @@
"-I",
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
"-I",
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
"/tmp/QtCreator-KABQCK/clang-uiheader-FKIDml",
"-nostdinc",
"-nostdinc++",
"-pipe",

BIN
VM-source/AAVMF32_CODE.fd Normal file

Binary file not shown.

View File

@@ -1,516 +0,0 @@
#############################################################################
# Makefile for building: VirtualMachine
# Generated by qmake (3.1) (Qt 5.15.7)
# Project: VirtualMachine.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
#############################################################################
MAKEFILE = Makefile
EQ = =
####### Compiler, tools and options
CC = gcc
CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I. -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. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = VirtualMachine1.0.0
DISTDIR = /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.tmp/VirtualMachine1.0.0
LINK = g++
LFLAGS = -Wl,-O1
LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread
AR = ar cqs
RANLIB =
SED = sed
STRIP = strip
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \
mainwindow.cpp \
buildvbox.cpp \
vbox.cpp \
command.cpp \
infoutils.cpp \
qemu.cpp \
qemusetting.cpp qrc_图标.cpp \
moc_mainwindow.cpp \
moc_infoutils.cpp \
moc_qemusetting.cpp
OBJECTS = main.o \
mainwindow.o \
buildvbox.o \
vbox.o \
command.o \
infoutils.o \
qemu.o \
qemusetting.o \
qrc_图标.o \
moc_mainwindow.o \
moc_infoutils.o \
moc_qemusetting.o
DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
VirtualMachine.pro mainwindow.h \
buildvbox.h \
vbox.h \
command.h \
infoutils.h \
qemu.h \
qemusetting.h main.cpp \
mainwindow.cpp \
buildvbox.cpp \
vbox.cpp \
command.cpp \
infoutils.cpp \
qemu.cpp \
qemusetting.cpp
QMAKE_TARGET = VirtualMachine
DESTDIR =
TARGET = VirtualMachine
first: all
####### Build rules
VirtualMachine: ui_mainwindow.h ui_qemusetting.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
VirtualMachine.pro \
图标.qrc
$(QMAKE) -o Makefile VirtualMachine.pro
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
VirtualMachine.pro:
图标.qrc:
qmake: FORCE
@$(QMAKE) -o Makefile VirtualMachine.pro
qmake_all: FORCE
all: Makefile VirtualMachine
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents 图标.qrc $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.h buildvbox.h vbox.h command.h infoutils.h qemu.h qemusetting.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp buildvbox.cpp vbox.cpp command.cpp infoutils.cpp qemu.cpp qemusetting.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui qemusetting.ui $(DISTDIR)/
$(COPY_FILE) --parents zh_CN.ts en_US.ts $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all: qrc_图标.cpp
compiler_rcc_clean:
-$(DEL_FILE) qrc_图标.cpp
qrc_图标.cpp: 图标.qrc \
/usr/lib/qt5/bin/rcc \
deepin-wine-runner.png \
deepin-wine-runner.svg \
截图_VirtualBox\ Machine_20220712142929.png \
截图/截图_VirtualBox\ Machine_20220712143018.png \
截图/截图_VirtualBox\ Machine_20220712192850.png \
截图/截图_VirtualBox\ Machine_20220712143044.png \
截图/截图_VirtualBox\ Manager_20220712223602.png \
截图/截图_VirtualBox\ Machine_20220712143103.png \
截图/截图_VirtualBox\ Machine_20220712143029.png \
截图/截图_选择区域_20220712224639.png \
截图/截图_VirtualBox\ Machine_20220712193527.png \
截图/截图_VirtualBox\ Machine_20220712143037.png \
截图/截图_VirtualBox_20220712223705.png \
截图/截图_VirtualBox\ Machine_20220712143006.png \
截图/截图_VirtualBox\ Machine_20220712191756.png \
LANG/virtualmachine-en_US.ts \
LANG/virtualmachine-en_US.qm
/usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp
compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp moc_infoutils.cpp moc_qemusetting.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp moc_infoutils.cpp moc_qemusetting.cpp
moc_mainwindow.cpp: mainwindow.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -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/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include mainwindow.h -o moc_mainwindow.cpp
moc_infoutils.cpp: infoutils.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -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/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include infoutils.h -o moc_infoutils.cpp
moc_qemusetting.cpp: qemusetting.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -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/include/c++/11 -I/usr/include/x86_64-linux-gnu/c++/11 -I/usr/include/c++/11/backward -I/usr/lib/gcc/x86_64-linux-gnu/11/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include qemusetting.h -o moc_qemusetting.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h ui_qemusetting.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h ui_qemusetting.h
ui_mainwindow.h: mainwindow.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic mainwindow.ui -o ui_mainwindow.h
ui_qemusetting.h: qemusetting.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic qemusetting.ui -o ui_qemusetting.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_rcc_clean compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean
####### Compile
main.o: main.cpp mainwindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
mainwindow.o: mainwindow.cpp mainwindow.h \
ui_mainwindow.h \
buildvbox.h \
infoutils.h \
qemusetting.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o mainwindow.cpp
buildvbox.o: buildvbox.cpp buildvbox.h \
vbox.h \
infoutils.h \
qemu.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o buildvbox.o buildvbox.cpp
vbox.o: vbox.cpp vbox.h \
command.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o vbox.o vbox.cpp
command.o: command.cpp command.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o command.o command.cpp
infoutils.o: infoutils.cpp infoutils.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o infoutils.o infoutils.cpp
qemu.o: qemu.cpp qemu.h \
command.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qemu.o qemu.cpp
qemusetting.o: qemusetting.cpp qemusetting.h \
ui_qemusetting.h \
infoutils.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qemusetting.o qemusetting.cpp
qrc_图标.o: qrc_图标.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_图标.o qrc_图标.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
moc_infoutils.o: moc_infoutils.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_infoutils.o moc_infoutils.cpp
moc_qemusetting.o: moc_qemusetting.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_qemusetting.o moc_qemusetting.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/opt/VirtualMachine/bin || mkdir -p $(INSTALL_ROOT)/opt/VirtualMachine/bin
$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/opt/VirtualMachine/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/opt/VirtualMachine/bin/
install: install_target FORCE
uninstall: uninstall_target FORCE
FORCE:

Binary file not shown.

Binary file not shown.

6
VM-source/QemuSystemInstall.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
sudo apt update
sudo apt install qemu-system qemu-user qemu-efi qemu-efi-aarch64 qemu-efi-arm -y
sudo apt install qemu-user-static binfmt-support qemu-system-gui -y
echo 安装完成!按回车键退出
read

109
VM-source/StartVM.sh Executable file
View File

@@ -0,0 +1,109 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者gfdgd xi
# 版本1.7.0
# 更新时间2022年07月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建
###########################################################################################
cd `dirname $0`
VBoxManage showvminfo Windows
if [[ 0 == $? ]]; then
# 检测到虚拟机存在,启动虚拟机
VBoxManage startvm Windows > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
exit
fi
# 检查是否有 QEMU
which qemu-system-x86_64
if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
if [[ -f "$HOME/.config/deepin-wine-runner/QemuSetting.json" ]]; then
echo 有设置文件,读设置文件
cd `dirname $0`
python3 ./VM/StartQemu.py
exit
fi
# 查看CPU个数
CpuSocketNum=`cat /proc/cpuinfo | grep "cpu cores" | uniq | wc -l`
# 查看CPU核心数
CpuCoreNum=`grep 'core id' /proc/cpuinfo | sort -u | wc -l`
# 查看逻辑CPU的个数
CpuCount=`cat /proc/cpuinfo| grep "processor"| wc -l`
# 总内存大小GB
MemTotal=`awk '($1 == "MemTotal:"){printf "%.2f\n",$2/1024/1024}' /proc/meminfo`
use=$(echo "scale=4; $MemTotal / 3" | bc)
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep amd64
if [[ $? == 0 ]] || [[ ! -e ~/.config/deepin-wine-runner/QEMU-ARCH ]]; then
# amd64 架构
if [[ -f $HOME/.config/deepin-wine-runner/QEMU-EFI ]]; then
echo 使用 UEFI 启动
if [[ -f /usr/share/qemu/OVMF.fd ]]; then
qemuUEFI="--bios /usr/share/qemu/OVMF.fd"
else
if [[ -f `dirname $0`/VM/OVMF.fd ]]; then
qemuUEFI="--bios `dirname $0`/VM/OVMF.fd"
fi
fi
echo $qemuUEFI
fi
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "x86_64" ]]; then
echo X86 架构,使用 kvm 加速
qemu-system-x86_64 --enable-kvm -cpu host --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
exit
fi
echo 不使用 kvm 加速
qemu-system-x86_64 --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
exit
fi
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep armhf
if [[ $? == 0 ]]; then
# armhf 架构
# 寻找 UEFI 固件
if [[ -f /usr/share/AAVMF/AAVMF32_CODE.fd ]]; then
qemuUEFI="--bios /usr/share/AAVMF/AAVMF32_CODE.fd"
else
if [[ -f ./VM/AAVMF32_CODE.fd ]]; then
qemuUEFI="--bios ./VM/AAVMF32_CODE.fd"
fi
fi
echo $qemuUEFI
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "aarch64" ]]; then
qemu-system-arm --enable-kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI -cpu max -M virt -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1
exit
fi
qemu-system-arm --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI -cpu max -M virt -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1
exit
fi
cat ~/.config/deepin-wine-runner/QEMU-ARCH | grep aarch64
if [[ $? == 0 ]]; then
# aarch64 架构
# 寻找 UEFI 固件
if [[ -f /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ]]; then
qemuUEFI="--bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd"
else
if [[ -f ./VM/QEMU_AARCH64_EFI.fd ]]; then
qemuUEFI="--bios ./VM/QEMU_AARCH64_EFI.fd"
fi
fi
echo $qemuUEFI
./VM/kvm-ok
if [[ $? == 0 ]] && [[ `arch` == "aarch64" ]]; then
qemu-system-aarch64 --enable-kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI -cpu max -M virt -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1
exit
fi
qemu-system-aarch64 --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount,sockets=$CpuSocketNum,cores=$(($CpuCoreNum / $CpuSocketNum)),threads=$(($CpuCount / $CpuCoreNum / $CpuSocketNum)) -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI -cpu max -M virt -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1
exit
fi
fi
zenity --question --no-wrap --text="检查到您未创建所指定的虚拟机,是否创建虚拟机并继续?\n如果不创建将无法使用"
if [[ 1 == $? ]]; then
# 用户不想创建虚拟机,结束
exit
fi
./VM/VirtualMachine

View File

@@ -56,4 +56,23 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
trans.qrc \
图标.qrc
DISTFILES += \
en_US.qm \
en_US.ts
# 编译时拷贝所需文件
file_need.files += Windows7X64Auto.iso \
Windows7X86Auto.iso \
kvm-ok \
AAVMF32_CODE.fd \
deepin-wine-runner.svg \
OVMF.fd \
QEMU_AARCH64_EFI.fd \
QEMU_EFI_LOONG64_7.1.fd \
test.qcow2
file_need.path += $$OUT_PWD
COPIES += file_need
system(chmod 777 $$OUT_PWD/kvm-ok)

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 7.0.1, 2023-08-09T22:56:49. -->
<!-- Written by QtCreator 9.0.2, 2024-06-01T15:39:37. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -8,7 +8,7 @@
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
<value type="qlonglong">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
@@ -28,7 +28,7 @@
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
@@ -54,6 +54,7 @@
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
</valuemap>
</data>
<data>
@@ -89,14 +90,16 @@
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b17c65ba-6912-41bf-b5c1-4c7446f6c967}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -108,9 +111,9 @@
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
@@ -119,7 +122,46 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
@@ -132,13 +174,56 @@
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
@@ -146,7 +231,7 @@
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
@@ -161,14 +246,95 @@
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">构建</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
<value type="qlonglong">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>

View File

@@ -0,0 +1,347 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 7.0.1, 2023-11-07T19:30:53. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{4ffd6df9-1365-4837-81b1-582e0e2d1f21}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
<value type="bool" key="AutoTest.Framework.Boost">true</value>
<value type="bool" key="AutoTest.Framework.CTest">false</value>
<value type="bool" key="AutoTest.Framework.Catch">true</value>
<value type="bool" key="AutoTest.Framework.GTest">true</value>
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
</valuemap>
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
<value type="int" key="AutoTest.RunAfterBuild">0</value>
<value type="bool" key="AutoTest.UseGlobal">true</value>
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.BuildSystem</value>
<valuemap type="QVariantMap" key="ClangTools">
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
<value type="int" key="ClangTools.ParallelJobs">2</value>
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
</valuemap>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/building/deep-wine-runner/VM-source</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b17c65ba-6912-41bf-b5c1-4c7446f6c967}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/gfdgd_xi/Desktop/deep-wine-runner/build-VirtualMachine-unknown-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="int" key="QtQuickCompiler">0</value>
<value type="int" key="SeparateDebugInfo">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/build-VirtualMachine-unknown-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">2</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,34 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128" viewBox="0 0 128 128">
<defs>
<linearGradient id="x-office-document-c" x1="50%" x2="50%" y1="0%" y2="100%">
<stop offset="0%" stop-color="#005CC2"/>
<stop offset="100%" stop-color="#004DA3"/>
</linearGradient>
<path id="x-office-document-b" d="M84,95 C84,99.9705627 79.9705627,104 75,104 L9,104 C4.02943725,104 6.08718376e-16,99.9705627 0,95 L0,9 C-6.08718376e-16,4.02943725 4.02943725,9.13077564e-16 9,0 L58,0 L84,26 L84,95 Z"/>
<filter id="x-office-document-a" width="127.4%" height="122.1%" x="-13.7%" y="-9.1%" filterUnits="objectBoundingBox">
<feOffset dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
<feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="3.5"/>
<feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0.22745098 0 0 0 0 0.494117647 0 0 0 0 0.960784314 0 0 0 0.2 0"/>
</filter>
<linearGradient id="x-office-document-f" x1="50%" x2="10.489%" y1="50%" y2="91.194%">
<stop offset="0%" stop-color="#FFF" stop-opacity=".1"/>
<stop offset="100%" stop-color="#FFF" stop-opacity=".3"/>
</linearGradient>
<path id="x-office-document-e" d="M58,0 L84,26 L67,26 C62.0294373,26 58,21.9705627 58,17 L58,0 L58,0 Z"/>
<filter id="x-office-document-d" width="188.5%" height="188.5%" x="-44.2%" y="-36.5%" filterUnits="objectBoundingBox">
<feOffset dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/>
<feGaussianBlur in="shadowOffsetOuter1" result="shadowBlurOuter1" stdDeviation="3.5"/>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"/>
<feColorMatrix in="shadowBlurOuter1" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"/>
</filter>
</defs>
<g fill="none" fill-rule="evenodd">
<g transform="translate(22 14)">
<use fill="#000" filter="url(#x-office-document-a)" xlink:href="#x-office-document-b"/>
<use fill="url(#x-office-document-c)" xlink:href="#x-office-document-b"/>
<use fill="#000" filter="url(#x-office-document-d)" xlink:href="#x-office-document-e"/>
<use fill="url(#x-office-document-f)" xlink:href="#x-office-document-e"/>
</g>
<path fill="#FFF" fill-opacity=".6" d="M92,50 L92,52 L36,52 L36,50 L92,50 Z M92,60 L92,62 L36,62 L36,60 L92,60 Z M92,70 L92,72 L36,72 L36,70 L92,70 Z M92,80 L92,82 L36,82 L36,80 L92,80 Z M92,90 L92,92 L36,92 L36,90 L92,90 Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
VM-source/boot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

198
VM-source/boot.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

12
VM-source/build.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
#cd `dirname $0`
bin=$1
nasm -f bin $1 -o `basename $1`.bin
if [[ $? != 0 ]];then
exit
fi
sudo modprobe nbd 8
sudo qemu-nbd `dirname $0`/test.qcow2 --connect /dev/nbd0
sudo dd if=`basename $1`.bin of=/dev/nbd0
sudo qemu-nbd -d /dev/nbd0
kvm --hda `dirname $0`/test.qcow2 -rtc base=localtime

View File

@@ -81,30 +81,12 @@ int buildvbox::Download(QString url, QString path, QString fileName){
}
buildvbox::buildvbox(QString isoPath, int id, int vm){
/*if(vm == 1){
QDir vboxPath(QDir::homePath() + "/VirtualBox VMs/Windows");
if(vboxPath.exists()){
qDebug("虚拟机存在,直接启动!");
vbox vm("Windows");
vm.Start();
return;
}
}*/
QString programPath = QCoreApplication::applicationDirPath();
/*if(!QFile::exists(programPath + "/a.iso")){
std::thread([=](){
while(1){
qDebug() << "a";
}
}).detach();
}*/
QString net = GetNet();
qDebug() << "使用网卡:" << net << endl;
if(vm == 0){
//vbox *box = new vbox("Window");
//vbox vm("Windows");
// Qemu
qemu vm("Windows");
bool setISOAlready = 0;
switch (id) {
@@ -147,39 +129,53 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
vm.EnabledUEFI(true);
setISOAlready = 1;
break;
case 8:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
vm.UseArmhfEFI();
setISOAlready = 1;
break;
case 9:
vm.Create("WindowsNT_64");
vm.SetDisplayMemory(32);
vm.UseAarch64EFI();
setISOAlready = 1;
break;
}
vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
if(id == 0 || id == 1) {
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
}
else {
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072 * 5);
}
//vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
vm.MountMainDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
if(!setISOAlready){
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
if(QFile::exists(programPath + "/Windows7X86Auto.iso")) {
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
}
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
if(QFile::exists(programPath + "/Windows7X64Auto.iso")) {
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
}
break;
}
}
else{
vm.AutoInstall(isoPath);
//vm.AutoInstall(isoPath);
if(isoPath != ""){
vm.MountMainISO(isoPath);
}
}
/*vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
break;
}*/
// 判断 VirtualBox Guest ISO 是否存在
// 在的话直接挂载
/*if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
}*/
vm.SetCPU(get_nprocs(), GetCPUSocket(), GetCPUCore());
long memory = 0;
@@ -187,7 +183,6 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
long swap = 0;
long swapAll = 0;
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
//memoryRate(memory, memoryAll, swap, swapAll);
vm.SetMemory(memoryAll / 3 / 1024);
vm.SetNetBridge(net);
vm.EnabledAudio();
@@ -199,13 +194,23 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
vm.OpenUSB();
vm.ShareFile("ROOT", "/");
vm.ShareFile("HOME", QDir::homePath());
vm.Start();
switch(id){
case 8:
vm.StartArmhf();
break;
case 9:
vm.StartAarch64();
break;
default:
vm.Start();
break;
}
}
else if(vm == 1){
// ?
//vbox *box = new vbox("Window");
// VirtualBox
vbox vm("Windows");
//qemu vm("Windows");
bool setISOAlready = 1;
switch (id) {
case 0:
@@ -252,16 +257,25 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
vm.CreateDiskControl();
//vm.CreateDiskControl("storage_controller_2");
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
if(id == 0 || id == 1) {
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
}
else {
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072 * 5);
}
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
if(!setISOAlready){
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
switch (id) {
case 0:
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
if(QFile::exists(programPath + "/Windows7X86Auto.iso")) {
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
}
break;
case 1:
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
if(QFile::exists(programPath + "/Windows7X64Auto.iso")) {
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
}
break;
}
}

BIN
VM-source/en_US.qm Normal file

Binary file not shown.

602
VM-source/en_US.ts Normal file
View File

@@ -0,0 +1,602 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en" sourcelanguage="zh_CN">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Wine </source>
<translation>Wine Runner Virtual Machine Install Tools</translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation>Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation>ISO FilePath:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation>Please choose or input system image</translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation>browser...</translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation>System Version:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="75"/>
<location filename="mainwindow.ui" line="79"/>
<source>Windows 7 32 </source>
<translation>Windows 7 32bit (support auto installing)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="84"/>
<source>Windows 7 64 </source>
<translation>Windows 7 64bit (support auto installing)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="89"/>
<source> Windows Windows 7 </source>
<translation>Other system (unsupport auto installing and using legacy boot)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="94"/>
<source> Windows UEFI Windows 8 </source>
<translation>Other system (unsupport auto installing and using UEFI boot)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="99"/>
<source> WIndows 11</source>
<translation>Install windows (unsupport auto installing)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="104"/>
<source> Windows XP VirtualBox</source>
<translation>Install other Windows XP (support auto installing but only support VirtualBox)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="109"/>
<source> Windows VirtualBox</source>
<translation>Install Other Windows (support auto installing and using legacy boot but only support VirtualBox)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="114"/>
<source> WindowsUEFI VirtualBox</source>
<translation>Install Other Windows (support auto installing and using UEFI boot but only support VirtualBox)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="119"/>
<source> arm32 Qemu</source>
<translation>Install arm32 system (only support Qemu/KVM)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="124"/>
<source> arm64 Qemu</source>
<translation>Install arm64 system (only support Qemu/KVM)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="136"/>
<source></source>
<translation>Virtual Machine:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="143"/>
<location filename="mainwindow.ui" line="153"/>
<source>qemu/kvm</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.ui" line="158"/>
<source>VirtualBox</source>
<translation></translation>
</message>
<message>
<location filename="mainwindow.ui" line="183"/>
<source> Qemu</source>
<translation>Install Qemu</translation>
</message>
<message>
<location filename="mainwindow.ui" line="190"/>
<source>kvm </source>
<translation>kvm test</translation>
</message>
<message>
<location filename="mainwindow.ui" line="197"/>
<source>Qemu虚拟机设置</source>
<translation>Qemu Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="204"/>
<source>/Qemu磁盘</source>
<translation>Add/Replace Qemu Disk</translation>
</message>
<message>
<location filename="mainwindow.ui" line="211"/>
<source>Qemu磁盘</source>
<translation>Export Qemu Disk</translation>
</message>
<message>
<location filename="mainwindow.ui" line="218"/>
<source>Qemu磁盘</source>
<translation>Delete Qemu Disk</translation>
</message>
<message>
<location filename="mainwindow.ui" line="225"/>
<source>VirtualBox</source>
<translation>Get VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.ui" line="232"/>
<source></source>
<translation>Install</translation>
</message>
<message>
<location filename="mainwindow.ui" line="241"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;UOS 3a4000 使 Qemu /&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://gfdgdxi.lanzoue.com/b01rk9wza&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gfdgdxi.lanzoue.com/b01rk9wza&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; 密码:6wvf&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Qemu / kvm Qemu&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使 ISO &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;123 &lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-oypWv&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-oypWv&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码35e5&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码: me4y&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt; Windows &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: &lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; 提取码: 7s2p &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;123&lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-uCBWv.html&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-uCBWv.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="274"/>
<source>/使</source>
<translation>Document</translation>
</message>
<message>
<location filename="mainwindow.ui" line="283"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;使 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt; X86 PC使 qemu kvm使 Windows XP Windows 7&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;/https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;qemu则是 Ctrl+Alt+G&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;VirtualBox &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Qemu Virtio &lt;a href=&quot;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;使 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="364"/>
<location filename="mainwindow.ui" line="482"/>
<source></source>
<translation>About</translation>
</message>
<message>
<location filename="mainwindow.ui" line="421"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="463"/>
<source></source>
<translation>Virtual Machine</translation>
</message>
<message>
<location filename="mainwindow.ui" line="477"/>
<source>退</source>
<translation>Exit</translation>
</message>
<message>
<location filename="mainwindow.ui" line="487"/>
<source>/</source>
<translation>Add/Replace</translation>
</message>
<message>
<location filename="mainwindow.ui" line="492"/>
<source></source>
<translation>Export</translation>
</message>
<message>
<location filename="mainwindow.ui" line="497"/>
<location filename="mainwindow.cpp" line="442"/>
<source></source>
<translation>Virtual Machine log (Installing)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="502"/>
<location filename="mainwindow.cpp" line="408"/>
<source></source>
<translation>Virtual Machine log (Running)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="507"/>
<source>X86Qemu</source>
<translation>Qemu Test (x86, qemu)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="512"/>
<source> VirtualBox</source>
<translation>Stop VirtualBox with forced</translation>
</message>
<message>
<location filename="mainwindow.ui" line="517"/>
<source> Qemu</source>
<translation>Stop Qemu with forced</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="88"/>
<source>Wine </source>
<translation>Wine Runner Virtual Machine Install Tools </translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;p&gt;</source>
<translation>&lt;p&gt;Program Version:</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;/p&gt;&lt;p&gt;</source>
<translation>&lt;/p&gt;&lt;p&gt;Package build time:</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;/p&gt;&lt;p&gt;</source>
<translation>&lt;/p&gt;&lt;p&gt;Tools builded time:</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="92"/>
<source>&lt;hr/&gt;&lt;h1&gt;&lt;/h1&gt;</source>
<translation>&lt;hr/&gt;&lt;h1&gt;Thank&lt;/h1&gt;</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="179"/>
<location filename="mainwindow.cpp" line="186"/>
<location filename="mainwindow.cpp" line="193"/>
<location filename="mainwindow.cpp" line="200"/>
<location filename="mainwindow.cpp" line="215"/>
<location filename="mainwindow.cpp" line="222"/>
<location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="248"/>
<location filename="mainwindow.cpp" line="254"/>
<location filename="mainwindow.cpp" line="263"/>
<location filename="mainwindow.cpp" line="307"/>
<location filename="mainwindow.cpp" line="322"/>
<location filename="mainwindow.cpp" line="328"/>
<location filename="mainwindow.cpp" line="332"/>
<location filename="mainwindow.cpp" line="338"/>
<location filename="mainwindow.cpp" line="357"/>
<location filename="mainwindow.cpp" line="360"/>
<location filename="mainwindow.cpp" line="364"/>
<location filename="mainwindow.cpp" line="367"/>
<location filename="mainwindow.cpp" line="392"/>
<location filename="mainwindow.cpp" line="404"/>
<location filename="mainwindow.cpp" line="438"/>
<source></source>
<translation>Tips</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="179"/>
<source> Qemu</source>
<translation>Can&apos;t find qemu, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="186"/>
<source> VBox</source>
<translation>Can&apos;t find VirtualBox, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="193"/>
<source> qemu-system-arm</source>
<translation>Can&apos;t find the qemu-system-arm, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="200"/>
<source> qemu-system-aarch64</source>
<translation>Can&apos;t find the qemu-system-aarch64, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="215"/>
<source> Windows7X86Auto.iso
Wine </source>
<translation>Can&apos;t find the Windows7X86Auto.iso, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="222"/>
<source> Windows7X64Auto.iso
Wine </source>
<translation>Can&apos;t find the Windows7X64Auto.iso, do you want to countinue to create the virtual machine?</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="229"/>
<source> UEFI
Qemu Qemu</source>
<translation>Can&apos;t find the UEFI boot, do you want to countinue to create the virtual machine?
You can get qemu efi from &quot;Install Qemu&quot; button</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="248"/>
<source>Qemu </source>
<translation>Qemu unsupport it</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="254"/>
<location filename="mainwindow.cpp" line="263"/>
<source>VirtualBox </source>
<translation>VirtualBox unsupport it</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="278"/>
<source></source>
<translation>Tips: It trying to start virtualbox now, you should view the log in the tools menu if you can&apos;t see the virtual machine window a few time late</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="307"/>
<source>
</source>
<translation>Qemu Disk is exist. Do you want to replace?
You will not recovery after you replacing!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="311"/>
<source> Qemu </source>
<translation>Choose Qemu Disk</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="311"/>
<source>Qemu镜像(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;(*.*)</source>
<translation>Qemu Disk(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;All files(*.*)</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="322"/>
<location filename="mainwindow.cpp" line="328"/>
<source></source>
<translation>Add error!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="332"/>
<source></source>
<translation>Add finishing!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="338"/>
<source></source>
<translation>Can&apos;t export because can&apos;t find the qemu disk</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="357"/>
<source></source>
<translation>Can&apos;t delete because can&apos;t find the qemu disk</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="360"/>
<source>
</source>
<translation>Do you want to delete?
It can&apos;t recovery after you deleting!</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="364"/>
<source></source>
<translation>Delete error</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="367"/>
<source></source>
<translation>Delete successfully</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="373"/>
<location filename="mainwindow.cpp" line="389"/>
<source></source>
<translation>Error</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="373"/>
<source> kvm-ok
使 sudo apt install cpu-checker </source>
<translation>Can&apos;t find the command &quot;kvm-ok&quot; and you can use command &quot;sudo apt install cpu-checker&quot; to install</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="383"/>
<source>使</source>
<translation>Use</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="389"/>
<source>使 kvm
</source>
<translation>Your system can&apos;t use kvm:
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="392"/>
<source>使 kvm
</source>
<translation>Your system can use kvm:
</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="404"/>
<location filename="mainwindow.cpp" line="438"/>
<source></source>
<translation>Can&apos;t find the log file</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="408"/>
<source></source>
<translation>Running file</translation>
</message>
<message>
<location filename="mainwindow.cpp" line="442"/>
<source></source>
<translation>Installed log</translation>
</message>
</context>
<context>
<name>QemuSetting</name>
<message>
<location filename="qemusetting.ui" line="14"/>
<source></source>
<translation>Setting</translation>
</message>
<message>
<location filename="qemusetting.ui" line="35"/>
<source>&lt;h3&gt;&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Remote Service&lt;/h3&gt;</translation>
</message>
<message>
<location filename="qemusetting.ui" line="42"/>
<source>VNC服务端口</source>
<translation>VNC service port:</translation>
</message>
<message>
<location filename="qemusetting.ui" line="49"/>
<source> rdp </source>
<translation>Enable rdp port</translation>
</message>
<message>
<location filename="qemusetting.ui" line="56"/>
<source>MB</source>
<translation>Memory size (MB):</translation>
</message>
<message>
<location filename="qemusetting.ui" line="90"/>
<source>&lt;h3&gt;&lt;/h3&gt;</source>
<translation>&lt;h3&gt;Base setting&lt;/h3&gt;</translation>
</message>
<message>
<location filename="qemusetting.ui" line="97"/>
<source>VNC服务</source>
<translation>Enable VNC service</translation>
</message>
<message>
<location filename="qemusetting.ui" line="104"/>
<source> kvm </source>
<translation>Enable kvm</translation>
</message>
<message>
<location filename="qemusetting.ui" line="111"/>
<source>CPU核心数</source>
<translation>CPU cores:</translation>
</message>
<message>
<location filename="qemusetting.ui" line="125"/>
<source></source>
<translation>Enable sound</translation>
</message>
<message>
<location filename="qemusetting.ui" line="145"/>
<source></source>
<translation>Save</translation>
</message>
<message>
<location filename="qemusetting.ui" line="158"/>
<source></source>
<translation>Cancel</translation>
</message>
<message>
<location filename="qemusetting.ui" line="171"/>
<source>
</source>
<translation>Resetting</translation>
</message>
<message>
<location filename="qemusetting.ui" line="185"/>
<source>
Wine
</source>
<translation>Get Wine
Runner</translation>
</message>
</context>
</TS>

132
VM-source/kvm-ok Executable file
View File

@@ -0,0 +1,132 @@
#!/bin/sh
#
# kvm-ok - check whether the CPU we're running on supports KVM acceleration
# Copyright (C) 2008-2010 Canonical Ltd.
#
# Authors:
# Dustin Kirkland <kirkland@canonical.com>
# Kees Cook <kees.cook@canonical.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set -e
assert_root() {
if [ "$(id -u)" != "0" ]; then
echo "INFO: For more detailed results, you should run this as root"
echo "HINT: sudo $0"
exit 1
fi
}
verdict() {
# Print verdict
if [ "$1" = "0" ]; then
echo "KVM acceleration can be used"
exit 0
else
echo "KVM acceleration can NOT be used"
exit 1
fi
}
ARM_CPU_PART_CORTEX_A15="0xc0f" # <asm/cputype.h>
# check cpu flags for capability
case "$(uname -m)" in
armv7l)
if egrep -m1 -w '^CPU part[[:blank:]]*:' /proc/cpuinfo | \
egrep -wq "$ARM_CPU_PART_CORTEX_A15"; then
virt="ARM"
kvm_mod="kvm"
fi
;;
aarch64)
virt="ARM"
kvm_mod="kvm"
;;
ppc64le|ppc64|s390x)
# FIXME: Assume that all POWER and z/Systems are KVM capable
virt="generic"
kvm_mod="kvm"
;;
*)
virt=$(egrep -m1 -w '^flags[[:blank:]]*:' /proc/cpuinfo | egrep -wo '(vmx|svm)') || true
[ "$virt" = "vmx" ] && kvm_mod="kvm_intel"
[ "$virt" = "svm" ] && kvm_mod="kvm_amd"
;;
esac
if [ -z "$virt" ]; then
echo "INFO: Your CPU does not support KVM extensions"
assert_root
verdict 1
fi
# Now, check that the device exists
if [ -e /dev/kvm ]; then
echo "INFO: /dev/kvm exists"
verdict 0
else
echo "INFO: /dev/kvm does not exist"
echo "HINT: sudo modprobe $kvm_mod"
fi
assert_root
# Prepare MSR access
msr="/dev/cpu/0/msr"
if [ ! -r "$msr" ]; then
modprobe msr
fi
if [ -e "$msr" -a ! -r "$msr" ]; then
echo "You must be root to run this check." >&2
exit 2
fi
echo "INFO: Your CPU supports KVM extensions"
disabled=0
# check brand-specific registers
if [ "$virt" = "vmx" ]; then
BIT=$(rdmsr --bitfield 0:0 0x3a 2>/dev/null || true)
if [ "$BIT" = "1" ]; then
# and FEATURE_CONTROL_VMXON_ENABLED_OUTSIDE_SMX clear (no tboot)
BIT=$(rdmsr --bitfield 2:2 0x3a 2>/dev/null || true)
if [ "$BIT" = "0" ]; then
disabled=1
fi
fi
elif [ "$virt" = "svm" ]; then
BIT=$(rdmsr --bitfield 4:4 0xc0010114 2>/dev/null || true)
if [ "$BIT" = "1" ]; then
disabled=1
fi
elif [ "$virt" = "ARM" ]; then
# Should also test that we booted in HYP mode, if detectable
:
elif [ "$virt" = "generic" ]; then
:
else
echo "FAIL: Unknown virtualization extension: $virt"
verdict 1
fi
if [ "$disabled" -eq 1 ]; then
echo "INFO: KVM ($virt) is disabled by your BIOS"
echo "HINT: Enter your BIOS setup and enable Virtualization Technology (VT),"
echo " and then hard poweroff/poweron your system"
verdict 1
fi
verdict 0

View File

@@ -24,9 +24,13 @@ int main(int argc, char *argv[])
QApplication a(argc, argv);
// 语言
QTranslator *trans = new QTranslator(&a);
trans->load("virtualmachine-en_US.qm");
if(!QProcessEnvironment::systemEnvironment().value("LANG").contains("zh_CN")){
trans->load(":/en_US.qm");
}
a.installTranslator(trans);
// 判断是否为 !amd64无需判断了
/*if(GetRunCommand("arch").replace(" ", "").replace("\n", "") != QString("x86_64")){
QMessageBox::critical(NULL, "错误", "此程序不支持非 X86 架构,立即退出");

View File

@@ -21,13 +21,20 @@
#include <QDesktopServices>
#include <QMessageBox>
#include <iostream>
#include <QIODevice>
#include <QInputDialog>
#include "qemusetting.h"
#include "vbox.h"
#include "qemu.h"
#include <QInputDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//QApplication a(argc, argv);
ui->tabWidget->setTabPosition(QTabWidget::West); // 标签靠左
// 选择最优虚拟机
if(!system("which qemu-system-x86_64")){
@@ -43,7 +50,7 @@ MainWindow::MainWindow(QWidget *parent) :
QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, true);
// 判断是否安装 vbox无需判断
/*if(system("which VBoxManage")){
if(QMessageBox::question(this, "提示", "检测到您似乎没有安装 VirtualBox立即安装") == QMessageBox::Yes){
if(QMessageBox::question(this, tr("提示"), "检测到您似乎没有安装 VirtualBox立即安装") == QMessageBox::Yes){
system("xdg-open https://www.virtualbox.org/wiki/Linux_Downloads");
}
}*/
@@ -80,11 +87,11 @@ MainWindow::MainWindow(QWidget *parent) :
}
// 设置程序标题
this->setWindowTitle("Windows 应用适配工具 " + versionValue.toString());
this->setWindowTitle(tr("Wine 运行器虚拟机安装工具 ") + versionValue.toString());
// 读取谢明列表
ui->textBrowser_2->setHtml("<p>程序版本号:" + versionValue.toString() + ", " + GetRunCommand("arch") + "</p><p>安装包构建时间:" + buildTime.toString() + "</p><p>该组件构建时间:"
ui->textBrowser_2->setHtml(tr("<p>程序版本号:") + versionValue.toString() + ", " + GetRunCommand("arch") + tr("</p><p>安装包构建时间:") + buildTime.toString() + tr("</p><p>该组件构建时间:")
+ __DATE__ + " " + __TIME__ + "</p>" + ui->textBrowser_2->toHtml() +
"<hr/><h1>谢明列表</h1>" + thankText);
tr("<hr/><h1>谢明列表</h1>") + thankText);
connect(ui->textBrowser_2, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
QDesktopServices::openUrl(link);
});
@@ -94,6 +101,10 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->textBrowser_3, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
QDesktopServices::openUrl(link);
});
// 设置标签栏图标
ui->tabWidget->setTabIcon(1, QIcon::fromTheme(":/application-vnd.oasis.opendocument.text.svg"));
// 设置窗口图标
this->setWindowIcon(QIcon(":/deepin-wine-runner.svg"));
}
@@ -129,9 +140,12 @@ void MainWindow::ShowCPUMessage(){
QString::number(memory * 100 / memoryAll) + "% " + QString::number(memory / 1024) + "MB/" + QString::number(memoryAll / 1024) + "MB" +
" 开机时间: " + QString::number(dd) + "" + QString::number(hh) + ":" + QString::number(MM) + ":" + QString::number(ss);
//qDebug() << cpuAll << " " << cpuFree;
ui->CPUValue->showMessage(info, 5000);
if(!stopShowTime){
ui->CPUValue->showMessage(info, 5000);
}
m_cpuAll = cpuAll;
m_cpuFree = cpuFree;
//ui->retranslateUi(this);
}
QString MainWindow::GetRunCommand(QString command){
@@ -164,25 +178,57 @@ void MainWindow::on_install_clicked()
switch (ui->vmChooser->currentIndex()) {
case 0:
if(system("which qemu-system-x86_64")){
if(QMessageBox::question(this, "提示", "您似乎没有安装 Qemu是否继续创建虚拟机") == QMessageBox::No){
if(QMessageBox::question(this, tr("提示"), tr("您似乎没有安装 Qemu是否继续创建虚拟机")) == QMessageBox::No){
return;
}
}
break;
case 1:
if(system("which vboxmanage")){
if(QMessageBox::question(this, "提示", "您似乎没有安装 VBox是否继续创建虚拟机") == QMessageBox::No){
if(QMessageBox::question(this, tr("提示"), tr("您似乎没有安装 VBox是否继续创建虚拟机")) == QMessageBox::No){
return;
}
}
break;
case 8:
if(system("which qemu-system-arm")){
if(QMessageBox::question(this, tr("提示"), tr("无法检测到 qemu-system-arm是否继续创建虚拟机")) == QMessageBox::No){
return;
}
}
break;
case 9:
if(system("which qemu-system-aarch64")){
if(QMessageBox::question(this, tr("提示"), tr("无法检测到 qemu-system-aarch64是否继续创建虚拟机")) == QMessageBox::No){
return;
}
}
break;
}
QFile file(QDir::homePath() + "/.config/deepin-wine-runner/QEMU-EFI");
QFile archFile(QDir::homePath() + "/.config/deepin-wine-runner/QEMU-ARCH");
QDir dir(QDir::homePath() + "/.config/deepin-wine-runner");
archFile.open(QIODevice::WriteOnly);
archFile.write("amd64");
archFile.close();
switch (ui->systemVersion->currentIndex()) {
case 0:
if(!QFile::exists(QCoreApplication::applicationDirPath() + "/Windows7X86Auto.iso")){
if(QMessageBox::question(this, tr("提示"), tr("似乎无法找到 Windows7X86Auto.iso是否继续创建虚拟机\n缺少该文件可能会导致虚拟机无法正常启动,尝试重新安装 Wine 运行器再试试?")) == QMessageBox::No){
return;
}
}
break;
case 1:
if(!QFile::exists(QCoreApplication::applicationDirPath() + "/Windows7X64Auto.iso")){
if(QMessageBox::question(this, tr("提示"), tr("似乎无法找到 Windows7X64Auto.iso是否继续创建虚拟机\n缺少该文件可能会导致虚拟机无法正常启动,尝试重新安装 Wine 运行器再试试?")) == QMessageBox::No){
return;
}
}
break;
case 3:
if(!QFile::exists("/usr/share/qemu/OVMF.fd") && !QFile::exists(QCoreApplication::applicationDirPath() + "/OVMF.fd") && ui->vmChooser->currentIndex() == 0){
if(QMessageBox::question(this, "提示", "似乎无法找到 UEFI 固件,是否继续创建虚拟机?\nQemu 固件可以在“安装 Qemu”处安装") == QMessageBox::No){
if(QMessageBox::question(this, tr("提示"), tr("似乎无法找到 UEFI 固件,是否继续创建虚拟机?\nQemu 固件可以在“安装 Qemu”处安装")) == QMessageBox::No){
return;
}
}
@@ -201,16 +247,37 @@ void MainWindow::on_install_clicked()
case 6:
case 7:
if(ui->vmChooser->currentIndex() == 0){
QMessageBox::warning(this, "提示", "Qemu 不支持该选项!");
QMessageBox::warning(this, tr("提示"), tr("Qemu 不支持该选项!"));
return;
}
break;
case 8:
if(ui->vmChooser->currentIndex() == 1){
QMessageBox::warning(this, tr("提示"), tr("VirtualBox 不支持该选项!"));
return;
}
archFile.open(QIODevice::WriteOnly);
archFile.write("armhf");
archFile.close();
break;
case 9:
if(ui->vmChooser->currentIndex() == 1){
QMessageBox::warning(this, tr("提示"), tr("VirtualBox 不支持该选项!"));
return;
}
archFile.open(QIODevice::WriteOnly);
archFile.write("aarch64");
archFile.close();
break;
default:
if(ui->vmChooser->currentIndex() == 0 && QFile::exists(QDir::homePath() + "/.config/deepin-wine-runner/QEMU-EFI")){
QFile::remove(QDir::homePath() + "/.config/deepin-wine-runner/QEMU-EFI");
}
}
buildvbox(ui->isoPath->text(), ui->systemVersion->currentIndex(), ui->vmChooser->currentIndex());
ui->tabWidget->setCurrentIndex(1);
stopShowTime = 1;
ui->CPUValue->showMessage(tr("提示:目前已经尝试开启虚拟机,如果在一段时间后依旧还没看到虚拟机窗口开启,请在菜单栏查看虚拟机日志"), 10000);
return;
}
@@ -239,11 +306,11 @@ void MainWindow::on_qemuSetting_clicked()
void MainWindow::on_addQemuDisk_triggered()
{
if(QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
if(QMessageBox::question(this, "提示", "磁盘文件已存在,是否覆盖?\n覆盖后将无法恢复!") == QMessageBox::No){
if(QMessageBox::question(this, tr("提示"), tr("磁盘文件已存在,是否覆盖?\n覆盖后将无法恢复!")) == QMessageBox::No){
return;
}
}
QString path = QFileDialog::getOpenFileName(this, "选择 Qemu 镜像", QDir::homePath(), "Qemu镜像(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;所有文件(*.*)");
QString path = QFileDialog::getOpenFileName(this, tr("选择 Qemu 镜像"), QDir::homePath(), tr("Qemu镜像(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;所有文件(*.*)"));
qDebug() << path;
if(path == ""){
return;
@@ -254,23 +321,23 @@ void MainWindow::on_addQemuDisk_triggered()
}
if(QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
if(!QFile::remove(QDir::homePath() + "/Qemu/Windows/Windows.qcow2") | !QFile::copy(path, QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "添加错误!");
QMessageBox::critical(this, tr("提示"), tr("添加错误!"));
return;
}
}
else{
if(!QFile::copy(path, QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "添加错误!");
QMessageBox::critical(this, tr("提示"), tr("添加错误!"));
return;
}
}
QMessageBox::information(this, "提示", "添加完成!");
QMessageBox::information(this, tr("提示"), tr("添加完成!"));
}
void MainWindow::on_delQemuDisk_triggered()
{
if(!QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::information(this, "提示", "不存在磁盘文件,无法导出");
QMessageBox::information(this, tr("提示"), tr("不存在磁盘文件,无法导出"));
return;
}
std::system(("xdg-open \"" + QDir::homePath() + "/Qemu/Windows/\"").toUtf8());
@@ -289,15 +356,129 @@ void MainWindow::on_saveQemuDiskButton_clicked()
void MainWindow::on_delQemuDiskButton_clicked()
{
if(!QFile::exists(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::information(this, "提示", "不存在磁盘文件,无法移除");
QMessageBox::information(this, tr("提示"), tr("不存在磁盘文件,无法移除"));
return;
}
if(QMessageBox::question(this, "提示", "是否删除?\n删除后将无法恢复!") == QMessageBox::No){
if(QMessageBox::question(this, tr("提示"), tr("是否删除?\n删除后将无法恢复!")) == QMessageBox::No){
return;
}
if(!QFile::remove(QDir::homePath() + "/Qemu/Windows/Windows.qcow2")){
QMessageBox::critical(this, "提示", "移除失败");
QMessageBox::critical(this, tr("提示"), tr("移除失败"));
return;
}
QMessageBox::information(this, "提示", "移除成功");
QMessageBox::information(this, tr("提示"), tr("移除成功"));
}
void MainWindow::on_kvmTest_clicked()
{
if(system("which kvm-ok")&& !QFile::exists(QCoreApplication::applicationDirPath() + "/kvm-ok")){
QMessageBox::critical(this, tr("错误"), tr("未识别到命令 kvm-ok\n可以使用命令 sudo apt install cpu-checker 安装"));
return;
}
QString kvm_ok_path = "kvm-ok";
if(!system("which kvm-ok")){
kvm_ok_path = "kvm-ok";
}
else if(QFile::exists(QCoreApplication::applicationDirPath() + "/kvm-ok")){
kvm_ok_path = QCoreApplication::applicationDirPath() + "/kvm-ok";
}
qDebug() << tr("使用") << kvm_ok_path;
QProcess process;
process.start(kvm_ok_path);
process.waitForStarted();
process.waitForFinished();
if(process.exitCode()){
QMessageBox::critical(this, tr("错误"), tr("您的系统不支持使用 kvm\n") + process.readAll());
return;
}
QMessageBox::information(this, tr("提示"), tr("您的系统支持使用 kvm\n") + process.readAll());
}
void MainWindow::on_actionVMLog_triggered(){}
void MainWindow::on_actionVMRunlLog_triggered()
{
QFile file("/tmp/windows-virtual-machine-installer-for-wine-runner-run.log");
if(!file.exists()){
QMessageBox::information(this, tr("提示"), tr("没有日志文件"));
return;
}
file.open(QIODevice::ReadOnly);
QInputDialog::getMultiLineText(this, tr("运行日志"), tr("虚拟机运行日志"), file.readAll());
file.close();
}
void MainWindow::on_actionVMTest_triggered()
{
// 运行 Demo
if(QFile::exists(QCoreApplication::applicationDirPath() + "/test.qcow2")){
// 优先使用本地的磁盘
system(("qemu-system-i386 --hda '" + QCoreApplication::applicationDirPath() + "/test.qcow2' -rtc base=localtime > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1").toUtf8());
return;
}
// 写入 disk 文件
QFile file(":/TestDisk/test.qcow2");
// 计算随机数
QFile writeFile("/tmp/indows-virtual-machine-installer-for-wine-runner-test-disk.qcow2");
file.open(QIODevice::ReadOnly);
writeFile.open(QIODevice::WriteOnly);
writeFile.write(file.readAll());
file.close();
writeFile.close();
system("qemu-system-i386 --hda /tmp/indows-virtual-machine-installer-for-wine-runner-test-disk.qcow2 -rtc base=localtime > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1");
}
void MainWindow::on_actionVMInstallLog_triggered()
{
QFile file("/tmp/windows-virtual-machine-installer-for-wine-runner-install.log");
if(!file.exists()){
QMessageBox::information(this, tr("提示"), tr("没有日志文件"));
return;
}
file.open(QIODevice::ReadOnly);
QInputDialog::getMultiLineText(this, tr("安装日志"), tr("虚拟机安装日志"),file.readAll());
file.close();
}
void MainWindow::on_action_StopVirtualBox_triggered()
{
vbox vmControl("");
vmControl.Stop();
}
void MainWindow::on_action_StopQemu_triggered()
{
qemu vmControl("");
vmControl.Stop();
}
void MainWindow::on_actionQemuDiskAddSpace_triggered()
{
double data = QInputDialog::getDouble(this, tr("磁盘扩容"), "输入扩容多少GB\n1、扩容所需要的时间较长程序可能会出现假死的情况请不要关闭否则会导致虚拟磁盘损坏\n2、扩展后需要自行在虚拟机使用 Deepin Community Live CD、Live CD、Windows PE\n等工具调整系统分区大小才能使用");
if(data <= 0) {
return;
}
// 开始扩容
int result = qemu("").AddDiskSpace(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", data);
qDebug() << "Exit Code: " << result;
if(result) {
QMessageBox::critical(this, tr("错误"), tr("扩容失败!"));
return;
}
QMessageBox::information(this, tr("提示"), tr("扩容完成!"));
}
void MainWindow::on_getDCLC_triggered()
{
QDesktopServices::openUrl(QUrl("https://github.com/gfdgd-xi/deepin-community-live-cd/"));
}

View File

@@ -44,7 +44,26 @@ private slots:
void on_delQemuDiskButton_clicked();
void on_kvmTest_clicked();
void on_actionVMLog_triggered();
void on_actionVMRunlLog_triggered();
void on_actionVMTest_triggered();
void on_actionVMInstallLog_triggered();
void on_action_StopVirtualBox_triggered();
void on_action_StopQemu_triggered();
void on_actionQemuDiskAddSpace_triggered();
void on_getDCLC_triggered();
private:
bool stopShowTime = 0;
Ui::MainWindow *ui;
long m_cpuAll;
long m_cpuFree;

View File

@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
<string>Windows 应用适配工具</string>
<string>Wine 运行器虚拟机安装工具</string>
</property>
<property name="windowIcon">
<iconset>
@@ -114,6 +114,16 @@
<string>安装其他 Windows支持自动安装UEFI 启动,只支持 VirtualBox</string>
</property>
</item>
<item>
<property name="text">
<string>安装 arm32 系统(只支持 Qemu</string>
</property>
</item>
<item>
<property name="text">
<string>安装 arm64 系统(只支持 Qemu</string>
</property>
</item>
</widget>
</item>
</layout>
@@ -174,6 +184,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="kvmTest">
<property name="text">
<string>kvm 测试</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="qemuSetting">
<property name="text">
@@ -222,15 +239,30 @@
<widget class="QTextBrowser" name="textBrowser_3">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使用迅雷或者网盘下载以下任意一个链接然后在上面选择即可:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;123 网盘链接:&lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-oypWv&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-oypWv&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;迅雷网盘:&lt;/span&gt;&lt;a href=&quot;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码35e5&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;百度网盘:&lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码: me4y&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;(如果下载这个,系统版本选第一项,一般推荐这个)&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;(如果下载这个,系统版本选第二项)&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;UOS 3a4000 用户在使用 Qemu 时可能会出现虚拟机无法正常开机的问题,如果出现上述问题需要安装/降级到以下链接的版本:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;蓝奏云:&lt;/span&gt;&lt;a href=&quot;https://gfdgdxi.lanzoue.com/b01rk9wza&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gfdgdxi.lanzoue.com/b01rk9wza&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt; 密码:6wvf&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;诚通网盘:&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;注Qemu 跨架构效率较低,如无特殊情况不建议跨架构/不开硬件加速(如 kvm运行 Qemu&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;如何安装系统?使用迅雷或者网盘下载以下任意一个链接的 ISO 镜像然后在上面选择即可:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;123 网盘链接:&lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-oypWv&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-oypWv&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;迅雷网盘:&lt;/span&gt;&lt;a href=&quot;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt; 提取码35e5&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;百度网盘:&lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt; 提取码: me4y&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;诚通网盘:&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;(如果下载这个,系统版本选第一项,一般推荐这个)&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10pt;&quot;&gt;(如果下载这个,系统版本选第二项)&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; font-weight:600;&quot;&gt;常用 Windows 软件:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;百度网盘:链接: &lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt; 提取码: 7s2p &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;诚通网盘:&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;123网盘&lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-uCBWv.html&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-uCBWv.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openLinks">
@@ -252,67 +284,72 @@ p, li { white-space: pre-wrap; }
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;给小白的一段话&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;其实本质上跑完安装程序就没有然后了,顶多如果想要运行舒服一点点,可以安装加强功能,直接拉到最底下看就可以了,&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;如果你是用非 X86 PC那暂时只能使用 qemu没 kvm且跨架构的性能损失很大推荐使用 Windows XP 而非 Windows 7&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;(这里的帮助更新可能不会那么及时,更详细/新的帮助可以看https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果鼠标被锁定到里面了按下键盘右边的“Ctrl”键就可以了&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;qemu则是 Ctrl+Alt+G&lt;/span&gt; &lt;/p&gt;
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;给小白的一段话&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;其实本质上跑完安装程序就没有然后了,顶多如果想要运行舒服一点点,可以安装加强功能,直接拉到最底下看就可以了,&lt;/span&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;如果你是用非 X86 PC那暂时只能使用 qemu没 kvm且跨架构的性能损失很大推荐使用 Windows XP 而非 Windows 7&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:600; text-decoration: underline;&quot;&gt;(这里的帮助更新可能不会那么及时,更详细/新的帮助可以看https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;如果鼠标被锁定到里面了按下键盘右边的“Ctrl”键就可以了&lt;/span&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;qemu则是 Ctrl+Alt+G&lt;/span&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;VirtualBox 可以安装增强功能以优化体验,安装方法往下翻即可查询&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;Qemu 可以安装 Virtio 以优化体验,下载链接:&lt;/span&gt;&lt;a href=&quot;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;安装是否需要人工进行操作?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;如果您下载的镜像本程序支持,则大部分不用,已经尽量省去了让新手头疼的虚拟机程序安装,创建、设置虚拟机,虚拟磁盘分区,寻找原版镜像文件等内容&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;安装是否需要人工进行操作?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;如果您下载的镜像本程序支持,则大部分不用,已经尽量省去了让新手头疼的虚拟机程序安装,创建、设置虚拟机,虚拟磁盘分区,寻找原版镜像文件等内容&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;但有些设置依旧需要人工自行设置,例如安装界面密钥的输入、系统的激活(涉及版权问题,不会考虑省略)、增强功能的安装、需要使用的软件等等&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;但有些设置依旧需要人工自行设置,例如安装界面密钥的输入、系统的激活(涉及版权问题,不会考虑省略)、增强功能的安装、需要使用的软件等等&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;什么样的镜像本程序(可能)不支持自动安装?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;非 Windows 7 镜像可能不支持自动安装(纯的 Windows 7 企业版镜像可能不支持自动安装),不保证系统能自动安装成功,例如 Windows XP、Windows 10、Deepin、Ubuntu 等等&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;什么样的镜像本程序(可能)不支持自动安装?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;非 Windows 7 镜像可能不支持自动安装(纯的 Windows 7 企业版镜像可能不支持自动安装),不保证系统能自动安装成功,例如 Windows XP、Windows 10、Deepin、Ubuntu 等等&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;默认的虚拟机设置不习惯怎么改?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1、打开启动器打开 Oracle VM VirtualBox 程序&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2、选择名字为“Windows”的虚拟机然后在右边点击设置&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;默认的虚拟机设置不习惯怎么改?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;1、打开启动器打开 Oracle VM VirtualBox 程序&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;2、选择名字为“Windows”的虚拟机然后在右边点击设置&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3、在这里修改即可&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;3、在这里修改即可&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;安装加强功能有什么好处?(只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1、支持鼠标自由从虚拟机和实体机切换&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2、支持虚拟机根据窗口大小自动设置分辨率&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3、支持文件共享、剪切板共享、文件拖放&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4、支持无缝模式&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;安装加强功能有什么好处?(只限使用 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;1、支持鼠标自由从虚拟机和实体机切换&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;2、支持虚拟机根据窗口大小自动设置分辨率&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;3、支持文件共享、剪切板共享、文件拖放&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;4、支持无缝模式&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_选择区域_20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;如何安装加强功能?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1、点击“设备”=》“加强功能”&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:26pt; font-weight:600;&quot;&gt;如何安装加强功能?&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;1、点击“设备”=》“加强功能”&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2、打开“计算机”找到名为“VirtualBox Guest Additions”的光盘双击进入然后双击打开名为“VBoxWindowsAdditions”的程序&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;2、打开“计算机”找到名为“VirtualBox Guest Additions”的光盘双击进入然后双击打开名为“VBoxWindowsAdditions”的程序&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3、在弹出的界面点击“是”&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;3、在弹出的界面点击“是”&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4、一直点“Next”&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;4、一直点“Next”&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5、全部选择然后点击“Install”进行安装&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;5、全部选择然后点击“Install”进行安装&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6、等待安装完毕后选择“Reboot now”然后点击“Finish”重启此虚拟机即可安装成功选择“Reboot now”并点“Finish”会自动重新启动&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt;&quot;&gt;6、等待安装完毕后选择“Reboot now”然后点击“Finish”重启此虚拟机即可安装成功选择“Reboot now”并点“Finish”会自动重新启动&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/截图/截图_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openLinks">
@@ -388,21 +425,22 @@ p, li { white-space: pre-wrap; }
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;此为 wine 运行器附属组件虽然违背了“Wine Is Not An Emulator”&amp;lt;Wine 不是一个模拟器&amp;gt;的原意),旨在能更加完美、简单的运行 Windows 应用&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;本程序基于 C++ Qt、Python 和 Virtualbox 制作,通过运行安装 Windows 操作系统的虚拟机实现在 Linux 运行 Windows exe 程序的功能。&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;基于 GPL V3 协议开源&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;项目地址:&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;此组件也有非常大的缺点,就是相比于 Wine会需要占用大量的空间、安装需要大量的时间、某些情况下需要相比于 Wine 需要消耗更多的系统资源,但可以更加完美、流畅的运行 Windows 应用,会尽量减少因为缺少或未实现导致的 Windows exe 程序运行异常&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;该组件制作者gfdgd xi&lt;/p&gt;
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;此为 wine 运行器附属组件虽然违背了“Wine Is Not An Emulator”&amp;lt;Wine 不是一个模拟器&amp;gt;的原意),旨在能更加完美、简单的运行 Windows 应用&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;本程序基于 C++ Qt、Python 和 Virtualbox 制作,通过运行安装 Windows 操作系统的虚拟机实现在 Linux 运行 Windows exe 程序的功能。&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;基于 GPL V3 协议开源&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;项目地址:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt; Gitee&lt;/span&gt;&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt; Github&lt;/span&gt;&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;此组件也有非常大的缺点,就是相比于 Wine会需要占用大量的空间、安装需要大量的时间、某些情况下需要相比于 Wine 需要消耗更多的系统资源,但可以更加完美、流畅的运行 Windows 应用,会尽量减少因为缺少或未实现导致的 Windows exe 程序运行异常&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;该组件制作者gfdgd xi&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;参考文献:&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Noto Sans CJK SC'; font-size:10.5pt;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="openLinks">
<bool>false</bool>
@@ -420,6 +458,33 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1058</width>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menuVM">
<property name="title">
<string>虚拟机</string>
</property>
<addaction name="actionVMInstallLog"/>
<addaction name="actionVMRunlLog"/>
<addaction name="separator"/>
<addaction name="actionVMTest"/>
<addaction name="separator"/>
<addaction name="action_StopVirtualBox"/>
<addaction name="action_StopQemu"/>
<addaction name="separator"/>
<addaction name="actionQemuDiskAddSpace"/>
<addaction name="separator"/>
<addaction name="getDCLC"/>
</widget>
<addaction name="menuVM"/>
</widget>
<action name="action">
<property name="text">
<string>退出</string>
@@ -440,6 +505,41 @@ p, li { white-space: pre-wrap; }
<string>导出</string>
</property>
</action>
<action name="actionVMInstallLog">
<property name="text">
<string>虚拟机安装日志</string>
</property>
</action>
<action name="actionVMRunlLog">
<property name="text">
<string>虚拟机运行日志</string>
</property>
</action>
<action name="actionVMTest">
<property name="text">
<string>虚拟机测试X86、Qemu</string>
</property>
</action>
<action name="action_StopVirtualBox">
<property name="text">
<string>强制停止 VirtualBox</string>
</property>
</action>
<action name="action_StopQemu">
<property name="text">
<string>强制停止 Qemu</string>
</property>
</action>
<action name="actionQemuDiskAddSpace">
<property name="text">
<string>Qemu 磁盘扩容</string>
</property>
</action>
<action name="getDCLC">
<property name="text">
<string>获取 Deepin Community Live CD</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>

350
VM-source/mainwindow_ui.py Normal file
View File

@@ -0,0 +1,350 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1058, 512)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralWidget)
self.horizontalLayout.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout.setSpacing(6)
self.horizontalLayout.setObjectName("horizontalLayout")
self.tabWidget = QtWidgets.QTabWidget(self.centralWidget)
self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.verticalLayout = QtWidgets.QVBoxLayout(self.tab)
self.verticalLayout.setContentsMargins(11, 11, 11, 11)
self.verticalLayout.setSpacing(6)
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setSpacing(6)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label = QtWidgets.QLabel(self.tab)
self.label.setObjectName("label")
self.horizontalLayout_2.addWidget(self.label)
self.isoPath = QtWidgets.QLineEdit(self.tab)
self.isoPath.setObjectName("isoPath")
self.horizontalLayout_2.addWidget(self.isoPath)
self.browser = QtWidgets.QPushButton(self.tab)
self.browser.setObjectName("browser")
self.horizontalLayout_2.addWidget(self.browser)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setSpacing(6)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_2 = QtWidgets.QLabel(self.tab)
self.label_2.setObjectName("label_2")
self.horizontalLayout_3.addWidget(self.label_2)
self.systemVersion = QtWidgets.QComboBox(self.tab)
self.systemVersion.setObjectName("systemVersion")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.systemVersion.addItem("")
self.horizontalLayout_3.addWidget(self.systemVersion)
self.horizontalLayout_3.setStretch(1, 1)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setSpacing(6)
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.label_4 = QtWidgets.QLabel(self.tab)
self.label_4.setObjectName("label_4")
self.horizontalLayout_7.addWidget(self.label_4)
self.vmChooser = QtWidgets.QComboBox(self.tab)
self.vmChooser.setDuplicatesEnabled(False)
self.vmChooser.setObjectName("vmChooser")
self.vmChooser.addItem("")
self.vmChooser.addItem("")
self.horizontalLayout_7.addWidget(self.vmChooser)
self.horizontalLayout_7.setStretch(1, 1)
self.verticalLayout.addLayout(self.horizontalLayout_7)
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setSpacing(6)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_4.addItem(spacerItem)
self.getQemu = QtWidgets.QPushButton(self.tab)
self.getQemu.setObjectName("getQemu")
self.horizontalLayout_4.addWidget(self.getQemu)
self.kvmTest = QtWidgets.QPushButton(self.tab)
self.kvmTest.setObjectName("kvmTest")
self.horizontalLayout_4.addWidget(self.kvmTest)
self.qemuSetting = QtWidgets.QPushButton(self.tab)
self.qemuSetting.setObjectName("qemuSetting")
self.horizontalLayout_4.addWidget(self.qemuSetting)
self.addQemuDiskButton = QtWidgets.QPushButton(self.tab)
self.addQemuDiskButton.setObjectName("addQemuDiskButton")
self.horizontalLayout_4.addWidget(self.addQemuDiskButton)
self.saveQemuDiskButton = QtWidgets.QPushButton(self.tab)
self.saveQemuDiskButton.setObjectName("saveQemuDiskButton")
self.horizontalLayout_4.addWidget(self.saveQemuDiskButton)
self.delQemuDiskButton = QtWidgets.QPushButton(self.tab)
self.delQemuDiskButton.setObjectName("delQemuDiskButton")
self.horizontalLayout_4.addWidget(self.delQemuDiskButton)
self.getvbox = QtWidgets.QPushButton(self.tab)
self.getvbox.setObjectName("getvbox")
self.horizontalLayout_4.addWidget(self.getvbox)
self.install = QtWidgets.QPushButton(self.tab)
self.install.setObjectName("install")
self.horizontalLayout_4.addWidget(self.install)
self.verticalLayout.addLayout(self.horizontalLayout_4)
self.textBrowser_3 = QtWidgets.QTextBrowser(self.tab)
self.textBrowser_3.setOpenLinks(False)
self.textBrowser_3.setObjectName("textBrowser_3")
self.verticalLayout.addWidget(self.textBrowser_3)
self.tabWidget.addTab(self.tab, "")
self.tab_3 = QtWidgets.QWidget()
self.tab_3.setObjectName("tab_3")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.tab_3)
self.horizontalLayout_5.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_5.setSpacing(6)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.textBrowser = QtWidgets.QTextBrowser(self.tab_3)
self.textBrowser.setUndoRedoEnabled(False)
self.textBrowser.setOpenLinks(False)
self.textBrowser.setObjectName("textBrowser")
self.horizontalLayout_5.addWidget(self.textBrowser)
self.tabWidget.addTab(self.tab_3, "")
self.tab_2 = QtWidgets.QWidget()
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tab_2.sizePolicy().hasHeightForWidth())
self.tab_2.setSizePolicy(sizePolicy)
self.tab_2.setObjectName("tab_2")
self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_2)
self.horizontalLayout_6.setContentsMargins(11, 11, 11, 11)
self.horizontalLayout_6.setSpacing(6)
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setSpacing(6)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.label_3 = QtWidgets.QLabel(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy)
self.label_3.setMinimumSize(QtCore.QSize(200, 200))
self.label_3.setMaximumSize(QtCore.QSize(200, 200))
self.label_3.setStyleSheet("border-image: url(:/deepin-wine-runner.png);")
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.verticalLayout_3.addWidget(self.label_3)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_3.addItem(spacerItem1)
self.horizontalLayout_6.addLayout(self.verticalLayout_3)
self.textBrowser_2 = QtWidgets.QTextBrowser(self.tab_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.textBrowser_2.sizePolicy().hasHeightForWidth())
self.textBrowser_2.setSizePolicy(sizePolicy)
self.textBrowser_2.setOpenLinks(False)
self.textBrowser_2.setObjectName("textBrowser_2")
self.horizontalLayout_6.addWidget(self.textBrowser_2)
self.tabWidget.addTab(self.tab_2, "")
self.horizontalLayout.addWidget(self.tabWidget)
MainWindow.setCentralWidget(self.centralWidget)
self.CPUValue = QtWidgets.QStatusBar(MainWindow)
self.CPUValue.setStatusTip("")
self.CPUValue.setObjectName("CPUValue")
MainWindow.setStatusBar(self.CPUValue)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 1058, 36))
self.menuBar.setObjectName("menuBar")
self.menuVM = QtWidgets.QMenu(self.menuBar)
self.menuVM.setObjectName("menuVM")
MainWindow.setMenuBar(self.menuBar)
self.action = QtWidgets.QAction(MainWindow)
self.action.setObjectName("action")
self.action_2 = QtWidgets.QAction(MainWindow)
self.action_2.setObjectName("action_2")
self.addQemuDisk = QtWidgets.QAction(MainWindow)
self.addQemuDisk.setObjectName("addQemuDisk")
self.delQemuDisk = QtWidgets.QAction(MainWindow)
self.delQemuDisk.setObjectName("delQemuDisk")
self.actionVMInstallLog = QtWidgets.QAction(MainWindow)
self.actionVMInstallLog.setObjectName("actionVMInstallLog")
self.actionVMRunlLog = QtWidgets.QAction(MainWindow)
self.actionVMRunlLog.setObjectName("actionVMRunlLog")
self.actionVMTest = QtWidgets.QAction(MainWindow)
self.actionVMTest.setObjectName("actionVMTest")
self.menuVM.addAction(self.actionVMInstallLog)
self.menuVM.addAction(self.actionVMRunlLog)
self.menuVM.addSeparator()
self.menuVM.addAction(self.actionVMTest)
self.menuBar.addAction(self.menuVM.menuAction())
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
self.vmChooser.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Wine 运行器虚拟机安装工具"))
self.label.setText(_translate("MainWindow", "镜像路径:"))
self.isoPath.setPlaceholderText(_translate("MainWindow", "请选择系统镜像"))
self.browser.setText(_translate("MainWindow", "浏览……"))
self.label_2.setText(_translate("MainWindow", "系统版本:"))
self.systemVersion.setCurrentText(_translate("MainWindow", "Windows 7 32 位(支持自动安装)"))
self.systemVersion.setItemText(0, _translate("MainWindow", "Windows 7 32 位(支持自动安装)"))
self.systemVersion.setItemText(1, _translate("MainWindow", "Windows 7 64 位(支持自动安装)"))
self.systemVersion.setItemText(2, _translate("MainWindow", "其它 Windows 系统(不支持自动安装,传统启动,推荐 Windows 7 及以下)"))
self.systemVersion.setItemText(3, _translate("MainWindow", "其他 Windows 系统不支持自动安装UEFI 启动,推荐 Windows 8 及以上)"))
self.systemVersion.setItemText(4, _translate("MainWindow", "安装 WIndows 11不支持自动安装"))
self.systemVersion.setItemText(5, _translate("MainWindow", "安装其他 Windows XP支持自动安装只支持 VirtualBox"))
self.systemVersion.setItemText(6, _translate("MainWindow", "安装其他 Windows (支持自动安装,传统启动,只支持 VirtualBox"))
self.systemVersion.setItemText(7, _translate("MainWindow", "安装其他 Windows支持自动安装UEFI 启动,只支持 VirtualBox"))
self.systemVersion.setItemText(8, _translate("MainWindow", "安装 arm32 系统(只支持 Qemu"))
self.systemVersion.setItemText(9, _translate("MainWindow", "安装 arm64 系统(只支持 Qemu"))
self.label_4.setText(_translate("MainWindow", "虚拟机(建议默认):"))
self.vmChooser.setCurrentText(_translate("MainWindow", "qemu/kvm"))
self.vmChooser.setItemText(0, _translate("MainWindow", "qemu/kvm"))
self.vmChooser.setItemText(1, _translate("MainWindow", "VirtualBox"))
self.getQemu.setText(_translate("MainWindow", "安装 Qemu"))
self.kvmTest.setText(_translate("MainWindow", "kvm 测试"))
self.qemuSetting.setText(_translate("MainWindow", "Qemu虚拟机设置"))
self.addQemuDiskButton.setText(_translate("MainWindow", "添加/覆盖Qemu磁盘"))
self.saveQemuDiskButton.setText(_translate("MainWindow", "导出Qemu磁盘"))
self.delQemuDiskButton.setText(_translate("MainWindow", "移除Qemu磁盘"))
self.getvbox.setText(_translate("MainWindow", "获取VirtualBox"))
self.install.setText(_translate("MainWindow", "安装"))
self.textBrowser_3.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Noto Sans CJK SC\'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">UOS 3a4000 用户在使用 Qemu 时可能会出现虚拟机无法正常开机的问题,需要安装/降级到以下链接的版本:</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">蓝奏云:</span><a href=\"https://gfdgdxi.lanzoue.com/b01rk9wza\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://gfdgdxi.lanzoue.com/b01rk9wza</span></a><span style=\" font-size:11pt;\"> 密码:6wvf</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">诚通网盘:</span><a href=\"http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061</span></a><span style=\" font-size:11pt;\"> (访问密码: 2061)</span></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">注Qemu 跨架构效率较低,如无特殊情况不建议跨架构/不开硬件加速(如 kvm运行 Qemu</span></p>\n"
"<hr />\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">如何安装系统?使用迅雷或者网盘下载以下任意一个链接的 ISO 镜像然后在上面选择即可:</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">123 网盘链接:</span><a href=\"https://www.123pan.com/s/pDSKVv-oypWv\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://www.123pan.com/s/pDSKVv-oypWv</span></a></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">迅雷网盘:</span><a href=\"https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5</span></a><span style=\" font-size:10pt;\"> 提取码35e5</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">百度网盘:</span><a href=\"https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y</span></a><span style=\" font-size:10pt;\"> 提取码: me4y</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">诚通网盘:</span><a href=\"http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061</span></a><span style=\" font-size:10pt;\"> (访问密码: 2061)</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">(如果下载这个,系统版本选第一项,一般推荐这个)</span><a href=\"ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/</span></a></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">(如果下载这个,系统版本选第二项)</span><a href=\"ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/</span></a></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt; font-weight:600;\">常用 Windows 软件:</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">百度网盘:链接: </span><a href=\"https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p</span></a><span style=\" font-size:11pt;\"> 提取码: 7s2p </span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">诚通网盘:</span><a href=\"http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061</span></a><span style=\" font-size:11pt;\"> (访问密码: 2061)</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">123网盘</span><a href=\"https://www.123pan.com/s/pDSKVv-uCBWv.html\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://www.123pan.com/s/pDSKVv-uCBWv.html</span></a></p>\n"
"<hr /></body></html>"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "设置"))
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "设置"))
self.textBrowser.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Noto Sans CJK SC\'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">给小白的一段话</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">其实本质上跑完安装程序就没有然后了,顶多如果想要运行舒服一点点,可以安装加强功能,直接拉到最底下看就可以了,<span style=\" font-weight:600; font-style:italic; text-decoration: underline;\">只限使用 VirtualBox</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600; font-style:italic; text-decoration: underline;\">如果你是用非 X86 PC那暂时只能使用 qemu没 kvm且跨架构的性能损失很大推荐使用 Windows XP 而非 Windows 7</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:600; text-decoration: underline;\">(这里的帮助更新可能不会那么及时,更详细/新的帮助可以看https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">如果鼠标被锁定到里面了按下键盘右边的“Ctrl”键就可以了<span style=\" font-weight:600; font-style:italic; text-decoration: underline;\">qemu则是 Ctrl+Alt+G</span> </p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">VirtualBox 可以安装增强功能以优化体验,安装方法往下翻即可查询</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Qemu 可以安装 Virtio 以优化体验,下载链接:<a href=\"https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/</span></a></p>\n"
"<hr />\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;\"><br /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">安装是否需要人工进行操作?</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">如果您下载的镜像本程序支持,则大部分不用,已经尽量省去了让新手头疼的虚拟机程序安装,创建、设置虚拟机,虚拟磁盘分区,寻找原版镜像文件等内容</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712191756.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">但有些设置依旧需要人工自行设置,例如安装界面密钥的输入、系统的激活(涉及版权问题,不会考虑省略)、增强功能的安装、需要使用的软件等等</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712192850.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712193527.png\" /></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">什么样的镜像本程序(可能)不支持自动安装?</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">非 Windows 7 镜像可能不支持自动安装(纯的 Windows 7 企业版镜像可能不支持自动安装),不保证系统能自动安装成功,例如 Windows XP、Windows 10、Deepin、Ubuntu 等等</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">默认的虚拟机设置不习惯怎么改?</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">1、打开启动器打开 Oracle VM VirtualBox 程序</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">2、选择名字为“Windows”的虚拟机然后在右边点击设置</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Manager_20220712223602.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">3、在这里修改即可</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox_20220712223705.png\" /></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">安装加强功能有什么好处?(只限使用 VirtualBox</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">1、支持鼠标自由从虚拟机和实体机切换</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">2、支持虚拟机根据窗口大小自动设置分辨率</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">3、支持文件共享、剪切板共享、文件拖放</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">4、支持无缝模式</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_选择区域_20220712224639.png\" /></p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:26pt; font-weight:600;\">如何安装加强功能?</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">1、点击“设备”=》“加强功能”</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图_VirtualBox Machine_20220712142929.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">2、打开“计算机”找到名为“VirtualBox Guest Additions”的光盘双击进入然后双击打开名为“VBoxWindowsAdditions”的程序</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143006.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">3、在弹出的界面点击“是”</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143018.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">4、一直点“Next”</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143029.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143037.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">5、全部选择然后点击“Install”进行安装</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143044.png\" /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:11pt;\">6、等待安装完毕后选择“Reboot now”然后点击“Finish”重启此虚拟机即可安装成功选择“Reboot now”并点“Finish”会自动重新启动</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><img src=\":/picture/截图/截图_VirtualBox Machine_20220712143103.png\" /></p></body></html>"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "安装/使用帮助"))
self.textBrowser_2.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Noto Sans CJK SC\'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">此为 wine 运行器附属组件虽然违背了“Wine Is Not An Emulator”&lt;Wine 不是一个模拟器&gt;的原意),旨在能更加完美、简单的运行 Windows 应用</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">本程序基于 C++ Qt、Python 和 Virtualbox 制作,通过运行安装 Windows 操作系统的虚拟机实现在 Linux 运行 Windows exe 程序的功能。</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">基于 GPL V3 协议开源</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">项目地址:</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"> Gitee<a href=\"https://gitee.com/gfdgd-xi/deep-wine-runner\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://gitee.com/gfdgd-xi/deep-wine-runner</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"> Github<a href=\"https://github.com/gfdgd-xi/deep-wine-runner\"><span style=\" font-size:11pt; text-decoration: underline; color:#0082fa;\">https://github.com/gfdgd-xi/deep-wine-runner</span></a></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">此组件也有非常大的缺点,就是相比于 Wine会需要占用大量的空间、安装需要大量的时间、某些情况下需要相比于 Wine 需要消耗更多的系统资源,但可以更加完美、流畅的运行 Windows 应用,会尽量减少因为缺少或未实现导致的 Windows exe 程序运行异常</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">该组件制作者gfdgd xi</p>\n"
"<hr />\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "关于"))
self.menuVM.setTitle(_translate("MainWindow", "虚拟机"))
self.action.setText(_translate("MainWindow", "退出"))
self.action_2.setText(_translate("MainWindow", "关于"))
self.addQemuDisk.setText(_translate("MainWindow", "导入/覆盖"))
self.delQemuDisk.setText(_translate("MainWindow", "导出"))
self.actionVMInstallLog.setText(_translate("MainWindow", "虚拟机安装日志"))
self.actionVMRunlLog.setText(_translate("MainWindow", "虚拟机运行日志"))
self.actionVMTest.setText(_translate("MainWindow", "虚拟机测试X86、Qemu"))

View File

@@ -9,8 +9,11 @@
#include <QMessageBox>
#include <QProcess>
#include <QDebug>
#include <iostream>
using namespace std;
qemu::qemu(QString name, QString managerPath) {
qemu::qemu(QString name, QString managerPath)
{
if(!QFile::exists(name)){
this->name = QDir::homePath() + "/Qemu/" + name;
}
@@ -22,38 +25,54 @@ qemu::qemu(QString name, QString managerPath) {
this->vboxVersion = Command().GetCommand("'" + managerPath + "qemu-system-i386' --version");
}
int qemu::Create(QString type){
int qemu::Create(QString type)
{
if(!QFile::exists(this->name)){
QDir dir(this->name);
dir.mkpath(this->name);
}
return 0;
}
int qemu::CreateDisk(QString path, int size){
int qemu::CreateDisk(QString path, int size)
{
if(QFile::exists(path)){
return 0;
}
return system(("qemu-img create -f qcow2 '" + path + "' " + QString::number(size) + "M").toLatin1());
}
int qemu::CreateDiskControl(QString controlName){
int qemu::CreateDiskControl(QString controlName)
{
return 0;
}
int qemu::MountDisk(QString diskPath, QString controlName, int port, int device){
int qemu::MountDisk(QString diskPath, QString controlName, int port, int device)
{
commandOption += "-drive 'file=" + diskPath + ",if=ide,index=" + QString::number(device) + "' ";
return 0;
}
int qemu::MountISO(QString isoPath, QString controlName, int port, int device){
int qemu::MountISO(QString isoPath, QString controlName, int port, int device)
{
commandOption += "-drive 'media=cdrom,file=" + isoPath + ",if=ide,index=" + QString::number(device) + "' ";
return 0;
}
int qemu::BootFirst(QString bootDrive){
int qemu::BootFirst(QString bootDrive)
{
commandOption += "-boot '" + bootDrive + "' ";
return 0;
}
int qemu::SetNetBridge(QString netDriver){
int qemu::SetNetBridge(QString netDriver)
{
return 0;
}
int qemu::SetCPU(int number, int cpuNum, int coreNum){
int qemu::SetCPU(int number, int cpuNum, int coreNum)
{
// commandOption += "-smp " + QString::number(number) + " ";
// 调整调用方法
//qDebug() << number << " " << cpuNum << " " << coreNum;
@@ -63,63 +82,192 @@ int qemu::SetCPU(int number, int cpuNum, int coreNum){
commandOption += "-smp " + QString::number(number) + ",sockets=" + QString::number(cpuNum) + ",cores=" + QString::number(coreNum / cpuNum) + ",threads=" + QString::number(number / cpuNum / coreNum) + " ";
return 0;
}
int qemu::SetMemory(int memory){
int qemu::SetMemory(int memory)
{
commandOption += "-m " + QString::number(memory) + "M ";
return 0;
}
int qemu::SetRemote(bool setting){
int qemu::SetRemote(bool setting)
{
return 0;
}
int qemu::SetRemoteConnectSetting(int port){
int qemu::SetRemoteConnectSetting(int port)
{
return 0;
}
int qemu::Start(bool unShown){
int qemu::MountMainDisk(QString diskPath)
{
commandOption += " --hda '" + diskPath + "' ";
return 0;
}
int qemu::StartArmhf()
{
qDebug() << commandOption;
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64"){
return system(("kvm -cpu host " + commandOption + " &").toLatin1());
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
return system(("qemu-system-arm --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
return system(("qemu-system-x86_64 -nic model=rtl8139 " + commandOption + " &").toLatin1());
return system(("qemu-system-arm --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
int qemu::Stop(){
int qemu::StartAarch64()
{
QString bootScreenLogo = "";
// 判断 boot 文件是否存在
if(QFile::exists(QCoreApplication::applicationDirPath() + "/boot.jpg")) {
bootScreenLogo = QCoreApplication::applicationDirPath() + "/boot.jpg";
}
else {
// 写入 logo
QFile::copy(":/boot.jpg", "/tmp/deep-wine-runner-boot.jpg");
bootScreenLogo = "/tmp/deep-wine-runner-boot.jpg";
}
qDebug() << commandOption;
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
return system(("qemu-system-aarch64 --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
return system(("qemu-system-aarch64 --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -cpu max -M virt " + commandOption + " -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
int qemu::StartLoong64()
{
return 1;
}
int qemu::Start(bool unShown)
{
QString newCommandOption = commandOption;
QString qemuPath = "qemu-system-x86_64";
qDebug() << GetBootLogoPath();
if(isUEFI) {
newCommandOption += " -vga none -device virtio-gpu-pci -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 -device usb-kbd,id=keyboard,bus=xhci.0,port=2 ";
}
else {
newCommandOption += " -vga virtio -device nec-usb-xhci,id=xhci,addr=0x1b -device usb-tablet,id=tablet,bus=xhci.0,port=1 ";
}
// UOS 3a4000 使用程序自带的 qemu
QString info = SystemInfo().toLower();
if(info.contains("uos") || info.contains("unio")) {
// 判断架构
QString arch = GetArch();
if(arch == "mips64" || arch == "mipsel64") {
qemuPath = "bwrap --dev-bind / / --bind '" + QCoreApplication::applicationDirPath() + "/MipsQemu/usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so' /usr/lib/mips64el-linux-gnuabi64/qemu/ui-gtk.so '" + QCoreApplication::applicationDirPath() + "/MipsQemu/usr/bin/qemu-system-x86_64' ";
}
}
qDebug() << commandOption;
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
return system((qemuPath + " --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk --enable-kvm -cpu host " + newCommandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
return system((qemuPath + " --boot 'splash=" + GetBootLogoPath() + ",order=d,menu=on,splash-time=2000' -display vnc=:5 -display gtk -nic model=rtl8139 " + newCommandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
}
int qemu::Stop()
{
system("killall qemu-system-x86_64 -9");
system("killall qemu-system-aarch64 -9");
system("killall qemu-system-arm -9");
system("killall kvm -9");
return 0;
}
int qemu::Delete(){
int qemu::Delete()
{
return system(("rm -rfv '" + name + "'").toLatin1());
}
int qemu::SetDisplayMemory(int memory){
int qemu::SetDisplayMemory(int memory)
{
return 0;
}
int qemu::InstallGuessAdditions(QString controlName, int port, int device){
int qemu::InstallGuessAdditions(QString controlName, int port, int device)
{
return 0;
}
int qemu::EnabledAudio(){
commandOption += "-soundhw all ";
int qemu::EnabledAudio()
{
commandOption += "-device AC97 -device ES1370 -device intel-hda -device hda-duplex ";
return 0;
}
int qemu::EnabledClipboardMode(){
int qemu::EnabledClipboardMode()
{
return 0;
}
int qemu::EnabledDraganddrop(){
int qemu::EnabledDraganddrop()
{
return 0;
}
int qemu::ShareFile(QString name, QString path){
int qemu::ShareFile(QString name, QString path)
{
return 0;
}
int qemu::SetVBoxSVGA(){
int qemu::SetVBoxSVGA()
{
return 0;
}
int qemu::SetMousePS2(){
int qemu::SetMousePS2()
{
return 0;
}
int qemu::SetKeyboardPS2(){
int qemu::SetKeyboardPS2()
{
return 0;
}
int qemu::OpenUSB(){
int qemu::OpenUSB()
{
return 0;
}
int qemu::EnabledUEFI(bool status){
int qemu::UseAarch64EFI()
{
if(QFile::exists("/usr/share/qemu-efi-aarch64/QEMU_EFI.fd")){
commandOption += "--bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd ";
return 0;
}
if(QFile::exists(QCoreApplication::applicationDirPath() + "/QEMU_AARCH64_EFI.fd")){
commandOption += "--bios '" + QCoreApplication::applicationDirPath() + "/QEMU_AARCH64_EFI.fd' ";
return 0;
}
return 1;
}
int qemu::UseArmhfEFI()
{
if(QFile::exists("/usr/share/AAVMF/AAVMF32_CODE.fd")){
commandOption += "--bios /usr/share/AAVMF/AAVMF32_CODE.fd ";
return 0;
}
if(QFile::exists(QCoreApplication::applicationDirPath() + "/AAVMF32_CODE.fd")){
commandOption += "--bios '" + QCoreApplication::applicationDirPath() + "/AAVMF32_CODE.fd' ";
return 0;
}
return 1;
}
int qemu::UseLoongarch64EFI()
{
}
int qemu::UseOtherEFI(QString fdFilePath)
{
}
int qemu::EnabledUEFI(bool status)
{
isUEFI = status;
if(!status){
return 0;
}
@@ -133,6 +281,57 @@ int qemu::EnabledUEFI(bool status){
}
return 1;
}
int qemu::AutoInstall(QString iso){
int qemu::MountMainISO(QString isoPath)
{
commandOption += "--cdrom '" + isoPath + "' ";
return 0;
}
int qemu::AutoInstall(QString iso)
{
return 0;
}
int qemu::AddDiskSpace(QString path, double data)
{
return system(("qemu-img resize '" + path + "' +" + QString::number(data) + "G").toUtf8());
}
QString qemu::GetBootLogoPath()
{
QString bootScreenLogo = "";
// 判断 boot 文件是否存在
if(QFile::exists(QCoreApplication::applicationDirPath() + "/boot.jpg")) {
bootScreenLogo = QCoreApplication::applicationDirPath() + "/boot.jpg";
}
else {
// 写入 logo
if(QFile::exists("/tmp/deep-wine-runner-boot.jpg")) {
QFile::remove("/tmp/deep-wine-runner-boot.jpg");
}
QFile::copy(":/boot.jpg", "/tmp/deep-wine-runner-boot.jpg");
bootScreenLogo = "/tmp/deep-wine-runner-boot.jpg";
}
return bootScreenLogo;
}
QString qemu::SystemInfo()
{
QFile file("/etc/os-version");
file.open(QFile::ReadOnly);
QString data = file.readAll();
file.close();
return data;
}
QString qemu::GetArch()
{
QProcess process;
process.start("uname", QStringList() << "-m");
process.waitForStarted();
process.waitForFinished();
QString data = process.readAllStandardError();
process.close();
return data.replace("\n", "").replace(" ", "");
}

View File

@@ -26,6 +26,10 @@ public:
int SetRemote(bool setting);
int SetRemoteConnectSetting(int port=5540);
int Start(bool unShown=false);
int StartArmhf();
int StartAarch64();
int StartLoong64();
int MountMainDisk(QString diskPath);
int Stop();
int Delete();
int SetDisplayMemory(int memory);
@@ -40,8 +44,18 @@ public:
int OpenUSB();
int EnabledUEFI(bool status);
int AutoInstall(QString iso);
int MountMainISO(QString isoPath);
int UseAarch64EFI();
int UseArmhfEFI();
int UseLoongarch64EFI();
int UseOtherEFI(QString fdFilePath);
int AddDiskSpace(QString path, double data);
private:
QString commandOption = "";
bool isUEFI = false;
QString GetBootLogoPath();
QString SystemInfo();
QString GetArch();
};

289
VM-source/test-kvm.asm Normal file
View File

@@ -0,0 +1,289 @@
mov ax,0xb800
mov es,ax
; 清屏
mov cx,80*25
clean:
mov di,cx
add di,di
mov byte [es:di],''
add di,1
mov byte [es:di],0x0F
loop clean
; 显示上方白条
; 移除(0,0)的S字符
mov byte [es:0x00],''
mov cx,80*2-1
mov di,0
push cx
headtitle:
mov di,cx
mov byte [es:di],0xF0
; 写入空字符
add di,di
mov byte [es:di],''
;inc cx
;sub cx,1
loop headtitle
xor di,di
pop cx
; 显示下方白条
tailtitle:
mov di,cx
add di,80*2*24
mov byte [es:di],0xF0
; 写入空字符
mov di,cx
add di,di
add di,80*2*24
mov byte [es:di],''
loop tailtitle
; 在第一行写入文本
jmp near showHeadText
headText: db 'Wine Runner Webiste:http://gitee.com/gfdgd-xi/deep-wine-runner'
showHeadText:
; 虽然可以简单粗暴的用 movsw但是会出现问题
mov cx,showHeadText-headText
mov ax,0x7c0
mov ds,ax ; 定位到汇编程序所在的内存地址
showHeadTextLoop:
mov dx,cx
mov di,cx
add di,di
mov si,headText
sub dx,1
add si,dx
; inc si
; mov al,1000
mov al,[ds:si]
mov byte [es:di],al
loop showHeadTextLoop
jmp near showTailText
tailText: db '2020~Now gfdgd xi'
showTailText:
mov cx,showTailText-tailText
mov ax,0x7c0
mov ds,ax
showTailTextLoop:
mov dx,cx
mov di,cx
add di,di
add di,80*2*24
mov si,tailText
sub dx,1
add si,dx
mov al,[ds:si]
mov byte [es:di],al
loop showTailTextLoop
; 显示中部提示文本
jmp near showCenterText
centerTextScreenSize:
; 第一位是行数
; 第二位是单行偏移量
db 1, -1
centerText:
db 'Mode: Real Mode Demo', 0x0A
db 'Bit: 16', 0x0A
db 'Virtual Machine: qemu-system-i386'
db 0x03 ; 结束符
showCenterText:
centerTextLong equ showCenterText-centerText
mov cx,centerTextLong
xor ax,ax
loopShowCenterText:
jmp near addScreenLineFinish
addScreenLine:
; 如果检测到换行符
mov dx, [centerTextScreenSize]
add dx,1
mov [centerTextScreenSize], dx
dec cx
mov al,-1
mov [centerTextScreenSize+1],al
; 行数+1偏移量设为 -1从头开始
;ret
addScreenLineFinish:
; 偏移量 + 1
mov al,[centerTextScreenSize+1]
add al,1
mov [centerTextScreenSize+1],al
mov di,centerText
add di,centerTextLong
sub di,cx
mov bl,[di]
; 判断是不是结束符
cmp bl,0x03
je showCenterTextEnd
; 判断是不是换行符
cmp bl,0x0A
je addScreenLine ; 换行符检测
xor ah,ah ; 清空高位
add al,al
mov di,ax
; 计算显示位置
xor dx,dx
mov dl,[centerTextScreenSize]
mov ax,80
mul dx
mov dx,2
mul dx
add ax,2
add di,ax
; 显示
mov byte [es:di], bl
loop loopShowCenterText
showCenterTextEnd:
;mov ax,[cs:0x100]
;mov dx,[cs:0x102]
; mov bx,16
; div bx
; mov ds,ax
; mov es,ax
;xor di,di
;mov si,1
;xor ds,ds
;mov bx,512
;xor bx,bx
;call read_hard_disk_0
get_data:
mov di,80*2*25-2
; 读取秒
mov al,0x00
call read_time
mov byte [es:di-4],':'
mov byte [es:di-2],ah
mov byte [es:di],al
; 读取分钟
mov al,0x02
call read_time
mov byte [es:di-10],':'
mov byte [es:di-8],ah
mov byte [es:di-6],al
; 读取小时
mov al,0x04
call read_time
mov byte [es:di-14],ah
mov byte [es:di-12],al
; 读取日
mov al,0x07
call read_time
mov byte [es:di-22],'.'
mov byte [es:di-20],ah
mov byte [es:di-18],al
; 读取月
mov al,0x08
call read_time
mov byte [es:di-28],'.'
mov byte [es:di-26],ah
mov byte [es:di-24],al
; 读取年
mov al,0x09
call read_time
mov byte [es:di-32],ah
mov byte [es:di-30],al
hlt ; 使用停机指令降低 CPU 使用率
jmp near get_data
read_time:
out 0x70,al
in al,0x71
call bcd_to_ascii
ret
; 用于编码转换BCD=》ASCII
; 输入AL=bcd码
; 输出AX=ascii
bcd_to_ascii:
mov ah,al
and al,0x0f
add al,0x30
shr ah,4
and ah,0x0f
add ah,0x30
ret
;poweroff:
; 关机
; mov ax,5307H ; 高级电源管理功能,设置电源状态
; mov bx,0001H ; 设备ID1所有设备
; mov cx,0003H ; 状态3表示关机
; int 15h
end:
times 510-($-$$) db 0
db 0x55,0xaa
; 后面部分暂时废弃
read_hard_disk_0: ; 从硬盘读取一个逻辑扇区
; 输入DI:SI=起始逻辑扇区号
; DS:BX=目标缓冲区地址
push ax
push bx
push cx
push dx
mov dx,0x1f2
mov al,1
out dx,al ; 读取的扇区数
inc dx ; 0x1f3
mov ax,si
out dx,al ; LBA地址7~0
inc dx ; 0x1f4
mov al,ah
out dx,al ; LBA地址15~8
inc dx ; 0x1f5
mov ax,di
out dx,al ; LBA地址23~16
inc dx ; 0x1f6
mov al,0xe0 ; LBA28模式主盘
or al,ah ; LBA地址27~24
out dx,al
inc dx ; 0x1f7
mov al,0x20 ; 读命令
out dx,al
.waits:
in al,dx ; 此时 dx 为 0x1f7此时为命令端口也是状态窗口
and al,0x88
cmp al,0x08
jnz .waits
; 内部操作期间,会将 0x1f7 端口第 7 位设置为“1”准备就绪后会将此位清零并将第 3 位设为 1
mov cx,256 ; 总计要读取的/字/数
mov dx,0x1f0
.readw:
in ax,dx
mov [bx],ax
add bx,2
loop .readw
pop dx
pop cx
pop bx
pop ax

BIN
VM-source/test-kvm.asm.bin Normal file

Binary file not shown.

BIN
VM-source/test.qcow2 Normal file

Binary file not shown.

8
VM-source/trans.qrc Normal file
View File

@@ -0,0 +1,8 @@
<RCC>
<qresource prefix="/">
<file>zh_CN.qm</file>
<file>zh_CN.ts</file>
<file>en_US.qm</file>
<file>en_US.ts</file>
</qresource>
</RCC>

View File

@@ -61,9 +61,9 @@ int vbox::SetRemoteConnectSetting(int port){
}
int vbox::Start(bool unShown){
if(unShown){
return system(("\"" + managerPath + "\"").toLatin1());
return system(("\"" + managerPath + "\" > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1").toLatin1());
}
return system(("\"" + managerPath + "\" startvm \"" + name + "\"").toLatin1());
return system(("\"" + managerPath + "\" startvm \"" + name + "\" > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1").toLatin1());
}
int vbox::Stop(){
return system(("\"" + managerPath + "\" controlvm \"" + name + "\" poweroff").toLatin1());

View File

@@ -5,7 +5,8 @@
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<source>Wine </source>
<oldsource>Windows </oldsource>
<translation type="unfinished"></translation>
</message>
<message>
@@ -35,57 +36,137 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<location filename="mainwindow.ui" line="89"/>
<source> Windows Windows 7 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<location filename="mainwindow.ui" line="94"/>
<source> Windows UEFI Windows 8 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<location filename="mainwindow.ui" line="99"/>
<source> WIndows 11</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<location filename="mainwindow.ui" line="104"/>
<source> Windows XP VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<location filename="mainwindow.ui" line="109"/>
<source> Windows VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<location filename="mainwindow.ui" line="114"/>
<source> WindowsUEFI VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="119"/>
<source> arm32 Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="124"/>
<source> arm64 Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="136"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="143"/>
<location filename="mainwindow.ui" line="153"/>
<source>qemu/kvm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="158"/>
<source>VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="183"/>
<source> Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="190"/>
<source>kvm </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="197"/>
<source>Qemu虚拟机设置</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="204"/>
<source>/Qemu磁盘</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="211"/>
<source>Qemu磁盘</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="218"/>
<source>Qemu磁盘</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="225"/>
<source>VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="241"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;UOS 3a4000 使 Qemu /&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://gfdgdxi.lanzoue.com/b01rk9wza&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gfdgdxi.lanzoue.com/b01rk9wza&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; 密码:6wvf&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662214-c46520?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Qemu / kvm Qemu&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使 ISO &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;123 &lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-oypWv&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-oypWv&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码35e5&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; 提取码: me4y&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58662220-3590cf?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt; Windows &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;: &lt;/span&gt;&lt;a href=&quot;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://pan.baidu.com/s/1D1NSy7k7XBnOZL_tNTnG6g?pwd=7s2p&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; 提取码: 7s2p &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;http://ctfile.gfdgdxi.top/d/31540479-58659214-0732a8?p=2061&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; (访问密码: 2061)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;123&lt;/span&gt;&lt;a href=&quot;https://www.123pan.com/s/pDSKVv-uCBWv.html&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://www.123pan.com/s/pDSKVv-uCBWv.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<location filename="mainwindow.ui" line="283"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;使 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt; X86 PC使 qemu kvm使 Windows XP Windows 7&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600; text-decoration: underline;&quot;&gt;/https://gitee.com/gfdgd-xi/deep-wine-runner/wikis 或 https://gitee.com/gfdgd-xi/wine-runner-wiki&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;span style=&quot; font-weight:600; font-style:italic; text-decoration: underline;&quot;&gt;qemu则是 Ctrl+Alt+G&lt;/span&gt; &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;VirtualBox &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Qemu Virtio &lt;a href=&quot;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
@@ -118,7 +199,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;使 VirtualBox&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
@@ -142,13 +223,7 @@ p, li { white-space: pre-wrap; }
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<location filename="mainwindow.ui" line="421"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
@@ -159,18 +234,364 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<location filename="mainwindow.ui" line="463"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="487"/>
<source>/</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="492"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="497"/>
<location filename="mainwindow.cpp" line="442"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="502"/>
<location filename="mainwindow.cpp" line="408"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="507"/>
<source>X86Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="512"/>
<source> VirtualBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="517"/>
<source> Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="75"/>
<location filename="mainwindow.ui" line="79"/>
<source>Windows 7 32 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="84"/>
<source>Windows 7 64 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="232"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="274"/>
<source>/使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="364"/>
<location filename="mainwindow.ui" line="482"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="477"/>
<source>退</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="88"/>
<source>Wine </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;/p&gt;&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="90"/>
<source>&lt;/p&gt;&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="92"/>
<source>&lt;hr/&gt;&lt;h1&gt;&lt;/h1&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="179"/>
<location filename="mainwindow.cpp" line="186"/>
<location filename="mainwindow.cpp" line="193"/>
<location filename="mainwindow.cpp" line="200"/>
<location filename="mainwindow.cpp" line="215"/>
<location filename="mainwindow.cpp" line="222"/>
<location filename="mainwindow.cpp" line="229"/>
<location filename="mainwindow.cpp" line="248"/>
<location filename="mainwindow.cpp" line="254"/>
<location filename="mainwindow.cpp" line="263"/>
<location filename="mainwindow.cpp" line="307"/>
<location filename="mainwindow.cpp" line="322"/>
<location filename="mainwindow.cpp" line="328"/>
<location filename="mainwindow.cpp" line="332"/>
<location filename="mainwindow.cpp" line="338"/>
<location filename="mainwindow.cpp" line="357"/>
<location filename="mainwindow.cpp" line="360"/>
<location filename="mainwindow.cpp" line="364"/>
<location filename="mainwindow.cpp" line="367"/>
<location filename="mainwindow.cpp" line="392"/>
<location filename="mainwindow.cpp" line="404"/>
<location filename="mainwindow.cpp" line="438"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="179"/>
<source> Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="186"/>
<source> VBox</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="193"/>
<source> qemu-system-arm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="200"/>
<source> qemu-system-aarch64</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="215"/>
<source> Windows7X86Auto.iso
Wine </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="222"/>
<source> Windows7X64Auto.iso
Wine </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="229"/>
<source> UEFI
Qemu Qemu</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="248"/>
<source>Qemu </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="254"/>
<location filename="mainwindow.cpp" line="263"/>
<source>VirtualBox </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="278"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="307"/>
<source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="311"/>
<source> Qemu </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="311"/>
<source>Qemu镜像(*.qcow2 *.img *.raw *.qcow *.qed *.vdi *.vhdx *.vmdk);;(*.*)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="322"/>
<location filename="mainwindow.cpp" line="328"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="332"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="338"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="357"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="360"/>
<source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="364"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="367"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="373"/>
<location filename="mainwindow.cpp" line="389"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="373"/>
<source> kvm-ok
使 sudo apt install cpu-checker </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="383"/>
<source>使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="389"/>
<source>使 kvm
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="392"/>
<source>使 kvm
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="404"/>
<location filename="mainwindow.cpp" line="438"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="408"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.cpp" line="442"/>
<source></source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QemuSetting</name>
<message>
<location filename="qemusetting.ui" line="14"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="35"/>
<source>&lt;h3&gt;&lt;/h3&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="42"/>
<source>VNC服务端口</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="49"/>
<source> rdp </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="56"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="90"/>
<source>&lt;h3&gt;&lt;/h3&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="97"/>
<source>VNC服务</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="104"/>
<source> kvm </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="111"/>
<source>CPU核心数</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="125"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="145"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="158"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="171"/>
<source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="qemusetting.ui" line="185"/>
<source>
Wine
</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -4,6 +4,9 @@
<file>deepin-wine-runner.png</file>
<file>LANG/virtualmachine-en_US.qm</file>
<file>LANG/virtualmachine-en_US.ts</file>
<file>application-vnd.oasis.opendocument.text.svg</file>
<file>boot.jpg</file>
<file>boot.svg</file>
</qresource>
<qresource prefix="/picture">
<file>截图_VirtualBox Machine_20220712142929.png</file>
@@ -20,4 +23,7 @@
<file>截图/截图_VirtualBox_20220712223705.png</file>
<file>截图/截图_选择区域_20220712224639.png</file>
</qresource>
<qresource prefix="/TestDisk">
<file>test.qcow2</file>
</qresource>
</RCC>

BIN
VM/AAVMF32_CODE.fd Normal file

Binary file not shown.

View File

@@ -0,0 +1,131 @@
#! /bin/sh
### BEGIN INIT INFO
# Provides: qemu-guest-agent
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: QEMU Guest Agent startup script
# Description: Start the QEMU Guest Agent if we're running
# in a QEMU virtual machine
### END INIT INFO
# Author: Michael Tokarev <mjt@tls.msk.ru>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="QEMU Guest Agent"
NAME=qemu-ga
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
# config
DAEMON_ARGS=""
# default transport
TRANSPORT=virtio-serial:/dev/virtio-ports/org.qemu.guest_agent.0
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/qemu-guest-agent ] && . /etc/default/qemu-guest-agent
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
#
# Function that checks whenever system has necessary environment
# It also splits $TRANSPORT into $method and $path
#
do_check_transport() {
method=${TRANSPORT%%:*}; path=${TRANSPORT#*:}
case "$method" in
virtio-serial | isa-serial)
if [ ! -e "$path" ]; then
log_warning_msg "$NAME: transport endpoint not found, not starting"
return 1
fi
;;
esac
}
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon -Sq -p $PIDFILE -x $DAEMON -- --daemonize \
$DAEMON_ARGS -m "$method" -p "$path" \
|| return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon -Kq --retry=TERM/30/KILL/5 -p $PIDFILE --name $NAME
}
case "$1" in
start)
do_check_transport || exit 0
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" $NAME
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" $NAME
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" $NAME && exit 0 || exit $?
;;
restart|force-reload) # we do not support reload
do_check_transport || exit 0
log_daemon_msg "Restarting $DESC" $NAME
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: /etc/init.d/qemu-guest-agent {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:

6
VM/MipsQemu/etc/qemu-ifdown Executable file
View File

@@ -0,0 +1,6 @@
#! /bin/sh
# Script to shut down a network (tap) device for qemu.
# Initially this script is empty, but you can configure,
# for example, accounting info here.
:

42
VM/MipsQemu/etc/qemu-ifup Executable file
View File

@@ -0,0 +1,42 @@
#! /bin/sh
# Script to bring a network (tap) device for qemu up.
# The idea is to add the tap device to the same bridge
# as we have default routing to.
# in order to be able to find brctl
PATH=$PATH:/sbin:/usr/sbin
ip=$(which ip)
if [ -n "$ip" ]; then
ip link set "$1" up
else
brctl=$(which brctl)
if [ ! "$ip" -o ! "$brctl" ]; then
echo "W: $0: not doing any bridge processing: neither ip nor brctl utility not found" >&2
exit 0
fi
ifconfig "$1" 0.0.0.0 up
fi
switch=$(ip route ls | \
awk '/^default / {
for(i=0;i<NF;i++) { if ($i == "dev") { print $(i+1); next; } }
}'
)
# only add the interface to default-route bridge if we
# have such interface (with default route) and if that
# interface is actually a bridge.
# It is possible to have several default routes too
for br in $switch; do
if [ -d /sys/class/net/$br/bridge/. ]; then
if [ -n "$ip" ]; then
ip link set "$1" master "$br"
else
brctl addif $br "$1"
fi
exit # exit with status of the previous command
fi
done
echo "W: $0: no bridge for guest interface found" >&2

View File

@@ -0,0 +1,33 @@
#!/bin/sh
# This script is executed when a guest agent receives fsfreeze-freeze and
# fsfreeze-thaw command, if it is specified in --fsfreeze-hook (-F)
# option of qemu-ga or placed in default path (/etc/qemu/fsfreeze-hook).
# When the agent receives fsfreeze-freeze request, this script is issued with
# "freeze" argument before the filesystem is frozen. And for fsfreeze-thaw
# request, it is issued with "thaw" argument after filesystem is thawed.
LOGFILE=/var/log/qga-fsfreeze-hook.log
FSFREEZE_D=$(dirname -- "$0")/fsfreeze-hook.d
# Check whether file $1 is a backup or rpm-generated file and should be ignored
is_ignored_file() {
case "$1" in
*~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave | *.sample | *.dpkg-old | *.dpkg-new | *.dpkg-tmp | *.dpkg-dist | *.dpkg-bak | *.dpkg-backup | *.dpkg-remove)
return 0 ;;
esac
return 1
}
# Iterate executables in directory "fsfreeze-hook.d" with the specified args
[ ! -d "$FSFREEZE_D" ] && exit 0
for file in "$FSFREEZE_D"/* ; do
is_ignored_file "$file" && continue
[ -x "$file" ] || continue
printf "$(date): execute $file $@\n" >>$LOGFILE
"$file" "$@" >>$LOGFILE 2>&1
STATUS=$?
printf "$(date): $file finished with status=$STATUS\n" >>$LOGFILE
done
exit 0

View File

@@ -0,0 +1,11 @@
[Unit]
Description=QEMU Guest Agent
BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device
After=dev-virtio\x2dports-org.qemu.guest_agent.0.device
[Service]
ExecStart=-/usr/sbin/qemu-ga
Restart=always
RestartSec=0
[Install]

View File

@@ -0,0 +1,2 @@
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \
TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service"

Binary file not shown.

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-img Executable file

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-io Executable file

Binary file not shown.

BIN
VM/MipsQemu/usr/bin/qemu-nbd Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More