mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-16 03:52:04 +08:00
Compare commits
111 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81ac91b180 | |||
| e477b94cda | |||
| 57db5a2630 | |||
| 4812a9a872 | |||
| ff15b60e4c | |||
| 9b82a3818b | |||
| 275379e4ba | |||
| 9e7ad17ea2 | |||
| 03942892fd | |||
| 370bde5e63 | |||
| c6e722de60 | |||
| de76733f3f | |||
| 37ad313a66 | |||
| d62ec78926 | |||
| 7d1d121c01 | |||
| f20565af53 | |||
| 8b0d0f1018 | |||
| e7cbbc62b9 | |||
| 844f709480 | |||
| 7571a6aafc | |||
| 47bdde1eb3 | |||
| f5b2a3fd93 | |||
| bc0c9039fd | |||
| 3f6c4a47ff | |||
| bab6115348 | |||
| 5f8387e14e | |||
| 1a786145fb | |||
| 0c2f37c187 | |||
| 134fff9f17 | |||
| 4853cafb67 | |||
| 0300f8e599 | |||
| 97b761067b | |||
| d93e7475ff | |||
| b031667887 | |||
| 3fde8e01bc | |||
| 09a95ebac4 | |||
| 2dc251fcb5 | |||
| b873d3e8ab | |||
| 61ea114669 | |||
| 96f02440ca | |||
| 6a2bb2e9ca | |||
| e617c24bd1 | |||
| 858617a3ae | |||
| 30e4c9d8bb | |||
| 361f3cf859 | |||
| 368a9d218a | |||
| dc7cb37d7f | |||
| 036639d830 | |||
| 07f56b820d | |||
| 0bef686aa6 | |||
| 982521b0c3 | |||
| 87a54b8d72 | |||
| ac12c24afd | |||
| 0f96e1d91a | |||
| 6689a5edb1 | |||
| b4ef46ee38 | |||
| a83e0bb2b6 | |||
| 9fdc39446e | |||
| 9892ff71a2 | |||
| 2bfa809caf | |||
| e54a424f81 | |||
| fbe795b6f8 | |||
| aa756b218c | |||
| e625bf97ad | |||
| 83f49a8c7e | |||
| dcabe5b2cf | |||
| 37c0cbf252 | |||
| 98f2beb994 | |||
| 3515e3f44f | |||
| cb0cd776a4 | |||
| ef8c115df2 | |||
| 5fb2bdf5f9 | |||
| a1b2915e3a | |||
| a2424e08ba | |||
| 2cf1266190 | |||
| 8a709ce7e2 | |||
| 82b13b585d | |||
| db622c93ba | |||
| e642d17828 | |||
| f2d766d0f9 | |||
| 01fe3ed3ab | |||
| c05371b856 | |||
| afefb854b6 | |||
| acff44eb2d | |||
| 8699f74087 | |||
| 1a78a98d8e | |||
| 7794df8170 | |||
| 226db3dfd6 | |||
| 0124c4a304 | |||
| bbf47b8120 | |||
| 1942299850 | |||
| 47cffa0637 | |||
| 96fa417b3b | |||
| 3fd2b14a2a | |||
| 8bdb45a87f | |||
| fd36c84d74 | |||
| 34a5ae629e | |||
| 0dda0870c0 | |||
| 2689bc1cfb | |||
| 8607de0fb0 | |||
| 0d2e59b9fe | |||
| 8ba8953aef | |||
| b665842e89 | |||
| ddd65bbf5f | |||
|
|
6768cf9e7b | ||
| 0de3547af0 | |||
| 6fb473f5d1 | |||
| c5e63f3699 | |||
| 878e7f6b2a | |||
| caa73c3bde | |||
| 3c6bb5042f |
69
.github/ISSUE_TEMPLATE.md
vendored
Normal file
69
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
name: 程序bug
|
||||||
|
about: 反馈程序的故障
|
||||||
|
---
|
||||||
|
需要把下面的替换成自己的信息,下面为例子
|
||||||
|
|
||||||
|
# 故障表现(最好带图、日志)
|
||||||
|
按右上角叉叉可以关闭运行器
|
||||||
|

|
||||||
|
## 日志(终端输入 `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
|
||||||
|
- 硬件:
|
||||||
|

|
||||||
|
- 其他补充信息
|
||||||
|
|
||||||
|
# 之前做过什么操作
|
||||||
|
在终端里输入了内容
|
||||||
|
```bash
|
||||||
|
sudo apt upgrade
|
||||||
|
```
|
||||||
|
更新了系统
|
||||||
|
|
||||||
|
# 复现步骤
|
||||||
|
1. 打开运行器,然后点击右上角叉叉可以关闭
|
||||||
|
|
||||||
|
# 推测故障原因(可选)
|
||||||
|
Qt 默认有一套配置好的退出事件
|
||||||
|
|
||||||
|
# 联系方式(可选)
|
||||||
68
.github/ISSUE_TEMPLATE/ISSCUE_BUG.md
vendored
Normal file
68
.github/ISSUE_TEMPLATE/ISSCUE_BUG.md
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
---
|
||||||
|
name: 程序bug
|
||||||
|
about: 反馈程序的故障
|
||||||
|
---
|
||||||
|
需要把下面的替换成自己的信息,下面为例子
|
||||||
|
|
||||||
|
# 故障表现(最好带图、日志)
|
||||||
|
按右上角叉叉可以关闭运行器
|
||||||
|

|
||||||
|
## 日志(终端输入 `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
|
||||||
|
- 硬件:
|
||||||
|

