mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-15 11:32:03 +08:00
Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 |
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 默认有一套配置好的退出事件
|
||||
|
||||
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;
|
||||
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
|
||||
1
Makefile
1
Makefile
@@ -30,6 +30,7 @@ package:
|
||||
cp -rv AllInstall.py 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 DefaultSetting.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 updatekiller.py deb/opt/apps/deepin-wine-runner
|
||||
|
||||
65
README.md
65
README.md
@@ -1,44 +1,23 @@
|
||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||
<h1 align="center">Wine 运行器 3.4.0</h1>
|
||||
<h1 align="center">Wine 运行器 3.4.1</h1>
|
||||
<hr>
|
||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark' alt='star'></img></a>
|
||||
<a href='https://gitee.com/gfdgd-xi/deep-wine-runner/members'><img src='https://gitee.com/gfdgd-xi/deep-wine-runner/badge/fork.svg?theme=dark' alt='fork'></img></a>
|
||||
|
||||
## 介绍
|
||||
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||
此外,它还简化了如下命令,让你可以更简便地使用Wine:
|
||||
```bash
|
||||
env WINEPREFIX=容器路径 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
|
||||
Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。
|
||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
|
||||
而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
|
||||
且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
|
||||
|
||||
11 directories, 6 files
|
||||
```
|
||||
[](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
||||
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程(小白专用)》,链接:https://bbs.deepin.org/post/246837
|
||||
|
||||

|
||||
|
||||
[](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
||||
最后感谢 [@鹤舞白沙](https://bbs.deepin.org/user/227203) 编写的《Wine运行器和Wine打包器傻瓜式使用教程(小白专用)》,链接:https://bbs.deepin.org/post/246837
|
||||
|
||||
打包器视频教程:https://www.bilibili.com/video/BV1Bh4y1Q7nT/
|
||||
Wine 运行器 QQ 交流群:762985460
|
||||
|
||||
## 软件架构
|
||||
理论上支持全架构,如果 Python 能运行的话
|
||||
@@ -136,6 +115,20 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
|
||||

|
||||
|
||||
## 更新日志
|
||||
### 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**
|
||||
|
||||
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
|
||||
@@ -7,7 +7,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -77,7 +77,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -147,7 +147,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -217,7 +217,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -287,7 +287,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -357,7 +357,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -427,7 +427,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -497,7 +497,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -567,7 +567,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -637,7 +637,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -707,7 +707,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -777,7 +777,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -847,7 +847,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -917,7 +917,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -987,7 +987,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -1057,77 +1057,7 @@
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
"-std=gnu++11",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-D_REENTRANT",
|
||||
"-fPIC",
|
||||
"-fsyntax-only",
|
||||
"-m64",
|
||||
"--target=x86_64-linux-gnu",
|
||||
"-DQ_CREATOR_RUN",
|
||||
"-DQT_DEPRECATED_WARNINGS",
|
||||
"-DQT_NO_DEBUG",
|
||||
"-DQT_WIDGETS_LIB",
|
||||
"-DQT_GUI_LIB",
|
||||
"-DQT_NETWORK_LIB",
|
||||
"-DQT_CORE_LIB",
|
||||
"-I",
|
||||
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtNetwork",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
|
||||
"-I",
|
||||
"/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++",
|
||||
"-isystem",
|
||||
"/usr/include/c++/11",
|
||||
"-isystem",
|
||||
"/usr/include/x86_64-linux-gnu/c++/11",
|
||||
"-isystem",
|
||||
"/usr/include/c++/11/backward",
|
||||
"-isystem",
|
||||
"/usr/local/include",
|
||||
"-isystem",
|
||||
"/usr/lib/llvm-13/lib/clang/13.0.1/include",
|
||||
"-isystem",
|
||||
"/usr/include/x86_64-linux-gnu",
|
||||
"-isystem",
|
||||
"/usr/include",
|
||||
"-fmessage-length=0",
|
||||
"-fdiagnostics-show-note-include-stack",
|
||||
"-fretain-comments-from-system-headers",
|
||||
"-fmacro-backtrace-limit=0",
|
||||
"-ferror-limit=1000",
|
||||
"-x",
|
||||
"c++-header",
|
||||
"-Wno-unknown-pragmas",
|
||||
"-Wno-unknown-warning-option",
|
||||
"-Wno-documentation-unknown-command",
|
||||
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
|
||||
],
|
||||
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
|
||||
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
"clang",
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders",
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-OUNQoP/clang-uiheader-OYkbQU",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
@@ -1188,5 +1118,75 @@
|
||||
],
|
||||
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
|
||||
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_qemusetting.h"
|
||||
},
|
||||
{
|
||||
"arguments": [
|
||||
"clang",
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders",
|
||||
"-I",
|
||||
"/usr/share/qtcreator/cplusplus/wrappedQtHeaders/QtCore",
|
||||
"-I",
|
||||
"/tmp/QtCreator-GlmWVk/clang-uiheader-woUjcu",
|
||||
"-nostdinc",
|
||||
"-nostdinc++",
|
||||
"-pipe",
|
||||
"-std=gnu++11",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-D_REENTRANT",
|
||||
"-fPIC",
|
||||
"-fsyntax-only",
|
||||
"-m64",
|
||||
"--target=x86_64-linux-gnu",
|
||||
"-DQ_CREATOR_RUN",
|
||||
"-DQT_DEPRECATED_WARNINGS",
|
||||
"-DQT_NO_DEBUG",
|
||||
"-DQT_WIDGETS_LIB",
|
||||
"-DQT_GUI_LIB",
|
||||
"-DQT_NETWORK_LIB",
|
||||
"-DQT_CORE_LIB",
|
||||
"-I",
|
||||
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtWidgets",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtGui",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtNetwork",
|
||||
"-I",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/QtCore",
|
||||
"-I",
|
||||
"/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++",
|
||||
"-isystem",
|
||||
"/usr/include/c++/11",
|
||||
"-isystem",
|
||||
"/usr/include/x86_64-linux-gnu/c++/11",
|
||||
"-isystem",
|
||||
"/usr/include/c++/11/backward",
|
||||
"-isystem",
|
||||
"/usr/local/include",
|
||||
"-isystem",
|
||||
"/usr/lib/llvm-13/lib/clang/13.0.1/include",
|
||||
"-isystem",
|
||||
"/usr/include/x86_64-linux-gnu",
|
||||
"-isystem",
|
||||
"/usr/include",
|
||||
"-fmessage-length=0",
|
||||
"-fdiagnostics-show-note-include-stack",
|
||||
"-fretain-comments-from-system-headers",
|
||||
"-fmacro-backtrace-limit=0",
|
||||
"-ferror-limit=1000",
|
||||
"-x",
|
||||
"c++-header",
|
||||
"-Wno-unknown-pragmas",
|
||||
"-Wno-unknown-warning-option",
|
||||
"-Wno-documentation-unknown-command",
|
||||
"/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
|
||||
],
|
||||
"directory": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/.qtc_clangd",
|
||||
"file": "/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/ui_mainwindow.h"
|
||||
}
|
||||
]
|
||||
@@ -106,34 +106,65 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
||||
//vbox *box = new vbox("Window");
|
||||
//vbox vm("Windows");
|
||||
qemu vm("Windows");
|
||||
|
||||
bool setISOAlready = 0;
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.Create("Windows7");
|
||||
vm.SetDisplayMemory(32);
|
||||
break;
|
||||
case 1:
|
||||
vm.Create("Windows7_64");
|
||||
vm.SetDisplayMemory(32);
|
||||
break;
|
||||
case 2:
|
||||
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;
|
||||
}
|
||||
vm.CreateDiskControl();
|
||||
//vm.CreateDiskControl("storage_controller_2");
|
||||
vm.CreateDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2", 131072);
|
||||
vm.MountDisk(QDir::homePath() + "/Qemu/Windows/Windows.qcow2");
|
||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
|
||||
break;
|
||||
case 1:
|
||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
|
||||
break;
|
||||
if(!setISOAlready){
|
||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 2);
|
||||
break;
|
||||
case 1:
|
||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
vm.AutoInstall(isoPath);
|
||||
}
|
||||
/*vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
switch (id) {
|
||||
@@ -158,7 +189,6 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
||||
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
||||
//memoryRate(memory, memoryAll, swap, swapAll);
|
||||
vm.SetMemory(memoryAll / 3 / 1024);
|
||||
vm.SetDisplayMemory(32);
|
||||
vm.SetNetBridge(net);
|
||||
vm.EnabledAudio();
|
||||
vm.EnabledClipboardMode();
|
||||
@@ -176,36 +206,67 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
||||
//vbox *box = new vbox("Window");
|
||||
vbox vm("Windows");
|
||||
//qemu vm("Windows");
|
||||
|
||||
bool setISOAlready = 1;
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.Create("Windows7");
|
||||
vm.SetDisplayMemory(32);
|
||||
break;
|
||||
case 1:
|
||||
vm.Create("Windows7_64");
|
||||
vm.SetDisplayMemory(32);
|
||||
break;
|
||||
case 2:
|
||||
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/");
|
||||
dir.mkpath("/home/gfdgd_xi/Qemu/Windows/");
|
||||
vm.CreateDiskControl();
|
||||
//vm.CreateDiskControl("storage_controller_2");
|
||||
vm.CreateDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi", 131072);
|
||||
vm.MountDisk(QDir::homePath() + "/VirtualBox VMs/Windows/Windows.vdi");
|
||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
|
||||
break;
|
||||
if(!setISOAlready){
|
||||
vm.MountISO(isoPath, "storage_controller_1", 0, 1);
|
||||
switch (id) {
|
||||
case 0:
|
||||
vm.MountISO(programPath + "/Windows7X86Auto.iso", "storage_controller_1", 1, 0);
|
||||
break;
|
||||
case 1:
|
||||
vm.MountISO(programPath + "/Windows7X64Auto.iso", "storage_controller_1", 1, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
vm.AutoInstall(isoPath);
|
||||
}
|
||||
|
||||
// 判断 VirtualBox Guest ISO 是否存在
|
||||
@@ -213,8 +274,8 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
||||
if(QFile::exists("/usr/share/virtualbox/VBoxGuestAdditions.iso")){
|
||||
vm.MountISO("/usr/share/virtualbox/VBoxGuestAdditions.iso", "storage_controller_1", 1, 1);
|
||||
}
|
||||
|
||||
vm.SetCPU(get_nprocs(), GetCPUSocket(), GetCPUCore());
|
||||
// VirtualBox 的 CPU 数量设置方法和 Qemu 不一样
|
||||
vm.SetCPU(GetCPUCore(), GetCPUSocket(), GetCPUCore());
|
||||
long memory = 0;
|
||||
long memoryAll = 0;
|
||||
long swap = 0;
|
||||
@@ -222,7 +283,6 @@ buildvbox::buildvbox(QString isoPath, int id, int vm){
|
||||
infoUtils::memoryRate(memory, memoryAll, swap, swapAll);
|
||||
//memoryRate(memory, memoryAll, swap, swapAll);
|
||||
vm.SetMemory(memoryAll / 3 / 1024);
|
||||
vm.SetDisplayMemory(32);
|
||||
vm.SetNetBridge(net);
|
||||
vm.EnabledAudio();
|
||||
vm.EnabledClipboardMode();
|
||||
|
||||
@@ -196,6 +196,15 @@ void MainWindow::on_install_clicked()
|
||||
file.close();
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
if(ui->vmChooser->currentIndex() == 0){
|
||||
QMessageBox::warning(this, "提示", "Qemu 不支持该选项!");
|
||||
return;
|
||||
}
|
||||
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");
|
||||
|
||||
@@ -94,6 +94,26 @@
|
||||
<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>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
|
||||
@@ -133,3 +133,6 @@ int qemu::EnabledUEFI(bool status){
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
int qemu::AutoInstall(QString iso){
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ public:
|
||||
int SetKeyboardPS2();
|
||||
int OpenUSB();
|
||||
int EnabledUEFI(bool status);
|
||||
int AutoInstall(QString iso);
|
||||
private:
|
||||
QString commandOption = "";
|
||||
|
||||
|
||||
@@ -108,3 +108,6 @@ int vbox::EnabledUEFI(bool status){
|
||||
}
|
||||
return system(("\"" + managerPath + "\" modifyvm \"" + name + "\" --firmware=bios").toLatin1());
|
||||
}
|
||||
int vbox::AutoInstall(QString iso){
|
||||
return system(("vboxmanage unattended install '" + name + "' '--iso=" + iso + "'").toLatin1());
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
int SetKeyboardPS2();
|
||||
int OpenUSB();
|
||||
int EnabledUEFI(bool status);
|
||||
|
||||
int AutoInstall(QString iso);
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
@@ -6,6 +6,13 @@ arch = subprocess.getoutput("dpkg --print-architecture").replace(" ", "").replac
|
||||
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}"):
|
||||
os.system(f"{programPath}/VirtualMachine-{arch}")
|
||||
exit()
|
||||
# 只能使用 Qemu User 运行程序
|
||||
if os.path.exists("/usr/lib/x86_64-linux-gnu/") and not os.system("which qemu-x86_64"):
|
||||
os.system(f"qemu-x86_64 '{programPath}/VirtualMachine-x86_64'")
|
||||
|
||||
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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Package: spark-deepin-wine-runner
|
||||
Version: 3.4.0
|
||||
Version: 3.4.1
|
||||
Maintainer: gfdgd xi <3025613752@qq.com>
|
||||
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||
Architecture: all
|
||||
@@ -9,11 +9,11 @@ Check: binaries
|
||||
Type: binary, udeb
|
||||
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
|
||||
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386, libc6:armhf
|
||||
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine, binfmt-support, libc6:i386, libc6:armhf, libwine
|
||||
Section: utils
|
||||
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
|
||||
Provides: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
|
||||
Installed-Size: 76512
|
||||
Installed-Size: 83156
|
||||
Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。
|
||||
它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低)。
|
||||
|
||||
@@ -11,6 +11,7 @@ import subprocess
|
||||
import PyQt5.QtGui as QtGui
|
||||
import PyQt5.QtCore as QtCore
|
||||
import PyQt5.QtWidgets as QtWidgets
|
||||
from DefaultSetting import *
|
||||
|
||||
def ShowText(text: str):
|
||||
if text.replace(" ", "").replace("\n", "") == "":
|
||||
@@ -572,7 +573,7 @@ class RunThread(QtCore.QThread):
|
||||
self.RunCommand(f"chmod -Rv 755 '{debBuildPath}/opt/apps/{debPackageName}/entries/applications/'*.desktop")
|
||||
########### 打包 deb
|
||||
print(debPackageVersion)
|
||||
self.RunCommand(f"dpkg-deb -Z xz -z $(($(grep -c processor < /proc/cpuinfo)*2)) -b '{debBuildPath}' '{desktopPath}/{debPackageName}_{debPackageVersion}_all.deb'")
|
||||
self.RunCommand(f"dpkg-deb -Z xz -b '{debBuildPath}' '{desktopPath}/{debPackageName}_{debPackageVersion}_all.deb'")
|
||||
self.info.emit("打包完成!")
|
||||
self.disbledAll.emit(False)
|
||||
########### 移除临时文件
|
||||
@@ -645,7 +646,7 @@ if __name__ == "__main__":
|
||||
"使用 Deepin Wine2 打包应用"
|
||||
]
|
||||
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)):
|
||||
if not os.system(f"which '{wineList[i]}'"):
|
||||
@@ -682,4 +683,6 @@ if __name__ == "__main__":
|
||||
pass
|
||||
window.resize(int(window.frameGeometry().width() * 1.2), int(window.frameGeometry().height() * 1.1))
|
||||
window.show()
|
||||
# 设置字体
|
||||
SetFont(app)
|
||||
sys.exit(app.exec_())
|
||||
@@ -25,6 +25,7 @@ import PyQt5.QtGui as QtGui
|
||||
import PyQt5.QtCore as QtCore
|
||||
import PyQt5.QtWidgets as QtWidgets
|
||||
from trans import *
|
||||
from DefaultSetting import *
|
||||
|
||||
#################
|
||||
# 程序所需事件
|
||||
@@ -1290,38 +1291,54 @@ extract_archive()
|
||||
fi
|
||||
}}
|
||||
|
||||
ACTIVEX_NAME=""
|
||||
BOTTLENAME="{e5_text.text()}"
|
||||
APPVER="{e2_text.text()}"
|
||||
EXEC_PATH="@@@EXEC_PATH@@@"
|
||||
START_SHELL_PATH="{["/opt/deepinwine/tools/run_v4.sh", "/opt/deepinwine/tools/spark_run_v4.sh"][int(chooseWineHelperValue.isChecked())]}"
|
||||
export MIME_TYPE=""
|
||||
export MIME_EXEC=""
|
||||
export DEB_PACKAGE_NAME="{e1_text.text()}"
|
||||
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 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`
|
||||
|
||||
DEEPIN_WINE_BIN_DIR=`dirname $APPRUN_CMD`
|
||||
DEEPIN_WINE_DIR=`dirname $DEEPIN_WINE_BIN_DIR`
|
||||
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
|
||||
export $PATCH_LOADER_ENV
|
||||
fi
|
||||
|
||||
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
|
||||
export ATTACH_FILE_DIALOG=1
|
||||
fi
|
||||
|
||||
if [ -n "$EXPORT_ENVS" ];then
|
||||
export $EXPORT_ENVS
|
||||
fi
|
||||
|
||||
if [ -n "$EXEC_PATH" ];then
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
|
||||
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" "$@"
|
||||
fi
|
||||
else
|
||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||
fi
|
||||
@@ -1589,7 +1606,7 @@ StartupNotify=false
|
||||
################
|
||||
if not self.build:
|
||||
self.label.emit("正在构建 deb 包……")
|
||||
self.run_command("bash -c 'dpkg-deb -Z xz -z $(($(grep -c processor < /proc/cpuinfo)*2)) -b \"{}\" \"{}\"'".format(debPackagePath, e12_text.text()))
|
||||
self.run_command("bash -c 'dpkg-deb -Z xz -b \"{}\" \"{}\"'".format(debPackagePath, e12_text.text()))
|
||||
################
|
||||
# 删除临时文件
|
||||
################
|
||||
@@ -2160,24 +2177,14 @@ def LockBottleName():
|
||||
def get_now_lang()->"获取当前语言":
|
||||
return os.getenv('LANG')
|
||||
|
||||
def SetFont(size):
|
||||
font = QtGui.QFont(defaultFont)
|
||||
if size == 1:
|
||||
window.setFont(defaultFont)
|
||||
return
|
||||
font.setPixelSize(int(defaultFont.pixelSize() / size))
|
||||
font.setPointSize(int(defaultFont.pointSize() / size))
|
||||
window.setFont(font)
|
||||
|
||||
|
||||
bottleNameLock = False
|
||||
###############
|
||||
# 程序信息
|
||||
###############
|
||||
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
|
||||
# 如果要添加其他 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"}
|
||||
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"}
|
||||
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", "spark-wine8-wow": "spark-wine8-wow", "deepin-wine6-vannila": "deepin-wine6-vannila"}
|
||||
# 读取 wine 本地列表
|
||||
for i in os.listdir("/opt"):
|
||||
if os.path.exists(f"/opt/{i}/bin/wine"):
|
||||
@@ -2429,16 +2436,14 @@ videoHelpAction.triggered.connect(lambda: webbrowser.open_new_tab("https://space
|
||||
videoHelp.addAction(videoHelpAction)
|
||||
openFile.triggered.connect(OpenConfigFile)
|
||||
saveFile.triggered.connect(SaveConfigList)
|
||||
setMiniFont.triggered.connect(lambda: SetFont(1.2))
|
||||
setDefaultFont.triggered.connect(lambda: SetFont(1))
|
||||
hideShowText.triggered.connect(lambda: textbox1.setHidden(hideShowText.isChecked()))
|
||||
exit.triggered.connect(window.close)
|
||||
tip.triggered.connect(helps)
|
||||
programmenu.addAction(openFile)
|
||||
programmenu.addAction(saveFile)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(setMiniFont)
|
||||
programmenu.addAction(setDefaultFont)
|
||||
#programmenu.addSeparator()
|
||||
#programmenu.addAction(setMiniFont)
|
||||
#programmenu.addAction(setDefaultFont)
|
||||
programmenu.addAction(hideShowText)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(exit)
|
||||
@@ -2535,6 +2540,8 @@ allInfoList = {
|
||||
"DebArch": ["Co", debArch],
|
||||
"SparkHelperConfigPath": ["Str-SparkHelperConfigPath", helperConfigPath]
|
||||
}
|
||||
# 设置字体
|
||||
SetFont(app)
|
||||
#window.setWindowFlag(QtGui.Qt)
|
||||
window.show()
|
||||
sys.exit(app.exec_())
|
||||
|
||||
@@ -9,6 +9,7 @@ import webbrowser
|
||||
import urllib.parse as parse
|
||||
import PyQt5.QtGui as QtGui
|
||||
import PyQt5.QtWidgets as QtWidgets
|
||||
from DefaultSetting import *
|
||||
|
||||
# 读取文本文档
|
||||
def readtxt(path: "路径")->"读取文本文档":
|
||||
@@ -90,9 +91,19 @@ widgetLayout.addWidget(updateButton, 3, 5, 1, 1)
|
||||
giteeButton.clicked.connect(OpenGiteeIssues)
|
||||
githubButton.clicked.connect(OpenGithubIssues)
|
||||
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)
|
||||
window.setCentralWidget(widget)
|
||||
window.setWindowTitle(f"Wine 运行器 {version} 问题/建议反馈")
|
||||
window.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
window.show()
|
||||
# 设置字体
|
||||
SetFont(app)
|
||||
sys.exit(app.exec_())
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "3.4.0",
|
||||
"Version": "3.4.1",
|
||||
"Time": "未知",
|
||||
"Thank": [
|
||||
"感谢 RacoonGX 的付出与贡献",
|
||||
|
||||
103
mainwindow.py
103
mainwindow.py
@@ -37,6 +37,7 @@ except:
|
||||
bad = True
|
||||
from trans import *
|
||||
from Model import *
|
||||
from DefaultSetting import *
|
||||
|
||||
def PythonLower():
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
@@ -606,6 +607,14 @@ def CleanProgramCache():
|
||||
traceback.print_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():
|
||||
@@ -1738,6 +1747,7 @@ class ProgramSetting():
|
||||
autoPath = None
|
||||
qemuUnmountHome = None
|
||||
chineseLanguage = None
|
||||
fontSize = None
|
||||
def ShowWindow():
|
||||
ProgramSetting.message = QtWidgets.QMainWindow()
|
||||
widget = QtWidgets.QWidget()
|
||||
@@ -1756,6 +1766,7 @@ class ProgramSetting():
|
||||
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", "程序翻译:")), 13, 0, 1, 1)
|
||||
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "字体缩小比例(数值越大字体越小,默认为 1):")), 14, 0, 1, 1)
|
||||
ProgramSetting.wineBottonA = QtWidgets.QComboBox()
|
||||
ProgramSetting.wineDebug = QtWidgets.QCheckBox(transla.transe("U", "开启 DEBUG 输出"))
|
||||
ProgramSetting.defultWine = QtWidgets.QComboBox()
|
||||
@@ -1778,6 +1789,7 @@ class ProgramSetting():
|
||||
ProgramSetting.autoPath = QtWidgets.QCheckBox(transla.transe("U", "自动根据文件名生成容器路径(开启后必须通过修改默认wine容器路径才可指定其它路径,重启程序后生效)"))
|
||||
ProgramSetting.qemuUnmountHome = QtWidgets.QCheckBox(transla.transe("U", "使用 Qemu + Chroot 时不挂载用户目录并与系统隔离(修改后重启操作系统生效)"))
|
||||
ProgramSetting.chineseLanguage = QtWidgets.QCheckBox(transla.transe("U", "禁用程序界面翻译"))
|
||||
ProgramSetting.fontSize = QtWidgets.QDoubleSpinBox()
|
||||
ProgramSetting.wineBottonA.addItems(["Auto", "win32", "win64"])
|
||||
ProgramSetting.wineBottonA.setCurrentText(setting["Architecture"])
|
||||
ProgramSetting.wineDebug.setChecked(setting["Debug"])
|
||||
@@ -1793,6 +1805,7 @@ class ProgramSetting():
|
||||
ProgramSetting.autoPath.setChecked(setting["AutoPath"])
|
||||
ProgramSetting.qemuUnmountHome.setChecked(setting["QemuUnMountHome"])
|
||||
ProgramSetting.chineseLanguage.setChecked(setting["Chinese"])
|
||||
ProgramSetting.fontSize.setValue(setting["FontSize"])
|
||||
# QemuUnMountHome
|
||||
widgetLayout.addWidget(ProgramSetting.wineBottonA, 0, 1, 1, 1)
|
||||
widgetLayout.addWidget(ProgramSetting.wineDebug, 1, 1, 1, 1)
|
||||
@@ -1810,7 +1823,8 @@ class ProgramSetting():
|
||||
widgetLayout.addWidget(ProgramSetting.autoPath, 11, 1, 1, 2)
|
||||
widgetLayout.addWidget(ProgramSetting.qemuUnmountHome, 12, 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)
|
||||
ProgramSetting.message.setCentralWidget(widget)
|
||||
ProgramSetting.message.setWindowIcon(QtGui.QIcon(iconPath))
|
||||
@@ -1842,6 +1856,7 @@ class ProgramSetting():
|
||||
setting["AutoPath"] = ProgramSetting.autoPath.isChecked()
|
||||
setting["QemuUnMountHome"] = ProgramSetting.qemuUnmountHome.isChecked()
|
||||
setting["Chinese"] = ProgramSetting.chineseLanguage.isChecked()
|
||||
setting["FontSize"] = ProgramSetting.fontSize.value()
|
||||
try:
|
||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineSetting.json", json.dumps(setting))
|
||||
except:
|
||||
@@ -2221,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/"): # 如果没有配置文件夹
|
||||
os.mkdir(get_home() + "/.config/") # 创建配置文件夹
|
||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
||||
@@ -2281,10 +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 ",
|
||||
"使用 Flatpak 安装的 Wine": "flatpak run org.winehq.Wine",
|
||||
"deepin-wine6 stable": "deepin-wine6-stable",
|
||||
"deepin-wine6-vannila": "deepin-wine6-vannila",
|
||||
"deepin-wine5 stable": "deepin-wine5-stable",
|
||||
"spark-wine": "spark-wine",
|
||||
"spark-wine7-devel": "spark-wine7-devel",
|
||||
"spark-wine8": "spark-wine8",
|
||||
"spark-wine8-wow": "spark-wine8-wow",
|
||||
"deepin-wine": "deepin-wine",
|
||||
"deepin-wine5": "deepin-wine5",
|
||||
"wine": "wine",
|
||||
@@ -2542,35 +2541,18 @@ exe路径\' 参数 \'
|
||||
5、wine 容器如果没有指定,则会默认为 ~/.wine;
|
||||
6、如果可执行文件比较大的话,会出现点击“获取该程序运行情况”出现假死的情况,因为正在后台读取 SHA1,只需要等一下即可(读取速度依照您电脑处理速度、读写速度、可执行文件大小等有关);
|
||||
7、如果非 X86 的用户的 UOS 专业版用户想要使用的话,只需要在应用商店安装一个 Wine 版本微信即可在本程序选择正确的 Wine 运行程序;''')
|
||||
updateThingsString = transla.transe("U", '''※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 导致无法安装的问题''')
|
||||
updateThingsString = transla.transe("U", '''<b>3.4.1 更新内容:</b>
|
||||
※1、支持识别 spark-wine8-wow 且打包时可以使用该 wine
|
||||
※2、替换安装 Box86 的 pkexec 为 sudo
|
||||
※3、Wine 下载工具新增更多 Wine''')
|
||||
for i in information["Thank"]:
|
||||
thankText += f"{i}\n"
|
||||
updateTime = "2023年08月11日"
|
||||
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
|
||||
<p>它同时还内置了基于VirtualBox/Qemu制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。</p>
|
||||
<pre>
|
||||
|
||||
一个图形化了如下命令的程序(最简单格式)
|
||||
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
||||
让你可以简易方便的使用 wine""")
|
||||
updateTime = "2023年09月30日"
|
||||
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。</p>
|
||||
<p>它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。</p>
|
||||
<p>而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。</p>
|
||||
<p>且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式</p>
|
||||
<pre>""")
|
||||
about = f'''<style>
|
||||
a:link, a:active {{
|
||||
text-decoration: none;
|
||||
@@ -2584,6 +2566,7 @@ a:link, a:active {{
|
||||
安装包构建时间:{information['Time']}
|
||||
Qt 版本:{QtCore.qVersion()}
|
||||
程序官网:{programUrl}
|
||||
<b>Wine 运行器 QQ 交流群:762985460</b>
|
||||
当前程序占用体积:@programSize@MB</pre>
|
||||
<p>本程序依照 GPLV3 协议开源</p>
|
||||
<hr>
|
||||
@@ -2639,6 +2622,7 @@ except:
|
||||
# Qt 窗口
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
window = QtWidgets.QMainWindow()
|
||||
defaultFont = app.font()
|
||||
window.setWindowTitle(title)
|
||||
widget = QtWidgets.QWidget()
|
||||
window.setCentralWidget(widget)
|
||||
@@ -2801,13 +2785,17 @@ 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)"))
|
||||
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(国内清华大学镜像源)"))
|
||||
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 容器"))
|
||||
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 源)"))
|
||||
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 源)"))
|
||||
installBox86Own = QtWidgets.QAction(QtGui.QIcon.fromTheme("box"), transla.transe("U", "安装 Box86/Box64(使用自建源,支持 riscv64)"))
|
||||
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)"))
|
||||
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)"))
|
||||
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件缓存"))
|
||||
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "删除程序组件"))
|
||||
@@ -2822,6 +2810,11 @@ programmenu.addAction(installMoreWine)
|
||||
programmenu.addAction(downloadChrootBottle)
|
||||
programmenu.addAction(installBox86CN)
|
||||
programmenu.addAction(installBox86)
|
||||
programmenu.addAction(installBox86Own)
|
||||
#programmenu.addSeparator()
|
||||
#programmenu.addAction(setMiniFont)
|
||||
#programmenu.addAction(setTinyFont)
|
||||
#programmenu.addAction(setDefaultFont)
|
||||
programmenu.addSeparator()
|
||||
programmenu.addAction(p2)
|
||||
programmenu.addAction(enabledAll)
|
||||
@@ -2831,6 +2824,9 @@ programmenu.addAction(cleanCache)
|
||||
programmenu.addAction(cleanProgramUnuse)
|
||||
programmenu.addSeparator()
|
||||
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)
|
||||
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
|
||||
installWineOnDeepin23Alpha.triggered.connect(InstallWineOnDeepin23Alpha)
|
||||
@@ -2851,8 +2847,9 @@ installMoreWine.triggered.connect(InstallMoreWine)
|
||||
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
|
||||
p2.triggered.connect(ProgramSetting.ShowWindow)
|
||||
enabledAll.triggered.connect(lambda: DisableButton(False))
|
||||
installBox86CN.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86-cn.sh'"))
|
||||
installBox86.triggered.connect(lambda: OpenTerminal(f"pkexec bash '{programPath}/InstallBox86.sh'"))
|
||||
installBox86CN.triggered.connect(lambda: OpenTerminal(f"sudo bash '{programPath}/InstallBox86-cn.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)
|
||||
cleanCache.triggered.connect(CleanProgramCache)
|
||||
cleanProgramUnuse.triggered.connect(CleanProgram)
|
||||
@@ -3327,7 +3324,7 @@ if o1.currentText() == "":
|
||||
wine["没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"] = "没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"
|
||||
canUseWine.append("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||
o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
|
||||
|
||||
SetFont(setting["FontSize"])
|
||||
# Mini 模式
|
||||
# MiniMode(True)
|
||||
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
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"Version": "3.4.0",
|
||||
"Version": "3.4.1",
|
||||
"Time": "未知",
|
||||
"Thank": [
|
||||
"感谢 RacoonGX 的付出与贡献",
|
||||
|
||||
@@ -20,6 +20,7 @@ import PyQt5.QtGui as QtGui
|
||||
import PyQt5.QtCore as QtCore
|
||||
import PyQt5.QtWidgets as QtWidgets
|
||||
from trans import *
|
||||
from DefaultSetting import *
|
||||
|
||||
###################
|
||||
# 程序所需事件
|
||||
@@ -286,4 +287,6 @@ windowFrameInputValueList = [
|
||||
packageName,
|
||||
versionName
|
||||
]
|
||||
# 设置字体
|
||||
SetFont(app)
|
||||
sys.exit(app.exec_())
|
||||
Reference in New Issue
Block a user