|
||||||
|
- 其他补充信息
|
||||||
|
|
||||||
|
# 之前做过什么操作
|
||||||
|
在终端里输入了内容
|
||||||
|
```bash
|
||||||
|
sudo apt upgrade
|
||||||
|
```
|
||||||
|
更新了系统
|
||||||
|
|
||||||
|
# 复现步骤
|
||||||
|
1. 打开运行器,然后点击右上角叉叉可以关闭
|
||||||
|
|
||||||
|
# 推测故障原因(可选)
|
||||||
|
Qt 默认有一套配置好的退出事件
|
||||||
|
|
||||||
7
.github/workflows/auto-building.yml
vendored
7
.github/workflows/auto-building.yml
vendored
@@ -20,11 +20,16 @@ jobs:
|
|||||||
cd deep-wine-runner
|
cd deep-wine-runner
|
||||||
make build
|
make build
|
||||||
mv spark-deepin-wine-runner.deb ~
|
mv spark-deepin-wine-runner.deb ~
|
||||||
|
mv spark-deepin-wine-runner-ace.deb ~
|
||||||
- name: upload result
|
- name: upload result
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: spark-deepin-wine-runner.deb
|
name: spark-deepin-wine-runner.deb
|
||||||
path: /home/runner/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
|
||||||
|
|
||||||
|
|
||||||
87
BuildDemoConfigFile/com.7zip.demo_23.01spark0_all.json
Normal file
87
BuildDemoConfigFile/com.7zip.demo_23.01spark0_all.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"Package": [
|
||||||
|
"L",
|
||||||
|
"com.7zip.demo"
|
||||||
|
],
|
||||||
|
"Version": [
|
||||||
|
"L",
|
||||||
|
"23.01spark0"
|
||||||
|
],
|
||||||
|
"Description": [
|
||||||
|
"L",
|
||||||
|
"7Zip For Deepin Wine6 Stable"
|
||||||
|
],
|
||||||
|
"Maintainer": [
|
||||||
|
"L",
|
||||||
|
"gfdgd xi<3025613752@qq.com>"
|
||||||
|
],
|
||||||
|
"BottleName": [
|
||||||
|
"L",
|
||||||
|
"Spark-7zip"
|
||||||
|
],
|
||||||
|
"BottlePath": [
|
||||||
|
"L",
|
||||||
|
"/home/gfdgd_xi/.deepinwine/Spark-7zip"
|
||||||
|
],
|
||||||
|
"WineVersion": [
|
||||||
|
"Co",
|
||||||
|
5
|
||||||
|
],
|
||||||
|
"DebSavePath": [
|
||||||
|
"L",
|
||||||
|
"/home/gfdgd_xi/Desktop/com.7zip.demo_23.01spark0_all.deb"
|
||||||
|
],
|
||||||
|
"Desktop": [
|
||||||
|
"List-Desktop",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"c:/Program Files/7-Zip/7zFM.exe",
|
||||||
|
11,
|
||||||
|
"",
|
||||||
|
"7Zip",
|
||||||
|
"/home/gfdgd_xi/Desktop/Icon_0001.png",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"UseInstallWineArch": [
|
||||||
|
"Co",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"RemoveBash": [
|
||||||
|
"Ch",
|
||||||
|
true
|
||||||
|
],
|
||||||
|
"CleanBottleByUOS": [
|
||||||
|
"Ch",
|
||||||
|
true
|
||||||
|
],
|
||||||
|
"ChooseWineHelperValue": [
|
||||||
|
"Ch",
|
||||||
|
true
|
||||||
|
],
|
||||||
|
"DisabledMono": [
|
||||||
|
"Ch",
|
||||||
|
true
|
||||||
|
],
|
||||||
|
"DebDepends": [
|
||||||
|
"L",
|
||||||
|
"deepin-wine6-stable | deepin-wine6-stable-bcm | deepin-wine6-stable-dcm, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||||
|
],
|
||||||
|
"DebRecommend": [
|
||||||
|
"L",
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"DebFirstArch": [
|
||||||
|
"Co",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"DebArch": [
|
||||||
|
"Co",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SparkHelperConfigPath": [
|
||||||
|
"Str-SparkHelperConfigPath",
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
53
DefaultSetting.py
Normal file
53
DefaultSetting.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# 读取设置单独用一个 py 文件
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import PyQt5.QtGui as QtGui
|
||||||
|
|
||||||
|
# 获取用户主目录
|
||||||
|
def get_home():
|
||||||
|
return os.path.expanduser('~')
|
||||||
|
|
||||||
|
# 读取文本文档
|
||||||
|
def readtxt(path):
|
||||||
|
f = open(path, "r") # 设置文件对象
|
||||||
|
str = f.read() # 获取内容
|
||||||
|
f.close() # 关闭文本对象
|
||||||
|
return str # 返回结果
|
||||||
|
|
||||||
|
defultProgramList = {
|
||||||
|
"Architecture": "Auto",
|
||||||
|
"Debug": True,
|
||||||
|
"DefultWine": "deepin-wine6 stable",
|
||||||
|
"DefultBotton" : get_home() + "/.wine",
|
||||||
|
"TerminalOpen": False,
|
||||||
|
"WineOption": "",
|
||||||
|
"WineBottonDifferent": False,
|
||||||
|
"CenterWindow": False,
|
||||||
|
"Theme": "",
|
||||||
|
"MonoGeckoInstaller": False,
|
||||||
|
"AutoWine": True,
|
||||||
|
"RuntimeCache": True,
|
||||||
|
"MustRead": False,
|
||||||
|
"BuildByBottleName": False,
|
||||||
|
"AutoPath": False,
|
||||||
|
"QemuUnMountHome": False,
|
||||||
|
"Chinese": True,
|
||||||
|
"FontSize": 1
|
||||||
|
}
|
||||||
|
|
||||||
|
def SetFont(app):
|
||||||
|
defaultFont = app.font()
|
||||||
|
size = setting["FontSize"]
|
||||||
|
font = QtGui.QFont(defaultFont)
|
||||||
|
if size == 1:
|
||||||
|
app.setFont(defaultFont)
|
||||||
|
return
|
||||||
|
font.setPixelSize(int(defaultFont.pixelSize() / size))
|
||||||
|
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
|
||||||
12
DesktopIcon/spark-deepin-wine-package-builder.desktop
Normal file
12
DesktopIcon/spark-deepin-wine-package-builder.desktop
Normal 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;
|
||||||
12
DesktopIcon/spark-deepin-wine-packager-easy-builder.desktop
Normal file
12
DesktopIcon/spark-deepin-wine-packager-easy-builder.desktop
Normal 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;
|
||||||
10
DesktopIcon/spark-deepin-wine-packager-with-script.desktop
Normal file
10
DesktopIcon/spark-deepin-wine-packager-with-script.desktop
Normal 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
|
||||||
10
DesktopIcon/spark-deepin-wine-runner-control-vm.desktop
Normal file
10
DesktopIcon/spark-deepin-wine-runner-control-vm.desktop
Normal 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
|
||||||
9
DesktopIcon/spark-deepin-wine-runner-start-vm.desktop
Normal file
9
DesktopIcon/spark-deepin-wine-runner-start-vm.desktop
Normal 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
|
||||||
11
DesktopIcon/spark-deepin-wine-runner.desktop
Normal file
11
DesktopIcon/spark-deepin-wine-runner.desktop
Normal 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;
|
||||||
@@ -1,5 +1,11 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import json
|
||||||
import base64
|
import base64
|
||||||
import requests
|
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
10
GetProgramVersion.py
Executable 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")
|
||||||
@@ -21,26 +21,27 @@ if [[ $? == 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
echo 使用国内源
|
echo 使用国内源
|
||||||
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
|
#sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list
|
||||||
sudo bash -c "echo deb http://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/debian ./ > /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://jihulab.com/gfdgd-xi/box86-debs/-/raw/master/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg
|
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..."
|
echo "adding key..."
|
||||||
installBox=box86-generic-arm
|
installBox=box86-generic-arm
|
||||||
if [[ $PCArch == "arm64" ]]; then
|
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"
|
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
|
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 libc6:armhf"
|
installBox="box86-generic-arm box64-generic-arm"
|
||||||
sudo dpkg --add-architecture armhf
|
sudo dpkg --add-architecture armhf
|
||||||
fi
|
fi
|
||||||
echo " + sudo apt update"
|
echo " + sudo apt update"
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install binfmt-support -y
|
sudo apt install binfmt-support -y
|
||||||
|
sudo apt install libc6:armhf -y
|
||||||
echo apt 源添加完毕!按回车键继续安装 Box86/Box64,若想要停止安装,则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
|
echo apt 源添加完毕!按回车键继续安装 Box86/Box64,若想要停止安装,则请按 Ctrl+C 或按终端右上角 ×(叉叉)退出
|
||||||
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-arm(box64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
|
echo 按回车键后将会自动安装包名为 box86-generic-arm、box64-generic-arm(box64 要在 aarch64 系统才可安装)的 Box86/Box64 包(适用于通用 ARM 系统)
|
||||||
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
|
echo 其他特殊版本及其包名可见如下链接(如适用于 rk3399 的版本):
|
||||||
echo " - Box64:https://github.com/ryanfortner/box64-debs/"
|
echo " - Box64:https://github.com/ryanfortner/box64-debs/"
|
||||||
echo " - Box86:https://github.com/ryanfortner/box86-debs/"
|
echo " - Box86:https://github.com/ryanfortner/box86-debs/"
|
||||||
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box64-debs"
|
echo " - Box64(国内镜像):http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box64-debs"
|
||||||
echo " - Box64(国内镜像):https://jihulab.com/gfdgd-xi/box86-debs"
|
echo " - Box64(国内镜像):http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs"
|
||||||
read
|
read
|
||||||
sudo apt install -y $installBox
|
sudo apt install -y $installBox
|
||||||
echo 安装完成!按回车键退出
|
echo 安装完成!按回车键退出
|
||||||
|
|||||||
31
InstallBox86-own.sh
Executable file
31
InstallBox86-own.sh
Executable 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
|
||||||
6
InstallLat.sh
Executable file
6
InstallLat.sh
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
echo lat只能在loongarch架构安装
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install lat
|
||||||
|
echo 按回车键退出
|
||||||
|
read
|
||||||
15
Makefile
15
Makefile
@@ -19,6 +19,8 @@ package:
|
|||||||
cp -rv VM-source/deepin-wine-runner.svg VM
|
cp -rv VM-source/deepin-wine-runner.svg VM
|
||||||
cp -rv VM-source/Windows7X64Auto.iso VM
|
cp -rv VM-source/Windows7X64Auto.iso VM
|
||||||
cp -rv VM-source/Windows7X86Auto.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 wine/ deb/opt/apps/deepin-wine-runner/
|
||||||
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
|
cp -rv Test/ deb/opt/apps/deepin-wine-runner/
|
||||||
cp -rv information.json package-script
|
cp -rv information.json package-script
|
||||||
@@ -30,6 +32,7 @@ package:
|
|||||||
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
|
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv ShellList deb/opt/apps/deepin-wine-runner
|
cp -rv ShellList deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv QemuDownload.py deb/opt/apps/deepin-wine-runner
|
cp -rv QemuDownload.py deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv DefaultSetting.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
cp -rv QemuRun.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
cp -rv kill.sh deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
cp -rv updatekiller.py deb/opt/apps/deepin-wine-runner
|
||||||
@@ -50,6 +53,7 @@ package:
|
|||||||
rm -rfv deb/opt/apps/deepin-wine-runner/wine/winelist.json
|
rm -rfv deb/opt/apps/deepin-wine-runner/wine/winelist.json
|
||||||
cp -rv req deb/opt/apps/deepin-wine-runner
|
cp -rv req deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv pardus-chroot deb/opt/apps/deepin-wine-runner
|
cp -rv pardus-chroot deb/opt/apps/deepin-wine-runner
|
||||||
|
cp -rv winetricks deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv WineLib deb/opt/apps/deepin-wine-runner
|
cp -rv WineLib deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv InstallFoxpro.py deb/opt/apps/deepin-wine-runner
|
cp -rv InstallFoxpro.py deb/opt/apps/deepin-wine-runner
|
||||||
cp -rv BuildDesktop.py deb/opt/apps/deepin-wine-runner
|
cp -rv BuildDesktop.py deb/opt/apps/deepin-wine-runner
|
||||||
@@ -145,10 +149,17 @@ 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/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/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
|
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
|
||||||
sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
|
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.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 -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner-ace.deb
|
||||||
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
|
sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
pkexec apt update
|
sudo apt update
|
||||||
pkexec apt install qemu-system qemu-user qemu-user-static -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 安装完成!按回车键退出
|
echo 安装完成!按回车键退出
|
||||||
read
|
read
|
||||||
|
|||||||
110
README.md
110
README.md
@@ -1,45 +1,27 @@
|
|||||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||||
<h1 align="center">Wine 运行器 3.3.0.1</h1>
|
<h1 align="center">Wine 运行器 3.5.0</h1>
|
||||||
<hr>
|
<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程序打包器和运行库安装工具等。
|
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。
|
||||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
|
||||||
此外,它还简化了如下命令,让你可以更简便地使用Wine:
|
而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
|
||||||
```bash
|
且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
|
||||||
env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
|
|
||||||
```
|
|
||||||
让你可以简易方便的使用 wine
|

|
||||||
是使用 Python3 的 PyQt5 构建的
|
|
||||||
(测试平台:deepin 20.8;UOS 家庭版 22;Ubuntu 22.04;Ubuntu 20.04;Ubuntu 23.04;UOS 专业版 1050;openkylin;cuteos;yoyo os)
|
|
||||||

|
|
||||||
而打包器可以方便的把您的 wine 容器打包成 deb 包供他人使用,程序创建的 deb 构建临时文件夹目录树如下:
|
|
||||||
```bash
|
|
||||||
/XXX
|
|
||||||
├── DEBIAN
|
|
||||||
│ └── control
|
|
||||||
│ └── postrm(可选)
|
|
||||||
└── opt
|
|
||||||
└── apps
|
|
||||||
└── XXX
|
|
||||||
├── entries
|
|
||||||
│ ├── applications
|
|
||||||
│ │ └── XXX.desktop
|
|
||||||
│ └── icons
|
|
||||||
│ └── hicolor
|
|
||||||
│ └── scalable
|
|
||||||
│ └── apps
|
|
||||||
│ └── XXX.png(XXX.svg)
|
|
||||||
├── files
|
|
||||||
│ ├── files.7z
|
|
||||||
│ └── run.sh
|
|
||||||
└── info
|
|
||||||
|
|
||||||
11 directories, 6 files
|
|
||||||
```
|
|
||||||
[](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
[](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
||||||
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程(小白专用)》,链接:https://bbs.deepin.org/post/246837
|
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程(小白专用)》,链接:https://bbs.deepin.org/post/246837
|
||||||
|
|
||||||
|
打包器视频教程:https://www.bilibili.com/video/BV1Bh4y1Q7nT/
|
||||||
|
Wine 运行器 QQ 交流群:762985460
|
||||||
|
|
||||||
|
### 注
|
||||||
|
spark-deepin-wine-runner 是普通包,spark-deepin-wine-runner-ace 是使用 ace 兼容环境运行的运行器
|
||||||
|
|
||||||
## 软件架构
|
## 软件架构
|
||||||
理论上支持全架构,如果 Python 能运行的话
|
理论上支持全架构,如果 Python 能运行的话
|
||||||
非 X86 架构会利用到 `box86`、`exagear`、`qemu` 等技术
|
非 X86 架构会利用到 `box86`、`exagear`、`qemu` 等技术
|
||||||
@@ -136,6 +118,65 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
|||||||

|

|
||||||
|
|
||||||
## 更新日志
|
## 更新日志
|
||||||
|
### 3.5.0(2023年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 翻译器安装选项
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4.1(2023年09月30日)
|
||||||
|
**※1、支持识别 spark-wine8-wow 且打包时可以使用该 wine**
|
||||||
|
**※2、替换安装 Box86 的 pkexec 为 sudo**
|
||||||
|
**※3、Wine 下载工具新增更多 Wine**
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.4.0.1(2023年08月18日)
|
||||||
|
**※1、修复部分高性能机器打包器提示“无效的压缩参数”:https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SMTJ**
|
||||||
|
**※2、支持设置程序字体大小:https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7SAYE**
|
||||||
|
|
||||||
|
### 3.4.0(2023年08月11日)
|
||||||
|
**※1、修复简易打包器无法打开的问题以及 Wine 识别错误的问题**
|
||||||
|
**※2、高级打包器支持多 .desktop 分别设置不同的 MimeType**
|
||||||
|
**※3、修复运行器在 Ubuntu 23 的安装问题**
|
||||||
|
**※4、高级打包器支持导出/导入填写信息**
|
||||||
|
**※5、Deepin 23 支持使用 Winetricks**
|
||||||
|
**※6、新增视频教程**
|
||||||
|
**※7、修复虚拟机工具在检测到 Qemu 磁盘但没有安装 Qemu 时无法启动的问题**
|
||||||
|
**※8、修复虚拟机工具的一些问题并调整部分设置**
|
||||||
|
**※9、虚拟机工具支持设置 UEFI 启动**
|
||||||
|
**※10、虚拟机安装工具提供 LoongArch 新世界版本**
|
||||||
|
11、高级打包器支持隐藏输入框以及使用小字体
|
||||||
|
12、打包器提供 bcm 和 dcm wine 支持
|
||||||
|
13、修复星火 wine 配置错误问题
|
||||||
|
14、打包器支持多线程打包
|
||||||
|
15、修复升级工具问题:https://gitee.com/gfdgd-xi/uengine-runner/issues/I6ZRZX
|
||||||
|
16、跟进打包器 run.sh 模板
|
||||||
|
17、云沙箱新增 cloud.vdnel.cn
|
||||||
|
18、打包器新增分类 Game、System、AudioVideo
|
||||||
|
19、修复安装 Box64 时源里没有 libc6:armhf 导致无法安装的问题
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 3.3.0.1(2023年07月25日)
|
### 3.3.0.1(2023年07月25日)
|
||||||
**※1、修复运行器打开主界面不进行任何操作但 CPU 占用率过高的问题**
|
**※1、修复运行器打开主界面不进行任何操作但 CPU 占用率过高的问题**
|
||||||
**※2、修复运行器运行器(局部)无法正常移除的问题**
|
**※2、修复运行器运行器(局部)无法正常移除的问题**
|
||||||
@@ -158,6 +199,7 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
|||||||
15、修复部分组件没完全换源的问题,部分组件支持自动换可用源
|
15、修复部分组件没完全换源的问题,部分组件支持自动换可用源
|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
### 3.2.2(2023年05月12日)
|
### 3.2.2(2023年05月12日)
|
||||||
**※1. 修改源地址(迁出 Gitlink);**
|
**※1. 修改源地址(迁出 Gitlink);**
|
||||||
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
|
**※2. 修复非 X86 架构运行器主页面虚拟机工具禁用的问题;**
|
||||||
|
|||||||
65
README_en.md
Normal file
65
README_en.md
Normal 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,
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[](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
|
||||||
|

|
||||||
|
|
||||||
|
### Spark Store
|
||||||
|

|
||||||
|
### Loongson App Store
|
||||||
|

|
||||||
|
|
||||||
|
## 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.
|
||||||
|

|
||||||
|
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
|
||||||
78
StartVM.sh
78
StartVM.sh
@@ -7,39 +7,103 @@
|
|||||||
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
|
||||||
# 基于 Python3 的 tkinter 构建
|
# 基于 Python3 的 tkinter 构建
|
||||||
###########################################################################################
|
###########################################################################################
|
||||||
|
cd `dirname $0`
|
||||||
VBoxManage showvminfo Windows
|
VBoxManage showvminfo Windows
|
||||||
if [[ 0 == $? ]]; then
|
if [[ 0 == $? ]]; then
|
||||||
# 检测到虚拟机存在,启动虚拟机
|
# 检测到虚拟机存在,启动虚拟机
|
||||||
VBoxManage startvm Windows
|
VBoxManage startvm Windows > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
# 检查是否有 QEMU
|
# 检查是否有 QEMU
|
||||||
if [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
which qemu-system-x86_64
|
||||||
|
if [[ $? == 0 ]] && [[ -f "$HOME/Qemu/Windows/Windows.qcow2" ]]; then
|
||||||
if [[ -f "$HOME/.config/deepin-wine-runner/QemuSetting.json" ]]; then
|
if [[ -f "$HOME/.config/deepin-wine-runner/QemuSetting.json" ]]; then
|
||||||
echo 有设置文件,读设置文件
|
echo 有设置文件,读设置文件
|
||||||
cd `dirname $0`
|
cd `dirname $0`
|
||||||
python3 ./VM/StartQemu.py
|
python3 ./VM/StartQemu.py
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
# 查看CPU个数
|
||||||
|
CpuSocketNum=`cat /proc/cpuinfo | grep "cpu cores" | uniq | wc -l`
|
||||||
|
# 查看CPU核心数
|
||||||
|
CpuCoreNum=`grep 'core id' /proc/cpuinfo | sort -u | wc -l`
|
||||||
# 查看逻辑CPU的个数
|
# 查看逻辑CPU的个数
|
||||||
CpuCount=`cat /proc/cpuinfo| grep "processor"| wc -l`
|
CpuCount=`cat /proc/cpuinfo| grep "processor"| wc -l`
|
||||||
|
|
||||||
# 总内存大小GB
|
# 总内存大小GB
|
||||||
MemTotal=`awk '($1 == "MemTotal:"){printf "%.2f\n",$2/1024/1024}' /proc/meminfo`
|
MemTotal=`awk '($1 == "MemTotal:"){printf "%.2f\n",$2/1024/1024}' /proc/meminfo`
|
||||||
use=$(echo "scale=4; $MemTotal / 3" | bc)
|
use=$(echo "scale=4; $MemTotal / 3" | bc)
|
||||||
if [[ `arch` == "x86_64" ]]; then
|
|
||||||
|
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 加速
|
echo X86 架构,使用 kvm 加速
|
||||||
kvm --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139
|
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 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
echo 非 X86 架构,不使用 kvm 加速
|
echo 不使用 kvm 加速
|
||||||
qemu-system-x86_64 --hda "$HOME/Qemu/Windows/Windows.qcow2" -soundhw all -smp $CpuCount -m ${use}G -net user,hostfwd=tcp::3389-:3389 -display vnc=:5 -display gtk -usb -nic model=rtl8139
|
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 -display vnc=:5 -display gtk -usb -nic model=rtl8139 $qemuUEFI > /tmp/windows-virtual-machine-installer-for-wine-runner-run.log 2>&1
|
||||||
exit
|
exit
|
||||||
fi
|
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 -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 -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 -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 -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如果不创建将无法使用"
|
zenity --question --no-wrap --text="检查到您未创建所指定的虚拟机,是否创建虚拟机并继续?\n如果不创建将无法使用"
|
||||||
if [[ 1 == $? ]]; then
|
if [[ 1 == $? ]]; then
|
||||||
# 用户不想创建虚拟机,结束
|
# 用户不想创建虚拟机,结束
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
cd `dirname $0`
|
|
||||||
./VM/VirtualMachine
|
./VM/VirtualMachine
|
||||||
|
|||||||
1192
VM-source/.qtc_clangd/compile_commands.json
Normal file
1192
VM-source/.qtc_clangd/compile_commands.json
Normal file
File diff suppressed because it is too large
Load Diff
BIN
VM-source/AAVMF32_CODE.fd
Normal file
BIN
VM-source/AAVMF32_CODE.fd
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
#############################################################################
|
#############################################################################
|
||||||
# Makefile for building: VirtualMachine
|
# Makefile for building: VirtualMachine
|
||||||
# Generated by qmake (3.1) (Qt 5.15.8)
|
# Generated by qmake (3.1) (Qt 5.15.7)
|
||||||
# Project: VirtualMachine.pro
|
# Project: VirtualMachine.pro
|
||||||
# Template: app
|
# Template: app
|
||||||
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
|
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
|
||||||
@@ -85,11 +85,9 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.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/qconfig.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_BluezQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KArchive.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuthCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCMUtils.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
|
||||||
@@ -97,12 +95,10 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDeclarative.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
|
||||||
@@ -110,42 +106,14 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KScreen.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KParts.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.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_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_bootstrap_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.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.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_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.pri \
|
||||||
@@ -154,11 +122,9 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/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_dbus_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.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_devicediscovery_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkdeclarative.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_DtkWidget.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_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_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_eglfs_kms_support_private.pri \
|
||||||
@@ -173,8 +139,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/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_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_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_linuxaccessibility_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.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.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_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.pri \
|
||||||
@@ -191,12 +155,9 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.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_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.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_sql_private.pri \
|
||||||
@@ -207,14 +168,11 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.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_vulkan_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.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.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_widgets_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
|
||||||
@@ -222,11 +180,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
|
|||||||
/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_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.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_ModemManagerQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QApt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QuickAddons.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
|
||||||
@@ -288,11 +241,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.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/qconfig.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_BluezQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KArchive.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri \
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuthCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCMUtils.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri \
|
||||||
@@ -300,12 +251,10 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDeclarative.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri \
|
||||||
@@ -313,42 +262,14 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KScreen.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KParts.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.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_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_bootstrap_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.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.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_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.pri \
|
||||||
@@ -357,11 +278,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_dbus_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.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_devicediscovery_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkdeclarative.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_DtkWidget.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_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_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_eglfs_kms_support_private.pri \
|
||||||
@@ -376,8 +295,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_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_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_linuxaccessibility_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.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.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_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.pri \
|
||||||
@@ -394,12 +311,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.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_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.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_sql_private.pri \
|
||||||
@@ -410,14 +324,11 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.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_vulkan_support_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri \
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.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.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_widgets_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
|
||||||
@@ -425,11 +336,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_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.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_ModemManagerQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QApt.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QuickAddons.pri \
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri \
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri \
|
||||||
@@ -469,11 +375,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.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/qconfig.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Attica.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_BluezQt.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KArchive.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuth.pri:
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KAuthCore.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KBookmarks.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCMUtils.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCompletion.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigCore.pri:
|
||||||
@@ -481,12 +385,10 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KConfigWidgets.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCoreAddons.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDBusAddons.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KDeclarative.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGlobalAccel.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KGuiAddons.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KI18n.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIconThemes.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIdleTime.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOCore.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOFileWidgets.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KIOGui.pri:
|
||||||
@@ -494,42 +396,14 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KItemViews.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KJobWidgets.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KNTLM.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KScreen.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KParts.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KService.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KTextWidgets.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandClient.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWaylandServer.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWidgetsAddons.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KXmlGui.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3danimation_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dcore_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dextras_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dinput_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dlogic_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquick_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickextras_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickinput_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickrender_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_3drender_private.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_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_bootstrap_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_charts.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.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_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.pri:
|
||||||
@@ -538,11 +412,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_dbus_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.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_devicediscovery_support_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkdeclarative.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_DtkWidget.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_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_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_eglfs_kms_support_private.pri:
|
||||||
@@ -557,8 +429,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_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_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_linuxaccessibility_support_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.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.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_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.pri:
|
||||||
@@ -575,12 +445,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sensors.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_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.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_sql_private.pri:
|
||||||
@@ -591,14 +458,11 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.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_vulkan_support_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor_private.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webengine.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginecore.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webenginewidgets.pri:
|
||||||
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.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.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_widgets_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
|
||||||
@@ -606,11 +470,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
|
|||||||
/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_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.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_ModemManagerQt.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QApt.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_QuickAddons.pri:
|
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Solid.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetCore.pri:
|
||||||
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri:
|
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_SonnetUi.pri:
|
||||||
@@ -689,6 +548,7 @@ qrc_图标.cpp: 图标.qrc \
|
|||||||
/usr/lib/qt5/bin/rcc \
|
/usr/lib/qt5/bin/rcc \
|
||||||
deepin-wine-runner.png \
|
deepin-wine-runner.png \
|
||||||
deepin-wine-runner.svg \
|
deepin-wine-runner.svg \
|
||||||
|
application-vnd.oasis.opendocument.text.svg \
|
||||||
截图_VirtualBox\ Machine_20220712142929.png \
|
截图_VirtualBox\ Machine_20220712142929.png \
|
||||||
截图/截图_VirtualBox\ Machine_20220712143018.png \
|
截图/截图_VirtualBox\ Machine_20220712143018.png \
|
||||||
截图/截图_VirtualBox\ Machine_20220712192850.png \
|
截图/截图_VirtualBox\ Machine_20220712192850.png \
|
||||||
@@ -702,6 +562,7 @@ qrc_图标.cpp: 图标.qrc \
|
|||||||
截图/截图_VirtualBox_20220712223705.png \
|
截图/截图_VirtualBox_20220712223705.png \
|
||||||
截图/截图_VirtualBox\ Machine_20220712143006.png \
|
截图/截图_VirtualBox\ Machine_20220712143006.png \
|
||||||
截图/截图_VirtualBox\ Machine_20220712191756.png \
|
截图/截图_VirtualBox\ Machine_20220712191756.png \
|
||||||
|
test.qcow2 \
|
||||||
LANG/virtualmachine-en_US.ts \
|
LANG/virtualmachine-en_US.ts \
|
||||||
LANG/virtualmachine-en_US.qm
|
LANG/virtualmachine-en_US.qm
|
||||||
/usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp
|
/usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp
|
||||||
@@ -718,17 +579,17 @@ compiler_moc_header_clean:
|
|||||||
moc_mainwindow.cpp: mainwindow.h \
|
moc_mainwindow.cpp: mainwindow.h \
|
||||||
moc_predefs.h \
|
moc_predefs.h \
|
||||||
/usr/lib/qt5/bin/moc
|
/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++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/x86_64-linux-gnu/include -I/usr/include/x86_64-linux-gnu -I/usr/include mainwindow.h -o moc_mainwindow.cpp
|
/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_infoutils.cpp: infoutils.h \
|
||||||
moc_predefs.h \
|
moc_predefs.h \
|
||||||
/usr/lib/qt5/bin/moc
|
/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++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/x86_64-linux-gnu/include -I/usr/include/x86_64-linux-gnu -I/usr/include infoutils.h -o moc_infoutils.cpp
|
/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_qemusetting.cpp: qemusetting.h \
|
||||||
moc_predefs.h \
|
moc_predefs.h \
|
||||||
/usr/lib/qt5/bin/moc
|
/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++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/x86_64-linux-gnu/include -I/usr/include/x86_64-linux-gnu -I/usr/include qemusetting.h -o moc_qemusetting.cpp
|
/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_make_all:
|
||||||
compiler_moc_objc_header_clean:
|
compiler_moc_objc_header_clean:
|
||||||
|
|||||||
BIN
VM-source/OVMF.fd
Normal file
BIN
VM-source/OVMF.fd
Normal file
Binary file not shown.
BIN
VM-source/QEMU_AARCH64_EFI.fd
Normal file
BIN
VM-source/QEMU_AARCH64_EFI.fd
Normal file
Binary file not shown.
BIN
VM-source/QEMU_EFI_LOONG64_7.1.fd
Normal file
BIN
VM-source/QEMU_EFI_LOONG64_7.1.fd
Normal file
Binary file not shown.
6
VM-source/QemuSystemInstall.sh
Executable file
6
VM-source/QemuSystemInstall.sh
Executable 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
109
VM-source/StartVM.sh
Executable 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
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!DOCTYPE QtCreatorProject>
|
||||||
<!-- Written by QtCreator 4.8.2, 2023-07-12T19:05:39. -->
|
<!-- Written by QtCreator 6.0.2, 2023-11-11T19:43:38. -->
|
||||||
<qtcreator>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
<value type="QByteArray">{4ffd6df9-1365-4837-81b1-582e0e2d1f21}</value>
|
<value type="QByteArray">{a0cf9984-2e67-4681-b510-f5b353d70d1b}</value>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
<value type="int" key="EditorConfiguration.PaddingMode">1</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.ScrollWheelZooming">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
@@ -45,156 +46,124 @@
|
|||||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</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="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">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.inEntireDocument">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
<valuemap type="QVariantMap">
|
<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"/>
|
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
|
||||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
<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">4</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>
|
</valuemap>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
<valuemap type="QVariantMap">
|
<valuemap type="QVariantMap">
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
|
<value type="QString" key="DeviceType">Desktop</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.3 in PATH (qt5)</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.3 in PATH (qt5)</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{37ac6aef-5dcd-46dc-8ca6-00e6a5a4377d}</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</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.ActiveDeployConfiguration">0</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
<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="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/orangepi/Desktop/deep-wine-runner/../VM-source</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/orangepi/Desktop/deep-wine-runner/../VM-source</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</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"/>
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
|
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
|
||||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
|
||||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
|
||||||
<value type="int">0</value>
|
|
||||||
<value type="int">1</value>
|
|
||||||
<value type="int">2</value>
|
|
||||||
<value type="int">3</value>
|
|
||||||
<value type="int">4</value>
|
|
||||||
<value type="int">5</value>
|
|
||||||
<value type="int">6</value>
|
|
||||||
<value type="int">7</value>
|
|
||||||
<value type="int">8</value>
|
|
||||||
<value type="int">9</value>
|
|
||||||
<value type="int">10</value>
|
|
||||||
<value type="int">11</value>
|
|
||||||
<value type="int">12</value>
|
|
||||||
<value type="int">13</value>
|
|
||||||
<value type="int">14</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">VirtualMachine2</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/orangepi/Desktop/windows-virtual-machine-installer-for-wine-runner/VirtualMachine.pro</value>
|
||||||
<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/orangepi/Desktop/windows-virtual-machine-installer-for-wine-runner/VirtualMachine.pro</value>
|
||||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
|
|
||||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
|
||||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/orangepi/Desktop/VM-source</value>
|
||||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
|
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
@@ -205,10 +174,10 @@
|
|||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
<value type="int">20</value>
|
<value type="int">22</value>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>Version</variable>
|
<variable>Version</variable>
|
||||||
<value type="int">20</value>
|
<value type="int">22</value>
|
||||||
</data>
|
</data>
|
||||||
</qtcreator>
|
</qtcreator>
|
||||||
|
|||||||
214
VM-source/VirtualMachine.pro.user.4.9-pre1
Normal file
214
VM-source/VirtualMachine.pro.user.4.9-pre1
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 4.8.2, 2023-07-12T19:05:39. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{4ffd6df9-1365-4837-81b1-582e0e2d1f21}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="int">0</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.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="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="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
|
||||||
|
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<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/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.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</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"></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.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</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"></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.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||||
|
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</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"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.PluginSettings"/>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
||||||
|
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
||||||
|
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
||||||
|
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||||
|
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||||
|
<value type="int">0</value>
|
||||||
|
<value type="int">1</value>
|
||||||
|
<value type="int">2</value>
|
||||||
|
<value type="int">3</value>
|
||||||
|
<value type="int">4</value>
|
||||||
|
<value type="int">5</value>
|
||||||
|
<value type="int">6</value>
|
||||||
|
<value type="int">7</value>
|
||||||
|
<value type="int">8</value>
|
||||||
|
<value type="int">9</value>
|
||||||
|
<value type="int">10</value>
|
||||||
|
<value type="int">11</value>
|
||||||
|
<value type="int">12</value>
|
||||||
|
<value type="int">13</value>
|
||||||
|
<value type="int">14</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<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="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
|
||||||
|
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</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.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
||||||
|
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">20</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">20</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
||||||
347
VM-source/VirtualMachine.pro.user.4ffd6df
Normal file
347
VM-source/VirtualMachine.pro.user.4ffd6df
Normal 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>
|
||||||
34
VM-source/application-vnd.oasis.opendocument.text.svg
Normal file
34
VM-source/application-vnd.oasis.opendocument.text.svg
Normal 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 |
12
VM-source/build.sh
Executable file
12
VM-source/build.sh
Executable 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
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <infoutils.h>
|
#include <infoutils.h>
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
|
#include <QProcess>
|
||||||
// 懒得用 QThread 了(要继承)
|
// 懒得用 QThread 了(要继承)
|
||||||
#include <thread>
|
#include <thread>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@@ -27,6 +28,37 @@ void buildvbox::CleanScreen(){
|
|||||||
system("cls");
|
system("cls");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取 CPU 个数
|
||||||
|
int buildvbox::GetCPUSocket(){
|
||||||
|
// 获取命令返回值
|
||||||
|
QProcess process;
|
||||||
|
process.start("bash", QStringList() << "-c" << "cat /proc/cpuinfo | grep \"cpu cores\" | uniq | wc -l");
|
||||||
|
process.waitForStarted();
|
||||||
|
process.waitForFinished();
|
||||||
|
int value = process.readAllStandardOutput().toInt();
|
||||||
|
process.close();
|
||||||
|
// 判断异常值,例如没挂载 /proc
|
||||||
|
if(value <= 0){
|
||||||
|
value = 1;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取 CPU 核心数
|
||||||
|
int buildvbox::GetCPUCore(){
|
||||||
|
QProcess process;
|
||||||
|
process.start("bash", QStringList() << "-c" << "grep 'core id' /proc/cpuinfo | sort -u | wc -l");
|
||||||
|
process.waitForStarted();
|
||||||
|
process.waitForFinished();
|
||||||
|
int value = process.readAllStandardOutput().toInt();
|
||||||
|
process.close();
|
||||||
|
// 判断异常值,例如没挂载 /proc
|
||||||
|
if(value <= 0){
|
||||||
|
value = 1;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
QString buildvbox::GetNet(){
|
QString buildvbox::GetNet(){
|
||||||
QList<QNetworkInterface> netList = QNetworkInterface::allInterfaces();
|
QList<QNetworkInterface> netList = QNetworkInterface::allInterfaces();
|
||||||
foreach(QNetworkInterface net, netList){
|
foreach(QNetworkInterface net, netList){
|
||||||
@@ -49,45 +81,74 @@ int buildvbox::Download(QString url, QString path, QString fileName){
|
|||||||
}
|
}
|
||||||
|
|
||||||
buildvbox::buildvbox(QString isoPath, int id, int vm){
|
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();
|
QString programPath = QCoreApplication::applicationDirPath();
|
||||||
|
|
||||||
/*if(!QFile::exists(programPath + "/a.iso")){
|
|
||||||
std::thread([=](){
|
|
||||||
while(1){
|
|
||||||
qDebug() << "a";
|
|
||||||
}
|
|
||||||
}).detach();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
QString net = GetNet();
|
QString net = GetNet();
|
||||||
qDebug() << "使用网卡:" << net << endl;
|
qDebug() << "使用网卡:" << net << endl;
|
||||||
if(vm == 0){
|
if(vm == 0){
|
||||||
//vbox *box = new vbox("Window");
|
// Qemu
|
||||||
//vbox vm("Windows");
|
|
||||||
qemu vm("Windows");
|
qemu vm("Windows");
|
||||||
|
bool setISOAlready = 0;
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 0:
|
case 0:
|
||||||
vm.Create("Windows7");
|
vm.Create("Windows7");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
vm.Create("Windows7_64");
|
vm.Create("Windows7_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
break;
|
break;
|
||||||
|
case 2:
|
||||||
vm.Create("WindowsNT_64");
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
vm.Create("Windows11_64");
|
||||||
|
vm.SetDisplayMemory(128);
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
vm.Create("WindowsXP_32");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
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();
|
||||||
//vm.CreateDiskControl("storage_controller_2");
|
//vm.CreateDiskControl("storage_controller_2");
|
||||||
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
|
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
|
||||||
vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
//vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
||||||
|
vm.MountMainDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
||||||
|
if(!setISOAlready){
|
||||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -97,30 +158,22 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
|
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/*vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
}
|
||||||
switch (id) {
|
else{
|
||||||
case 0:
|
//vm.AutoInstall(isoPath);
|
||||||
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
|
if(isoPath != ""){
|
||||||
break;
|
vm.MountMainISO(isoPath);
|
||||||
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());
|
}
|
||||||
|
|
||||||
|
vm.SetCPU(get_nprocs(), GetCPUSocket(), GetCPUCore());
|
||||||
long memory = 0;
|
long memory = 0;
|
||||||
long memoryAll = 0;
|
long memoryAll = 0;
|
||||||
long swap = 0;
|
long swap = 0;
|
||||||
long swapAll = 0;
|
long swapAll = 0;
|
||||||
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
||||||
//memoryRate(memory, memoryAll, swap, swapAll);
|
|
||||||
vm.SetMemory(memoryAll / 3 / 1024);
|
vm.SetMemory(memoryAll / 3 / 1024);
|
||||||
vm.SetDisplayMemory(32);
|
|
||||||
vm.SetNetBridge(net);
|
vm.SetNetBridge(net);
|
||||||
vm.EnabledAudio();
|
vm.EnabledAudio();
|
||||||
vm.EnabledClipboardMode();
|
vm.EnabledClipboardMode();
|
||||||
@@ -131,22 +184,64 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
vm.OpenUSB();
|
vm.OpenUSB();
|
||||||
vm.ShareFile("ROOT", "/");
|
vm.ShareFile("ROOT", "/");
|
||||||
vm.ShareFile("HOME", QDir::homePath());
|
vm.ShareFile("HOME", QDir::homePath());
|
||||||
|
switch(id){
|
||||||
|
case 8:
|
||||||
|
vm.StartArmhf();
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
vm.StartAarch64();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
vm.Start();
|
vm.Start();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(vm == 1){
|
else if(vm == 1){
|
||||||
// ?
|
// VirtualBox
|
||||||
//vbox *box = new vbox("Window");
|
|
||||||
vbox vm("Windows");
|
vbox vm("Windows");
|
||||||
//qemu vm("Windows");
|
bool setISOAlready = 1;
|
||||||
|
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 0:
|
case 0:
|
||||||
vm.Create("Windows7");
|
vm.Create("Windows7");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
vm.Create("Windows7_64");
|
vm.Create("Windows7_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
break;
|
break;
|
||||||
|
case 2:
|
||||||
vm.Create("WindowsNT_64");
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
vm.Create("Windows11_64");
|
||||||
|
vm.SetDisplayMemory(128);
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
vm.Create("WindowsXP_32");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
vm.Create("WindowsNT_64");
|
||||||
|
vm.SetDisplayMemory(32);
|
||||||
|
vm.EnabledUEFI(true);
|
||||||
|
setISOAlready = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
QDir dir("/home/gfdgd_xi/Qemu/Windows/");
|
QDir dir("/home/gfdgd_xi/Qemu/Windows/");
|
||||||
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
|
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
|
||||||
@@ -154,6 +249,7 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
//vm.CreateDiskControl("storage_controller_2");
|
//vm.CreateDiskControl("storage_controller_2");
|
||||||
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
|
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
|
||||||
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
|
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
|
||||||
|
if(!setISOAlready){
|
||||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -163,14 +259,18 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
|
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
vm.AutoInstall(isoPath);
|
||||||
|
}
|
||||||
|
|
||||||
// 判断 VirtualBox Guest ISO 是否存在
|
// 判断 VirtualBox Guest ISO 是否存在
|
||||||
// 在的话直接挂载
|
// 在的话直接挂载
|
||||||
if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
|
if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
|
||||||
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
|
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
|
||||||
}
|
}
|
||||||
|
// VirtualBox 的 CPU 数量设置方法和 Qemu 不一样
|
||||||
vm.SetCPU(get_nprocs_conf());
|
vm.SetCPU(GetCPUCore(), GetCPUSocket(), GetCPUCore());
|
||||||
long memory = 0;
|
long memory = 0;
|
||||||
long memoryAll = 0;
|
long memoryAll = 0;
|
||||||
long swap = 0;
|
long swap = 0;
|
||||||
@@ -178,7 +278,6 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
|||||||
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
||||||
//memoryRate(memory, memoryAll, swap, swapAll);
|
//memoryRate(memory, memoryAll, swap, swapAll);
|
||||||
vm.SetMemory(memoryAll / 3 / 1024);
|
vm.SetMemory(memoryAll / 3 / 1024);
|
||||||
vm.SetDisplayMemory(32);
|
|
||||||
vm.SetNetBridge(net);
|
vm.SetNetBridge(net);
|
||||||
vm.EnabledAudio();
|
vm.EnabledAudio();
|
||||||
vm.EnabledClipboardMode();
|
vm.EnabledClipboardMode();
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ public:
|
|||||||
void CleanScreen();
|
void CleanScreen();
|
||||||
QString GetNet();
|
QString GetNet();
|
||||||
int Download(QString url, QString path, QString fileName);
|
int Download(QString url, QString path, QString fileName);
|
||||||
|
int GetCPUSocket();
|
||||||
|
int GetCPUCore();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BUILDVBOX_H
|
#endif // BUILDVBOX_H
|
||||||
|
|||||||
132
VM-source/kvm-ok
Executable file
132
VM-source/kvm-ok
Executable 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
|
||||||
@@ -21,7 +21,11 @@
|
|||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <QIODevice>
|
||||||
|
#include <QInputDialog>
|
||||||
#include "qemusetting.h"
|
#include "qemusetting.h"
|
||||||
|
#include "vbox.h"
|
||||||
|
#include "qemu.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent) :
|
MainWindow::MainWindow(QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
@@ -80,7 +84,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
|
|
||||||
}
|
}
|
||||||
// 设置程序标题
|
// 设置程序标题
|
||||||
this->setWindowTitle("Windows 应用适配工具 " + versionValue.toString());
|
this->setWindowTitle("Wine 运行器虚拟机安装工具 " + versionValue.toString());
|
||||||
// 读取谢明列表
|
// 读取谢明列表
|
||||||
ui->textBrowser_2->setHtml("<p>程序版本号:" + versionValue.toString() + ", " + GetRunCommand("arch") + "</p><p>安装包构建时间:" + buildTime.toString() + "</p><p>该组件构建时间:"
|
ui->textBrowser_2->setHtml("<p>程序版本号:" + versionValue.toString() + ", " + GetRunCommand("arch") + "</p><p>安装包构建时间:" + buildTime.toString() + "</p><p>该组件构建时间:"
|
||||||
+ __DATE__ + " " + __TIME__ + "</p>" + ui->textBrowser_2->toHtml() +
|
+ __DATE__ + " " + __TIME__ + "</p>" + ui->textBrowser_2->toHtml() +
|
||||||
@@ -94,7 +98,10 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
connect(ui->textBrowser_3, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
|
connect(ui->textBrowser_3, &QTextBrowser::anchorClicked, this, [=](const QUrl &link){
|
||||||
QDesktopServices::openUrl(link);
|
QDesktopServices::openUrl(link);
|
||||||
});
|
});
|
||||||
|
// 设置标签栏图标
|
||||||
|
ui->tabWidget->setTabIcon(1, QIcon::fromTheme(":/application-vnd.oasis.opendocument.text.svg"));
|
||||||
|
// 设置窗口图标
|
||||||
|
this->setWindowIcon(QIcon(":/deepin-wine-runner.svg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ShowCPUMessage(){
|
void MainWindow::ShowCPUMessage(){
|
||||||
@@ -129,7 +136,9 @@ void MainWindow::ShowCPUMessage(){
|
|||||||
QString::number(memory * 100 / memoryAll) + "% " + QString::number(memory / 1024) + "MB/" + QString::number(memoryAll / 1024) + "MB" +
|
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);
|
" 开机时间: " + QString::number(dd) + "天 " + QString::number(hh) + ":" + QString::number(MM) + ":" + QString::number(ss);
|
||||||
//qDebug() << cpuAll << " " << cpuFree;
|
//qDebug() << cpuAll << " " << cpuFree;
|
||||||
|
if(!stopShowTime){
|
||||||
ui->CPUValue->showMessage(info, 5000);
|
ui->CPUValue->showMessage(info, 5000);
|
||||||
|
}
|
||||||
m_cpuAll = cpuAll;
|
m_cpuAll = cpuAll;
|
||||||
m_cpuFree = cpuFree;
|
m_cpuFree = cpuFree;
|
||||||
}
|
}
|
||||||
@@ -176,8 +185,94 @@ void MainWindow::on_install_clicked()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
if(system("which qemu-system-arm")){
|
||||||
|
if(QMessageBox::question(this, "提示", "无法检测到 qemu-system-arm,是否继续创建虚拟机?") == QMessageBox::No){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if(system("which qemu-system-aarch64")){
|
||||||
|
if(QMessageBox::question(this, "提示", "无法检测到 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, "提示", "似乎无法找到 Windows7X86Auto.iso,是否继续创建虚拟机?\n缺少该文件可能会导致虚拟机无法正常启动,尝试重新安装 Wine 运行器再试试?") == QMessageBox::No){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(!QFile::exists(QCoreApplication::applicationDirPath() + "/Windows7X64Auto.iso")){
|
||||||
|
if(QMessageBox::question(this, "提示", "似乎无法找到 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){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!dir.exists()){
|
||||||
|
dir.mkpath(QDir::homePath() + "/.config/deepin-wine-runner");
|
||||||
|
}
|
||||||
|
if(!QFile::exists(QDir::homePath() + "/.config/deepin-wine-runner/QEMU-EFI")){
|
||||||
|
// 写入用于识别的空文件
|
||||||
|
file.open(QIODevice::WriteOnly);
|
||||||
|
file.write("1");
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
case 6:
|
||||||
|
case 7:
|
||||||
|
if(ui->vmChooser->currentIndex() == 0){
|
||||||
|
QMessageBox::warning(this, "提示", "Qemu 不支持该选项!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
if(ui->vmChooser->currentIndex() == 1){
|
||||||
|
QMessageBox::warning(this, "提示", "VirtualBox 不支持该选项!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
archFile.open(QIODevice::WriteOnly);
|
||||||
|
archFile.write("armhf");
|
||||||
|
archFile.close();
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
if(ui->vmChooser->currentIndex() == 1){
|
||||||
|
QMessageBox::warning(this, "提示", "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());
|
buildvbox(ui->isoPath->text(), ui->systemVersion->currentIndex(), ui->vmChooser->currentIndex());
|
||||||
|
ui->tabWidget->setCurrentIndex(1);
|
||||||
|
stopShowTime = 1;
|
||||||
|
ui->CPUValue->showMessage("提示:目前已经尝试开启虚拟机,如果在一段时间后依旧还没看到虚拟机窗口开启,请在菜单栏查看虚拟机日志", 10000);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +283,7 @@ void MainWindow::on_getvbox_clicked()
|
|||||||
|
|
||||||
void MainWindow::on_getQemu_clicked()
|
void MainWindow::on_getQemu_clicked()
|
||||||
{
|
{
|
||||||
system(("python3 '" + QCoreApplication::applicationDirPath() + "/../RunCommandWithTerminal.py' '" + QCoreApplication::applicationDirPath() + "/../QemuSystemInstall.sh'").toLatin1());
|
system(("python3 '" + QCoreApplication::applicationDirPath() + "/../RunCommandWithTerminal.py' pkexec '" + QCoreApplication::applicationDirPath() + "/../QemuSystemInstall.sh'").toLatin1());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_vmChooser_currentIndexChanged(int index)
|
void MainWindow::on_vmChooser_currentIndexChanged(int index)
|
||||||
@@ -268,3 +363,94 @@ void MainWindow::on_delQemuDiskButton_clicked()
|
|||||||
}
|
}
|
||||||
QMessageBox::information(this, "提示", "移除成功");
|
QMessageBox::information(this, "提示", "移除成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_kvmTest_clicked()
|
||||||
|
{
|
||||||
|
if(system("which kvm-ok")&& !QFile::exists(QCoreApplication::applicationDirPath() + "/kvm-ok")){
|
||||||
|
QMessageBox::critical(this, "错误", "未识别到命令 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() << "使用" << kvm_ok_path;
|
||||||
|
QProcess process;
|
||||||
|
process.start(kvm_ok_path);
|
||||||
|
process.waitForStarted();
|
||||||
|
process.waitForFinished();
|
||||||
|
if(process.exitCode()){
|
||||||
|
QMessageBox::critical(this, "错误", "您的系统不支持使用 kvm:\n" + process.readAll());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
QMessageBox::information(this, "提示", "您的系统支持使用 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, "提示", "没有日志文件");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
QInputDialog::getMultiLineText(this, "运行日志", "虚拟机运行日志",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, "提示", "没有日志文件");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
QInputDialog::getMultiLineText(this, "安装日志", "虚拟机安装日志",file.readAll());
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_action_StopVirtualBox_triggered()
|
||||||
|
{
|
||||||
|
vbox vmControl("");
|
||||||
|
vmControl.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_action_StopQemu_triggered()
|
||||||
|
{
|
||||||
|
qemu vmControl("");
|
||||||
|
vmControl.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,22 @@ private slots:
|
|||||||
|
|
||||||
void on_delQemuDiskButton_clicked();
|
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();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool stopShowTime = 0;
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
long m_cpuAll;
|
long m_cpuAll;
|
||||||
long m_cpuFree;
|
long m_cpuFree;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Windows 应用适配工具</string>
|
<string>Wine 运行器虚拟机安装工具</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
<enum>QTabWidget::Rounded</enum>
|
<enum>QTabWidget::Rounded</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>2</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab">
|
<widget class="QWidget" name="tab">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
@@ -86,7 +86,42 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>其它 Windows 系统(不支持自动安装)</string>
|
<string>其它 Windows 系统(不支持自动安装,传统启动,推荐 Windows 7 及以下)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>其他 Windows 系统(不支持自动安装,UEFI 启动,推荐 Windows 8 及以上)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装 WIndows 11(不支持自动安装)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装其他 Windows XP(支持自动安装,只支持 VirtualBox)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装其他 Windows (支持自动安装,传统启动,只支持 VirtualBox)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装其他 Windows(支持自动安装,UEFI 启动,只支持 VirtualBox)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装 arm32 系统(只支持 Qemu)</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>安装 arm64 系统(只支持 Qemu)</string>
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -149,6 +184,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="kvmTest">
|
||||||
|
<property name="text">
|
||||||
|
<string>kvm 测试</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="qemuSetting">
|
<widget class="QPushButton" name="qemuSetting">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@@ -200,12 +242,24 @@
|
|||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;">
|
||||||
<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></p>
|
<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>
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
|
<hr />
|
||||||
|
<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>
|
||||||
|
<hr />
|
||||||
|
<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>
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
|
<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>
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
|
<hr />
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
|
<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>
|
||||||
<hr /></body></html></string>
|
<hr /></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="openLinks">
|
<property name="openLinks">
|
||||||
@@ -236,6 +290,8 @@ p, li { white-space: pre-wrap; }
|
|||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了</p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">如果爱折腾的话,下面的都看看也无所谓的,想看往下翻就可以了</p>
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">VirtualBox 可以安装增强功能以优化体验,安装方法往下翻即可查询</p>
|
||||||
|
<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>
|
||||||
<hr />
|
<hr />
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
@@ -372,12 +428,10 @@ p, li { white-space: pre-wrap; }
|
|||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">项目地址:</p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">项目地址:</p>
|
||||||
<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>
|
<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>
|
||||||
<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>
|
<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>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Gitlink:<a href="https://gitlink.org.cn/gfdgd_xi/deep-wine-runner"><span style=" font-size:11pt; text-decoration: underline; color:#0082fa;">https://gitlink.org.cn/gfdgd_xi/deep-wine-runner</span></a></p>
|
|
||||||
<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>
|
<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>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">该组件制作者:gfdgd xi</p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">该组件制作者:gfdgd xi</p>
|
||||||
<hr />
|
<hr />
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">参考文献:</p>
|
<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></string>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;">https://juejin.cn/post/7080484519328874510</span></p></body></html></string>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="openLinks">
|
<property name="openLinks">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@@ -395,6 +449,29 @@ p, li { white-space: pre-wrap; }
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QMenuBar" name="menuBar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1058</width>
|
||||||
|
<height>36</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"/>
|
||||||
|
</widget>
|
||||||
|
<addaction name="menuVM"/>
|
||||||
|
</widget>
|
||||||
<action name="action">
|
<action name="action">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>退出</string>
|
<string>退出</string>
|
||||||
@@ -415,6 +492,31 @@ p, li { white-space: pre-wrap; }
|
|||||||
<string>导出</string>
|
<string>导出</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</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>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
350
VM-source/mainwindow_ui.py
Normal file
350
VM-source/mainwindow_ui.py
Normal 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”<Wine 不是一个模拟器>的原意),旨在能更加完美、简单的运行 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)"))
|
||||||
@@ -9,6 +9,8 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
qemu::qemu(QString name, QString managerPath) {
|
qemu::qemu(QString name, QString managerPath) {
|
||||||
if(!QFile::exists(name)){
|
if(!QFile::exists(name)){
|
||||||
@@ -53,8 +55,14 @@ int qemu::BootFirst(QString bootDrive){
|
|||||||
int qemu::SetNetBridge(QString netDriver){
|
int qemu::SetNetBridge(QString netDriver){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int qemu::SetCPU(int number){
|
int qemu::SetCPU(int number, int cpuNum, int coreNum){
|
||||||
commandOption += "-smp " + QString::number(number) + " ";
|
// commandOption += "-smp " + QString::number(number) + " ";
|
||||||
|
// 调整调用方法
|
||||||
|
//qDebug() << number << " " << cpuNum << " " << coreNum;
|
||||||
|
qDebug() << "Socket: " << cpuNum;
|
||||||
|
qDebug() << "Core: " << coreNum;
|
||||||
|
qDebug() << "Threads: " << number;
|
||||||
|
commandOption += "-smp " + QString::number(number) + ",sockets=" + QString::number(cpuNum) + ",cores=" + QString::number(coreNum / cpuNum) + ",threads=" + QString::number(number / cpuNum / coreNum) + " ";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int qemu::SetMemory(int memory){
|
int qemu::SetMemory(int memory){
|
||||||
@@ -66,16 +74,39 @@ int qemu::SetRemote(bool setting){
|
|||||||
}
|
}
|
||||||
int qemu::SetRemoteConnectSetting(int port){
|
int qemu::SetRemoteConnectSetting(int port){
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
int qemu::MountMainDisk(QString diskPath){
|
||||||
|
commandOption += " --hda '" + diskPath + "' ";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int qemu::StartArmhf(){
|
||||||
|
qDebug() << commandOption;
|
||||||
|
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||||
|
return system(("qemu-system-arm -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-arm --boot d -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::StartAarch64(){
|
||||||
|
qDebug() << commandOption;
|
||||||
|
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "aarch64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||||
|
return system(("qemu-system-aarch64 --boot d -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 d -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(){
|
||||||
|
|
||||||
}
|
}
|
||||||
int qemu::Start(bool unShown){
|
int qemu::Start(bool unShown){
|
||||||
qDebug() << commandOption;
|
qDebug() << commandOption;
|
||||||
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64"){
|
if(Command().GetCommand("arch").replace("\n", "").replace(" ", "") == "x86_64" && !system((QCoreApplication::applicationDirPath() + "/kvm-ok").toUtf8())){
|
||||||
return system(("kvm " + commandOption + " &").toLatin1());
|
return system(("qemu-system-x86_64 --boot d -display vnc=:5 -display gtk --enable-kvm -cpu host " + commandOption + " > /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-x86_64 --boot d -display vnc=:5 -display gtk -nic model=rtl8139 " + commandOption + " > /tmp/windows-virtual-machine-installer-for-wine-runner-install.log 2>&1 &").toLatin1());
|
||||||
}
|
}
|
||||||
int qemu::Stop(){
|
int qemu::Stop(){
|
||||||
system("killall qemu-system-x86_64 -9");
|
system("killall qemu-system-x86_64 -9");
|
||||||
|
system("killall qemu-system-aarch64 -9");
|
||||||
|
system("killall qemu-system-arm -9");
|
||||||
system("killall kvm -9");
|
system("killall kvm -9");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -113,3 +144,52 @@ int qemu::SetKeyboardPS2(){
|
|||||||
int qemu::OpenUSB(){
|
int qemu::OpenUSB(){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
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){
|
||||||
|
if(!status){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(QFile::exists("/usr/share/qemu/OVMF.fd")){
|
||||||
|
commandOption += "--bios /usr/share/qemu/OVMF.fd ";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if(QFile::exists(QCoreApplication::applicationDirPath() + "/OVMF.fd")){
|
||||||
|
commandOption += "--bios '" + QCoreApplication::applicationDirPath() + "/OVMF.fd' ";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
int qemu::MountMainISO(QString isoPath){
|
||||||
|
commandOption += "--cdrom '" + isoPath + "' ";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int qemu::AutoInstall(QString iso){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,11 +21,15 @@ public:
|
|||||||
int MountISO(QString isoPath, QString controlName="storage_controller_1", int port=1, int device=0);
|
int MountISO(QString isoPath, QString controlName="storage_controller_1", int port=1, int device=0);
|
||||||
int BootFirst(QString bootDrive);
|
int BootFirst(QString bootDrive);
|
||||||
int SetNetBridge(QString netDriver);
|
int SetNetBridge(QString netDriver);
|
||||||
int SetCPU(int number);
|
int SetCPU(int number, int cpuNum, int coreNum);
|
||||||
int SetMemory(int memory);
|
int SetMemory(int memory);
|
||||||
int SetRemote(bool setting);
|
int SetRemote(bool setting);
|
||||||
int SetRemoteConnectSetting(int port=5540);
|
int SetRemoteConnectSetting(int port=5540);
|
||||||
int Start(bool unShown=false);
|
int Start(bool unShown=false);
|
||||||
|
int StartArmhf();
|
||||||
|
int StartAarch64();
|
||||||
|
int StartLoong64();
|
||||||
|
int MountMainDisk(QString diskPath);
|
||||||
int Stop();
|
int Stop();
|
||||||
int Delete();
|
int Delete();
|
||||||
int SetDisplayMemory(int memory);
|
int SetDisplayMemory(int memory);
|
||||||
@@ -38,8 +42,15 @@ public:
|
|||||||
int SetMousePS2();
|
int SetMousePS2();
|
||||||
int SetKeyboardPS2();
|
int SetKeyboardPS2();
|
||||||
int OpenUSB();
|
int OpenUSB();
|
||||||
|
int EnabledUEFI(bool status);
|
||||||
|
int AutoInstall(QString iso);
|
||||||
|
int MountMainISO(QString isoPath);
|
||||||
|
int UseAarch64EFI();
|
||||||
|
int UseArmhfEFI();
|
||||||
|
int UseLoongarch64EFI();
|
||||||
|
int UseOtherEFI(QString fdFilePath);
|
||||||
private:
|
private:
|
||||||
QString commandOption;
|
QString commandOption = "";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
289
VM-source/test-kvm.asm
Normal file
289
VM-source/test-kvm.asm
Normal 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 ; 设备ID,1:所有设备
|
||||||
|
; 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
BIN
VM-source/test-kvm.asm.bin
Normal file
Binary file not shown.
BIN
VM-source/test.qcow2
Normal file
BIN
VM-source/test.qcow2
Normal file
Binary file not shown.
@@ -44,7 +44,7 @@ int vbox::SetNetBridge(QString netDriver){
|
|||||||
return system(("\"" + managerPath + "\" modifyvm \"" + name +
|
return system(("\"" + managerPath + "\" modifyvm \"" + name +
|
||||||
"\" --nic1 bridged --cableconnected1 on --nictype1 82540EM --bridgeadapter1 \"" + netDriver + "\" --intnet1 brigh1 --macaddress1 auto").toLatin1());
|
"\" --nic1 bridged --cableconnected1 on --nictype1 82540EM --bridgeadapter1 \"" + netDriver + "\" --intnet1 brigh1 --macaddress1 auto").toLatin1());
|
||||||
}
|
}
|
||||||
int vbox::SetCPU(int number){
|
int vbox::SetCPU(int number, int cpuNum, int coreNum){
|
||||||
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --cpus " + QString::number(number)).toLatin1());
|
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --cpus " + QString::number(number)).toLatin1());
|
||||||
}
|
}
|
||||||
int vbox::SetMemory(int memory){
|
int vbox::SetMemory(int memory){
|
||||||
@@ -61,9 +61,9 @@ int vbox::SetRemoteConnectSetting(int port){
|
|||||||
}
|
}
|
||||||
int vbox::Start(bool unShown){
|
int vbox::Start(bool unShown){
|
||||||
if(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(){
|
int vbox::Stop(){
|
||||||
return system(("\"" + managerPath + "\" controlvm \"" + name + "\" poweroff").toLatin1());
|
return system(("\"" + managerPath + "\" controlvm \"" + name + "\" poweroff").toLatin1());
|
||||||
@@ -101,3 +101,13 @@ int vbox::SetKeyboardPS2(){
|
|||||||
int vbox::OpenUSB(){
|
int vbox::OpenUSB(){
|
||||||
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --usbohci on").toLatin1());
|
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --usbohci on").toLatin1());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int vbox::EnabledUEFI(bool status){
|
||||||
|
if(status){
|
||||||
|
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --firmware=efi").toLatin1());
|
||||||
|
}
|
||||||
|
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --firmware=bios").toLatin1());
|
||||||
|
}
|
||||||
|
int vbox::AutoInstall(QString iso){
|
||||||
|
return system(("vboxmanage unattended install '" + name + "' '--iso=" + iso + "'").toLatin1());
|
||||||
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public:
|
|||||||
int MountISO(QString isoPath, QString controlName="storage_controller_1", int port=1, int device=0);
|
int MountISO(QString isoPath, QString controlName="storage_controller_1", int port=1, int device=0);
|
||||||
int BootFirst(QString bootDrive);
|
int BootFirst(QString bootDrive);
|
||||||
int SetNetBridge(QString netDriver);
|
int SetNetBridge(QString netDriver);
|
||||||
int SetCPU(int number);
|
int SetCPU(int number, int cpuNum, int coreNum);
|
||||||
int SetMemory(int memory);
|
int SetMemory(int memory);
|
||||||
int SetRemote(bool setting);
|
int SetRemote(bool setting);
|
||||||
int SetRemoteConnectSetting(int port=5540);
|
int SetRemoteConnectSetting(int port=5540);
|
||||||
@@ -38,7 +38,8 @@ public:
|
|||||||
int SetMousePS2();
|
int SetMousePS2();
|
||||||
int SetKeyboardPS2();
|
int SetKeyboardPS2();
|
||||||
int OpenUSB();
|
int OpenUSB();
|
||||||
|
int EnabledUEFI(bool status);
|
||||||
|
int AutoInstall(QString iso);
|
||||||
private:
|
private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
<file>deepin-wine-runner.png</file>
|
<file>deepin-wine-runner.png</file>
|
||||||
<file>LANG/virtualmachine-en_US.qm</file>
|
<file>LANG/virtualmachine-en_US.qm</file>
|
||||||
<file>LANG/virtualmachine-en_US.ts</file>
|
<file>LANG/virtualmachine-en_US.ts</file>
|
||||||
|
<file>application-vnd.oasis.opendocument.text.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/picture">
|
<qresource prefix="/picture">
|
||||||
<file>截图_VirtualBox Machine_20220712142929.png</file>
|
<file>截图_VirtualBox Machine_20220712142929.png</file>
|
||||||
@@ -20,4 +21,7 @@
|
|||||||
<file>截图/截图_VirtualBox_20220712223705.png</file>
|
<file>截图/截图_VirtualBox_20220712223705.png</file>
|
||||||
<file>截图/截图_选择区域_20220712224639.png</file>
|
<file>截图/截图_选择区域_20220712224639.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
<qresource prefix="/TestDisk">
|
||||||
|
<file>test.qcow2</file>
|
||||||
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
BIN
VM/AAVMF32_CODE.fd
Normal file
BIN
VM/AAVMF32_CODE.fd
Normal file
Binary file not shown.
BIN
VM/OVMF.fd
Normal file
BIN
VM/OVMF.fd
Normal file
Binary file not shown.
BIN
VM/QEMU_AARCH64_EFI.fd
Normal file
BIN
VM/QEMU_AARCH64_EFI.fd
Normal file
Binary file not shown.
BIN
VM/QEMU_EFI_LOONG64_7.1.fd
Normal file
BIN
VM/QEMU_EFI_LOONG64_7.1.fd
Normal file
Binary file not shown.
@@ -13,7 +13,7 @@ def ReadTXT(file: str):
|
|||||||
command = "qemu-system-x86_64"
|
command = "qemu-system-x86_64"
|
||||||
#if "--kvm" in sys.argv:
|
#if "--kvm" in sys.argv:
|
||||||
# command = "kvm"
|
# command = "kvm"
|
||||||
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||||
homePath = os.path.expanduser('~')
|
homePath = os.path.expanduser('~')
|
||||||
try:
|
try:
|
||||||
setting = json.loads(ReadTXT(f"{homePath}/.config/deepin-wine-runner/QemuSetting.json"))
|
setting = json.loads(ReadTXT(f"{homePath}/.config/deepin-wine-runner/QemuSetting.json"))
|
||||||
@@ -30,4 +30,9 @@ if setting["EnableVNC"]:
|
|||||||
option += f"-display gtk -display vnc=:{setting['VNC']} "
|
option += f"-display gtk -display vnc=:{setting['VNC']} "
|
||||||
if setting["EnableSound"]:
|
if setting["EnableSound"]:
|
||||||
option += "-soundhw all "
|
option += "-soundhw all "
|
||||||
|
if os.path.exists(f"{homePath}/.config/deepin-wine-runner/QEMU-EFI"):
|
||||||
|
if os.path.exists("/usr/share/qemu/OVMF.fd"):
|
||||||
|
option += "--bios /usr/share/qemu/OVMF.fd "
|
||||||
|
elif os.path.exists(f"{programPath}/OVMF.fd"):
|
||||||
|
option += f"--bios {programPath}/OVMF.fd "
|
||||||
os.system(f"{command} {option}")
|
os.system(f"{command} {option}")
|
||||||
|
|||||||
@@ -2,7 +2,14 @@
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||||
arch = subprocess.getoutput("arch").replace(" ", "").replace("\n", "")
|
arch = subprocess.getoutput("dpkg --print-architecture").replace(" ", "").replace("\n", "")
|
||||||
|
if os.path.exists(f"{programPath}/VirtualMachine-{arch}"):
|
||||||
|
os.system(f"{programPath}/VirtualMachine-{arch}")
|
||||||
|
exit()
|
||||||
|
# 判断文件是否解压
|
||||||
|
if not os.path.exists(f"{programPath}/VirtualMachine-amd64"):
|
||||||
|
# 解压文件
|
||||||
|
os.system(f"cd '{programPath}' ; tar -xvf vm.tar.gz")
|
||||||
if os.path.exists(f"{programPath}/VirtualMachine-{arch}"):
|
if os.path.exists(f"{programPath}/VirtualMachine-{arch}"):
|
||||||
os.system(f"{programPath}/VirtualMachine-{arch}")
|
os.system(f"{programPath}/VirtualMachine-{arch}")
|
||||||
exit()
|
exit()
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
VM/VirtualMachine-mips64el
Executable file
BIN
VM/VirtualMachine-mips64el
Executable file
Binary file not shown.
BIN
VM/VirtualMachine-mipsel
Executable file
BIN
VM/VirtualMachine-mipsel
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
132
VM/kvm-ok
Executable file
132
VM/kvm-ok
Executable 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
|
||||||
BIN
VM/test.qcow2
Normal file
BIN
VM/test.qcow2
Normal file
Binary file not shown.
@@ -9,6 +9,6 @@ fi
|
|||||||
rm -rfv lib
|
rm -rfv lib
|
||||||
rm -rfv lib64
|
rm -rfv lib64
|
||||||
rm -rfv usr
|
rm -rfv usr
|
||||||
chmod 777 -Rv ../WineLib
|
chmod 777 -Rv .
|
||||||
echo 删除完成!按回车键退出
|
echo 删除完成!按回车键退出
|
||||||
read
|
read
|
||||||
58
arch-i386-to-all/change.py
Executable file
58
arch-i386-to-all/change.py
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import random
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
# 读取文本文档
|
||||||
|
def ReadTXT(path):
|
||||||
|
with open(path, "r") as file:
|
||||||
|
result = file.read()
|
||||||
|
return result
|
||||||
|
|
||||||
|
# 写入文本文档
|
||||||
|
def WriteTXT(path, things):
|
||||||
|
with open(path, "w") as file:
|
||||||
|
file.write(things)
|
||||||
|
|
||||||
|
|
||||||
|
for i in sys.argv[1:]:
|
||||||
|
#result = subprocess.getoutput(f"apt info '{i}'")
|
||||||
|
tempPath = f"/tmp/unpack-wine-{random.randint(0, 1000)}"
|
||||||
|
#os.system(f"mkdir -p '{tempPath}/DEBIAN'")
|
||||||
|
#result = ReadTXT(f"{tempPath}/DEBIAN/control")
|
||||||
|
result = subprocess.getoutput(f"dpkg --info '{i}'")
|
||||||
|
package = "demo"
|
||||||
|
version = "1.0.0"
|
||||||
|
for k in result.splitlines():
|
||||||
|
# 删除前后空格
|
||||||
|
k = k.strip()
|
||||||
|
# 判断架构
|
||||||
|
if k[:8] == "Package:":
|
||||||
|
package = k[9:].strip()
|
||||||
|
if k[:8] == "Version:":
|
||||||
|
version = k[9:].strip()
|
||||||
|
|
||||||
|
if k[:13] == "Architecture:":
|
||||||
|
arch = k[14:].strip()
|
||||||
|
if arch != "all":
|
||||||
|
print(f"需要转换架构:{arch}=>all")
|
||||||
|
print("开始自动转换")
|
||||||
|
os.system(f"mkdir -pv '{tempPath}'")
|
||||||
|
os.system(f"dpkg -x '{i}' '{tempPath}'")
|
||||||
|
os.system(f"dpkg -e '{i}' '{tempPath}/DEBIAN'")
|
||||||
|
control = ReadTXT(f"{tempPath}/DEBIAN/control")
|
||||||
|
newControl = ""
|
||||||
|
for g in control.splitlines():
|
||||||
|
gNoSpace = g.strip()
|
||||||
|
if gNoSpace[:13] == "Architecture:":
|
||||||
|
newControl += "Architecture: all\n"
|
||||||
|
continue
|
||||||
|
if gNoSpace == "Multi-Arch: same":
|
||||||
|
continue
|
||||||
|
newControl += f"{g}\n"
|
||||||
|
WriteTXT(f"{tempPath}/DEBIAN/control", newControl)
|
||||||
|
os.system(f"dpkg-deb -Z xz -z 9 -b '{tempPath}' '{package}_{version}_all.deb'")
|
||||||
|
os.system(f"rm -rfv '{tempPath}'")
|
||||||
|
break
|
||||||
|
|
||||||
7
builddeb/ChangeDebVersion.sh
Normal file
7
builddeb/ChangeDebVersion.sh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 读取程序版本号
|
||||||
|
cd `dirname $0`
|
||||||
|
export PROGRAMVERSION=`python3 GetProgramVersion.py`
|
||||||
|
export SIZE=`du /tmp/spark-deepin-wine-runner-builder/ | tail -n1 | awk '{print $1}'`
|
||||||
|
sed -i "s%@@VERSION@@%$PROGRAMVERSION%g" /tmp/spark-deepin-wine-runner-builder/DEBIAN/control
|
||||||
|
sed -i "s%@@SIZE@@%$SIZE%g" /tmp/spark-deepin-wine-runner-builder/DEBIAN/control
|
||||||
10
builddeb/GetProgramVersion.py
Executable file
10
builddeb/GetProgramVersion.py
Executable 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")
|
||||||
15
deb-ace/DEBIAN/control
Executable file
15
deb-ace/DEBIAN/control
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
Package: spark-deepin-wine-runner-ace
|
||||||
|
Version: @@VERSION@@
|
||||||
|
Maintainer: gfdgd xi <3025613752@qq.com>
|
||||||
|
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||||
|
Architecture: all
|
||||||
|
Severity: serious
|
||||||
|
Certainty: possible
|
||||||
|
Check: binaries
|
||||||
|
Type: binary, udeb
|
||||||
|
Priority: optional
|
||||||
|
Depends: cn.flamescion.bookworm-compatibility-mode,bash,wget,sudo,libnotify-bin
|
||||||
|
Section: utils
|
||||||
|
Installed-Size: @@SIZE@@
|
||||||
|
Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||||
|
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||||
37
deb-ace/DEBIAN/postinst
Executable file
37
deb-ace/DEBIAN/postinst
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
function notify-send(){
|
||||||
|
#Detect the user using such display
|
||||||
|
local user=$(who | awk '{print $1}' | head -n 1)
|
||||||
|
|
||||||
|
#Detect the id of the user
|
||||||
|
local uid=$(id -u $user)
|
||||||
|
sudo -u $user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus notify-send "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function zenity(){
|
||||||
|
#Detect the user using such display
|
||||||
|
local user=$(who | awk '{print $1}' | head -n 1)
|
||||||
|
|
||||||
|
#Detect the id of the user
|
||||||
|
local uid=$(id -u $user)
|
||||||
|
sudo -u $user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus zenity "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
###检查aptss在不在
|
||||||
|
if [ -z `which bookworm-run` ];then
|
||||||
|
echo "Oh no, ssinstall have not installed bookworm-run dependency yet! Exit"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
bookworm-run echo "Welcome to BCM! Trying to install package"
|
||||||
|
if [ -z "`bookworm-run which aptss`" ];then
|
||||||
|
wget https://zunyun01.store.deepinos.org.cn/store/depends/spark-store-console-in-container_4.2.6.2_all.deb -O /tmp/ssconsole.deb
|
||||||
|
bookworm-run apt install /tmp/ssconsole.deb -y
|
||||||
|
rm /tmp/ssconsole.deb -f
|
||||||
|
fi
|
||||||
|
notify-send "Installing Wine Runner BCM, may cost some time please ensure your network is fine"
|
||||||
|
notify-send "正在书虫兼容环境中安装 Wine 运行器,可能会花费一些时间,请保持网络畅通"
|
||||||
|
bookworm-run aptss update
|
||||||
|
cp /opt/apps/spark-deepin-wine-runner-ace/spark-deepin-wine-runner.deb /tmp
|
||||||
|
bookworm-run aptss reinstall /tmp/spark-deepin-wine-runner.deb -y
|
||||||
|
|
||||||
|
bookworm-run aptss clean
|
||||||
54
deb-ace/DEBIAN/postrm
Executable file
54
deb-ace/DEBIAN/postrm
Executable file
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 使用系统默认的 sh 运行
|
||||||
|
#################################################################################################################
|
||||||
|
# 作者:gfdgd xi
|
||||||
|
# 版本:2.2.0
|
||||||
|
# 更新时间:2022年09月24日
|
||||||
|
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
|
||||||
|
# 基于 sh
|
||||||
|
#################################################################################################################
|
||||||
|
# 删除软件残留,简单粗暴一点直接全部删掉,防止出现警告
|
||||||
|
# 加判断是为了怕 reinstall 后程序就再也打不开了(除非卸载后重新安装)
|
||||||
|
if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
|
||||||
|
rm -rf /opt/apps/deepin-wine-runner/
|
||||||
|
fi
|
||||||
|
# 删除软件缓存(留着也没什么用了)
|
||||||
|
# 缓存目录:~/.cache/deepin-wine-runner
|
||||||
|
if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
|
||||||
|
|
||||||
|
echo "清理程序缓存"
|
||||||
|
|
||||||
|
for username in $(ls /home); do
|
||||||
|
echo /home/$username
|
||||||
|
if [ -d "/home/$username/.cache/deepin-wine-runner/" ]; then
|
||||||
|
rm -rf "/home/$username/.cache/deepin-wine-runner/"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 清理 root 用户的缓存文件
|
||||||
|
echo /root
|
||||||
|
if [ -d "/root/.cache/deepin-wine-runner/" ]; then
|
||||||
|
rm -rf "/root/.cache/deepin-wine-runner/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "非卸载,跳过清理"
|
||||||
|
fi
|
||||||
|
# 删除软件配置文件(只限“purge”)
|
||||||
|
# 配置目录:~/.config/deepin-wine-runner
|
||||||
|
if [ "$1" = "purge" ]; then
|
||||||
|
|
||||||
|
echo "清理程序配置文件"
|
||||||
|
|
||||||
|
for username in $(ls /home); do
|
||||||
|
echo /home/$username
|
||||||
|
if [ -d "/home/$username/.config/deepin-wine-runner/" ]; then
|
||||||
|
rm -rf "/home/$username/.config/deepin-wine-runner/"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 清理 root 用户的配置文件
|
||||||
|
echo /root
|
||||||
|
if [ -d "/root/.config/deepin-wine-runner/" ]; then
|
||||||
|
rm -rf "/root/.config/deepin-wine-runner/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "非 purge,跳过清理"
|
||||||
|
fi
|
||||||
1
deb-ace/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
Executable file
1
deb-ace/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
Executable file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-package-builder "~/.wine" %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/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;
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-packager-easy-builder %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Keywords=exe;scr;
|
||||||
|
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;
|
||||||
|
Name=Wine Package Builder
|
||||||
|
Name[zh]=Wine 简易打包器
|
||||||
|
NoDisplay=true
|
||||||
|
StartupNotify=true
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
X-Deepin-Vendor=user-custom
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-packager-with-script
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Wine Package Builder For UOS
|
||||||
|
NoDisplay=true
|
||||||
|
Name[zh]=Wine 打包器(基于活动脚本)
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-runner %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/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;
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /opt/apps/deepin-wine-runner/RunVM.sh %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Setting VirtualMachine
|
||||||
|
Name[zh]=设置 Windows 虚拟机
|
||||||
|
NoDisplay=true
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;
|
||||||
|
Exec=bookworm-run /opt/apps/deepin-wine-runner/StartVM.sh %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Start Windows VirtualMachine
|
||||||
|
Name[zh]=开启 Windows 虚拟机
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-package-builder "~/.wine" %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/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;
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-packager-easy-builder %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Keywords=exe;scr;
|
||||||
|
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;
|
||||||
|
Name=Wine Package Builder
|
||||||
|
Name[zh]=Wine 简易打包器
|
||||||
|
NoDisplay=true
|
||||||
|
StartupNotify=true
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
X-Deepin-Vendor=user-custom
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-packager-with-script
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Wine Package Builder For UOS
|
||||||
|
NoDisplay=true
|
||||||
|
Name[zh]=Wine 打包器(基于活动脚本)
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /usr/bin/deepin-wine-runner %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/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;
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;Wine;
|
||||||
|
Exec=bookworm-run /opt/apps/deepin-wine-runner/RunVM.sh %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Setting VirtualMachine
|
||||||
|
Name[zh]=设置 Windows 虚拟机
|
||||||
|
NoDisplay=true
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
X-Categories=System;
|
||||||
|
Exec=bookworm-run /opt/apps/deepin-wine-runner/StartVM.sh %F
|
||||||
|
Icon=/opt/apps/spark-deepin-wine-runner-ace/deepin-wine-runner.svg
|
||||||
|
Name=Start Windows VirtualMachine
|
||||||
|
Name[zh]=开启 Windows 虚拟机
|
||||||
|
Terminal=false
|
||||||
|
StartupNotify=true
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
Package: spark-deepin-wine-runner
|
Package: spark-deepin-wine-runner
|
||||||
Version: 3.3.0.1
|
Version: @@VERSION@@
|
||||||
Maintainer: gfdgd xi <3025613752@qq.com>
|
Maintainer: gfdgd xi <3025613752@qq.com>
|
||||||
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||||
Architecture: all
|
Architecture: all
|
||||||
@@ -9,11 +9,11 @@ Check: binaries
|
|||||||
Type: binary, udeb
|
Type: binary, udeb
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip, bubblewrap, zenity
|
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar | unrar-free , unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo, python3-pyperclip, bubblewrap, zenity
|
||||||
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386
|
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386, libc6:armhf, libwine
|
||||||
Section: utils
|
Section: utils
|
||||||
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
Provides: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
Provides: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||||
Installed-Size: 76512
|
Installed-Size: @@SIZE@@
|
||||||
Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||||
|
|||||||
@@ -9,10 +9,10 @@
|
|||||||
#################################################################################################################
|
#################################################################################################################
|
||||||
# 非强制性的必应组件,所以成功不成功都行
|
# 非强制性的必应组件,所以成功不成功都行
|
||||||
# 程序版本号
|
# 程序版本号
|
||||||
version=3.3.0
|
version=3.4.1
|
||||||
echo 安装组件
|
echo 安装组件
|
||||||
python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
|
||||||
python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
|
python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
|
||||||
echo 执行完成
|
echo 执行完成
|
||||||
echo 移除旧组件
|
echo 移除旧组件
|
||||||
if [ -d /opt/apps/deepin-wine-runner/arm-package ]; then
|
if [ -d /opt/apps/deepin-wine-runner/arm-package ]; then
|
||||||
@@ -51,8 +51,8 @@ if [ `arch` != "x86_64" ]; then
|
|||||||
rm -rf /opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
|
rm -rf /opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
|
||||||
fi
|
fi
|
||||||
# 处理 VM 工具
|
# 处理 VM 工具
|
||||||
vmPath=/opt/apps/deepin-wine-runner/VM/VirtualMachine-`arch`
|
vmPath=/opt/apps/deepin-wine-runner/VM/VirtualMachine-`dpkg --print-architecture`
|
||||||
echo 当前架构为:`arch`
|
echo 当前架构为:`dpkg --print-architecture`
|
||||||
if [ -f $vmPath ]; then
|
if [ -f $vmPath ]; then
|
||||||
echo 虚拟机工具有该架构的预编译文件
|
echo 虚拟机工具有该架构的预编译文件
|
||||||
# 移除辅助文件
|
# 移除辅助文件
|
||||||
@@ -65,19 +65,24 @@ else
|
|||||||
rm -f /opt/apps/deepin-wine-runner/VM/VirtualMachine-*
|
rm -f /opt/apps/deepin-wine-runner/VM/VirtualMachine-*
|
||||||
fi
|
fi
|
||||||
echo 处理完成!
|
echo 处理完成!
|
||||||
|
# 修复 3.3.0.1 Box86 源挂了的问题
|
||||||
|
if [ -f /etc/apt/sources.list.d/box86.list ]; then
|
||||||
|
bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/debian ./ > /etc/apt/sources.list.d/box86.list"
|
||||||
|
fi
|
||||||
|
# Gitlink 源挂了
|
||||||
# 到时候切换 gpg 源会方便很多
|
# 到时候切换 gpg 源会方便很多
|
||||||
if [ -r /etc/apt/sources.list.d/better-dde.list ]; then
|
#if [ -r /etc/apt/sources.list.d/better-dde.list ]; then
|
||||||
if [ -d /usr/share/deepin-installer ]; then
|
# if [ -d /usr/share/deepin-installer ]; then
|
||||||
# 用于修复 Deepin Community Live CD Install 版签名过期的问题
|
# # 用于修复 Deepin Community Live CD Install 版签名过期的问题
|
||||||
wget -P /tmp/gfdgd-xi-sources https://code.gitlink.org.cn/gfdgd_xi/gfdgd-xi-apt-mirrors/raw/branch/master/gpg.asc
|
# wget -P /tmp/gfdgd-xi-sources https://code.gitlink.org.cn/gfdgd_xi/gfdgd-xi-apt-mirrors/raw/branch/master/gpg.asc
|
||||||
rm -rfv /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg | true
|
# rm -rfv /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg | true
|
||||||
cp -v /tmp/gfdgd-xi-sources/gpg.asc.gpg /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg
|
# cp -v /tmp/gfdgd-xi-sources/gpg.asc.gpg /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg
|
||||||
# 用于修复 2022.11.25 Better DDE 导致的 Deepin Community Live CD Install 版问题
|
# # 用于修复 2022.11.25 Better DDE 导致的 Deepin Community Live CD Install 版问题
|
||||||
# 移除 Better DDE 源
|
# # 移除 Better DDE 源
|
||||||
rm -rfv /etc/apt/sources.list.d/better-dde.list
|
# rm -rfv /etc/apt/sources.list.d/better-dde.list
|
||||||
apt update > /dev/null 2>&1 | true
|
# apt update > /dev/null 2>&1 | true
|
||||||
fi
|
# fi
|
||||||
fi
|
#fi
|
||||||
# 设置目录权限,让用户可读可写,方便后续删除组件
|
# 设置目录权限,让用户可读可写,方便后续删除组件
|
||||||
chmod 777 -R /opt/apps/deepin-wine-runner
|
chmod 777 -R /opt/apps/deepin-wine-runner
|
||||||
# 向服务器返回安装数加1(不显示内容且忽略错误)
|
# 向服务器返回安装数加1(不显示内容且忽略错误)
|
||||||
|
|||||||
@@ -5,12 +5,17 @@ import json
|
|||||||
import time
|
import time
|
||||||
import updatekiller
|
import updatekiller
|
||||||
import random
|
import random
|
||||||
|
try:
|
||||||
|
import xpinyin
|
||||||
|
except:
|
||||||
|
os.system("python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages")
|
||||||
import xpinyin
|
import xpinyin
|
||||||
import traceback
|
import traceback
|
||||||
import subprocess
|
import subprocess
|
||||||
import PyQt5.QtGui as QtGui
|
import PyQt5.QtGui as QtGui
|
||||||
import PyQt5.QtCore as QtCore
|
import PyQt5.QtCore as QtCore
|
||||||
import PyQt5.QtWidgets as QtWidgets
|
import PyQt5.QtWidgets as QtWidgets
|
||||||
|
from DefaultSetting import *
|
||||||
|
|
||||||
def ShowText(text: str):
|
def ShowText(text: str):
|
||||||
if text.replace(" ", "").replace("\n", "") == "":
|
if text.replace(" ", "").replace("\n", "") == "":
|
||||||
@@ -183,12 +188,15 @@ Get_Dist_Name()
|
|||||||
DISTRO='Deepin'
|
DISTRO='Deepin'
|
||||||
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
|
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
|
||||||
DISTRO='UniontechOS'
|
DISTRO='UniontechOS'
|
||||||
|
elif grep -Eqi "UOS" /etc/issue || grep -Eq "UOS" /etc/*-release; then
|
||||||
|
DISTRO='UniontechOS'
|
||||||
else
|
else
|
||||||
DISTRO='OtherOS'
|
DISTRO='OtherOS'
|
||||||
fi
|
fi
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
####获得发行版名称
|
####获得发行版名称
|
||||||
|
|
||||||
#########################预设值段
|
#########################预设值段
|
||||||
@@ -200,13 +208,17 @@ APPVER="@@@Version@@@"
|
|||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
##### 软件在wine中的启动路径
|
##### 软件在wine中的启动路径
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
|
ENABLE_DOT_NET=""
|
||||||
|
####若使用spark-wine时需要用到.net,则请把ENABLE_DOT_NET设为true,同时在依赖中写spark-wine7-mono
|
||||||
export MIME_TYPE=""
|
export MIME_TYPE=""
|
||||||
#####没什么用
|
|
||||||
export DEB_PACKAGE_NAME="@@@Package@@@"
|
export DEB_PACKAGE_NAME="@@@Package@@@"
|
||||||
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||||
export APPRUN_CMD="{chooseWine}"
|
export APPRUN_CMD="@@Wine@@"
|
||||||
#####wine启动指令,建议
|
#####wine启动指令,建议
|
||||||
EXPORT_ENVS=""
|
#EXPORT_ENVS="wine的动态链接库路径"
|
||||||
|
##例如我的wine应用是使用的dwine6的32位容器,那么我要填LD_LIBRARY_PATH=$LD_LIBRARY;/opt/deepin-wine6-stable/lib
|
||||||
|
## 如果用不到就不填,不要删除前面的注释用的#
|
||||||
|
|
||||||
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
||||||
|
|
||||||
@@ -224,7 +236,7 @@ DISABLE_ATTACH_FILE_DIALOG=""
|
|||||||
|
|
||||||
##############<<<<<<<<<禁用文件选择工具开始
|
##############<<<<<<<<<禁用文件选择工具开始
|
||||||
Get_Dist_Name
|
Get_Dist_Name
|
||||||
#此功能实现参见结尾函数段
|
#此功能实现参见开头函数段
|
||||||
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
|
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
|
||||||
DISABLE_ATTACH_FILE_DIALOG="1"
|
DISABLE_ATTACH_FILE_DIALOG="1"
|
||||||
echo "非deepin/UOS,默认关闭系统自带的文件选择工具,使用Wine的"
|
echo "非deepin/UOS,默认关闭系统自带的文件选择工具,使用Wine的"
|
||||||
@@ -236,12 +248,13 @@ fi
|
|||||||
|
|
||||||
##############<<<<<<<<<屏蔽mono和gecko安装器开始
|
##############<<<<<<<<<屏蔽mono和gecko安装器开始
|
||||||
##默认屏蔽mono和gecko安装器
|
##默认屏蔽mono和gecko安装器
|
||||||
#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
|
if [ "$APPRUN_CMD" = "spark-wine7-devel" ] || [ "$APPRUN_CMD" = "spark-wine" ]|| [ "$APPRUN_CMD" = "spark-wine8" ] && [ -z "$ENABLE_DOT_NET" ];then
|
||||||
|
|
||||||
#export WINEDLLOVERRIDES="mscoree,mshtml="
|
export WINEDLLOVERRIDES="mscoree=d,mshtml=d"
|
||||||
#echo "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
export WINEDLLOVERRIDES="control.exe=d"
|
||||||
|
#### "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
||||||
|
|
||||||
#fi
|
fi
|
||||||
##############>>>>>>>>>屏蔽mono和gecko安装器结束
|
##############>>>>>>>>>屏蔽mono和gecko安装器结束
|
||||||
|
|
||||||
#########################执行段
|
#########################执行段
|
||||||
@@ -265,7 +278,8 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi'''
|
fi
|
||||||
|
'''
|
||||||
|
|
||||||
desktopFile = f'''#!/usr/bin/env xdg-open
|
desktopFile = f'''#!/usr/bin/env xdg-open
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
@@ -506,8 +520,8 @@ class RunThread(QtCore.QThread):
|
|||||||
# 拷贝文件到容器
|
# 拷贝文件到容器
|
||||||
self.RunCommand(f"cp -rv '{folderExePath}' '{bottlePath}/drive_c/Program Files'")
|
self.RunCommand(f"cp -rv '{folderExePath}' '{bottlePath}/drive_c/Program Files'")
|
||||||
debPackageVersion = self.GetEXEVersion(exePath.text(), bottlePath)
|
debPackageVersion = self.GetEXEVersion(exePath.text(), bottlePath)
|
||||||
debDescription = f"{exeName} By Deepin Wine 6 Stable And Build By Wine Runner Easy Packager"
|
debDescription = f"{exeName} By Build By Wine Runner Easy Packager"
|
||||||
debDepends = f"{chooseWine}, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
debDepends = f"{chooseWine} | {chooseWine}-bcm | {chooseWine}-dcm, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/DEBIAN'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/DEBIAN'")
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/files'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/files'")
|
||||||
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/entries/applications'")
|
self.RunCommand(f"mkdir -pv '{debBuildPath}/opt/apps/{debPackageName}/entries/applications'")
|
||||||
@@ -542,7 +556,8 @@ class RunThread(QtCore.QThread):
|
|||||||
["@@@Installed-Size@@@", str(int(buildProgramSize))],
|
["@@@Installed-Size@@@", str(int(buildProgramSize))],
|
||||||
["@@@Name@@@", exeName],
|
["@@@Name@@@", exeName],
|
||||||
["@@@EXEC_PATH@@@", exePathInBottle],
|
["@@@EXEC_PATH@@@", exePathInBottle],
|
||||||
["@@@Icon@@@", programIconPath]
|
["@@@Icon@@@", programIconPath],
|
||||||
|
["@@@Wine@@@", chooseWine]
|
||||||
]
|
]
|
||||||
debControl = ReplaceText(control, replaceMap)
|
debControl = ReplaceText(control, replaceMap)
|
||||||
debPostrm = ReplaceText(postrm, replaceMap)
|
debPostrm = ReplaceText(postrm, replaceMap)
|
||||||
@@ -634,8 +649,9 @@ if __name__ == "__main__":
|
|||||||
"使用 Deepin Wine5 打包应用",
|
"使用 Deepin Wine5 打包应用",
|
||||||
"使用 Deepin Wine2 打包应用"
|
"使用 Deepin Wine2 打包应用"
|
||||||
]
|
]
|
||||||
wineChooserIndex = 0
|
wineChooserIndex = 2
|
||||||
wineList = ["spark-wine8", "spark-wine7-devel", "deepin-wine6-stable", "deepin-wine5-stable", "deepin-wine5", "deepin-wine"]
|
wineList = ["spark-wine8", "spark-wine7-devel", "deepin-wine6-stable", "deepin-wine6-vannila", "spark-wine8-wow", "deepin-wine5-stable", "deepin-wine5", "deepin-wine"]
|
||||||
|
if os.system("which deepin-wine6-stable"):
|
||||||
for i in range(len(wineList)):
|
for i in range(len(wineList)):
|
||||||
if not os.system(f"which '{wineList[i]}'"):
|
if not os.system(f"which '{wineList[i]}'"):
|
||||||
wineChooserIndex = i
|
wineChooserIndex = i
|
||||||
@@ -671,4 +687,6 @@ if __name__ == "__main__":
|
|||||||
pass
|
pass
|
||||||
window.resize(int(window.frameGeometry().width() * 1.2), int(window.frameGeometry().height() * 1.1))
|
window.resize(int(window.frameGeometry().width() * 1.2), int(window.frameGeometry().height() * 1.1))
|
||||||
window.show()
|
window.show()
|
||||||
|
# 设置字体
|
||||||
|
SetFont(app)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
@@ -25,6 +25,7 @@ import PyQt5.QtGui as QtGui
|
|||||||
import PyQt5.QtCore as QtCore
|
import PyQt5.QtCore as QtCore
|
||||||
import PyQt5.QtWidgets as QtWidgets
|
import PyQt5.QtWidgets as QtWidgets
|
||||||
from trans import *
|
from trans import *
|
||||||
|
from DefaultSetting import *
|
||||||
|
|
||||||
#################
|
#################
|
||||||
# 程序所需事件
|
# 程序所需事件
|
||||||
@@ -77,6 +78,9 @@ def disabled_or_NORMAL_all(choose):
|
|||||||
buildDebDir.setDisabled(choose)
|
buildDebDir.setDisabled(choose)
|
||||||
debDepends.setDisabled(choose)
|
debDepends.setDisabled(choose)
|
||||||
debRecommend.setDisabled(choose)
|
debRecommend.setDisabled(choose)
|
||||||
|
debFirstArch.setDisabled(choose)
|
||||||
|
helperConfigPathButton.setDisabled(choose)
|
||||||
|
helperConfigPathText.setDisabled(choose)
|
||||||
#if not choose:
|
#if not choose:
|
||||||
# ChangeArchCombobox()
|
# ChangeArchCombobox()
|
||||||
# ChangeWine()
|
# ChangeWine()
|
||||||
@@ -497,12 +501,15 @@ Get_Dist_Name()
|
|||||||
DISTRO='Deepin'
|
DISTRO='Deepin'
|
||||||
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
|
elif grep -Eqi "UnionTech" /etc/issue || grep -Eq "UnionTech" /etc/*-release; then
|
||||||
DISTRO='UniontechOS'
|
DISTRO='UniontechOS'
|
||||||
|
elif grep -Eqi "UOS" /etc/issue || grep -Eq "UOS" /etc/*-release; then
|
||||||
|
DISTRO='UniontechOS'
|
||||||
else
|
else
|
||||||
DISTRO='OtherOS'
|
DISTRO='OtherOS'
|
||||||
fi
|
fi
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
####获得发行版名称
|
####获得发行版名称
|
||||||
|
|
||||||
#########################预设值段
|
#########################预设值段
|
||||||
@@ -514,13 +521,18 @@ APPVER="@@@APPVER@@@"
|
|||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
##### 软件在wine中的启动路径
|
##### 软件在wine中的启动路径
|
||||||
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
START_SHELL_PATH="/opt/deepinwine/tools/spark_run_v4.sh"
|
||||||
|
{['''ENABLE_DOT_NET=true''', 'ENABLE_DOT_NET=""'][int(disabledMono.isChecked())]}
|
||||||
|
####若使用spark-wine时需要用到.net,则请把ENABLE_DOT_NET设为true,同时在依赖中写spark-wine7-mono
|
||||||
export MIME_TYPE=""
|
export MIME_TYPE=""
|
||||||
#####没什么用
|
|
||||||
|
|
||||||
export DEB_PACKAGE_NAME="@@@DEB_PACKAGE_NAME@@@"
|
export DEB_PACKAGE_NAME="@@@DEB_PACKAGE_NAME@@@"
|
||||||
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
####这里写包名才能在启动的时候正确找到files.7z,似乎也和杀残留进程有关
|
||||||
export APPRUN_CMD="@@@APPRUN_CMD@@@"
|
export APPRUN_CMD="@@@APPRUN_CMD@@@"
|
||||||
#####wine启动指令,建议
|
#####wine启动指令,建议
|
||||||
EXPORT_ENVS=""
|
#EXPORT_ENVS="wine的动态链接库路径"
|
||||||
|
##例如我的wine应用是使用的dwine6的32位容器,那么我要填LD_LIBRARY_PATH=$LD_LIBRARY;/opt/deepin-wine6-stable/lib
|
||||||
|
## 如果用不到就不填,不要删除前面的注释用的#
|
||||||
|
|
||||||
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
||||||
|
|
||||||
@@ -538,7 +550,7 @@ DISABLE_ATTACH_FILE_DIALOG=""
|
|||||||
|
|
||||||
##############<<<<<<<<<禁用文件选择工具开始
|
##############<<<<<<<<<禁用文件选择工具开始
|
||||||
Get_Dist_Name
|
Get_Dist_Name
|
||||||
#此功能实现参见结尾函数段
|
#此功能实现参见开头函数段
|
||||||
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
|
if [ "$DISTRO" != "Deepin" ] && [ "$DISTRO" != "UniontechOS" ];then
|
||||||
DISABLE_ATTACH_FILE_DIALOG="1"
|
DISABLE_ATTACH_FILE_DIALOG="1"
|
||||||
echo "非deepin/UOS,默认关闭系统自带的文件选择工具,使用Wine的"
|
echo "非deepin/UOS,默认关闭系统自带的文件选择工具,使用Wine的"
|
||||||
@@ -550,17 +562,13 @@ fi
|
|||||||
|
|
||||||
##############<<<<<<<<<屏蔽mono和gecko安装器开始
|
##############<<<<<<<<<屏蔽mono和gecko安装器开始
|
||||||
##默认屏蔽mono和gecko安装器
|
##默认屏蔽mono和gecko安装器
|
||||||
{['''#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
|
if [ "$APPRUN_CMD" = "spark-wine7-devel" ] || [ "$APPRUN_CMD" = "spark-wine" ]|| [ "$APPRUN_CMD" = "spark-wine8" ] && [ -z "$ENABLE_DOT_NET" ];then
|
||||||
|
|
||||||
#export WINEDLLOVERRIDES="mscoree,mshtml="
|
export WINEDLLOVERRIDES="mscoree=d,mshtml=d"
|
||||||
#echo "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
export WINEDLLOVERRIDES="control.exe=d"
|
||||||
|
#### "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
||||||
|
|
||||||
#fi''', '''if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
|
fi
|
||||||
|
|
||||||
export WINEDLLOVERRIDES="mscoree,mshtml="
|
|
||||||
echo "为了降低打包体积,默认关闭gecko和momo,如有需要,注释此行(仅对spark-wine7-devel有效)"
|
|
||||||
|
|
||||||
fi'''][int(disabledMono.isChecked())]}
|
|
||||||
##############>>>>>>>>>屏蔽mono和gecko安装器结束
|
##############>>>>>>>>>屏蔽mono和gecko安装器结束
|
||||||
|
|
||||||
#########################执行段
|
#########################执行段
|
||||||
@@ -584,7 +592,8 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi"""
|
fi
|
||||||
|
"""
|
||||||
][chooseWineHelperValue.isChecked()],
|
][chooseWineHelperValue.isChecked()],
|
||||||
"info": f'''{{
|
"info": f'''{{
|
||||||
"appid": "{e1_text.text()}",
|
"appid": "{e1_text.text()}",
|
||||||
@@ -1282,38 +1291,54 @@ extract_archive()
|
|||||||
fi
|
fi
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
ACTIVEX_NAME=""
|
||||||
BOTTLENAME="{e5_text.text()}"
|
BOTTLENAME="{e5_text.text()}"
|
||||||
APPVER="{e2_text.text()}"
|
APPVER="{e2_text.text()}"
|
||||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||||
START_SHELL_PATH="{["/opt/deepinwine/tools/run_v4.sh", "/opt/deepinwine/tools/spark_run_v4.sh"][int(chooseWineHelperValue.isChecked())]}"
|
START_SHELL_PATH="{["/opt/deepinwine/tools/run_v4.sh", "/opt/deepinwine/tools/spark_run_v4.sh"][int(chooseWineHelperValue.isChecked())]}"
|
||||||
export MIME_TYPE=""
|
export MIME_TYPE=""
|
||||||
|
export MIME_EXEC=""
|
||||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||||
export APPRUN_CMD="$HOME/.deepinwine/{os.path.basename(wine[wineVersion.currentText()]).replace('.7z', '')}/bin/{useInstallWineArch.currentText()}"
|
export APPRUN_CMD="$HOME/.deepinwine/{os.path.basename(wine[wineVersion.currentText()]).replace('.7z', '')}/bin/{useInstallWineArch.currentText()}"
|
||||||
|
EXPORT_ENVS=""
|
||||||
|
EXEC_NAME="@@@EXEC_NAME@@@"
|
||||||
export PATCH_LOADER_ENV=""
|
export PATCH_LOADER_ENV=""
|
||||||
export FILEDLG_PLUGIN="/opt/apps/$DEB_PACKAGE_NAME/files/gtkGetFileNameDlg"
|
export FILEDLG_PLUGIN="/opt/apps/$DEB_PACKAGE_NAME/files/gtkGetFileNameDlg"
|
||||||
DISABLE_ATTACH_FILE_DIALOG="1"
|
DISABLE_ATTACH_FILE_DIALOG=""
|
||||||
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
||||||
|
|
||||||
DEEPIN_WINE_BIN_DIR=`dirname $APPRUN_CMD`
|
DEEPIN_WINE_BIN_DIR=`dirname $APPRUN_CMD`
|
||||||
DEEPIN_WINE_DIR=`dirname $DEEPIN_WINE_BIN_DIR`
|
DEEPIN_WINE_DIR=`dirname $DEEPIN_WINE_BIN_DIR`
|
||||||
ARCHIVE_FILE_DIR="/opt/apps/$DEB_PACKAGE_NAME/files"
|
ARCHIVE_FILE_DIR="/opt/apps/$DEB_PACKAGE_NAME/files"
|
||||||
|
|
||||||
|
export SPECIFY_SHELL_DIR=`dirname $START_SHELL_PATH`
|
||||||
|
|
||||||
|
ARCHIVE_FILE_DIR="/opt/apps/$DEB_PACKAGE_NAME/files"
|
||||||
|
|
||||||
|
export WINEDLLPATH=/opt/$APPRUN_CMD/lib:/opt/$APPRUN_CMD/lib64
|
||||||
|
|
||||||
|
export WINEPREDLL="$ARCHIVE_FILE_DIR/dlls"
|
||||||
|
|
||||||
if [ -n "$PATCH_LOADER_ENV" ] && [ -n "$EXEC_PATH" ];then
|
if [ -n "$PATCH_LOADER_ENV" ] && [ -n "$EXEC_PATH" ];then
|
||||||
export $PATCH_LOADER_ENV
|
export $PATCH_LOADER_ENV
|
||||||
fi
|
fi
|
||||||
|
|
||||||
extract_archive "$ARCHIVE_FILE_DIR/wine_archive.7z" "$ARCHIVE_FILE_DIR/wine_archive.md5sum" "$DEEPIN_WINE_DIR"
|
extract_archive "$ARCHIVE_FILE_DIR/wine_archive.7z" "$ARCHIVE_FILE_DIR/wine_archive.md5sum" "$DEEPIN_WINE_DIR"
|
||||||
|
|
||||||
if [ -d "$DEEPIN_WINE_BIN_DIR" ] && [ "$DEEPIN_WINE_BIN_DIR" != "." ];then
|
|
||||||
export DEEPIN_WINE_BIN_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$DISABLE_ATTACH_FILE_DIALOG" ];then
|
if [ -z "$DISABLE_ATTACH_FILE_DIALOG" ];then
|
||||||
export ATTACH_FILE_DIALOG=1
|
export ATTACH_FILE_DIALOG=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -n "$EXPORT_ENVS" ];then
|
||||||
|
export $EXPORT_ENVS
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "$EXEC_PATH" ];then
|
if [ -n "$EXEC_PATH" ];then
|
||||||
|
if [ -z "${{EXEC_PATH##*.lnk*}}" ];then
|
||||||
|
$START_SHELL_PATH $BOTTLENAME $APPVER "C:/windows/command/start.exe" "/Unix" "$EXEC_PATH" "$@"
|
||||||
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi
|
fi
|
||||||
@@ -1514,7 +1539,7 @@ Icon={a[i]}
|
|||||||
Exec="/opt/apps/{e1_text.text()}/files/{os.path.splitext(os.path.basename(iconUiList[i][0].text().replace(line, "/")))[0]}.sh" {command}
|
Exec="/opt/apps/{e1_text.text()}/files/{os.path.splitext(os.path.basename(iconUiList[i][0].text().replace(line, "/")))[0]}.sh" {command}
|
||||||
Name={iconUiList[i][3].text()}
|
Name={iconUiList[i][3].text()}
|
||||||
Comment={e3_text.text()}
|
Comment={e3_text.text()}
|
||||||
MimeType={e10_text.text()}
|
MimeType={iconUiList[i][5].text()}
|
||||||
GenericName={e1_text.text()}
|
GenericName={e1_text.text()}
|
||||||
Terminal=false
|
Terminal=false
|
||||||
StartupNotify=false
|
StartupNotify=false
|
||||||
@@ -1556,6 +1581,12 @@ StartupNotify=false
|
|||||||
#write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/{os.path.splitext(os.path.basename(i[0].text().replace(line, '/')))[0]}_with_exagear.sh", ReplaceText(debInformation[debArch.currentIndex()]["run_with_exagear.sh"], replaceMap))
|
#write_txt(f"{debPackagePath}/opt/apps/{e1_text.text()}/files/{os.path.splitext(os.path.basename(i[0].text().replace(line, '/')))[0]}_with_exagear.sh", ReplaceText(debInformation[debArch.currentIndex()]["run_with_exagear.sh"], replaceMap))
|
||||||
if debArch.currentIndex() != 2:
|
if debArch.currentIndex() != 2:
|
||||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), debInformation[debArch.currentIndex()]["info"])
|
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), debInformation[debArch.currentIndex()]["info"])
|
||||||
|
if helperConfigPath != None and helperConfigPath != "":
|
||||||
|
os.makedirs(f"{debPackagePath}/opt/deepinwine/tools/spark_run_v4_app_configs")
|
||||||
|
if e6_text.text()[-3: ] == ".7z":
|
||||||
|
shutil.copy(helperConfigPath, f"{debPackagePath}/opt/deepinwine/tools/spark_run_v4_app_configs/{os.path.splitext(e6_text.text())[0]}.sh")
|
||||||
|
else:
|
||||||
|
shutil.copy(helperConfigPath, f"{debPackagePath}/opt/deepinwine/tools/spark_run_v4_app_configs/{e6_text.text()}.sh")
|
||||||
################
|
################
|
||||||
# 修改文件权限
|
# 修改文件权限
|
||||||
################
|
################
|
||||||
@@ -1670,9 +1701,99 @@ def ChangeArchCombobox():
|
|||||||
def InstallDeb():
|
def InstallDeb():
|
||||||
os.system(f"xdg-open '{e12_text.text()}'")
|
os.system(f"xdg-open '{e12_text.text()}'")
|
||||||
|
|
||||||
|
def OpenConfigFile():
|
||||||
|
path = QtWidgets.QFileDialog.getOpenFileName(window, "打开列表", get_home(), "JSON 文件(*.json);;所有文件(*.*)")
|
||||||
|
try:
|
||||||
|
if path[0] == "" and path[0] == None:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
with open(path[0], "r") as file:
|
||||||
|
openInfo = json.loads(file.read())
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
|
||||||
|
return
|
||||||
|
for i in openInfo:
|
||||||
|
option = openInfo[i][0]
|
||||||
|
if option == "L":
|
||||||
|
allInfoList[i][1].setText(openInfo[i][1])
|
||||||
|
elif option == "Co":
|
||||||
|
allInfoList[i][1].setCurrentIndex(openInfo[i][1])
|
||||||
|
elif option == "Ch":
|
||||||
|
allInfoList[i][1].setChecked(openInfo[i][1])
|
||||||
|
elif option == "Str-SparkHelperConfigPath":
|
||||||
|
allInfoList[i][1] = openInfo[i][1]
|
||||||
|
if openInfo[i][1] != None:
|
||||||
|
helperConfigPathText.setText(os.path.basename(openInfo[i][1]))
|
||||||
|
elif option == "List-Desktop":
|
||||||
|
if len(openInfo[i][1]) > 1:
|
||||||
|
for k in openInfo[i][1][1:]:
|
||||||
|
AddTab(k)
|
||||||
|
|
||||||
|
for k in range(len(openInfo[i][1][0])):
|
||||||
|
try:
|
||||||
|
iconUiList[0][k].setText(openInfo[i][1][0][k])
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
iconUiList[0][k].setCurrentIndex(openInfo[i][1][0][k])
|
||||||
|
except:
|
||||||
|
print(k)
|
||||||
|
traceback.print_exc()
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
|
||||||
|
|
||||||
|
def SaveConfigList():
|
||||||
|
saveInfo = {}
|
||||||
|
try:
|
||||||
|
for i in allInfoList:
|
||||||
|
option = allInfoList[i][0]
|
||||||
|
print(i)
|
||||||
|
if option == "L":
|
||||||
|
saveInfo[i] = ["L", allInfoList[i][1].text()]
|
||||||
|
elif option == "Co":
|
||||||
|
saveInfo[i] = ["Co", allInfoList[i][1].currentIndex()]
|
||||||
|
elif option == "Ch":
|
||||||
|
saveInfo[i] = ["Ch", allInfoList[i][1].isChecked()]
|
||||||
|
elif option == "Str-SparkHelperConfigPath":
|
||||||
|
saveInfo[i] = ["Str-SparkHelperConfigPath", allInfoList[i][1]]
|
||||||
|
elif option == "List-Desktop":
|
||||||
|
print("aaa")
|
||||||
|
desktopTabList = []
|
||||||
|
|
||||||
|
for d in allInfoList[i][1]:
|
||||||
|
desktopInfoList = []
|
||||||
|
for k in d:
|
||||||
|
try:
|
||||||
|
desktopInfoList.append(k.text())
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
desktopInfoList.append(k.currentIndex())
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
desktopTabList.append(desktopInfoList)
|
||||||
|
saveInfo[i] = ["List-Desktop", desktopTabList]
|
||||||
|
path = QtWidgets.QFileDialog.getSaveFileName(window, "保存列表", get_home(), "JSON 文件(*.json);;所有文件(*.*)")
|
||||||
|
print(path)
|
||||||
|
if path[0] != "" and path[0] != None:
|
||||||
|
try:
|
||||||
|
with open(path[0], "w") as file:
|
||||||
|
file.write(json.dumps(saveInfo, ensure_ascii=False, indent=4))
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
|
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
|
||||||
|
|
||||||
|
def ClearHelperConfigPathText():
|
||||||
|
global helperConfigPath
|
||||||
|
helperConfigPath = None
|
||||||
|
helperConfigPathText.setText("点击浏览按钮指定软件包适配脚本")
|
||||||
|
|
||||||
def BrowserHelperConfigPathText():
|
def BrowserHelperConfigPathText():
|
||||||
global helperConfigPath
|
global helperConfigPath
|
||||||
path = QtWidgets.QFileDialog.getOpenFileUrl(window, "选择 sh 文件", get_home(), "shell 脚本(*.sh);;所有文件(*.*)")[0]
|
path = QtWidgets.QFileDialog.getOpenFileName(window, "选择 sh 文件", get_home(), "shell 脚本(*.sh);;所有文件(*.*)")[0]
|
||||||
if path == "" or path == None:
|
if path == "" or path == None:
|
||||||
return
|
return
|
||||||
helperConfigPath = path
|
helperConfigPath = path
|
||||||
@@ -1680,8 +1801,8 @@ def BrowserHelperConfigPathText():
|
|||||||
|
|
||||||
def ChangeWine():
|
def ChangeWine():
|
||||||
useInstallWineArch.setEnabled(os.path.exists(wine[wineVersion.currentText()]))
|
useInstallWineArch.setEnabled(os.path.exists(wine[wineVersion.currentText()]))
|
||||||
debDepends.setText([f"{wine[wineVersion.currentText()]}, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei",
|
debDepends.setText([f"{wine[wineVersion.currentText()]} | {wine[wineVersion.currentText()]}-bcm | {wine[wineVersion.currentText()]}-dcm, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei",
|
||||||
f"{wine[wineVersion.currentText()]}, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
f"{wine[wineVersion.currentText()]} | {wine[wineVersion.currentText()]}-bcm | {wine[wineVersion.currentText()]}-dcm, spark-dwine-helper | store.spark-app.spark-dwine-helper, fonts-wqy-microhei, fonts-wqy-zenhei"
|
||||||
][int(chooseWineHelperValue.isChecked())])
|
][int(chooseWineHelperValue.isChecked())])
|
||||||
debRecommend.setText("")
|
debRecommend.setText("")
|
||||||
helperConfigPathText.setEnabled(chooseWineHelperValue.isChecked())
|
helperConfigPathText.setEnabled(chooseWineHelperValue.isChecked())
|
||||||
@@ -1690,9 +1811,9 @@ def ChangeWine():
|
|||||||
debDepends.setText(["deepin-wine-helper (>= 5.1.30-1)",
|
debDepends.setText(["deepin-wine-helper (>= 5.1.30-1)",
|
||||||
"spark-dwine-helper | store.spark-app.spark-dwine-helper"
|
"spark-dwine-helper | store.spark-app.spark-dwine-helper"
|
||||||
][int(chooseWineHelperValue.isChecked())])
|
][int(chooseWineHelperValue.isChecked())])
|
||||||
if "deepin-wine5-stable" in wine[wineVersion.currentText()]:
|
#if "deepin-wine5-stable" in wine[wineVersion.currentText()]:
|
||||||
debDepends.setText("libasound2 (>= 1.0.16), libc6 (>= 2.28), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), liblcms2-2 (>= 2.2+git20110628), libldap-2.4-2 (>= 2.4.7), libmpg123-0 (>= 1.13.7), libopenal1 (>= 1.14), libpcap0.8 (>= 0.9.8), libpulse0 (>= 0.99.1), libudev1 (>= 183), libvkd3d1 (>= 1.0), libx11-6, libxext6, libxml2 (>= 2.9.0), ocl-icd-libopencl1 | libopencl1, udis86, zlib1g (>= 1:1.1.4), libasound2-plugins, libncurses6 | libncurses5 | libncurses, deepin-wine-plugin-virtual")
|
# debDepends.setText("libasound2 (>= 1.0.16), libc6 (>= 2.28), libglib2.0-0 (>= 2.12.0), libgphoto2-6 (>= 2.5.10), libgphoto2-port12 (>= 2.5.10), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.4.0), liblcms2-2 (>= 2.2+git20110628), libldap-2.4-2 (>= 2.4.7), libmpg123-0 (>= 1.13.7), libopenal1 (>= 1.14), libpcap0.8 (>= 0.9.8), libpulse0 (>= 0.99.1), libudev1 (>= 183), libvkd3d1 (>= 1.0), libx11-6, libxext6, libxml2 (>= 2.9.0), ocl-icd-libopencl1 | libopencl1, udis86, zlib1g (>= 1:1.1.4), libasound2-plugins, libncurses6 | libncurses5 | libncurses, deepin-wine-plugin-virtual")
|
||||||
debRecommend.setText("libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1")
|
# debRecommend.setText("libcapi20-3, libcups2, libdbus-1-3, libfontconfig1, libfreetype6, libglu1-mesa | libglu1, libgnutls30 | libgnutls28 | libgnutls26, libgsm1, libgssapi-krb5-2, libjpeg62-turbo | libjpeg8, libkrb5-3, libodbc1, libosmesa6, libpng16-16 | libpng12-0, libsane | libsane1, libsdl2-2.0-0, libtiff5, libv4l-0, libxcomposite1, libxcursor1, libxfixes3, libxi6, libxinerama1, libxrandr2, libxrender1, libxslt1.1, libxxf86vm1")
|
||||||
|
|
||||||
# 获取用户桌面目录
|
# 获取用户桌面目录
|
||||||
def get_desktop_path():
|
def get_desktop_path():
|
||||||
@@ -1963,12 +2084,13 @@ def ChangeTapTitle():
|
|||||||
|
|
||||||
mapLink = []
|
mapLink = []
|
||||||
|
|
||||||
def AddTab():
|
def AddTab(defaultValue=[]):
|
||||||
global mapLink
|
global mapLink
|
||||||
button2 = QtWidgets.QPushButton(transla.transe("U", "浏览……"))
|
button2 = QtWidgets.QPushButton(transla.transe("U", "浏览……"))
|
||||||
e7_text = QtWidgets.QLineEdit()
|
e7_text = QtWidgets.QLineEdit()
|
||||||
e8_text = QtWidgets.QLineEdit()
|
e8_text = QtWidgets.QLineEdit()
|
||||||
e9_text = QtWidgets.QLineEdit()
|
e9_text = QtWidgets.QLineEdit()
|
||||||
|
e10_text = QtWidgets.QLineEdit()
|
||||||
e15_text = QtWidgets.QLineEdit()
|
e15_text = QtWidgets.QLineEdit()
|
||||||
iconTab1 = QtWidgets.QWidget()
|
iconTab1 = QtWidgets.QWidget()
|
||||||
option1_text = QtWidgets.QComboBox()
|
option1_text = QtWidgets.QComboBox()
|
||||||
@@ -1984,6 +2106,7 @@ def AddTab():
|
|||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "wine 容器里需要运行的可执行文件的参数:")), 8, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "wine 容器里需要运行的可执行文件的参数:")), 8, 0, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1)
|
||||||
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", ".desktop 的 MimeType:")), 11, 0, 1, 1)
|
||||||
iconTab1.setLayout(desktopIconTabLayout)
|
iconTab1.setLayout(desktopIconTabLayout)
|
||||||
desktopIconTab.addTab(iconTab1, f"图标{desktopIconTab.count() + 1}")
|
desktopIconTab.addTab(iconTab1, f"图标{desktopIconTab.count() + 1}")
|
||||||
desktopIconTabLayout.addWidget(e7_text, 6, 1, 1, 1)
|
desktopIconTabLayout.addWidget(e7_text, 6, 1, 1, 1)
|
||||||
@@ -1992,6 +2115,7 @@ def AddTab():
|
|||||||
desktopIconTabLayout.addWidget(e8_text, 9, 1, 1, 1)
|
desktopIconTabLayout.addWidget(e8_text, 9, 1, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(e9_text, 10, 1, 1, 1)
|
desktopIconTabLayout.addWidget(e9_text, 10, 1, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(button2, 10, 2, 1, 1)
|
desktopIconTabLayout.addWidget(button2, 10, 2, 1, 1)
|
||||||
|
desktopIconTabLayout.addWidget(e10_text, 11, 1, 1, 1)
|
||||||
e8_text.setWhatsThis(transla.transe("U", """填写该软件的中文或英文名称。"""))
|
e8_text.setWhatsThis(transla.transe("U", """填写该软件的中文或英文名称。"""))
|
||||||
e9_text.setWhatsThis(transla.transe("U", """图标只支持PNG格式和SVG格式,其他格式无法显示。"""))
|
e9_text.setWhatsThis(transla.transe("U", """图标只支持PNG格式和SVG格式,其他格式无法显示。"""))
|
||||||
e15_text.setWhatsThis(transla.transe("U", "程序参数,如%u,一般不需要"))
|
e15_text.setWhatsThis(transla.transe("U", "程序参数,如%u,一般不需要"))
|
||||||
@@ -2010,7 +2134,17 @@ Utility=工具软件或其他应用。
|
|||||||
e7_text.textChanged.connect(ChangeTapTitle)
|
e7_text.textChanged.connect(ChangeTapTitle)
|
||||||
e7_text.setPlaceholderText("例如 c:/Program Files/Tencent/QQ/Bin/QQ.exe")
|
e7_text.setPlaceholderText("例如 c:/Program Files/Tencent/QQ/Bin/QQ.exe")
|
||||||
e9_text.setPlaceholderText(transla.transe("U", "支持 png 和 svg 格式,不支持 ico 格式"))
|
e9_text.setPlaceholderText(transla.transe("U", "支持 png 和 svg 格式,不支持 ico 格式"))
|
||||||
iconUiList.append([e7_text, option1_text, e15_text, e8_text, e9_text])
|
e10_text.setWhatsThis(transla.transe("U", "快捷方式的 MimeType 项,一般为空即可"))
|
||||||
|
iconUiList.append([e7_text, option1_text, e15_text, e8_text, e9_text, e10_text])
|
||||||
|
if defaultValue != []:
|
||||||
|
for i in range(len(iconUiList[-1])):
|
||||||
|
try:
|
||||||
|
iconUiList[-1][i].setText(defaultValue[i])
|
||||||
|
except:
|
||||||
|
try:
|
||||||
|
iconUiList[-1][i].setCurrentIndex(defaultValue[i])
|
||||||
|
except:
|
||||||
|
traceback.print_exc()
|
||||||
print(iconUiList)
|
print(iconUiList)
|
||||||
|
|
||||||
def DelTab():
|
def DelTab():
|
||||||
@@ -2049,8 +2183,8 @@ bottleNameLock = False
|
|||||||
###############
|
###############
|
||||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||||
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
||||||
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine", "spark-wine8": "spark-wine8"}
|
wine = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5 stable": "deepin-wine5-stable", "deepin-wine6 stable": "deepin-wine6-stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine", "spark-wine8": "spark-wine8", "spark-wine8-wow": "spark-wine8-wow", "deepin-wine6-vannila": "deepin-wine6-vannila"}
|
||||||
wineValue = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5-stable": "deepin-wine5 stable", "deepin-wine6-stable": "deepin-wine6 stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine", "spark-wine8": "spark-wine8"}
|
wineValue = {"deepin-wine": "deepin-wine", "deepin-wine5": "deepin-wine5", "wine": "wine", "wine64": "wine64", "deepin-wine5-stable": "deepin-wine5 stable", "deepin-wine6-stable": "deepin-wine6 stable", "spark-wine7-devel": "spark-wine7-devel", "ukylin-wine": "ukylin-wine", "spark-wine8": "spark-wine8", "spark-wine8-wow": "spark-wine8-wow", "deepin-wine6-vannila": "deepin-wine6-vannila"}
|
||||||
# 读取 wine 本地列表
|
# 读取 wine 本地列表
|
||||||
for i in os.listdir("/opt"):
|
for i in os.listdir("/opt"):
|
||||||
if os.path.exists(f"/opt/{i}/bin/wine"):
|
if os.path.exists(f"/opt/{i}/bin/wine"):
|
||||||
@@ -2100,6 +2234,11 @@ tips = transla.transe("U", """提示:
|
|||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
window = QtWidgets.QMainWindow()
|
window = QtWidgets.QMainWindow()
|
||||||
widget = QtWidgets.QWidget()
|
widget = QtWidgets.QWidget()
|
||||||
|
defaultFont = window.font()
|
||||||
|
#hScroll = QtWidgets.QScrollArea()
|
||||||
|
#hScroll.setWidget(widget)
|
||||||
|
#hScroll.verticalScrollBar().setValue(hScroll.verticalScrollBar().maximum())
|
||||||
|
#hScroll.horizontalScrollBar().setValue(hScroll.horizontalScrollBar().maximum())
|
||||||
widgetLayout = QtWidgets.QGridLayout()
|
widgetLayout = QtWidgets.QGridLayout()
|
||||||
# 设置变量以修改和获取值项
|
# 设置变量以修改和获取值项
|
||||||
wineVersion = QtWidgets.QComboBox()
|
wineVersion = QtWidgets.QComboBox()
|
||||||
@@ -2136,7 +2275,7 @@ debArch = QtWidgets.QComboBox()
|
|||||||
debArch.addItems(["默认选项", "arm64(box86+exagear)"])
|
debArch.addItems(["默认选项", "arm64(box86+exagear)"])
|
||||||
#debArch.addItems(["i386", "arm64(box86+exagear)", "all(crossover)"])
|
#debArch.addItems(["i386", "arm64(box86+exagear)", "all(crossover)"])
|
||||||
textbox1 = QtWidgets.QTextBrowser()
|
textbox1 = QtWidgets.QTextBrowser()
|
||||||
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility"])
|
option1_text.addItems(["Network", "Chat", "Audio", "Video", "Graphics", "Office", "Translation", "Development", "Utility", "Game", "AudioVideo", "System"])
|
||||||
option1_text.setCurrentText("Network")
|
option1_text.setCurrentText("Network")
|
||||||
wineFrame = QtWidgets.QHBoxLayout()
|
wineFrame = QtWidgets.QHBoxLayout()
|
||||||
chooseWineHelperValue = QtWidgets.QCheckBox(transla.transe("U", "使用星火wine helper\n(如不勾选默认为deepin-wine-helper)"))
|
chooseWineHelperValue = QtWidgets.QCheckBox(transla.transe("U", "使用星火wine helper\n(如不勾选默认为deepin-wine-helper)"))
|
||||||
@@ -2145,6 +2284,13 @@ helperConfigPathButton = QtWidgets.QPushButton("浏览")
|
|||||||
helperConfigPathText = QtWidgets.QLabel("点击浏览按钮指定软件包适配脚本")
|
helperConfigPathText = QtWidgets.QLabel("点击浏览按钮指定软件包适配脚本")
|
||||||
helperConfigPathLayout.addWidget(helperConfigPathButton)
|
helperConfigPathLayout.addWidget(helperConfigPathButton)
|
||||||
helperConfigPathLayout.addWidget(helperConfigPathText)
|
helperConfigPathLayout.addWidget(helperConfigPathText)
|
||||||
|
helperConfigPathButton.clicked.connect(BrowserHelperConfigPathText)
|
||||||
|
helperConfigPathButton.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||||
|
helperConfigPathMenu = QtWidgets.QMenu(window)
|
||||||
|
delHelperConfigPath = QtWidgets.QAction("取消选择")
|
||||||
|
delHelperConfigPath.triggered.connect(ClearHelperConfigPathText)
|
||||||
|
helperConfigPathMenu.addAction(delHelperConfigPath)
|
||||||
|
helperConfigPathButton.customContextMenuRequested.connect(lambda: helperConfigPathMenu.exec_(QtGui.QCursor.pos()))
|
||||||
button1.clicked.connect(button1_cl)
|
button1.clicked.connect(button1_cl)
|
||||||
button2.clicked.connect(lambda: button2_cl(0))
|
button2.clicked.connect(lambda: button2_cl(0))
|
||||||
mapLink.append(e9_text)
|
mapLink.append(e9_text)
|
||||||
@@ -2183,6 +2329,7 @@ desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示
|
|||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "wine 容器里需要运行的可执行文件的参数:")), 8, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "wine 容器里需要运行的可执行文件的参数:")), 8, 0, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1)
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1)
|
||||||
|
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", ".desktop 的 MimeType:")), 11, 0, 1, 1)
|
||||||
iconTab1.setLayout(desktopIconTabLayout)
|
iconTab1.setLayout(desktopIconTabLayout)
|
||||||
#desktopIconTab.setTabPosition(QtWidgets.QTabWidget.East)
|
#desktopIconTab.setTabPosition(QtWidgets.QTabWidget.East)
|
||||||
desktopIconTab.addTab(iconTab1, "默认图标")
|
desktopIconTab.addTab(iconTab1, "默认图标")
|
||||||
@@ -2203,7 +2350,8 @@ desktopIconTabLayout.addWidget(e15_text, 8, 1, 1, 1)
|
|||||||
desktopIconTabLayout.addWidget(e8_text, 9, 1, 1, 1)
|
desktopIconTabLayout.addWidget(e8_text, 9, 1, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(e9_text, 10, 1, 1, 1)
|
desktopIconTabLayout.addWidget(e9_text, 10, 1, 1, 1)
|
||||||
desktopIconTabLayout.addWidget(button2, 10, 2, 1, 1)
|
desktopIconTabLayout.addWidget(button2, 10, 2, 1, 1)
|
||||||
iconUiList.append([e7_text, option1_text, e15_text, e8_text, e9_text])
|
desktopIconTabLayout.addWidget(e10_text, 11, 1, 1, 1)
|
||||||
|
iconUiList.append([e7_text, option1_text, e15_text, e8_text, e9_text, e10_text])
|
||||||
print(iconUiList)
|
print(iconUiList)
|
||||||
widgetLayout.addLayout(wineFrame, 6, 1, 1, 1)
|
widgetLayout.addLayout(wineFrame, 6, 1, 1, 1)
|
||||||
widgetLayout.addWidget(e12_text, 7, 1, 1, 1)
|
widgetLayout.addWidget(e12_text, 7, 1, 1, 1)
|
||||||
@@ -2239,8 +2387,6 @@ moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的依赖(
|
|||||||
moreSettingLayout.addWidget(debDepends)
|
moreSettingLayout.addWidget(debDepends)
|
||||||
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的推荐依赖(非强制,一般默认即可):")))
|
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的推荐依赖(非强制,一般默认即可):")))
|
||||||
moreSettingLayout.addWidget(debRecommend)
|
moreSettingLayout.addWidget(debRecommend)
|
||||||
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的 MimeType:")))
|
|
||||||
moreSettingLayout.addWidget(e10_text)
|
|
||||||
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "打包 deb 架构:")))
|
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "打包 deb 架构:")))
|
||||||
moreSettingLayout.addWidget(debFirstArch)
|
moreSettingLayout.addWidget(debFirstArch)
|
||||||
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "打包选项:")))
|
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "打包选项:")))
|
||||||
@@ -2263,10 +2409,16 @@ e7_text.setPlaceholderText("例如 c:/Program Files/Tencent/QQ/Bin/QQ.exe")
|
|||||||
e9_text.setPlaceholderText(transla.transe("U", "支持 png 和 svg 格式,不支持 ico 格式"))
|
e9_text.setPlaceholderText(transla.transe("U", "支持 png 和 svg 格式,不支持 ico 格式"))
|
||||||
# 菜单栏
|
# 菜单栏
|
||||||
menu = window.menuBar()
|
menu = window.menuBar()
|
||||||
programmenu = menu.addMenu(transla.transe("U", "程序"))
|
programmenu = menu.addMenu(transla.transe("U", "程序(&P)"))
|
||||||
debMenu = menu.addMenu(transla.transe("U", "deb 包"))
|
debMenu = menu.addMenu(transla.transe("U", "deb 包"))
|
||||||
uploadSparkStore = menu.addMenu(transla.transe("U", "投稿到星火应用商店"))
|
uploadSparkStore = menu.addMenu(transla.transe("U", "投稿到星火应用商店"))
|
||||||
help = menu.addMenu(transla.transe("U", "帮助"))
|
help = menu.addMenu(transla.transe("U", "帮助"))
|
||||||
|
openFile = QtWidgets.QAction(transla.transe("U", "打开配置文件"))
|
||||||
|
saveFile = QtWidgets.QAction(transla.transe("U", "保存配置文件"))
|
||||||
|
setMiniFont = QtWidgets.QAction(transla.transe("U", "使用小字体"))
|
||||||
|
setDefaultFont = QtWidgets.QAction(transla.transe("U", "使用默认大小字体"))
|
||||||
|
hideShowText = QtWidgets.QAction(transla.transe("U", "隐藏输出框"))
|
||||||
|
hideShowText.setCheckable(True)
|
||||||
exit = QtWidgets.QAction(transla.transe("U", "退出程序"))
|
exit = QtWidgets.QAction(transla.transe("U", "退出程序"))
|
||||||
debE = QtWidgets.QAction(transla.transe("U", "只读取 Control 信息"))
|
debE = QtWidgets.QAction(transla.transe("U", "只读取 Control 信息"))
|
||||||
debX = QtWidgets.QAction(transla.transe("U", "读取所有(需解包,时间较久)"))
|
debX = QtWidgets.QAction(transla.transe("U", "读取所有(需解包,时间较久)"))
|
||||||
@@ -2278,8 +2430,22 @@ else:
|
|||||||
uploadSparkStoreProgram.setDisabled(True)
|
uploadSparkStoreProgram.setDisabled(True)
|
||||||
tip = QtWidgets.QAction(transla.transe("U", "小提示"))
|
tip = QtWidgets.QAction(transla.transe("U", "小提示"))
|
||||||
getPdfHelp = QtWidgets.QAction(transla.transe("U", "Wine运行器和Wine打包器傻瓜式使用教程(小白专用)\nBy @雁舞白沙"))
|
getPdfHelp = QtWidgets.QAction(transla.transe("U", "Wine运行器和Wine打包器傻瓜式使用教程(小白专用)\nBy @雁舞白沙"))
|
||||||
|
videoHelp = menu.addMenu(transla.transe("U", "视频教程(&V)"))
|
||||||
|
videoHelpAction = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "视频教程"))
|
||||||
|
videoHelpAction.triggered.connect(lambda: webbrowser.open_new_tab("https://space.bilibili.com/695814694/channel/collectiondetail?sid=1610353"))
|
||||||
|
videoHelp.addAction(videoHelpAction)
|
||||||
|
openFile.triggered.connect(OpenConfigFile)
|
||||||
|
saveFile.triggered.connect(SaveConfigList)
|
||||||
|
hideShowText.triggered.connect(lambda: textbox1.setHidden(hideShowText.isChecked()))
|
||||||
exit.triggered.connect(window.close)
|
exit.triggered.connect(window.close)
|
||||||
tip.triggered.connect(helps)
|
tip.triggered.connect(helps)
|
||||||
|
programmenu.addAction(openFile)
|
||||||
|
programmenu.addAction(saveFile)
|
||||||
|
#programmenu.addSeparator()
|
||||||
|
#programmenu.addAction(setMiniFont)
|
||||||
|
#programmenu.addAction(setDefaultFont)
|
||||||
|
programmenu.addAction(hideShowText)
|
||||||
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(exit)
|
programmenu.addAction(exit)
|
||||||
debMenu.addAction(debE)
|
debMenu.addAction(debE)
|
||||||
debMenu.addAction(debX)
|
debMenu.addAction(debX)
|
||||||
@@ -2309,16 +2475,17 @@ window.setCentralWidget(widget)
|
|||||||
window.setWindowTitle(f"wine 应用打包器 {version}")
|
window.setWindowTitle(f"wine 应用打包器 {version}")
|
||||||
window.setWindowIcon(QtGui.QIcon(iconPath))
|
window.setWindowIcon(QtGui.QIcon(iconPath))
|
||||||
window.resize(int(window.frameSize().width() * 2.1), int(window.frameSize().height()))
|
window.resize(int(window.frameSize().width() * 2.1), int(window.frameSize().height()))
|
||||||
e1_text.setWhatsThis("""com.XXX.deepin
|
e1_text.setWhatsThis("""安装包的包名,推荐类似 com.xxx.spark 这种倒置域名的格式,当然类似 spark-xxx 这种也可以,但是包名只能含有<b>小写字母(a-z)、数字(0-9)、加号(+)和减号(-)、以及点号(.)</b>,软件包名最短长度为两个字符,且包名必须以字母开头。""")
|
||||||
XXX指windows软件的英文名称,可以自定义名称,但最好是用软件解压安装后自动生成的英文名称,如:dingtalk。包名只能含有小写字母(a-z)、数字(0-9)、加号(+)和减号(-)、以及点号(.),软件包名最短长度为两个字符,且包名必须以字母开头。""")
|
|
||||||
# 创建控件
|
# 创建控件
|
||||||
e2_text.setWhatsThis(transla.transe("U", """6.5.50(随便填写或填写该软件的windows版本的版本号,6.5.50只是示例)。"""))
|
e2_text.setWhatsThis(transla.transe("U", """安装包的版本号,一般推荐格式为 <b><u>程序版本号</u>spark<u>修订号</u></b>,例如 23.01spark0,23.01 就是程序版本号,0 为修订号,代表第一版版本"""))
|
||||||
e3_text.setWhatsThis(transla.transe("U", """随便填写或使用该软件的windows版本的软件简介。"""))
|
e3_text.setWhatsThis(transla.transe("U", """安装包的说明,随意但最好能程序的介绍之类方便用户快速了解安装包内容的文字,推荐只用英文"""))
|
||||||
e4_text.setWhatsThis(transla.transe("U", """填写自己的网名,若是自用软件,不上架至应用商店,不进行后续维护,可随便填写。"""))
|
e4_text.setWhatsThis(transla.transe("U", """安装包的维护者,推荐格式为:<b><u>打包者</u><<u>邮箱</u>></b> ,例如 gfdgd xi<3025613752@qq.com>,多个打包者用半角符号“,”分隔"""))
|
||||||
e5_text.setWhatsThis(f"<p>解压容器到其它机器的容器名称,一般自动带出</p><p><img src='{programPath}/Icon/Screen/202211121646232464_image.png'></p>")
|
e5_text.setWhatsThis(f"<p>解压容器到其它机器的容器名称,一般自动带出</p><p><img src='{programPath}/Icon/Screen/202211121646232464_image.png'></p>")
|
||||||
e6_text.setWhatsThis(transla.transe("U", f"要打包的容器所在路径,也可以选择已经好打包的 7z 文件,一般自动带出"))
|
e6_text.setWhatsThis(transla.transe("U", f"要打包的容器所在路径,也可以选择已经好打包的 7z 文件,一般自动带出"))
|
||||||
e7_text.setWhatsThis("""可执行文件的运行路径格式是“C:/XXX/XXX.exe”(不包含引号)""")
|
e7_text.setWhatsThis("""程序在 wine 容器的路径,格式一般为 c:/xxx/xxx.exe""")
|
||||||
debArch.setWhatsThis(transla.transe("U", "选择生成 deb 包所对应的架构"))
|
debArch.setWhatsThis(transla.transe("U", "选择生成 deb 包所对应的架构"))
|
||||||
|
wineVersion.setWhatsThis("deb 包使用的 Wine")
|
||||||
|
option1_text.setWhatsThis("程序在启动器的快捷方式分类")
|
||||||
rmBash.setWhatsThis(transla.transe("U", "清理容器无用内容,一般建议勾选,最新版本默认勾选,如果有特殊需求(如容器内有 mono、gecko 等)建议取消勾选"))
|
rmBash.setWhatsThis(transla.transe("U", "清理容器无用内容,一般建议勾选,最新版本默认勾选,如果有特殊需求(如容器内有 mono、gecko 等)建议取消勾选"))
|
||||||
debDepends.setWhatsThis(transla.transe("U", "生成 deb 包所需的依赖,一般情况下默认即可"))
|
debDepends.setWhatsThis(transla.transe("U", "生成 deb 包所需的依赖,一般情况下默认即可"))
|
||||||
debRecommend.setWhatsThis(transla.transe("U", "生成 deb 包的推荐依赖,一般情况下为空即可"))
|
debRecommend.setWhatsThis(transla.transe("U", "生成 deb 包的推荐依赖,一般情况下为空即可"))
|
||||||
@@ -2328,15 +2495,20 @@ option1_text.setWhatsThis("""点击右侧的下拉箭头,选择该软件所属
|
|||||||
Network=网络应用;
|
Network=网络应用;
|
||||||
Chat=即时通讯或社交沟通;
|
Chat=即时通讯或社交沟通;
|
||||||
Video=视频播放;
|
Video=视频播放;
|
||||||
|
Audio=音乐欣赏;
|
||||||
|
AudioVideo=视频播放;
|
||||||
Graphics=图形图像;
|
Graphics=图形图像;
|
||||||
|
Game=游戏娱乐;
|
||||||
Office=办公学习;
|
Office=办公学习;
|
||||||
Translation=阅读翻译;
|
Translation=阅读翻译;
|
||||||
Development=软件开发;
|
Development=软件开发;
|
||||||
|
Reading=阅读翻译;
|
||||||
|
System=系统管理;
|
||||||
Utility=工具软件或其他应用。
|
Utility=工具软件或其他应用。
|
||||||
不明白英文的可以百度查询一下软件分类名称的意思。
|
不明白英文的可以百度查询一下软件分类名称的意思。
|
||||||
注意:此时选择的软件分类名称决定了该软件打包后再安装时会安装在启动器中的哪个软件分类目录中。""")
|
注意:此时选择的软件分类名称决定了该软件打包后再安装时会安装在启动器中的哪个软件分类目录中。""")
|
||||||
e8_text.setWhatsThis(transla.transe("U", """填写该软件的中文或英文名称。"""))
|
e8_text.setWhatsThis(transla.transe("U", """在启动器快捷方式的名称"""))
|
||||||
e9_text.setWhatsThis(transla.transe("U", """图标只支持PNG格式和SVG格式,其他格式无法显示。"""))
|
e9_text.setWhatsThis(transla.transe("U", """在启动器快捷方式的图标(不支持 ico 格式,推荐使用 svg、png 格式)"""))
|
||||||
e10_text.setWhatsThis(transla.transe("U", "快捷方式的 MimeType 项,一般为空即可"))
|
e10_text.setWhatsThis(transla.transe("U", "快捷方式的 MimeType 项,一般为空即可"))
|
||||||
option1_text.setWhatsThis(transla.transe("U", "打包的 Wine 版本,根据实际情况选择(如果打包 arm 包将不会提供选择)"))
|
option1_text.setWhatsThis(transla.transe("U", "打包的 Wine 版本,根据实际情况选择(如果打包 arm 包将不会提供选择)"))
|
||||||
e12_text.setWhatsThis(transla.transe("U", "打包出的 deb 生成的位置,一般自动生成"))
|
e12_text.setWhatsThis(transla.transe("U", "打包出的 deb 生成的位置,一般自动生成"))
|
||||||
@@ -2346,6 +2518,30 @@ buildDebDir.setWhatsThis(transla.transe("U", "构建 deb 包目录,但不打
|
|||||||
textbox1.setWhatsThis(transla.transe("U", "查看打包过程中命令返回内容"))
|
textbox1.setWhatsThis(transla.transe("U", "查看打包过程中命令返回内容"))
|
||||||
button5.setWhatsThis(transla.transe("U", "点击该按钮打包生成 deb"))
|
button5.setWhatsThis(transla.transe("U", "点击该按钮打包生成 deb"))
|
||||||
installDeb.setWhatsThis(transla.transe("U", "调用默认的 deb 安装工具安装生成的 deb"))
|
installDeb.setWhatsThis(transla.transe("U", "调用默认的 deb 安装工具安装生成的 deb"))
|
||||||
|
|
||||||
|
allInfoList = {
|
||||||
|
"Package": ["L", e1_text],
|
||||||
|
"Version": ["L", e2_text],
|
||||||
|
"Description": ["L", e3_text],
|
||||||
|
"Maintainer": ["L", e4_text],
|
||||||
|
"BottleName": ["L", e5_text],
|
||||||
|
"BottlePath": ["L", e6_text],
|
||||||
|
"WineVersion": ["Co", wineVersion],
|
||||||
|
"DebSavePath": ["L", e12_text],
|
||||||
|
"Desktop": ["List-Desktop", iconUiList],
|
||||||
|
"UseInstallWineArch": ["Co", useInstallWineArch],
|
||||||
|
"RemoveBash": ["Ch", rmBash],
|
||||||
|
"CleanBottleByUOS": ["Ch", cleanBottonByUOS],
|
||||||
|
"ChooseWineHelperValue": ["Ch", chooseWineHelperValue],
|
||||||
|
"DisabledMono": ["Ch", disabledMono],
|
||||||
|
"DebDepends": ["L", debDepends],
|
||||||
|
"DebRecommend": ["L", debRecommend],
|
||||||
|
"DebFirstArch": ["Co", debFirstArch],
|
||||||
|
"DebArch": ["Co", debArch],
|
||||||
|
"SparkHelperConfigPath": ["Str-SparkHelperConfigPath", helperConfigPath]
|
||||||
|
}
|
||||||
|
# 设置字体
|
||||||
|
SetFont(app)
|
||||||
#window.setWindowFlag(QtGui.Qt)
|
#window.setWindowFlag(QtGui.Qt)
|
||||||
window.show()
|
window.show()
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import webbrowser
|
|||||||
import urllib.parse as parse
|
import urllib.parse as parse
|
||||||
import PyQt5.QtGui as QtGui
|
import PyQt5.QtGui as QtGui
|
||||||
import PyQt5.QtWidgets as QtWidgets
|
import PyQt5.QtWidgets as QtWidgets
|
||||||
|
from DefaultSetting import *
|
||||||
|
|
||||||
# 读取文本文档
|
# 读取文本文档
|
||||||
def readtxt(path: "路径")->"读取文本文档":
|
def readtxt(path: "路径")->"读取文本文档":
|
||||||
@@ -90,9 +91,19 @@ widgetLayout.addWidget(updateButton, 3, 5, 1, 1)
|
|||||||
giteeButton.clicked.connect(OpenGiteeIssues)
|
giteeButton.clicked.connect(OpenGiteeIssues)
|
||||||
githubButton.clicked.connect(OpenGithubIssues)
|
githubButton.clicked.connect(OpenGithubIssues)
|
||||||
updateButton.clicked.connect(UpdateButtonClick)
|
updateButton.clicked.connect(UpdateButtonClick)
|
||||||
|
# 禁用 bug 提交,引导到 Gitee 提交 bug
|
||||||
|
nameThings.setDisabled(True)
|
||||||
|
contactThings.setDisabled(True)
|
||||||
|
starMenu.setDisabled(True)
|
||||||
|
#updateThings.setDisabled(True)
|
||||||
|
updateThings.setReadOnly(True)
|
||||||
|
updateButton.setDisabled(True)
|
||||||
|
updateThings.setText("请移步到 Gitee 或 Github 提交 Bug(推荐使用 Gitee)\nWine 运行器 QQ 交流群:762985460")
|
||||||
widget.setLayout(widgetLayout)
|
widget.setLayout(widgetLayout)
|
||||||
window.setCentralWidget(widget)
|
window.setCentralWidget(widget)
|
||||||
window.setWindowTitle(f"Wine 运行器 {version} 问题/建议反馈")
|
window.setWindowTitle(f"Wine 运行器 {version} 问题/建议反馈")
|
||||||
window.setWindowIcon(QtGui.QIcon(iconPath))
|
window.setWindowIcon(QtGui.QIcon(iconPath))
|
||||||
window.show()
|
window.show()
|
||||||
|
# 设置字体
|
||||||
|
SetFont(app)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.3.0.1",
|
"Version": "3.5.0",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
|
"感性 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||||
|
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
"感谢 @Amber 编写的《使用wine运行器打包无安装包的软件》:https://bbs.deepin.org/post/247720",
|
"感谢 @Amber 编写的《使用wine运行器打包无安装包的软件》:https://bbs.deepin.org/post/247720",
|
||||||
"感谢 @豪 提供程序图标",
|
"感谢 @豪 提供程序图标",
|
||||||
|
|||||||
205
mainwindow.py
205
mainwindow.py
@@ -37,6 +37,7 @@ except:
|
|||||||
bad = True
|
bad = True
|
||||||
from trans import *
|
from trans import *
|
||||||
from Model import *
|
from Model import *
|
||||||
|
from DefaultSetting import *
|
||||||
|
|
||||||
def PythonLower():
|
def PythonLower():
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
@@ -606,6 +607,14 @@ def CleanProgramCache():
|
|||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
QtWidgets.QMessageBox.critical(widget, "错误", traceback.format_exc())
|
QtWidgets.QMessageBox.critical(widget, "错误", traceback.format_exc())
|
||||||
|
|
||||||
|
def SetFont(size):
|
||||||
|
font = QtGui.QFont(defaultFont)
|
||||||
|
if size == 1:
|
||||||
|
app.setFont(defaultFont)
|
||||||
|
return
|
||||||
|
font.setPixelSize(int(defaultFont.pixelSize() / size))
|
||||||
|
font.setPointSize(int(defaultFont.pointSize() / size))
|
||||||
|
app.setFont(font)
|
||||||
|
|
||||||
# 重启本应用程序
|
# 重启本应用程序
|
||||||
def ReStartProgram():
|
def ReStartProgram():
|
||||||
@@ -790,7 +799,9 @@ def RunWineProgram(wineProgram, history = False, Disbled = True):
|
|||||||
|
|
||||||
class RunWinetricksThread(QtCore.QThread):
|
class RunWinetricksThread(QtCore.QThread):
|
||||||
signal = QtCore.pyqtSignal(str)
|
signal = QtCore.pyqtSignal(str)
|
||||||
def __init__(self):
|
bwrap = QtCore.pyqtSignal(str)
|
||||||
|
def __init__(self, bwrap):
|
||||||
|
self.bwrap = bwrap
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
@@ -811,13 +822,40 @@ class RunWinetricksThread(QtCore.QThread):
|
|||||||
QtWidgets.QMessageBox.critical(widget, "错误", "无法解压资源")
|
QtWidgets.QMessageBox.critical(widget, "错误", "无法解压资源")
|
||||||
return
|
return
|
||||||
os.remove(f"{programPath}/dlls-arm.7z")
|
os.remove(f"{programPath}/dlls-arm.7z")
|
||||||
|
## 获取 WineServer 路径
|
||||||
|
wineServer = None
|
||||||
|
winePath = wine[o1.currentText()]
|
||||||
|
winePath = winePath.replace(f"bash '{programPath}/WineLib/run.sh'", "").strip()
|
||||||
|
# 判断类似 xxx-server 的 WineServer
|
||||||
|
if not os.system(f"{winePath}-server") >> 8:
|
||||||
|
wineServer = f"{winePath}-server"
|
||||||
|
# 判断类似 deepin-wine6-stable 的 WineServer
|
||||||
|
elif os.path.exists(f"/opt/{winePath}/bin/wineserver"):
|
||||||
|
wineServer = f"/opt/{winePath}/bin/wineserver"
|
||||||
|
elif os.path.exists(winePath):
|
||||||
|
wineServer = os.path.normpath(f"{winePath}/../wineserver")
|
||||||
|
runtime = ""
|
||||||
|
if self.bwrap:
|
||||||
|
runtime = f"'{programPath}/WineLib/run.sh'"
|
||||||
|
winetricksPath = "winetricks"
|
||||||
|
if os.system("which winetricks") >> 8:
|
||||||
|
winetricksPath = f"'{programPath}/winetricks'"
|
||||||
|
print(wineServer)
|
||||||
|
wineProgramP = wine[o1.currentText()].replace(f"bash '{programPath}/WineLib/run.sh'", "").strip()
|
||||||
|
wineProgramP = subprocess.getoutput(f"which {wineProgramP}").strip()
|
||||||
if setting["TerminalOpen"]:
|
if setting["TerminalOpen"]:
|
||||||
res = ""
|
res = ""
|
||||||
# 用终端开应该不用返回输出内容了
|
# 用终端开应该不用返回输出内容了
|
||||||
OpenTerminal(f"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + f" winetricks --gui {wineUsingOption}")
|
if wineServer == None:
|
||||||
|
OpenTerminal(f"WINEPREFIX='{wineBottonPath}' {option} WINE='{wineProgramP}' {runtime} {winetricksPath} --gui {wineUsingOption}")
|
||||||
|
else:
|
||||||
|
OpenTerminal(f"WINEPREFIX='{wineBottonPath}' {option} WINESERVER='{wineServer}' WINE='{wineProgramP}' {runtime} {winetricksPath} --gui {wineUsingOption}")
|
||||||
#res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + f" winetricks --gui {wineUsingOption}\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
#res = subprocess.Popen([f"'{programPath}/launch.sh' deepin-terminal -C \"WINEPREFIX='{wineBottonPath}' {option} WINE=" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + f" winetricks --gui {wineUsingOption}\" --keep-open"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
else:
|
else:
|
||||||
res = subprocess.Popen([f"WINEPREFIX='{wineBottonPath}' {option} WINE='" + subprocess.getoutput(f"which {wine[o1.currentText()]}").replace(" ", "").replace("\n", "") + "' winetricks --gui"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
if wineServer == None:
|
||||||
|
res = subprocess.Popen([f"WINEPREFIX='{wineBottonPath}' {option} WINE='{wineProgramP}' {runtime} {winetricksPath} --gui"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
|
else:
|
||||||
|
res = subprocess.Popen([f"WINEPREFIX='{wineBottonPath}' {option} WINESERVER='{wineServer}' WINE='{wineProgramP}' {runtime} {winetricksPath} --gui"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
# 实时读取程序返回
|
# 实时读取程序返回
|
||||||
while res.poll() is None:
|
while res.poll() is None:
|
||||||
try:
|
try:
|
||||||
@@ -831,6 +869,24 @@ class RunWinetricksThread(QtCore.QThread):
|
|||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
|
|
||||||
runWinetricks = None
|
runWinetricks = None
|
||||||
|
def RunWinetricksWithWineLib():
|
||||||
|
global runWinetricks
|
||||||
|
DisableButton(True)
|
||||||
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 UOS exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 UOS box86 的 deepin-wine6-stable":
|
||||||
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and not o1.currentText() in untipsWine:
|
||||||
|
DisableButton(False)
|
||||||
|
return
|
||||||
|
if o1.currentText() == "基于 UOS box86 的 deepin-wine6-stable" or o1.currentText() == "基于 UOS exagear 的 deepin-wine6-stable":
|
||||||
|
if not os.path.exists(f"{programPath}/dlls-arm"):
|
||||||
|
if os.system(f"7z x -y \"{programPath}/dlls-arm.7z\" -o\"{programPath}\""):
|
||||||
|
QtWidgets.QMessageBox.critical(widget, "错误", "无法解压资源")
|
||||||
|
return
|
||||||
|
os.remove(f"{programPath}/dlls-arm.7z")
|
||||||
|
returnText.setText("")
|
||||||
|
runWinetricks = RunWinetricksThread(False)
|
||||||
|
runWinetricks.signal.connect(QT.ShowWineReturn)
|
||||||
|
runWinetricks.start()
|
||||||
|
|
||||||
def RunWinetricks():
|
def RunWinetricks():
|
||||||
global runWinetricks
|
global runWinetricks
|
||||||
DisableButton(True)
|
DisableButton(True)
|
||||||
@@ -845,7 +901,7 @@ def RunWinetricks():
|
|||||||
return
|
return
|
||||||
os.remove(f"{programPath}/dlls-arm.7z")
|
os.remove(f"{programPath}/dlls-arm.7z")
|
||||||
returnText.setText("")
|
returnText.setText("")
|
||||||
runWinetricks = RunWinetricksThread()
|
runWinetricks = RunWinetricksThread(False)
|
||||||
runWinetricks.signal.connect(QT.ShowWineReturn)
|
runWinetricks.signal.connect(QT.ShowWineReturn)
|
||||||
runWinetricks.start()
|
runWinetricks.start()
|
||||||
|
|
||||||
@@ -1691,6 +1747,7 @@ class ProgramSetting():
|
|||||||
autoPath = None
|
autoPath = None
|
||||||
qemuUnmountHome = None
|
qemuUnmountHome = None
|
||||||
chineseLanguage = None
|
chineseLanguage = None
|
||||||
|
fontSize = None
|
||||||
def ShowWindow():
|
def ShowWindow():
|
||||||
ProgramSetting.message = QtWidgets.QMainWindow()
|
ProgramSetting.message = QtWidgets.QMainWindow()
|
||||||
widget = QtWidgets.QWidget()
|
widget = QtWidgets.QWidget()
|
||||||
@@ -1709,6 +1766,7 @@ class ProgramSetting():
|
|||||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "自动根据EXE名称生成路径:")), 11, 0, 1, 1)
|
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "自动根据EXE名称生成路径:")), 11, 0, 1, 1)
|
||||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "Qemu + Chroot 挂载用户目录:")), 12, 0, 1, 1)
|
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "Qemu + Chroot 挂载用户目录:")), 12, 0, 1, 1)
|
||||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "程序翻译:")), 13, 0, 1, 1)
|
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "程序翻译:")), 13, 0, 1, 1)
|
||||||
|
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "字体缩小比例(数值越大字体越小,默认为 1):")), 14, 0, 1, 1)
|
||||||
ProgramSetting.wineBottonA = QtWidgets.QComboBox()
|
ProgramSetting.wineBottonA = QtWidgets.QComboBox()
|
||||||
ProgramSetting.wineDebug = QtWidgets.QCheckBox(transla.transe("U", "开启 DEBUG 输出"))
|
ProgramSetting.wineDebug = QtWidgets.QCheckBox(transla.transe("U", "开启 DEBUG 输出"))
|
||||||
ProgramSetting.defultWine = QtWidgets.QComboBox()
|
ProgramSetting.defultWine = QtWidgets.QComboBox()
|
||||||
@@ -1731,6 +1789,7 @@ class ProgramSetting():
|
|||||||
ProgramSetting.autoPath = QtWidgets.QCheckBox(transla.transe("U", "自动根据文件名生成容器路径(开启后必须通过修改默认wine容器路径才可指定其它路径,重启程序后生效)"))
|
ProgramSetting.autoPath = QtWidgets.QCheckBox(transla.transe("U", "自动根据文件名生成容器路径(开启后必须通过修改默认wine容器路径才可指定其它路径,重启程序后生效)"))
|
||||||
ProgramSetting.qemuUnmountHome = QtWidgets.QCheckBox(transla.transe("U", "使用 Qemu + Chroot 时不挂载用户目录并与系统隔离(修改后重启操作系统生效)"))
|
ProgramSetting.qemuUnmountHome = QtWidgets.QCheckBox(transla.transe("U", "使用 Qemu + Chroot 时不挂载用户目录并与系统隔离(修改后重启操作系统生效)"))
|
||||||
ProgramSetting.chineseLanguage = QtWidgets.QCheckBox(transla.transe("U", "禁用程序界面翻译"))
|
ProgramSetting.chineseLanguage = QtWidgets.QCheckBox(transla.transe("U", "禁用程序界面翻译"))
|
||||||
|
ProgramSetting.fontSize = QtWidgets.QDoubleSpinBox()
|
||||||
ProgramSetting.wineBottonA.addItems(["Auto", "win32", "win64"])
|
ProgramSetting.wineBottonA.addItems(["Auto", "win32", "win64"])
|
||||||
ProgramSetting.wineBottonA.setCurrentText(setting["Architecture"])
|
ProgramSetting.wineBottonA.setCurrentText(setting["Architecture"])
|
||||||
ProgramSetting.wineDebug.setChecked(setting["Debug"])
|
ProgramSetting.wineDebug.setChecked(setting["Debug"])
|
||||||
@@ -1746,6 +1805,7 @@ class ProgramSetting():
|
|||||||
ProgramSetting.autoPath.setChecked(setting["AutoPath"])
|
ProgramSetting.autoPath.setChecked(setting["AutoPath"])
|
||||||
ProgramSetting.qemuUnmountHome.setChecked(setting["QemuUnMountHome"])
|
ProgramSetting.qemuUnmountHome.setChecked(setting["QemuUnMountHome"])
|
||||||
ProgramSetting.chineseLanguage.setChecked(setting["Chinese"])
|
ProgramSetting.chineseLanguage.setChecked(setting["Chinese"])
|
||||||
|
ProgramSetting.fontSize.setValue(setting["FontSize"])
|
||||||
# QemuUnMountHome
|
# QemuUnMountHome
|
||||||
widgetLayout.addWidget(ProgramSetting.wineBottonA, 0, 1, 1, 1)
|
widgetLayout.addWidget(ProgramSetting.wineBottonA, 0, 1, 1, 1)
|
||||||
widgetLayout.addWidget(ProgramSetting.wineDebug, 1, 1, 1, 1)
|
widgetLayout.addWidget(ProgramSetting.wineDebug, 1, 1, 1, 1)
|
||||||
@@ -1763,7 +1823,8 @@ class ProgramSetting():
|
|||||||
widgetLayout.addWidget(ProgramSetting.autoPath, 11, 1, 1, 2)
|
widgetLayout.addWidget(ProgramSetting.autoPath, 11, 1, 1, 2)
|
||||||
widgetLayout.addWidget(ProgramSetting.qemuUnmountHome, 12, 1, 1, 2)
|
widgetLayout.addWidget(ProgramSetting.qemuUnmountHome, 12, 1, 1, 2)
|
||||||
widgetLayout.addWidget(ProgramSetting.chineseLanguage, 13, 1, 1, 2)
|
widgetLayout.addWidget(ProgramSetting.chineseLanguage, 13, 1, 1, 2)
|
||||||
widgetLayout.addWidget(save, 14, 2, 1, 1)
|
widgetLayout.addWidget(ProgramSetting.fontSize, 14, 1, 1, 2)
|
||||||
|
widgetLayout.addWidget(save, 15, 2, 1, 1)
|
||||||
widget.setLayout(widgetLayout)
|
widget.setLayout(widgetLayout)
|
||||||
ProgramSetting.message.setCentralWidget(widget)
|
ProgramSetting.message.setCentralWidget(widget)
|
||||||
ProgramSetting.message.setWindowIcon(QtGui.QIcon(iconPath))
|
ProgramSetting.message.setWindowIcon(QtGui.QIcon(iconPath))
|
||||||
@@ -1795,6 +1856,7 @@ class ProgramSetting():
|
|||||||
setting["AutoPath"] = ProgramSetting.autoPath.isChecked()
|
setting["AutoPath"] = ProgramSetting.autoPath.isChecked()
|
||||||
setting["QemuUnMountHome"] = ProgramSetting.qemuUnmountHome.isChecked()
|
setting["QemuUnMountHome"] = ProgramSetting.qemuUnmountHome.isChecked()
|
||||||
setting["Chinese"] = ProgramSetting.chineseLanguage.isChecked()
|
setting["Chinese"] = ProgramSetting.chineseLanguage.isChecked()
|
||||||
|
setting["FontSize"] = ProgramSetting.fontSize.value()
|
||||||
try:
|
try:
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineSetting.json", json.dumps(setting))
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineSetting.json", json.dumps(setting))
|
||||||
except:
|
except:
|
||||||
@@ -2174,25 +2236,7 @@ def TransLog():
|
|||||||
###########################
|
###########################
|
||||||
# 加载配置
|
# 加载配置
|
||||||
###########################
|
###########################
|
||||||
defultProgramList = {
|
|
||||||
"Architecture": "Auto",
|
|
||||||
"Debug": True,
|
|
||||||
"DefultWine": "deepin-wine6 stable",
|
|
||||||
"DefultBotton" : get_home() + "/.wine",
|
|
||||||
"TerminalOpen": False,
|
|
||||||
"WineOption": "",
|
|
||||||
"WineBottonDifferent": False,
|
|
||||||
"CenterWindow": False,
|
|
||||||
"Theme": "",
|
|
||||||
"MonoGeckoInstaller": False,
|
|
||||||
"AutoWine": True,
|
|
||||||
"RuntimeCache": True,
|
|
||||||
"MustRead": False,
|
|
||||||
"BuildByBottleName": False,
|
|
||||||
"AutoPath": False,
|
|
||||||
"QemuUnMountHome": False,
|
|
||||||
"Chinese": True
|
|
||||||
}
|
|
||||||
if not os.path.exists(get_home() + "/.config/"): # 如果没有配置文件夹
|
if not os.path.exists(get_home() + "/.config/"): # 如果没有配置文件夹
|
||||||
os.mkdir(get_home() + "/.config/") # 创建配置文件夹
|
os.mkdir(get_home() + "/.config/") # 创建配置文件夹
|
||||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
||||||
@@ -2234,9 +2278,12 @@ def CheckWine():
|
|||||||
"基于 UOS exagear 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.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 ",
|
"基于 UOS exagear 的 deepin-wine6-stable": f"WINEPREDLL='{programPath}/dlls-arm' WINEDLLPATH=/opt/deepin-wine6-stable/lib /opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.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",
|
"使用 Flatpak 安装的 Wine": "flatpak run org.winehq.Wine",
|
||||||
"deepin-wine6 stable": "deepin-wine6-stable",
|
"deepin-wine6 stable": "deepin-wine6-stable",
|
||||||
|
"deepin-wine6-vannila": "deepin-wine6-vannila",
|
||||||
"deepin-wine5 stable": "deepin-wine5-stable",
|
"deepin-wine5 stable": "deepin-wine5-stable",
|
||||||
|
"spark-wine": "spark-wine",
|
||||||
"spark-wine7-devel": "spark-wine7-devel",
|
"spark-wine7-devel": "spark-wine7-devel",
|
||||||
"spark-wine8": "spark-wine8",
|
"spark-wine8": "spark-wine8",
|
||||||
|
"spark-wine8-wow": "spark-wine8-wow",
|
||||||
"deepin-wine": "deepin-wine",
|
"deepin-wine": "deepin-wine",
|
||||||
"deepin-wine5": "deepin-wine5",
|
"deepin-wine5": "deepin-wine5",
|
||||||
"wine": "wine",
|
"wine": "wine",
|
||||||
@@ -2493,45 +2540,29 @@ exe路径\' 参数 \'
|
|||||||
即可(单引号需要输入);
|
即可(单引号需要输入);
|
||||||
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
||||||
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
||||||
7、对于非 X86 的用户来说,请不要使用本程序自带的 Wine 安装程序和 Windows 虚拟机安装功能(检测到为非 X86 架构会自动禁用);
|
7、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;''')
|
||||||
8、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;
|
updateThingsString = transla.transe("U", '''<b>3.5.0 更新内容:</b>
|
||||||
9、在使用 linglong 包的 Wine 应用时,必须安装至少一个 linglong 的使用 Wine 软件包才会出现该选项,
|
※1、虚拟机工具支持 kvm 检测
|
||||||
而程序识别到的 Wine 是按 linglong 的使用 Wine 软件包名的字母排序第一个的 Wine,且生成的容器不在用户目录下,而是在容器的用户目录下(~/.deepinwine、/tmp、桌面、下载、文档等被映射的目录除外),
|
※2、修改虚拟机工具提示文本,新增对 UOS 3a4000 用户无法正常使用 Qemu 的解决方案
|
||||||
同理需要运行的 EXE 也必须在被映射的目录内;
|
※3、在主界面点击“安装”按钮后自动切换至帮助页面
|
||||||
10、如果是使用 Deepin 23 的 Wine 安装脚本,请切记——安装过程会临时添加 Deepin 20 的 apt 源,不要中断安装以及
|
※4、新增虚拟机日志输出和读取功能
|
||||||
<b>千万不要中断后不删除源的情况下 apt upgrade !!!</b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可
|
※5、新增Qemu测试测试功能
|
||||||
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
|
※6、虚拟机工具支持安装/运行 arm32、arm64 架构的系统
|
||||||
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
|
※7、修复虚拟机工具在系统版本选择第 5 项及以后出现不会挂载 ISO 的问题(使用 Qemu 的情况下)
|
||||||
updateThingsString = transla.transe("U", '''<b>3.3.0.1:</b>
|
※8、修复简易打包器无法打开的问题 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I85F9M
|
||||||
※1、修复运行器打开主界面不进行任何操作但 CPU 占用率过高的问题
|
※9、生态适配脚本打包器支持正确根据打包结果显示打包成功/失败 https://gitee.com/gfdgd-xi/deep-wine-runner/issues/I7D83Z
|
||||||
※2、修复运行器运行器(局部)无法正常移除的问题
|
10、生态适配脚本打包器设置使用 xz 格式打包 deb
|
||||||
|
11、新增 ace 包
|
||||||
<b>3.0.0.0:</b>
|
12、虚拟机工具支持强制关闭 VirtualBox/Qemu,并增加了对 Windows 7 安装脚本的检测
|
||||||
※1、简易打包器支持选择 Wine 版本以及修改打包生成的 deb 包的架构为 all;
|
13、新增 lat 翻译器安装选项''')
|
||||||
※2、修改容器自动配置脚本的 Gitlink 源为 Gitee 源
|
|
||||||
※3、在安装更多 Wine 处安装 Wine 后主窗口 Wine 版本下拉框自动更新
|
|
||||||
※4、设置打包器在 Ubuntu 依旧打包 xz 格式的 deb 包
|
|
||||||
※5、修复 Wine 简易打包器 control 文件 Installed-Size 格式不规范的问题
|
|
||||||
※6、更换 Box86 源并支持安装 Box64(如果为 aarch64 架构)
|
|
||||||
※7、新增 Wine 自建源(支持 Debian10、Deepin20)
|
|
||||||
※8、修改 WineHQ 安装器使其支持选择国内清华大学镜像源或 WineHQ 官方源
|
|
||||||
※9、新增 Visual FoxPro 安装器
|
|
||||||
※10、新增安装局部运行库以解决部分低版本系统运行高版本 Wine 的问题且不与其他运行库和兼容层冲突
|
|
||||||
※11、支持调用原版的 Exagear 以及 Qemu User(i386、x86_64) 运行 Wine
|
|
||||||
12、新增自动构建:https://github.com/gfdgd-xi/deep-wine-runner/actions/workflows/auto-building.yml(只供尝鲜)
|
|
||||||
13、新增 Wine 日构建(在“安装更多 Wine”处可以获取,目前有 i386、amd64、i386+amd64、amd64+wow64 mode、aarch64)
|
|
||||||
14、优化容器清理脚本
|
|
||||||
15、修复部分组件没完全换源的问题,部分组件支持自动换可用源''')
|
|
||||||
for i in information["Thank"]:
|
for i in information["Thank"]:
|
||||||
thankText += f"{i}\n"
|
thankText += f"{i}\n"
|
||||||
updateTime = "2023年07月25日"
|
updateTime = "2023年11月17日"
|
||||||
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
|
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。</p>
|
||||||
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。</p>
|
<p>它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。</p>
|
||||||
<pre>
|
<p>而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。</p>
|
||||||
|
<p>且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式</p>
|
||||||
一个图形化了如下命令的程序(最简单格式)
|
<pre>""")
|
||||||
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
|
||||||
让你可以简易方便的使用 wine""")
|
|
||||||
about = f'''<style>
|
about = f'''<style>
|
||||||
a:link, a:active {{
|
a:link, a:active {{
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -2545,6 +2576,7 @@ a:link, a:active {{
|
|||||||
安装包构建时间:{information['Time']}
|
安装包构建时间:{information['Time']}
|
||||||
Qt 版本:{QtCore.qVersion()}
|
Qt 版本:{QtCore.qVersion()}
|
||||||
程序官网:{programUrl}
|
程序官网:{programUrl}
|
||||||
|
<b>Wine 运行器 QQ 交流群:762985460</b>
|
||||||
当前程序占用体积:@programSize@MB</pre>
|
当前程序占用体积:@programSize@MB</pre>
|
||||||
<p>本程序依照 GPLV3 协议开源</p>
|
<p>本程序依照 GPLV3 协议开源</p>
|
||||||
<hr>
|
<hr>
|
||||||
@@ -2600,6 +2632,7 @@ except:
|
|||||||
# Qt 窗口
|
# Qt 窗口
|
||||||
app = QtWidgets.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
window = QtWidgets.QMainWindow()
|
window = QtWidgets.QMainWindow()
|
||||||
|
defaultFont = app.font()
|
||||||
window.setWindowTitle(title)
|
window.setWindowTitle(title)
|
||||||
widget = QtWidgets.QWidget()
|
widget = QtWidgets.QWidget()
|
||||||
window.setCentralWidget(widget)
|
window.setCentralWidget(widget)
|
||||||
@@ -2703,7 +2736,7 @@ button_r_6 = QtWidgets.QPushButton(transla.transe("U", "RegShot"))
|
|||||||
button_r_6.clicked.connect(lambda: RunWineProgram(f"{programPath}/RegShot/regshot.exe"))
|
button_r_6.clicked.connect(lambda: RunWineProgram(f"{programPath}/RegShot/regshot.exe"))
|
||||||
programManager.addWidget(button_r_6, 3, 4, 1, 1)
|
programManager.addWidget(button_r_6, 3, 4, 1, 1)
|
||||||
sparkWineSetting = QtWidgets.QPushButton(transla.transe("U", "星火wine配置"))
|
sparkWineSetting = QtWidgets.QPushButton(transla.transe("U", "星火wine配置"))
|
||||||
sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["/opt/durapps/spark-dwine-helper/spark-dwine-helper-settings/settings.sh"]).start())
|
sparkWineSetting.clicked.connect(lambda: threading.Thread(target=os.system, args=["bash /opt/durapps/spark-dwine-helper/spark-dwine-helper-settings/settings.sh"]).start())
|
||||||
programManager.addWidget(sparkWineSetting, 3, 6, 1, 1)
|
programManager.addWidget(sparkWineSetting, 3, 6, 1, 1)
|
||||||
wineAutoConfig = QtWidgets.QPushButton(transla.transe("U", "自动/手动配置 Wine 容器"))
|
wineAutoConfig = QtWidgets.QPushButton(transla.transe("U", "自动/手动配置 Wine 容器"))
|
||||||
wineAutoConfig.clicked.connect(WineBottonAutoConfig)
|
wineAutoConfig.clicked.connect(WineBottonAutoConfig)
|
||||||
@@ -2762,13 +2795,18 @@ installWineOnDeepin23 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Funct
|
|||||||
installWineOnDeepin23Alpha = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23A.png"), transla.transe("U", "安装 wine(只限Deepin23 Alpha)"))
|
installWineOnDeepin23Alpha = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine23A.png"), transla.transe("U", "安装 wine(只限Deepin23 Alpha)"))
|
||||||
installWineHQOrg = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(官方源)"))
|
installWineHQOrg = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(官方源)"))
|
||||||
installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(国内清华大学镜像源)"))
|
installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "安装 WineHQ(国内清华大学镜像源)"))
|
||||||
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine"))
|
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine(Wine 下载工具,推荐)"))
|
||||||
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
|
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
|
||||||
installBox86CN = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(国内源)"))
|
installBox86CN = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64 日构建(国内源)"))
|
||||||
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(国外 Github 源)"))
|
installBox86 = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64 日构建(国外 Github 源)"))
|
||||||
|
installBox86Own = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(使用自建源,支持 riscv64)"))
|
||||||
|
installLat = QtWidgets.QAction(transla.transe("U", "安装 lat(只限 Loongarch64 架构)"))
|
||||||
addWineDebMirrorForDeepin20 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "添加 Wine 运行器源以安装较新版本的 WineHQ(支持 Deepin20/Debian10)"))
|
addWineDebMirrorForDeepin20 = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine.png"), transla.transe("U", "添加 Wine 运行器源以安装较新版本的 WineHQ(支持 Deepin20/Debian10)"))
|
||||||
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), transla.transe("U", "设置程序(&S)"))
|
p2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("settings"), transla.transe("U", "设置程序(&S)"))
|
||||||
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
|
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
|
||||||
|
setMiniFont = QtWidgets.QAction(transla.transe("U", "临时设置小字体"))
|
||||||
|
setTinyFont = QtWidgets.QAction(transla.transe("U", "临时设置很小的字体"))
|
||||||
|
setDefaultFont = QtWidgets.QAction(transla.transe("U", "临时设置默认字体"))
|
||||||
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
|
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
|
||||||
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件缓存"))
|
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件缓存"))
|
||||||
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "删除程序组件"))
|
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "删除程序组件"))
|
||||||
@@ -2783,6 +2821,12 @@ programmenu.addAction(installMoreWine)
|
|||||||
programmenu.addAction(downloadChrootBottle)
|
programmenu.addAction(downloadChrootBottle)
|
||||||
programmenu.addAction(installBox86CN)
|
programmenu.addAction(installBox86CN)
|
||||||
programmenu.addAction(installBox86)
|
programmenu.addAction(installBox86)
|
||||||
|
programmenu.addAction(installBox86Own)
|
||||||
|
programmenu.addAction(installLat)
|
||||||
|
#programmenu.addSeparator()
|
||||||
|
#programmenu.addAction(setMiniFont)
|
||||||
|
#programmenu.addAction(setTinyFont)
|
||||||
|
#programmenu.addAction(setDefaultFont)
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p2)
|
programmenu.addAction(p2)
|
||||||
programmenu.addAction(enabledAll)
|
programmenu.addAction(enabledAll)
|
||||||
@@ -2792,11 +2836,15 @@ programmenu.addAction(cleanCache)
|
|||||||
programmenu.addAction(cleanProgramUnuse)
|
programmenu.addAction(cleanProgramUnuse)
|
||||||
programmenu.addSeparator()
|
programmenu.addSeparator()
|
||||||
programmenu.addAction(p4)
|
programmenu.addAction(p4)
|
||||||
|
setDefaultFont.triggered.connect(lambda: SetFont(1))
|
||||||
|
setMiniFont.triggered.connect(lambda: SetFont(1.2))
|
||||||
|
setTinyFont.triggered.connect(lambda: SetFont(1.6))
|
||||||
p1.triggered.connect(InstallWine)
|
p1.triggered.connect(InstallWine)
|
||||||
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
||||||
installWineOnDeepin23Alpha.triggered.connect(InstallWineOnDeepin23Alpha)
|
installWineOnDeepin23Alpha.triggered.connect(InstallWineOnDeepin23Alpha)
|
||||||
installWineHQ.triggered.connect(InstallWineHQ)
|
installWineHQ.triggered.connect(InstallWineHQ)
|
||||||
installWineHQOrg.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallNewWineHQOrg.sh"]).start())
|
installWineHQOrg.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallNewWineHQOrg.sh"]).start())
|
||||||
|
installLat.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"{programPath}/InstallLat.sh"]).start())
|
||||||
addWineDebMirrorForDeepin20.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/AddWineDebMirrorForDeepin20.sh'"]).start())
|
addWineDebMirrorForDeepin20.triggered.connect(lambda: threading.Thread(target=OpenTerminal, args=[f"bash '{programPath}/AddWineDebMirrorForDeepin20.sh'"]).start())
|
||||||
def InstallMoreWine():
|
def InstallMoreWine():
|
||||||
os.system(f"'{programPath}/wine/installwine'")
|
os.system(f"'{programPath}/wine/installwine'")
|
||||||
@@ -2812,8 +2860,9 @@ installMoreWine.triggered.connect(InstallMoreWine)
|
|||||||
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
|
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
|
||||||
p2.triggered.connect(ProgramSetting.ShowWindow)
|
p2.triggered.connect(ProgramSetting.ShowWindow)
|
||||||
enabledAll.triggered.connect(lambda: DisableButton(False))
|
enabledAll.triggered.connect(lambda: DisableButton(False))
|
||||||
installBox86CN.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86-cn.sh'"))
|
installBox86CN.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86-cn.sh'"))
|
||||||
installBox86.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86.sh'"))
|
installBox86.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86.sh'"))
|
||||||
|
installBox86Own.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86-own.sh'"))
|
||||||
p3.triggered.connect(CleanProgramHistory)
|
p3.triggered.connect(CleanProgramHistory)
|
||||||
cleanCache.triggered.connect(CleanProgramCache)
|
cleanCache.triggered.connect(CleanProgramCache)
|
||||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
cleanProgramUnuse.triggered.connect(CleanProgram)
|
||||||
@@ -2888,11 +2937,14 @@ w8 = QtWidgets.QAction(transla.transe("U", "设置 run_v3.sh 的文管为 Deepin
|
|||||||
w9 = QtWidgets.QAction(transla.transe("U", "设置 run_v3.sh 的文管为 Wine 默认文管"))
|
w9 = QtWidgets.QAction(transla.transe("U", "设置 run_v3.sh 的文管为 Wine 默认文管"))
|
||||||
w10 = QtWidgets.QAction(transla.transe("U", "重新安装 deepin-wine-helper"))
|
w10 = QtWidgets.QAction(transla.transe("U", "重新安装 deepin-wine-helper"))
|
||||||
w11 = QtWidgets.QAction(QtGui.QIcon.fromTheme("winetricks"), transla.transe("U", "使用winetricks打开指定容器"))
|
w11 = QtWidgets.QAction(QtGui.QIcon.fromTheme("winetricks"), transla.transe("U", "使用winetricks打开指定容器"))
|
||||||
|
w11WithWineLib = QtWidgets.QAction(QtGui.QIcon.fromTheme("winetricks"), transla.transe("U", "使用winetricks打开指定容器(使用Wine运行器运行库)"))
|
||||||
|
w11WithWineLib.setDisabled(True)
|
||||||
settingRunV3Sh.addAction(w8)
|
settingRunV3Sh.addAction(w8)
|
||||||
settingRunV3Sh.addAction(w9)
|
settingRunV3Sh.addAction(w9)
|
||||||
settingRunV3Sh.addAction(w10)
|
settingRunV3Sh.addAction(w10)
|
||||||
wineOption.addSeparator()
|
wineOption.addSeparator()
|
||||||
wineOption.addAction(w11)
|
wineOption.addAction(w11)
|
||||||
|
#wineOption.addAction(w11WithWineLib)
|
||||||
wineOption.addSeparator()
|
wineOption.addSeparator()
|
||||||
optionCheckDemo = wineOption.addMenu(transla.transe("U", "组件功能测试"))
|
optionCheckDemo = wineOption.addMenu(transla.transe("U", "组件功能测试"))
|
||||||
vbDemo = QtWidgets.QAction(transla.transe("U", "测试 Visual Basic 6 程序"))
|
vbDemo = QtWidgets.QAction(transla.transe("U", "测试 Visual Basic 6 程序"))
|
||||||
@@ -2969,6 +3021,7 @@ w8.triggered.connect(SetDeepinFileDialogDeepin)
|
|||||||
w9.triggered.connect(SetDeepinFileDialogDefult)
|
w9.triggered.connect(SetDeepinFileDialogDefult)
|
||||||
w10.triggered.connect(SetDeepinFileDialogRecovery)
|
w10.triggered.connect(SetDeepinFileDialogRecovery)
|
||||||
w11.triggered.connect(lambda: RunWinetricks())
|
w11.triggered.connect(lambda: RunWinetricks())
|
||||||
|
w11WithWineLib.triggered.connect(lambda: RunWinetricksWithWineLib())
|
||||||
wm1_1.triggered.connect(lambda: threading.Thread(target=InstallNetFramework).start())
|
wm1_1.triggered.connect(lambda: threading.Thread(target=InstallNetFramework).start())
|
||||||
wm1_2.triggered.connect(lambda: threading.Thread(target=InstallVisualStudioCPlusPlus).start())
|
wm1_2.triggered.connect(lambda: threading.Thread(target=InstallVisualStudioCPlusPlus).start())
|
||||||
wm1_8.triggered.connect(lambda: threading.Thread(target=InstallFoxPro).start())
|
wm1_8.triggered.connect(lambda: threading.Thread(target=InstallFoxPro).start())
|
||||||
@@ -3035,12 +3088,15 @@ safeWebsize = menu.addMenu(transla.transe("U", "云沙箱(&C)"))
|
|||||||
s1 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "360 沙箱云"))
|
s1 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "360 沙箱云"))
|
||||||
s2 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "微步云沙箱"))
|
s2 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "微步云沙箱"))
|
||||||
s3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "VIRUSTOTAL"))
|
s3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "VIRUSTOTAL"))
|
||||||
|
s4 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(9), transla.transe("U", "计算机病毒防御技术国家工程实验室"))
|
||||||
safeWebsize.addAction(s1)
|
safeWebsize.addAction(s1)
|
||||||
safeWebsize.addAction(s2)
|
safeWebsize.addAction(s2)
|
||||||
safeWebsize.addAction(s3)
|
safeWebsize.addAction(s3)
|
||||||
|
safeWebsize.addAction(s4)
|
||||||
s1.triggered.connect(lambda: webbrowser.open_new_tab("https://ata.360.net/"))
|
s1.triggered.connect(lambda: webbrowser.open_new_tab("https://ata.360.net/"))
|
||||||
s2.triggered.connect(lambda: webbrowser.open_new_tab("https://s.threatbook.cn/"))
|
s2.triggered.connect(lambda: webbrowser.open_new_tab("https://s.threatbook.cn/"))
|
||||||
s3.triggered.connect(lambda: webbrowser.open_new_tab("https://www.virustotal.com/"))
|
s3.triggered.connect(lambda: webbrowser.open_new_tab("https://www.virustotal.com/"))
|
||||||
|
s4.triggered.connect(lambda: webbrowser.open_new_tab("https://cloud.vdnel.cn/"))
|
||||||
|
|
||||||
log = menu.addMenu(transla.transe("U", "日志(&L)"))
|
log = menu.addMenu(transla.transe("U", "日志(&L)"))
|
||||||
getDllInfo = QtWidgets.QAction(transla.transe("U", "查询 Dll"))
|
getDllInfo = QtWidgets.QAction(transla.transe("U", "查询 Dll"))
|
||||||
@@ -3095,6 +3151,7 @@ if os.path.exists(f"{programPath}/WineLib/usr"):
|
|||||||
installRunnerLib.setDisabled(True)
|
installRunnerLib.setDisabled(True)
|
||||||
removeRunnerLib.setEnabled(True)
|
removeRunnerLib.setEnabled(True)
|
||||||
diyRunnerLib.setEnabled(True)
|
diyRunnerLib.setEnabled(True)
|
||||||
|
w11WithWineLib.setEnabled(True)
|
||||||
statusRunnerLib.setText("当前状态:已安装")
|
statusRunnerLib.setText("当前状态:已安装")
|
||||||
libPathList = []
|
libPathList = []
|
||||||
mapLink = []
|
mapLink = []
|
||||||
@@ -3156,6 +3213,11 @@ if len(qemuBottleList) >= 1:
|
|||||||
configMenu.triggered.connect(ConfigQemu)
|
configMenu.triggered.connect(ConfigQemu)
|
||||||
print(qemuBottleList)
|
print(qemuBottleList)
|
||||||
|
|
||||||
|
videoHelp = menu.addMenu(transla.transe("U", "视频教程(&V)"))
|
||||||
|
videoHelpAction = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "视频教程"))
|
||||||
|
videoHelpAction.triggered.connect(lambda: webbrowser.open_new_tab("https://space.bilibili.com/695814694/channel/collectiondetail?sid=1610353"))
|
||||||
|
videoHelp.addAction(videoHelpAction)
|
||||||
|
|
||||||
help = menu.addMenu(transla.transe("U", "帮助(&H)"))
|
help = menu.addMenu(transla.transe("U", "帮助(&H)"))
|
||||||
runStatusWebSize = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "查询程序在 Wine 的运行情况"))
|
runStatusWebSize = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "查询程序在 Wine 的运行情况"))
|
||||||
h1 = help.addMenu(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "程序官网"))
|
h1 = help.addMenu(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "程序官网"))
|
||||||
@@ -3191,10 +3253,7 @@ help.addSeparator()
|
|||||||
wikiHelp = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "程序 Wiki"))
|
wikiHelp = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "程序 Wiki"))
|
||||||
help.addAction(wikiHelp)
|
help.addAction(wikiHelp)
|
||||||
videoHelp = help.addMenu(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "视频教程"))
|
videoHelp = help.addMenu(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "视频教程"))
|
||||||
easyHelp = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "简易使用教程"))
|
videoHelp.addAction(videoHelpAction)
|
||||||
buildHelp = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(20), transla.transe("U", "打包教程"))
|
|
||||||
videoHelp.addAction(easyHelp)
|
|
||||||
videoHelp.addAction(buildHelp)
|
|
||||||
help.addSeparator()
|
help.addSeparator()
|
||||||
help.addAction(h5)
|
help.addAction(h5)
|
||||||
help.addAction(h6)
|
help.addAction(h6)
|
||||||
@@ -3217,8 +3276,6 @@ h3.triggered.connect(UpdateThings)
|
|||||||
wineRunnerHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://bbs.deepin.org/post/246837"))
|
wineRunnerHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://bbs.deepin.org/post/246837"))
|
||||||
h4.triggered.connect(ThankWindow)
|
h4.triggered.connect(ThankWindow)
|
||||||
wikiHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io/wine-runner-wiki"))
|
wikiHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io/wine-runner-wiki"))
|
||||||
easyHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://www.bilibili.com/video/BV1ma411972Y"))
|
|
||||||
buildHelp.triggered.connect(lambda: webbrowser.open_new_tab("https://www.bilibili.com/video/BV1EU4y1k7zr"))
|
|
||||||
h5.triggered.connect(UpdateWindow.ShowWindow)
|
h5.triggered.connect(UpdateWindow.ShowWindow)
|
||||||
h6.triggered.connect(WineRunnerBugUpload)
|
h6.triggered.connect(WineRunnerBugUpload)
|
||||||
fenUpload.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"python3 '{programPath}/ProgramFen.py'"]).start())
|
fenUpload.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"python3 '{programPath}/ProgramFen.py'"]).start())
|
||||||
@@ -3280,7 +3337,7 @@ if o1.currentText() == "":
|
|||||||
wine["没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"] = "没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"
|
wine["没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"] = "没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"
|
||||||
canUseWine.append("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
canUseWine.append("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||||
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||||
|
SetFont(setting["FontSize"])
|
||||||
# Mini 模式
|
# Mini 模式
|
||||||
# MiniMode(True)
|
# MiniMode(True)
|
||||||
sys.exit(app.exec_())
|
sys.exit(app.exec_())
|
||||||
|
|||||||
53
package-script/DefaultSetting.py
Normal file
53
package-script/DefaultSetting.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# 读取设置单独用一个 py 文件
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import PyQt5.QtGui as QtGui
|
||||||
|
|
||||||
|
# 获取用户主目录
|
||||||
|
def get_home():
|
||||||
|
return os.path.expanduser('~')
|
||||||
|
|
||||||
|
# 读取文本文档
|
||||||
|
def readtxt(path):
|
||||||
|
f = open(path, "r") # 设置文件对象
|
||||||
|
str = f.read() # 获取内容
|
||||||
|
f.close() # 关闭文本对象
|
||||||
|
return str # 返回结果
|
||||||
|
|
||||||
|
defultProgramList = {
|
||||||
|
"Architecture": "Auto",
|
||||||
|
"Debug": True,
|
||||||
|
"DefultWine": "deepin-wine6 stable",
|
||||||
|
"DefultBotton" : get_home() + "/.wine",
|
||||||
|
"TerminalOpen": False,
|
||||||
|
"WineOption": "",
|
||||||
|
"WineBottonDifferent": False,
|
||||||
|
"CenterWindow": False,
|
||||||
|
"Theme": "",
|
||||||
|
"MonoGeckoInstaller": False,
|
||||||
|
"AutoWine": True,
|
||||||
|
"RuntimeCache": True,
|
||||||
|
"MustRead": False,
|
||||||
|
"BuildByBottleName": False,
|
||||||
|
"AutoPath": False,
|
||||||
|
"QemuUnMountHome": False,
|
||||||
|
"Chinese": True,
|
||||||
|
"FontSize": 1
|
||||||
|
}
|
||||||
|
|
||||||
|
def SetFont(app):
|
||||||
|
defaultFont = app.font()
|
||||||
|
size = setting["FontSize"]
|
||||||
|
font = QtGui.QFont(defaultFont)
|
||||||
|
if size == 1:
|
||||||
|
app.setFont(defaultFont)
|
||||||
|
return
|
||||||
|
font.setPixelSize(int(defaultFont.pixelSize() / size))
|
||||||
|
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
|
||||||
@@ -2,24 +2,55 @@
|
|||||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
||||||
|
|
||||||
echo "清理卸载残留"
|
echo "清理卸载残留"
|
||||||
CONTAINER_NAME="@deb_package_name@"
|
BOTTLE_NAME="@public_bottle_name@" #在引号中填写容器名
|
||||||
|
PACK_NAME="@deb_package_name@" #在引号中填写软件包名
|
||||||
|
ACTIVEX_NAME="" #activex相关,若未使用,可不设置
|
||||||
|
MAKE_AUTOSTART="" #如果先前设置了开机自启,则在此处填写1
|
||||||
|
|
||||||
if [ -z $CONTAINER_NAME ];then
|
|
||||||
|
|
||||||
|
### 以下为功能段,若只用于打包则以下内容可不看,只填写上方即可
|
||||||
|
|
||||||
|
make_autostart()
|
||||||
|
{
|
||||||
|
for username in $(ls /home)
|
||||||
|
do
|
||||||
|
echo /home/$username
|
||||||
|
if [ -d "/home/$username/.config/autostart" ]
|
||||||
|
then
|
||||||
|
rm /home/$username/.config/autostart/$PACK_NAME.desktop
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$MAKE_AUTOSTART" ]; then
|
||||||
|
make_autostart
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$ACTIVEX_NAME" ]; then
|
||||||
|
rm /usr/lib/mozilla/plugins/libpipelight-$ACTIVEX_NAME.so
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z $BOTTLE_NAME ];then
|
||||||
echo "W: 没有指定容器,跳过清理容器。请手动前往 ~/.deepinwine/ 下删除"
|
echo "W: 没有指定容器,跳过清理容器。请手动前往 ~/.deepinwine/ 下删除"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -e /opt/deepinwine/tools/kill.sh ];then
|
if [ -e /opt/deepinwine/tools/spark_kill.sh ];then
|
||||||
/opt/deepinwine/tools/kill.sh $CONTAINER_NAME
|
/opt/deepinwine/tools/spark_kill.sh $BOTTLE_NAME
|
||||||
###这里注意,如果没写CONTAINER_NAME,会把QQ杀了
|
###这里注意,如果没写BOTTLE_NAME,会把QQ杀了
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for username in $(ls /home)
|
for username in $(ls /home)
|
||||||
do
|
do
|
||||||
echo /home/$username
|
echo /home/$username
|
||||||
if [ -d /home/$username/.deepinwine/$CONTAINER_NAME ]
|
if [ -d /home/$username/.deepinwine/$BOTTLE_NAME ]
|
||||||
then
|
then
|
||||||
rm -rf /home/$username/.deepinwine/$CONTAINER_NAME
|
rm -rf /home/$username/.deepinwine/$BOTTLE_NAME
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
{
|
{
|
||||||
"Version": "3.3.0.1",
|
"Version": "3.5.0",
|
||||||
"Time": "未知",
|
"Time": "未知",
|
||||||
"Thank": [
|
"Thank": [
|
||||||
|
"感性 @ёжезийлёзйз 进行 Loongarch 架构的测试(旧世界,远程)",
|
||||||
|
"感谢 @run@3a4k 提供 3a4000 测试机器(远程)",
|
||||||
"感谢 RacoonGX 的付出与贡献",
|
"感谢 RacoonGX 的付出与贡献",
|
||||||
"感谢 @Amber 编写的《使用wine运行器打包无安装包的软件》:https://bbs.deepin.org/post/247720",
|
"感谢 @Amber 编写的《使用wine运行器打包无安装包的软件》:https://bbs.deepin.org/post/247720",
|
||||||
"感谢 @豪 提供程序图标",
|
"感谢 @豪 提供程序图标",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user