初步云DLL下载完成

This commit is contained in:
gfdgd xi 2022-08-24 16:13:47 +08:00
parent cf17caf572
commit 51d471f649
77 changed files with 2551 additions and 1372 deletions

104
InstallDll.py Normal file

@ -0,0 +1,104 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本1.8.0
# 更新时间2022年08月24日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import traceback
import requests
def exit():
input("按回车键退出")
sys.exit()
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 1 or sys.argv[1] == "":
print("您未指定需要安装的容器,无法继续")
print("参数:")
print("XXX 参数一")
print("参数一为需要安装的容器")
sys.exit()
print('''
mmmm ""# ""#
# "m # #
# # # #
# # # #
#mmm" "mm "mm
''')
wineBotton = sys.argv[1]
if not os.path.exists(f"{wineBotton}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器")
exit()
# 判断是不是 wine 容器
if not os.path.exists(f"{wineBotton}/drive_c/windows/system32"):
print("这不是 Wine 容器")
exit()
# 获取云列表
url = "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls"
print("获取列表中……", end="")
try:
lists = json.loads(requests.get(f"{url}/list.json").text)
except:
print("\r列表获取失败!")
exit()
print("\r列表获取成功!")
# 获取用户希望安装的DLL
while True:
print()
print("您可以输入DLL名称进行搜索输入前面编号或DLL全称即可安装(推荐是编号,可以选系统版本)")
print("输入exit即可退出")
urlPart = ""
while True:
dllName = input(">")
if dllName.lower() == "exit":
exit()
if dllName in lists:
url = dllName
break
try:
dllName = lists[int(dllName)][0]
urlPart = f"{url}/{lists[int(dllName)][1]}/{lists[int(dllName)][2]}/{lists[int(dllName)][0]}"
break
except:
pass
right = False
for i in range(0, len(lists)):
if dllName == lists[i][0]:
right = True
urlPart = f"{url}/{lists[i][1]}/{lists[i][2]}/{lists[i][0]}"
break
if dllName in lists[i][0]:
print(i, lists[i][0], f"平台:{lists[i][1]}", f"架构:{lists[i][2]}")
if right:
break
if os.path.exists(f"{wineBotton}/drive_c/windows/system32/{dllName}"):
if input(f"{dllName} 已存在,是否覆盖?(一般不推荐)[Y/N]").upper() == "N":
continue
try:
os.remove(f"{wineBotton}/drive_c/windows/system32/{dllName}")
except:
print("文件移除失败!")
traceback.print_exc()
continue
# 下载 DLL
print(f"正在下载{dllName},请稍后")
print(f"下载链接:{urlPart}")
if os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'"):
print("下载失败!请重试")

@ -1,7 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import os import os
import sys import sys
import json
import shutil import shutil
import requests
if __name__ == "__main__": if __name__ == "__main__":
if "--help" in sys.argv: if "--help" in sys.argv:
@ -31,7 +33,10 @@ if __name__ == "__main__":
if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"): if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器,无法继续,按回车键退出") input("您选择的不是 Wine 容器,无法继续,按回车键退出")
exit() exit()
fontList = [ try:
fontList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/fonts/list.json").text)
except:
fontList = [
["fake_simsun.ttc", "https://gitlink.org.cn/api/attachments/392168", "simsun.ttc", "fake_simsun.ttc会替换容器内的宋体且与 deepin 有问题)"], ["fake_simsun.ttc", "https://gitlink.org.cn/api/attachments/392168", "simsun.ttc", "fake_simsun.ttc会替换容器内的宋体且与 deepin 有问题)"],
["simsun.ttc", "https://gitlink.org.cn/api/attachments/392181", "simsun.ttc", "simsun.ttc"], ["simsun.ttc", "https://gitlink.org.cn/api/attachments/392181", "simsun.ttc", "simsun.ttc"],
["simsunb.ttf", "https://gitlink.org.cn/api/attachments/392180", "simsunb.ttf", "simsunb.ttf"], ["simsunb.ttf", "https://gitlink.org.cn/api/attachments/392180", "simsunb.ttf", "simsunb.ttf"],

@ -12,6 +12,8 @@
################# #################
import os import os
import sys import sys
import json
import requests
if "--help" in sys.argv: if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢") print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
@ -35,11 +37,14 @@ print('''
''') ''')
msxmlList = [ try:
["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"], msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json").text)
["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"], except:
["MSXML 6.0", "https://www.gitlink.org.cn/api/attachments/390681?gfdgd_xi", "msxml6_x64.msi"] msxmlList = [
] ["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"],
["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"],
["MSXML 6.0", "https://www.gitlink.org.cn/api/attachments/390681?gfdgd_xi", "msxml6_x64.msi"]
]
print("请选择以下的 MSXML 进行安装(不保证能正常安装运行)") print("请选择以下的 MSXML 进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)): for i in range(0, len(msxmlList)):
print(f"{i}{msxmlList[i][0]}") print(f"{i}{msxmlList[i][0]}")

@ -12,6 +12,8 @@
################# #################
import os import os
import sys import sys
import json
import requests
if "--help" in sys.argv: if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢") print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
@ -35,20 +37,23 @@ print('''
''') ''')
netList = [ try:
["3.5 SP1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe"], netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/list.json").text)
["4.0 Offline Installer", "https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"], except:
["4.5 Web Installer", "https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe"], netList = [
["4.5.1 Offline Installer", "https://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe"], ["3.5 SP1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe"],
["4.5.2 Offline Installer", "https://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe"], ["4.0 Offline Installer", "https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"],
["4.6 Offline Installer", "https://download.microsoft.com/download/6/F/9/6F9673B1-87D1-46C4-BF04-95F24C3EB9DA/enu_netfx/NDP46-KB3045557-x86-x64-AllOS-ENU_exe/NDP46-KB3045557-x86-x64-AllOS-ENU.exe"], ["4.5 Web Installer", "https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe"],
["4.6.1 Offline Installer", "https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe"], ["4.5.1 Offline Installer", "https://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe"],
["4.6.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/8e396c75-4d0d-41d3-aea8-848babc2736a/80b431456d8866ebe053eb8b81a168b3/ndp462-kb3151800-x86-x64-allos-enu.exe"], ["4.5.2 Offline Installer", "https://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe"],
["4.7 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2dfcc711-bb60-421a-a17b-76c63f8d1907/e5c0231bd5d51fffe65f8ed7516de46a/ndp47-kb3186497-x86-x64-allos-enu.exe"], ["4.6 Offline Installer", "https://download.microsoft.com/download/6/F/9/6F9673B1-87D1-46C4-BF04-95F24C3EB9DA/enu_netfx/NDP46-KB3045557-x86-x64-AllOS-ENU_exe/NDP46-KB3045557-x86-x64-AllOS-ENU.exe"],
["4.7.1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/4312fa21-59b0-4451-9482-a1376f7f3ba4/9947fce13c11105b48cba170494e787f/ndp471-kb4033342-x86-x64-allos-enu.exe"], ["4.6.1 Offline Installer", "https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe"],
["4.7.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c59-9ba66bcf15f6/089f837de42708daacaae7c04b7494db/ndp472-kb4054530-x86-x64-allos-enu.exe"], ["4.6.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/8e396c75-4d0d-41d3-aea8-848babc2736a/80b431456d8866ebe053eb8b81a168b3/ndp462-kb3151800-x86-x64-allos-enu.exe"],
["4.8 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe"] ["4.7 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2dfcc711-bb60-421a-a17b-76c63f8d1907/e5c0231bd5d51fffe65f8ed7516de46a/ndp47-kb3186497-x86-x64-allos-enu.exe"],
] ["4.7.1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/4312fa21-59b0-4451-9482-a1376f7f3ba4/9947fce13c11105b48cba170494e787f/ndp471-kb4033342-x86-x64-allos-enu.exe"],
["4.7.2 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c59-9ba66bcf15f6/089f837de42708daacaae7c04b7494db/ndp472-kb4054530-x86-x64-allos-enu.exe"],
["4.8 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe"]
]
print("请选择以下的 .net framework 进行安装(不保证能正常安装运行)") print("请选择以下的 .net framework 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)): for i in range(0, len(netList)):
print(f"{i} .net framework {netList[i][0]}") print(f"{i} .net framework {netList[i][0]}")

@ -12,6 +12,8 @@
################# #################
import os import os
import sys import sys
import json
import requests
if "--help" in sys.argv: if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢") print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
@ -35,10 +37,13 @@ print('''
''') ''')
msxmlList = [ try:
["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"], msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/list.json").text)
["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"] except:
] msxmlList = [
["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"],
["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"]
]
print("请选择以下的应用进行安装(不保证能正常安装运行)") print("请选择以下的应用进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)): for i in range(0, len(msxmlList)):
print(f"{i}{msxmlList[i][0]}") print(f"{i}{msxmlList[i][0]}")

@ -12,6 +12,8 @@
################# #################
import os import os
import sys import sys
import json
import requests
if "--help" in sys.argv: if "--help" in sys.argv:
print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢") print("作者gfdgd xi、为什么您不喜欢熊出没和阿布呢")
@ -35,14 +37,17 @@ print('''
''') ''')
netList = [ try:
["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"], netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json").text)
["2008 (VC++ 9.0) SP1 (不再支持) ", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"], except:
["2010 (VC++ 10.0) SP1 (不再支持) ", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x86.exe"], netList = [
["2012 (VC++ 11.0) Update 4", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe", "vcredist12_x86.exe"], ["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"],
["2013 (VC++ 12.0) ", "https://download.visualstudio.microsoft.com/download/pr/10912113/5da66ddebb0ad32ebd4b922fd82e8e25/vcredist_x86.exe", "vcredist13_x86.exe"], ["2008 (VC++ 9.0) SP1 (不再支持) ", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"],
["2015、2017、2019 和 2022", "https://aka.ms/vs/17/release/vc_redist.x86.exe", "vcredist15_x86.exe"] ["2010 (VC++ 10.0) SP1 (不再支持) ", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x86.exe"],
] ["2012 (VC++ 11.0) Update 4", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe", "vcredist12_x86.exe"],
["2013 (VC++ 12.0) ", "https://download.visualstudio.microsoft.com/download/pr/10912113/5da66ddebb0ad32ebd4b922fd82e8e25/vcredist_x86.exe", "vcredist13_x86.exe"],
["2015、2017、2019 和 2022", "https://aka.ms/vs/17/release/vc_redist.x86.exe", "vcredist15_x86.exe"]
]
print("请选择以下的 Visual Studio C++ 进行安装(不保证能正常安装运行)") print("请选择以下的 Visual Studio C++ 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)): for i in range(0, len(netList)):
print(f"{i} Visual Studio C++ {netList[i][0]}") print(f"{i} Visual Studio C++ {netList[i][0]}")

Binary file not shown.

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>U</name>
<message>
<location filename="../deepin-wine-packager.py" line="30"/>
<source> wine </source>
<translation type="unfinished">Choose Wine Botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="35"/>
<source></source>
<translation type="unfinished">Choose Icon Files</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="40"/>
<source> deb </source>
<translation type="unfinished">Save Deb</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation type="unfinished">Tips</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation type="unfinished">Build deb package will change choose botton, are you continuing?</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1162"/>
<source></source>
<translation type="unfinished">Browser...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1164"/>
<source></source>
<translation type="unfinished">Build...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1165"/>
<source> deb</source>
<translation type="unfinished">Install Build Deb...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1166"/>
<source></source>
<translation type="unfinished">Build Deb Formwork</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1169"/>
<source> deb </source>
<translation type="unfinished">When remove this deb, it will remove botton auto</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1170"/>
<source>使 Wine </source>
<translation type="unfinished">Clean Wine Botton (By UOS Wine Activity Shell)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1177"/>
<source>使wine helper
deepin-wine-helper</source>
<translation type="unfinished">Use Spark Wine Helper(If you don&apos;t checked, will use deepin-wine-helper)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1187"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1188"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1189"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Description(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1190"/>
<source> deb </source>
<translation type="unfinished">Build Deb Package Maintainer(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1191"/>
<source> wine </source>
<translation type="unfinished">Deb Use Wine Botton Unzip Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1192"/>
<source> wine </source>
<translation type="unfinished">Deb Use Wine Botton Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1193"/>
<source>wine </source>
<translation type="unfinished">Deb Use Wine Botton Program Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1194"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Type(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1195"/>
<source>wine </source>
<translation type="unfinished">Deb Use Wine Botton Program Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1196"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1197"/>
<source> .desktop </source>
<translation type="unfinished">Program Link Icon Path:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1198"/>
<source> wine </source>
<translation type="unfinished">Build Deb Using Wine Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1199"/>
<source> deb </source>
<translation type="unfinished">Build Deb Save Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1220"/>
<source></source>
<translation type="unfinished">More Setting</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1223"/>
<source>deb ()</source>
<translation type="unfinished">Deb Depends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1225"/>
<source>deb ()</source>
<translation type="unfinished">Deb Recommends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1230"/>
<source>Wine (Wine)
32Wine不能使用64位容器</source>
<translation type="unfinished">Deb Use Wine Architecture :
Tips: X86 Wine is unable to use x86 botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1233"/>
<source>deb </source>
<translation type="unfinished">Deb Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1237"/>
<source>deb ()</source>
<translation type="unfinished">Deb Depends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1239"/>
<source>deb ()</source>
<translation type="unfinished">Deb Recommends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1241"/>
<source> .desktop MimeType</source>
<translation type="unfinished">Program Link MimeType(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1243"/>
<source> deb </source>
<translation type="unfinished">Build Deb Architecture:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1253"/>
<source></source>
<translation type="unfinished">Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1254"/>
<source></source>
<translation type="unfinished">Help</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1255"/>
<source>退</source>
<translation type="unfinished">Exit Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1256"/>
<source></source>
<translation type="unfinished">Tips</translation>
</message>
</context>
</TS>

Binary file not shown.

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" sourcelanguage="zh">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<translation type="unfinished">Windows System Installer By VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation type="unfinished">Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation type="unfinished">ISO Image Path:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation type="unfinished">Input System ISO Image</translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation type="unfinished">Browser......</translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation type="unfinished">System Version:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<translation type="unfinished">Windows 7 X86(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<translation type="unfinished">Windows 7 X64(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<translation type="unfinished">Other Windows(Don&apos;t Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<translation type="unfinished">Install</translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished">Install/Using Help</translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished">About</translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<source>退</source>
<translation type="unfinished">Exit</translation>
</message>
</context>
</TS>

@ -1,17 +1,18 @@
build: build:
cd VM-source && qmake #cd VM-source && qmake
cd VM-source && make #cd VM-source && make
cd wine && make #cd wine && make
cp -rv VM-source/VirtualMachine VM cp -rv VM-source/VirtualMachine VM
cp -rv VM-source/deepin-wine-runner.svg VM cp -rv VM-source/deepin-wine-runner.svg VM
cp -rv VM-source/api VM cp -rv VM-source/api 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/run.py VM cp -rv VM-source/run.py VM
cp -rv wine/installwine deb/opt/apps/deepin-wine-runner/wine
zip -v -q -r package-script.zip package-script zip -v -q -r package-script.zip package-script
cp -rv VM deb/opt/apps/deepin-wine-runner cp -rv VM deb/opt/apps/deepin-wine-runner
mkdir -p deb/opt/apps/deepin-wine-runner/wine mkdir -p deb/opt/apps/deepin-wine-runner/wine
cp -rv wine/installwine deb/opt/apps/deepin-wine-runner/wine cp -rv wine/installwine deb/opt/apps/deepin-wine-runner/wine
echo "[]" > deb/opt/apps/deepin-wine-runner/wine/winelist.json echo "[]" > deb/opt/apps/deepin-wine-runner/wine/winelist.json
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
@ -51,6 +52,8 @@ build:
cp -rv cleanbottle.sh deb/opt/apps/deepin-wine-runner cp -rv cleanbottle.sh deb/opt/apps/deepin-wine-runner
cp -rv StartVM.sh deb/opt/apps/deepin-wine-runner cp -rv StartVM.sh deb/opt/apps/deepin-wine-runner
cp -rv Icon deb/opt/apps/deepin-wine-runner cp -rv Icon deb/opt/apps/deepin-wine-runner
cp -rv gtkGetFileNameDlg deb/opt/apps/deepin-wine-runner
cp -rv LANG/*.qm deb/opt/apps/deepin-wine-runner/LANG
dpkg -b deb spark-deepin-wine-runner.deb dpkg -b deb spark-deepin-wine-runner.deb

Binary file not shown.

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" sourcelanguage="zh_CN">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<translation type="unfinished">Windows System Installer By VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation type="unfinished">Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation type="unfinished">ISO Image Path:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation type="unfinished">Input System ISO Image</translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation type="unfinished">Browser......</translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation type="unfinished">System Version:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<translation type="unfinished">Windows 7 X86(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<translation type="unfinished">Windows 7 X64(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<translation type="unfinished">Other Windows(Don&apos;t Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<translation type="unfinished">Install</translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished">Install/Using Help</translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished">About</translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<source>退</source>
<translation type="unfinished">Exit</translation>
</message>
</context>
</TS>

@ -402,6 +402,7 @@ distdir: FORCE
$(COPY_FILE) --parents mainwindow.h $(DISTDIR)/ $(COPY_FILE) --parents mainwindow.h $(DISTDIR)/
$(COPY_FILE) --parents main.cpp mainwindow.cpp $(DISTDIR)/ $(COPY_FILE) --parents main.cpp mainwindow.cpp $(DISTDIR)/
$(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/ $(COPY_FILE) --parents mainwindow.ui $(DISTDIR)/
$(COPY_FILE) --parents zh_CN.ts en_US.ts $(DISTDIR)/
clean: compiler_clean clean: compiler_clean
@ -444,7 +445,9 @@ qrc_图标.cpp: 图标.qrc \
截图/截图_VirtualBox\ Machine_20220712143037.png \ 截图/截图_VirtualBox\ Machine_20220712143037.png \
截图/截图_VirtualBox_20220712223705.png \ 截图/截图_VirtualBox_20220712223705.png \
截图/截图_VirtualBox\ Machine_20220712143006.png \ 截图/截图_VirtualBox\ Machine_20220712143006.png \
截图/截图_VirtualBox\ Machine_20220712191756.png 截图/截图_VirtualBox\ Machine_20220712191756.png \
LANG/virtualmachine-en_US.ts \
LANG/virtualmachine-en_US.qm
/usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp /usr/lib/qt5/bin/rcc -name 图标 图标.qrc -o qrc_图标.cpp
compiler_moc_predefs_make_all: moc_predefs.h compiler_moc_predefs_make_all: moc_predefs.h

Binary file not shown.

@ -5,6 +5,8 @@
#------------------------------------------------- #-------------------------------------------------
QT += core gui QT += core gui
TRANSLATIONS += zh_CN.ts\
en_US.ts
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

@ -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, 2022-07-27T22:35:09. --> <!-- Written by QtCreator 4.8.2, 2022-08-22T21:48:17. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
<value type="QByteArray">{f2c8d716-7409-4b6a-a949-e01d13120d3a}</value> <value type="QByteArray">{e6fddbe7-fcb3-41be-bb11-3a30892600b9}</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.ActiveTarget</variable> <variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -64,68 +64,12 @@
<valuemap type="QVariantMap"> <valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{c19ffccf-bd9e-4c0f-b3ec-050420072cca}</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b6becee2-04dc-4df3-9a41-75e9b60eccc8}</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/build-VirtualMachine-unknown-Debug</value> <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">true</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">Debug</value>
<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>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/build-VirtualMachine-unknown-Release</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>
@ -180,63 +124,7 @@
<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> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap> </valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/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.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">true</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">true</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">Profile</value>
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</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>
@ -306,7 +194,7 @@
<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"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/build-VirtualMachine-unknown-Debug</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>

@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2022-07-27T22:35:09. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{f2c8d716-7409-4b6a-a949-e01d13120d3a}</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">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{c19ffccf-bd9e-4c0f-b3ec-050420072cca}</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/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.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">true</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">Debug</value>
<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>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/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.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>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/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.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">true</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">true</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">Profile</value>
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</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">部署</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/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">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>

@ -1,10 +1,18 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QApplication> #include <QApplication>
#include <QTranslator>
#include <QCoreApplication>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
// 语言
QTranslator *trans = new QTranslator(&a);
trans->load("virtualmachine-en_US.qm");
a.installTranslator(trans);
MainWindow w; MainWindow w;
w.show(); w.show();
return a.exec(); return a.exec();

BIN
VM-source/main.o Executable file → Normal file

Binary file not shown.

0
VM-source/mainwindow.o Executable file → Normal file

25
VM-source/moc_mainwindow.cpp Executable file → Normal file

@ -1,18 +1,19 @@
/**************************************************************************** /****************************************************************************
** Meta object code from reading C++ file 'mainwindow.h' ** Meta object code from reading C++ file 'mainwindow.h'
** **
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.11.3) ** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.3)
** **
** WARNING! All changes made in this file will be lost! ** WARNING! All changes made in this file will be lost!
*****************************************************************************/ *****************************************************************************/
#include <memory>
#include "mainwindow.h" #include "mainwindow.h"
#include <QtCore/qbytearray.h> #include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h> #include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION) #if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mainwindow.h' doesn't include <QObject>." #error "The header file 'mainwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67 #elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.11.3. It" #error "This file was generated using the moc from 5.15.3. It"
#error "cannot be used with the include files from this version of Qt." #error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)" #error "(The moc has changed too much.)"
#endif #endif
@ -45,7 +46,7 @@ QT_MOC_LITERAL(3, 31, 18) // "on_install_clicked"
static const uint qt_meta_data_MainWindow[] = { static const uint qt_meta_data_MainWindow[] = {
// content: // content:
7, // revision 8, // revision
0, // classname 0, // classname
0, 0, // classinfo 0, 0, // classinfo
2, 14, // methods 2, 14, // methods
@ -69,21 +70,25 @@ static const uint qt_meta_data_MainWindow[] = {
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{ {
if (_c == QMetaObject::InvokeMetaMethod) { if (_c == QMetaObject::InvokeMetaMethod) {
MainWindow *_t = static_cast<MainWindow *>(_o); auto *_t = static_cast<MainWindow *>(_o);
Q_UNUSED(_t) (void)_t;
switch (_id) { switch (_id) {
case 0: _t->on_browser_clicked(); break; case 0: _t->on_browser_clicked(); break;
case 1: _t->on_install_clicked(); break; case 1: _t->on_install_clicked(); break;
default: ; default: ;
} }
} }
Q_UNUSED(_a); (void)_a;
} }
QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { {
{ &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow.data, QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),
qt_meta_data_MainWindow, qt_static_metacall, nullptr, nullptr} qt_meta_stringdata_MainWindow.data,
}; qt_meta_data_MainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *MainWindow::metaObject() const const QMetaObject *MainWindow::metaObject() const

BIN
VM-source/moc_mainwindow.o Executable file → Normal file

Binary file not shown.

0
VM-source/moc_predefs.h Executable file → Normal file

389
VM-source/qrc_图标.cpp Executable file → Normal file

@ -215225,11 +215225,330 @@ static const unsigned char qt_resource_data[] = {
0x86,0x8f,0xd1,0x47,0x6,0x6b,0x3f,0xfc,0x1b,0xa4,0xc4,0xc0,0xc0,0xc0,0xc0,0xc0, 0x86,0x8f,0xd1,0x47,0x6,0x6b,0x3f,0xfc,0x1b,0xa4,0xc4,0xc0,0xc0,0xc0,0xc0,0xc0,
0xc0,0xc0,0xe0,0xff,0x1f,0xfc,0x1f,0x99,0x5,0xa7,0x71,0x96,0x53,0x3b,0xbf,0x0, 0xc0,0xc0,0xe0,0xff,0x1f,0xfc,0x1f,0x99,0x5,0xa7,0x71,0x96,0x53,0x3b,0xbf,0x0,
0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, 0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/LANG/virtualmachine-en_US.ts
0x0,0x0,0xe,0x9,
0x0,
0x0,0x55,0xfc,0x78,0x9c,0xed,0x5c,0xe9,0x53,0x1b,0x47,0x16,0xff,0x9e,0xbf,0x62,
0x96,0xad,0x72,0x65,0x2b,0x1,0xdd,0x7,0x18,0x3b,0x65,0xb0,0x93,0x78,0xd7,0xd7,
0x6,0xc7,0xc9,0x7e,0xa2,0x4,0x1a,0x90,0x12,0x69,0xa4,0x48,0xa3,0x0,0x59,0x6f,
0x95,0x38,0x84,0x24,0x90,0x10,0xb6,0xb9,0x11,0x97,0x3,0xb6,0xe2,0xd8,0x12,0x8e,
0x31,0x87,0x2e,0xfe,0x17,0x67,0xba,0x67,0xf4,0xc9,0xff,0xc2,0xbe,0x9e,0x1e,0x1d,
0x60,0x61,0x8c,0x63,0x62,0xe1,0x40,0xa9,0x8a,0x51,0x4f,0x1f,0xef,0xf7,0xde,0x9b,
0x77,0x75,0x8f,0x9a,0x3f,0xeb,0x75,0x3a,0x98,0x1f,0x59,0x8f,0xd7,0xee,0xe2,0xce,
0xd5,0x69,0x1a,0xd4,0x75,0xc,0xcb,0x75,0xba,0xac,0x76,0xae,0xfb,0x5c,0x9d,0x8f,
0xef,0xaa,0x37,0xd7,0x7d,0x76,0xfe,0xa3,0xe6,0xbf,0x5d,0xbc,0xde,0x7a,0xf3,0x3f,
0x37,0x2e,0x31,0x37,0xdb,0xe0,0xdb,0xcd,0xb6,0xf2,0x10,0x6d,0x83,0xa6,0x8e,0xf1,
0xba,0x7c,0x9e,0x4e,0xd6,0x61,0xe1,0xba,0x7d,0x96,0x6e,0xf6,0x5c,0xdd,0x4f,0xb6,
0xf6,0xd6,0x6b,0x75,0xd0,0xb3,0xd3,0xc5,0xf1,0x6c,0x2f,0x7f,0xfe,0x23,0x6,0xfe,
0x9a,0x39,0x8b,0x93,0x3d,0x7f,0xd5,0x62,0xe7,0xbe,0xb1,0x73,0x56,0x57,0x4f,0xb3,
0x4a,0x6e,0xa0,0xf7,0x9c,0xac,0xd7,0xb,0x63,0xe9,0x37,0xb9,0xc5,0xe1,0xea,0xb4,
0xf0,0xb0,0x6,0xd3,0x65,0x77,0xb0,0xa4,0xe7,0xb9,0x3a,0x27,0x8c,0xed,0x91,0xc7,
0x36,0xf8,0xec,0x75,0x8c,0xc3,0xce,0x41,0xa3,0x46,0x5f,0xa7,0xaa,0x18,0x46,0x69,
0x39,0x4f,0x97,0xf0,0x32,0x28,0x3d,0x21,0x4e,0x24,0xa,0xfe,0x81,0x42,0x20,0x8a,
0xb6,0xd6,0x50,0x60,0xab,0x59,0xa5,0x74,0x29,0x8f,0xe1,0x3d,0x16,0xce,0xeb,0xa0,
0xab,0xf1,0x7d,0x6e,0x98,0xd4,0xc7,0x75,0xd9,0x39,0xbb,0xd7,0xc6,0x5a,0xeb,0x4a,
0x53,0xb5,0xf5,0x79,0x79,0xd6,0xc9,0x5c,0xe6,0xbc,0xbc,0xc5,0xe1,0x60,0x3d,0x4c,
0x4b,0x1f,0x73,0xcb,0xee,0xe1,0x7d,0x16,0x47,0x8b,0xab,0xb7,0x59,0x55,0x31,0x8b,
0x2,0x4a,0xb5,0x7,0xd5,0x1f,0xc0,0xa8,0xd3,0xee,0xc1,0xf8,0xc6,0xc3,0xc,0xd5,
0x58,0x23,0x25,0xf3,0x62,0x2e,0x79,0x64,0x36,0xb4,0xb1,0x3c,0xf,0x6a,0x71,0xac,
0x38,0xf5,0xba,0x6a,0x4,0x17,0x26,0xe3,0x68,0x30,0x26,0x6d,0xa5,0x50,0x7e,0xe8,
0x65,0x76,0xee,0xc8,0x94,0x5f,0x6e,0xbb,0xce,0x5c,0x76,0x2,0x45,0xcc,0xd,0xb,
0x6f,0x6b,0x3a,0x56,0x4,0x6,0x75,0x55,0x96,0xa7,0xb6,0xa,0xfe,0x30,0x1e,0xfd,
0x45,0x7c,0x96,0x11,0x33,0x4b,0x14,0xd0,0xd1,0x71,0x70,0x6e,0x1f,0x5f,0x52,0xc3,
0x22,0xa8,0xe3,0x85,0x63,0xaa,0x6,0x7,0x3f,0x8f,0x49,0xf,0x43,0x2f,0xfc,0xf,
0xe0,0x73,0x64,0x14,0x2d,0x1e,0x78,0x98,0x58,0x4f,0x83,0xfc,0x77,0xac,0xc4,0x1b,
0xcd,0xd5,0x88,0xa7,0x22,0x10,0xc3,0x21,0x1c,0x7f,0xfc,0x36,0xda,0xa4,0xf0,0xff,
0x16,0xb5,0x80,0xc7,0xab,0x4d,0xa6,0xaa,0x8,0xf6,0x69,0x93,0xf8,0x34,0x83,0x16,
0x47,0x5f,0x66,0x43,0xe8,0xc1,0x0,0x5e,0x8c,0x4b,0xa9,0x61,0x14,0xfa,0x55,0xd8,
0x8e,0xa,0xe9,0x61,0xe8,0x29,0x5,0x1f,0x49,0x2b,0x11,0xda,0xff,0x65,0x36,0x42,
0xfb,0xd0,0xaf,0x85,0x89,0x59,0x29,0x95,0xc2,0xa1,0x29,0xe8,0x8c,0x27,0x52,0x38,
0xd2,0x8f,0xd6,0x87,0xf1,0xf4,0x32,0x7e,0x36,0x29,0xed,0xce,0xc3,0x28,0x18,0x8b,
0x46,0x12,0x28,0x19,0x96,0x7e,0xe,0xbc,0xcc,0x86,0x8f,0xcc,0xaa,0x63,0xe5,0x8d,
0x59,0xfb,0x3a,0xbb,0x6f,0x62,0x74,0x5a,0x46,0xc8,0x45,0x81,0x2d,0x14,0xda,0x1f,
0xc5,0x52,0x9e,0xf8,0x5b,0xb3,0xf1,0xe3,0x36,0x9f,0xdb,0xed,0xf2,0xf0,0xcc,0x5,
0x1f,0xef,0x2a,0x7a,0x84,0x7f,0x1c,0x2f,0xdc,0xaa,0x4f,0x62,0x99,0x2a,0xa3,0xfe,
0xb8,0xe0,0x1a,0xf5,0xef,0x1,0x6e,0x63,0x55,0xe9,0xa2,0xc0,0x26,0x4a,0xe,0x32,
0x45,0xe2,0xa8,0xfe,0x3,0xe6,0x92,0x2,0xff,0x51,0xd8,0xd7,0x79,0x1b,0x38,0x76,
0x65,0xfe,0x8f,0x2f,0xba,0xb8,0x33,0x16,0xb7,0xcb,0x7b,0x16,0xac,0xee,0x9f,0xce,
0x1,0x8d,0xa6,0xaa,0xc4,0x29,0xb6,0xb7,0xf0,0x1d,0x32,0xc9,0xc7,0x4b,0xb1,0xd6,
0x58,0x8d,0xe2,0x33,0xe,0xfe,0x6c,0x29,0x80,0xfc,0xf2,0xe6,0xd5,0x2b,0xcc,0x8d,
0xaf,0x5b,0xae,0x5c,0x6e,0x65,0xce,0xfc,0xe0,0x73,0xf1,0x67,0xeb,0x55,0xaa,0x6f,
0x74,0xad,0x2a,0xd5,0xc5,0x9b,0x17,0xe9,0x5d,0x7d,0x83,0x5a,0xa5,0xba,0x74,0x8d,
0xde,0x55,0x3a,0xd9,0x78,0xde,0xdd,0xa4,0x52,0xf5,0xf4,0xf4,0x34,0xf4,0xe8,0x1a,
0x5c,0x9e,0x6e,0xd5,0xcd,0xaf,0x54,0x5f,0x5d,0x6a,0xad,0xb7,0xf1,0x4e,0x87,0x5e,
0xad,0xf2,0xf2,0x1e,0x7b,0x27,0xdf,0x60,0xe5,0xad,0xb4,0xff,0x99,0x6e,0xfe,0xec,
0x47,0x64,0x61,0x72,0x9f,0x7c,0x91,0xaf,0x59,0x8b,0xb5,0x78,0xed,0x64,0x79,0xb,
0x23,0x63,0xa1,0x3,0x7e,0x80,0xf1,0x36,0x12,0xab,0x2a,0xcb,0xca,0x91,0x2b,0xc7,
0x2b,0x77,0x35,0x4a,0xab,0xaa,0x38,0xdc,0xcb,0xf7,0x39,0x58,0xca,0x66,0x7a,0x8b,
0xc,0x55,0x75,0x7a,0xbd,0x15,0xcb,0xbb,0x3f,0x5,0xbe,0x30,0xff,0x65,0x7a,0x6c,
0x76,0x9e,0xad,0xf7,0xba,0x2d,0x9d,0x6c,0x13,0xe3,0xf6,0xb0,0xf5,0x3d,0x1e,0x8b,
0xfb,0x2c,0xf3,0x3f,0x99,0x3e,0x95,0x3c,0x53,0x71,0x5a,0x55,0x25,0x89,0x1d,0x2e,
0x6b,0x1f,0x23,0xdf,0x56,0xd6,0x60,0xba,0x80,0xa8,0xfa,0x2e,0x8b,0xd3,0xee,0xe8,
0x6b,0xa2,0x8a,0x79,0xcd,0x5,0xea,0xd8,0x6,0x12,0x65,0x5a,0xff,0xf9,0x2f,0xa6,
0xad,0x95,0xb6,0x2a,0x3d,0xbd,0xf6,0x9f,0xd8,0x26,0x8d,0xba,0xc1,0xe0,0x2e,0x8e,
0xed,0x61,0xed,0xdd,0x36,0xbe,0x49,0xaf,0x56,0x17,0xbb,0x90,0xe9,0x9b,0x38,0x97,
0xc7,0x69,0x71,0x9c,0xdd,0xc7,0x3a,0xf7,0xde,0xc5,0x9d,0x16,0x4f,0xb7,0x9d,0xab,
0xe7,0x5d,0xee,0x26,0x8d,0xd6,0xdd,0x5b,0x6a,0xe8,0x70,0xf1,0xbc,0xcb,0xb9,0xb7,
0xcd,0xc1,0x76,0xf1,0x4d,0xea,0x8a,0x6,0x8f,0xbc,0xae,0xdc,0x52,0xff,0x3,0x5f,
0xdf,0x1,0x2a,0xf5,0x7d,0x3d,0xe8,0xf,0xb0,0xb8,0x9,0x68,0x21,0xdc,0x2b,0x7d,
0x85,0x4e,0x65,0x4a,0x64,0x66,0xbb,0x2d,0x5c,0x15,0x46,0x28,0xf0,0x0,0x5c,0xb9,
0xbb,0x90,0xdb,0x85,0x70,0x5f,0xda,0xd,0x14,0xe6,0xb7,0xc0,0xb1,0x49,0xfe,0x80,
0x98,0xbb,0x23,0xce,0xcf,0x8,0xdb,0xa3,0x52,0x2e,0x27,0x64,0xd6,0xe0,0x42,0xc8,
0x64,0xf0,0x50,0x4c,0xd8,0xf6,0xb,0xdb,0x8f,0xa,0xf7,0xf2,0x78,0x6c,0x4d,0x1c,
0xda,0x44,0xe3,0x63,0x28,0x9e,0x10,0xb6,0x47,0xa,0xb,0xf7,0xa9,0x77,0x44,0xd1,
0x67,0x28,0x96,0x82,0x8,0x81,0x8a,0x9,0x68,0x28,0x49,0xc9,0x7d,0xa2,0x79,0x54,
0x8a,0x14,0x28,0x53,0xa4,0xdd,0x59,0x60,0x4,0x84,0x6,0x95,0x81,0x11,0xb0,0x40,
0x7c,0xfc,0x18,0x78,0x54,0x58,0xd9,0x81,0x5b,0x70,0x21,0x85,0x1e,0xe3,0xb1,0x84,
0x14,0x1d,0x2f,0xf6,0xf,0xb3,0x56,0xed,0xf7,0xf0,0x4c,0xde,0x26,0x56,0xe1,0x76,
0x27,0xd7,0x4e,0xed,0x81,0xb7,0xdd,0xd4,0xee,0x73,0xf0,0x76,0xa7,0x85,0x67,0xa1,
0x89,0xb7,0xb5,0x7b,0xdd,0x9a,0xf6,0x5e,0xb3,0xb1,0xdd,0xfa,0xa3,0xb5,0xdd,0xd7,
0x6e,0x34,0x99,0xf4,0x66,0x63,0x83,0xdd,0xeb,0xba,0xad,0x35,0x1a,0x74,0x5a,0x93,
0x51,0x63,0x54,0xdf,0x36,0x19,0xd4,0xba,0x4b,0xfa,0x96,0xc6,0x16,0xb3,0x49,0x67,
0xbe,0xf8,0x79,0x6b,0x4b,0xa3,0xc1,0x6c,0xd2,0xea,0xf5,0x86,0x56,0x93,0xf6,0xc2,
0xa5,0xcf,0x5b,0x6e,0xab,0xfe,0xc2,0x52,0x48,0x47,0x64,0x29,0x1c,0x8d,0xe1,0x46,
0x7d,0x5,0xc3,0xd5,0x66,0x99,0xe1,0x3a,0xbd,0x56,0x6d,0x30,0x98,0x74,0x1a,0xed,
0xed,0x16,0x83,0xd9,0x0,0x72,0x30,0x6b,0xe0,0x9f,0x56,0x67,0x6c,0x35,0x35,0xea,
0x1a,0xd5,0x6a,0x1d,0x34,0xeb,0x2e,0x98,0xd5,0x26,0xf3,0xeb,0x19,0x6e,0xf3,0x94,
0x4d,0xa1,0x8a,0xd8,0xa9,0xb2,0x1,0x53,0xec,0x6d,0x6d,0xc5,0x8a,0x1a,0xbd,0xe6,
0x60,0x5f,0xaa,0xa2,0x46,0x3,0x6d,0x27,0xd1,0xc8,0x2f,0x6f,0xeb,0x58,0x55,0x5f,
0x7b,0x21,0x39,0x66,0xbe,0x64,0x1d,0xee,0xe3,0x45,0x52,0x3d,0xc1,0x3c,0xf5,0xb1,
0x1f,0x9a,0x8f,0x55,0xbf,0x6a,0xb8,0xd4,0xef,0xc5,0x6e,0x69,0x8d,0xfb,0xa1,0x19,
0x1,0x5a,0x79,0xbc,0x98,0x99,0x45,0xeb,0x31,0x71,0x36,0x27,0xce,0xd,0x81,0x9f,
0xc0,0xc9,0xe7,0x52,0x6a,0xe1,0xed,0xac,0xf5,0x9f,0x86,0x59,0xce,0x23,0x16,0xc1,
0xc2,0x4a,0x1b,0xc4,0xe7,0x4b,0x5b,0x77,0x50,0x32,0x42,0xad,0x81,0x98,0x18,0x45,
0xe9,0x18,0x5a,0x7f,0x8a,0x7f,0x5b,0xc1,0xf1,0x30,0xd,0xd,0x20,0x95,0x6,0xd3,
0x5c,0x58,0xd9,0x44,0xab,0x73,0xd4,0x6a,0xe3,0xc1,0x67,0xd2,0x83,0x7e,0x69,0x77,
0x9c,0xa4,0xc9,0xa1,0xbb,0x38,0x1e,0x5,0xec,0xe2,0xc0,0xe,0x7c,0x48,0x96,0x1d,
0x4b,0x41,0xac,0x41,0x27,0x44,0x23,0xcb,0x28,0x9b,0x46,0x23,0x4b,0xd2,0x60,0x8e,
0xd8,0xf7,0xf9,0xd,0x88,0x38,0xf0,0x68,0x18,0x85,0xd6,0x71,0xdc,0x8f,0xd2,0x93,
0xe0,0x0,0xc4,0xf8,0x28,0xac,0x48,0x47,0xc1,0x5a,0x35,0xc8,0x30,0x19,0xb4,0x18,
0x7a,0x8a,0x47,0x66,0xa4,0x40,0x1e,0x44,0xd,0x42,0x96,0x3,0x83,0x51,0x8,0x98,
0xe0,0x6b,0x61,0x30,0x7,0x20,0xe0,0x23,0xec,0x2c,0x91,0x12,0x42,0xd8,0x2f,0xad,
0xdf,0x83,0x76,0xe8,0x3,0xac,0x22,0xf8,0xf2,0x7e,0x2,0x74,0x37,0x53,0xdb,0x40,
0x4b,0x6e,0xb9,0x90,0x5d,0xc6,0xcb,0x41,0xe9,0xfe,0xaf,0x85,0x89,0x7e,0x94,0x9c,
0x3,0x69,0x15,0x82,0x11,0xc0,0xa,0x54,0xe3,0x48,0x98,0xe0,0x9e,0x48,0x42,0x60,
0x89,0x62,0xcf,0xa4,0xfc,0xe,0x0,0x7d,0xe1,0x8f,0xb7,0xf2,0x1e,0xc7,0xb,0xff,
0x2,0xdc,0xa8,0xc4,0x8,0x8e,0xfb,0x0,0xef,0x59,0x5,0x33,0x21,0xd6,0x6d,0xf1,
0x58,0xba,0xc1,0x7c,0xd9,0xea,0x89,0xed,0x6b,0x62,0x9d,0x6e,0xbe,0xef,0xfd,0x99,
0x86,0x8e,0x4a,0x57,0x7f,0x90,0xa8,0x6a,0x81,0xec,0x23,0x98,0xac,0x53,0x5c,0xa7,
0xb8,0x4e,0x71,0x9d,0xe2,0x3a,0xc5,0x75,0x8a,0xeb,0x14,0xd7,0x29,0xae,0x53,0x5c,
0xc7,0x8c,0xeb,0x44,0x26,0xb6,0x34,0x7d,0xc3,0x33,0x29,0x34,0xfe,0xa0,0x10,0xf7,
0x43,0xba,0x27,0xa4,0xd3,0x68,0x6b,0x8d,0xee,0x8d,0xe2,0x7b,0x51,0x21,0x17,0x7f,
0x99,0x5d,0xaa,0xf5,0x54,0x97,0xa6,0xab,0x3,0x9,0x5a,0x67,0x24,0xa9,0x9a,0x7c,
0xfa,0x0,0x92,0x5f,0x9a,0xea,0xd2,0x8d,0x33,0x92,0xb4,0x86,0x66,0xd1,0xea,0xc3,
0xc2,0x60,0x2,0x85,0x86,0x85,0xed,0xa8,0x38,0x91,0x20,0x8d,0x5b,0xbf,0x89,0x19,
0x48,0x87,0x73,0x85,0x60,0x4c,0x8c,0xf7,0xa3,0xb1,0xc,0xd9,0x56,0x4e,0xfe,0x82,
0xa7,0xd6,0x71,0x78,0x14,0xad,0x6e,0x88,0x53,0x59,0x92,0xd,0xce,0xce,0xe1,0xd1,
0x25,0x1c,0x4f,0x2b,0xe9,0xb3,0xb2,0x1,0x7,0x73,0xce,0xa3,0x4c,0xfa,0x77,0x7f,
0x3f,0x3d,0x74,0x52,0xea,0x6,0xb7,0xe8,0xb5,0xf8,0x73,0x3f,0xc9,0xa2,0x42,0xc3,
0x28,0x42,0x1a,0x51,0x2a,0x83,0xc3,0x79,0x34,0x46,0xa,0xa0,0xa,0x9d,0x53,0x41,
0x21,0xb3,0x29,0x3e,0x9,0xa3,0xe1,0x0,0x4a,0xee,0xd4,0x1e,0x83,0x9,0x19,0x76,
0x67,0x37,0xe3,0xf5,0x74,0x2a,0x64,0x34,0xa9,0xdc,0xf6,0x4e,0xde,0xe7,0x61,0x55,
0x38,0xf4,0x8,0xcd,0xe7,0x95,0x7f,0xed,0xe5,0xc3,0x42,0xcc,0x55,0x4b,0xa7,0xcd,
0xce,0xb1,0xed,0x5a,0xb5,0x56,0xab,0x36,0x69,0xb4,0x9a,0x46,0x8d,0xc9,0x60,0x6c,
0x70,0x73,0xdd,0xfb,0xab,0x60,0xb5,0x5,0x56,0xc8,0xd,0xe3,0x78,0x58,0x48,0xcf,
0x53,0x79,0xa,0xf9,0x5,0x3c,0xfd,0x70,0xcf,0xc3,0x21,0x1f,0x37,0xa0,0x77,0x49,
0x7d,0x20,0x3f,0xa,0xa,0xa8,0x54,0x56,0x26,0x49,0xfe,0x8c,0x52,0xc3,0x85,0xbb,
0x6b,0x44,0x65,0xf2,0xf7,0x50,0x60,0xd,0x54,0x43,0xa9,0x78,0xcf,0xd,0xe1,0x5d,
0x3f,0xde,0xc8,0x90,0x2d,0xec,0xcd,0x30,0x8a,0x8d,0x90,0x1a,0xf8,0xc2,0x60,0x61,
0x3a,0x59,0xb8,0x3f,0x23,0x97,0x1a,0xa2,0x42,0x76,0x4e,0xf2,0xf,0x4a,0xb3,0x77,
0x40,0x13,0xc5,0xc9,0x35,0xc8,0xac,0x61,0x38,0xba,0xbf,0x58,0xaa,0xaf,0xc0,0x24,
0x74,0x2d,0x68,0x57,0xa8,0x92,0x6b,0xbb,0x64,0xb9,0x5c,0x8a,0xea,0x11,0x7c,0x6a,
0x8f,0xaf,0xef,0x48,0x89,0xb4,0x66,0x83,0xba,0xf6,0x95,0xe8,0x1d,0x81,0xd5,0x19,
0xb4,0xa6,0x43,0xc0,0xbe,0xa6,0xd2,0x72,0x22,0x5d,0x92,0x90,0xf1,0xb,0x3b,0x21,
0xbc,0xbc,0xf5,0xaa,0x19,0x27,0x85,0xab,0x58,0x4a,0xae,0x31,0x86,0xf,0x38,0xe,
0x51,0xeb,0xae,0xaa,0xb0,0xb0,0xc8,0x94,0xcf,0x9d,0x50,0x7c,0x14,0xd3,0x1,0x80,
0x42,0x62,0x3a,0x5,0x9c,0xa8,0x18,0x24,0x64,0xfb,0x85,0xed,0xb9,0x92,0xf3,0x78,
0xed,0xe8,0xb0,0x62,0x54,0x76,0x17,0xa4,0x94,0x62,0x84,0xa0,0x73,0x65,0x1f,0x1c,
0x1a,0x7,0xbb,0x52,0x32,0x63,0xa5,0x75,0xbe,0xbd,0x1,0xf6,0xa5,0xf8,0x45,0xa3,
0x86,0x2f,0x17,0x59,0xd6,0x6d,0xe7,0xe0,0xe2,0xeb,0xe,0x1f,0xc7,0xfb,0x98,0x37,
0xb0,0x33,0xb5,0x10,0xeb,0xbd,0x51,0x28,0xf7,0xa1,0x3d,0x44,0x85,0xcc,0x8c,0x94,
0x5c,0xad,0xc,0x5a,0x14,0x67,0x6,0xba,0xb0,0xb3,0x8c,0x7,0x53,0xd8,0x3f,0x46,
0x9e,0xb2,0x89,0x9d,0xda,0x7f,0x64,0xe,0xdd,0x74,0xd6,0xec,0xd9,0x74,0xd6,0x80,
0x86,0xe2,0xf0,0x3d,0x94,0xf5,0xa3,0xf1,0x14,0x51,0xf3,0x59,0x12,0xe3,0xd1,0x16,
0xe6,0xba,0xc7,0xd2,0xe9,0x60,0x99,0x5b,0x57,0x2b,0x4e,0x35,0x33,0xd4,0xb8,0x7c,
0x58,0x5c,0xd0,0x92,0xe8,0x80,0x9e,0xf1,0x18,0x8f,0xa2,0x27,0xd3,0xc2,0x76,0xfa,
0x85,0x3f,0xae,0x3c,0xcf,0x2f,0xfc,0xb,0x95,0xaa,0x41,0x76,0x6c,0x8a,0xa7,0x43,
0x94,0x5a,0xff,0xc0,0xe,0xa,0x66,0xa8,0xca,0x9c,0x0,0xbe,0xbc,0x85,0xa3,0xe5,
0x2c,0xdd,0xac,0xa7,0xe4,0x68,0xb5,0x5a,0x9d,0x51,0xad,0x3d,0x19,0x51,0xc5,0x11,
0x94,0x40,0x47,0x42,0xc7,0x78,0x42,0xda,0x9d,0x2d,0x4,0x23,0xc2,0x6e,0x12,0x1e,
0x77,0x7a,0xe2,0xe7,0x3,0x94,0x69,0xa5,0x2c,0x4d,0x6a,0xc3,0x5f,0x2c,0x68,0x7a,
0x75,0x1b,0x96,0xa4,0x30,0x72,0x24,0x85,0xd6,0x72,0x68,0x75,0xa8,0xf6,0xcd,0xbc,
0x6c,0xb7,0xe5,0x10,0x46,0xd9,0x96,0xc,0x3e,0x12,0x27,0x9e,0xa,0x99,0xb1,0x92,
0x9d,0x42,0x77,0x23,0x28,0xb9,0x28,0xe4,0xee,0x91,0xeb,0x50,0x10,0x47,0xef,0xd7,
0x1e,0xa,0x6d,0x9,0x45,0x89,0x6c,0xbc,0xbc,0x83,0xa3,0x49,0xf1,0xd1,0x34,0x8a,
0xfd,0x8c,0x56,0x1f,0xa2,0xf5,0x18,0x8d,0xbf,0xa8,0x79,0x45,0xa1,0x61,0x29,0x9f,
0x10,0xc7,0x82,0xb5,0x87,0x45,0x57,0xc2,0x42,0xb,0x14,0x28,0xf0,0x54,0x48,0xff,
0x4a,0x6c,0x4a,0xf8,0x11,0xe1,0xff,0xc2,0x6e,0xa9,0x85,0x76,0xc0,0xa3,0x53,0x78,
0x22,0x5f,0x7b,0x40,0xf4,0x65,0x20,0xd3,0xcb,0x62,0x76,0x1,0x27,0x56,0x50,0x36,
0x56,0x7b,0x74,0xbe,0xb9,0xdd,0x53,0x5c,0x7b,0x24,0x8d,0x96,0x96,0x2a,0x2c,0x9f,
0xde,0xa8,0x6b,0xfc,0xab,0x59,0xbe,0x7,0x3,0x42,0x6e,0xb2,0xda,0x31,0x94,0x93,
0x60,0xf0,0x68,0xa0,0x5,0x91,0x19,0x18,0x3,0xb4,0x1a,0x84,0xc0,0xec,0xdc,0xef,
0xfe,0x51,0xf8,0x5e,0x9,0x5,0x5a,0x6b,0x8f,0xfa,0xc3,0x75,0xf5,0xb5,0x95,0xd,
0xbd,0xb6,0x51,0x7b,0x98,0xaa,0xd6,0x0,0x4a,0x6d,0x29,0x99,0x90,0x65,0xb4,0x22,
0x26,0xa7,0xc1,0xa2,0x83,0x40,0xe4,0x94,0x22,0x8f,0x42,0xeb,0x10,0x5e,0xd3,0xd8,
0xba,0x2,0xed,0x17,0x3e,0xd6,0xcb,0x33,0x17,0xac,0x56,0x3b,0x39,0xee,0xa8,0x84,
0xdb,0x28,0x10,0x16,0xe7,0x67,0xe4,0x83,0x53,0x11,0x12,0x5c,0xef,0xce,0xa3,0xc0,
0x5a,0x39,0xf4,0x96,0x1b,0x8b,0x79,0x4b,0x71,0x4a,0x98,0x4c,0x9,0xd9,0xf7,0x4d,
0x56,0x91,0xb2,0xd4,0x14,0xbf,0xde,0x4d,0xd9,0x4b,0xaf,0x53,0xab,0x4f,0x40,0xa1,
0x58,0x9,0xaf,0x51,0x16,0x9e,0xe1,0x34,0x11,0x8a,0x5c,0xfc,0x2d,0x3d,0xd2,0x78,
0x26,0x75,0x42,0x9f,0xdc,0x37,0x94,0x91,0xc6,0x5c,0xfb,0x32,0x22,0xae,0x9f,0x9c,
0x5a,0x9c,0xdf,0x0,0xb9,0x80,0x50,0xae,0x41,0xcf,0xf,0x5b,0x2a,0x27,0xc1,0xac,
0xbe,0x33,0xb0,0xba,0xc3,0xaa,0xe3,0x35,0x2,0xf6,0x8,0x49,0xbb,0x81,0x58,0x95,
0x40,0xa2,0x30,0x98,0x28,0xbd,0xd0,0x4a,0x5d,0x44,0xc9,0xb0,0x28,0xc7,0xf1,0x41,
0x8d,0xe9,0x36,0x2d,0xd,0x7e,0x6a,0x3c,0xda,0x79,0x67,0x22,0xd7,0xeb,0x3f,0x38,
0x91,0x1b,0x49,0x24,0xf8,0x24,0x8c,0xf2,0x1,0x25,0x8e,0x4d,0x46,0x70,0x6a,0x12,
0x44,0x4e,0xe,0x64,0xcb,0x4a,0x0,0x52,0xff,0x8a,0xed,0x70,0xb9,0x78,0x86,0x73,
0xf5,0x90,0x10,0x60,0xaf,0x46,0x7c,0x2e,0xbf,0xaa,0x41,0xce,0xe5,0x6,0xa3,0x68,
0x3c,0x85,0x9f,0xac,0x96,0x93,0x66,0xb9,0xe0,0xb3,0xb7,0xd6,0x1f,0xaa,0x3e,0x29,
0xda,0xd9,0xa4,0x46,0xb2,0x34,0x1d,0xd9,0x8c,0x94,0x73,0x55,0x98,0x17,0x4f,0xad,
0xd3,0x82,0x6a,0xf1,0xb0,0xef,0x87,0xaf,0x6b,0x1a,0xb5,0xee,0x60,0x5d,0x93,0xaf,
0x4e,0xc0,0x7b,0x41,0x90,0x15,0xbe,0xdd,0xf,0x6b,0x68,0xaa,0xfe,0x50,0x5,0xa,
0x3c,0x13,0xd2,0x63,0x47,0x86,0x78,0xa1,0xc3,0xe5,0xe3,0x8f,0x17,0xa7,0xb9,0xea,
0xfb,0x4f,0x44,0x32,0xa7,0x6f,0xd,0x9d,0xbe,0x35,0xf4,0x16,0x66,0x4,0xcc,0x28,
0xe4,0x61,0xc,0x68,0x1a,0xcb,0xd0,0xb7,0x60,0xd0,0x6c,0xa2,0x30,0x3b,0x84,0x9e,
0x2e,0x8a,0x99,0x21,0x21,0xb3,0x9,0x96,0x54,0x9a,0xcd,0x81,0x2d,0x96,0x76,0x17,
0xa4,0xc1,0x88,0x90,0x1e,0xa6,0x7b,0x2c,0x2c,0x73,0xd9,0xcb,0x0,0x73,0x98,0xb,
0x1c,0x73,0xc9,0xe9,0x3,0x7d,0x77,0x79,0x48,0xd0,0x69,0x71,0xba,0xcf,0x2,0x34,
0xb9,0x7,0xd9,0xb0,0x9d,0x49,0xd1,0x37,0x74,0x71,0x62,0x5,0x8c,0x35,0x4c,0x2e,
0xf7,0x80,0x95,0x49,0xba,0x38,0xb6,0x84,0x87,0x62,0x74,0x7,0x17,0x4f,0x27,0x48,
0x19,0x7f,0x30,0x87,0xe7,0x37,0x48,0x61,0x20,0x19,0x11,0xf3,0x63,0xc4,0x67,0x24,
0xfd,0x28,0x3a,0x49,0xb6,0x72,0x64,0xea,0x4a,0x7b,0xb7,0xf4,0x7,0x81,0x6a,0xcf,
0x2e,0x97,0x36,0xf2,0xd1,0x52,0x1a,0x8c,0x8,0xd3,0xfa,0xc9,0x27,0xcc,0xbf,0x79,
0x0,0x72,0xa3,0x8f,0xb7,0xc1,0x13,0x8e,0xee,0x46,0x8a,0xfb,0x72,0x1d,0x60,0x91,
0x51,0x68,0x53,0x3e,0x7e,0x6,0x3e,0x70,0x4e,0xda,0xd,0x2a,0x22,0x90,0x3d,0x59,
0x9,0x2a,0x3d,0xa2,0x56,0x3a,0x5e,0x53,0x76,0x7b,0xc9,0x45,0x71,0x6c,0x1d,0xb8,
0xc6,0x5c,0xb1,0x73,0xbe,0x5e,0x66,0x1f,0x87,0xd8,0x5e,0x56,0xd9,0xf6,0x23,0xac,
0x96,0xab,0x2c,0xbf,0xfb,0x7,0x6a,0x8f,0x63,0xa,0xa3,0xbe,0xb8,0x71,0x85,0xb9,
0xa5,0x63,0x50,0x34,0x26,0x25,0x93,0x28,0xeb,0xc7,0xe9,0xf1,0xda,0xa3,0xb5,0xb0,
0xb2,0x23,0xce,0x27,0x51,0x7c,0x1d,0x2d,0xf8,0x8b,0xaf,0x94,0xd7,0x14,0x81,0xc4,
0x2d,0x7c,0x1,0xd6,0x90,0x55,0xa8,0xb3,0x30,0x36,0xf,0xdb,0x75,0xae,0x6c,0xe3,
0xbd,0x60,0xe4,0xbb,0x49,0x87,0x86,0x4e,0x97,0x53,0xd5,0xdd,0x65,0xed,0xb6,0xd6,
0xf7,0xda,0x55,0x56,0x96,0x75,0xd7,0x13,0x2b,0x50,0xef,0xf1,0x71,0x1c,0xeb,0x39,
0x62,0x9c,0x47,0x29,0xb2,0xb2,0x9d,0x2e,0x8f,0xec,0xc8,0x9a,0x18,0x1f,0x50,0xe7,
0x21,0x5e,0x8b,0x58,0x7a,0x87,0xcb,0xd3,0xf4,0x77,0xb5,0xda,0xac,0xed,0xb2,0x54,
0xd0,0x7a,0x14,0x72,0x5e,0x9,0xc6,0x2c,0xb5,0x19,0x96,0x29,0xfc,0xb7,0xf9,0x3a,
0xe,0x11,0x0,0xf4,0xa8,0x29,0x9,0x1c,0x4e,0xcf,0x9,0x13,0x1,0x20,0xff,0xfe,
0x10,0x19,0x90,0x2e,0x24,0xd4,0x69,0xe8,0xe4,0x28,0xee,0xf6,0xf7,0x2f,0x87,0x37,
0xa3,0xe9,0xa4,0xc8,0x2,0xc2,0xb,0x1a,0x46,0x90,0xd7,0x49,0xe3,0xe1,0xc2,0xc2,
0x22,0xda,0xde,0x46,0xab,0xf,0x49,0x25,0x31,0x9b,0x56,0x5e,0xb2,0x5d,0x7f,0xa,
0x51,0x82,0x38,0xbf,0x8d,0x53,0x13,0xc4,0x11,0x90,0xd0,0x81,0x9c,0xd5,0xca,0xce,
0xd1,0xa3,0x9f,0x28,0xba,0x4c,0x5e,0xeb,0x5f,0x7d,0x48,0x8e,0x2e,0xc3,0xb8,0x5f,
0xd2,0x85,0xe9,0xd,0x52,0x40,0x90,0xbd,0xa4,0xd2,0xa7,0x78,0x17,0x4f,0x6f,0xd2,
0xbb,0x78,0x69,0x5c,0x48,0xcf,0xe3,0xc1,0x0,0x1a,0x7e,0x4e,0xde,0xf2,0x94,0xbb,
0xed,0x5d,0x84,0xa1,0x8d,0x78,0x33,0x24,0xf9,0xa7,0x49,0xd8,0xb1,0x3a,0x47,0xe6,
0xa7,0x27,0xc8,0x9e,0xf,0x81,0x3,0x22,0x64,0xe4,0x86,0xe9,0x2b,0xa0,0xfb,0xe2,
0x12,0xfc,0xbc,0x5f,0x9c,0xc,0x1c,0x14,0x97,0x50,0xfa,0xe9,0x71,0x6b,0x4,0x9f,
0xf5,0x3b,0x68,0x7e,0x19,0x2,0x2d,0x0,0xd,0xd7,0x38,0x34,0x85,0xe3,0x8f,0x14,
0xf7,0x9d,0xca,0x4a,0xc1,0x8d,0xca,0xd3,0x6f,0x65,0xbf,0xad,0x44,0x3,0xd9,0x1,
0x60,0x5a,0xed,0xc9,0x56,0x4a,0xad,0x51,0xd9,0xd2,0x18,0x46,0xf2,0x7,0xe0,0x71,
0x93,0x55,0x96,0xe9,0xb5,0xcb,0x25,0xc9,0xb4,0x72,0xce,0x91,0x1c,0x5a,0x8f,0xa2,
0xa9,0x38,0x7e,0x7c,0x5f,0x1c,0x1e,0x41,0xc1,0x34,0xfe,0x6d,0x5,0xe2,0xa0,0xc2,
0xcc,0x2e,0xda,0x1e,0x44,0x77,0xf6,0x6f,0x71,0xd7,0xda,0xf6,0x1d,0x8a,0xd,0x48,
0xfe,0x41,0x3c,0x15,0x14,0x23,0xc9,0x9a,0x74,0xfa,0xaf,0x31,0x4c,0x7b,0x72,0x99,
0x8b,0x1e,0x97,0xdd,0x4a,0x93,0x99,0xab,0x2e,0xce,0x45,0x1b,0x3f,0xa5,0xff,0x9c,
0xd0,0x20,0x67,0x50,0xaf,0x6b,0x7d,0xd5,0xda,0x29,0x16,0xcd,0x68,0x69,0x6c,0x34,
0x18,0xaa,0x58,0xb4,0xef,0x7c,0xec,0x77,0x76,0x8e,0x18,0x33,0x18,0xcf,0xab,0x4c,
0x6a,0xb3,0x5a,0x6f,0xd6,0x1b,0x34,0x8d,0x3a,0xad,0xd9,0x6c,0x82,0xb,0xf5,0x1,
0x75,0x96,0x93,0x52,0x7a,0xd0,0xa9,0xab,0xfe,0xb6,0x5f,0xc1,0xef,0x7,0x3d,0x3f,
0x32,0xa9,0x97,0x7a,0xed,0x87,0x54,0x10,0x9a,0x55,0xa5,0x1f,0x63,0x6d,0x56,0x91,
0x9f,0x71,0xfd,0x3f,0xa2,0x77,0xc0,0xa8,
// /home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/LANG/virtualmachine-en_US.qm
0x0,0x0,0x5,0x21,
0x3c,
0xb8,0x64,0x18,0xca,0xef,0x9c,0x95,0xcd,0x21,0x1c,0xbf,0x60,0xa1,0xbd,0xdd,0xa7,
0x0,0x0,0x0,0x5,0x7a,0x68,0x5f,0x43,0x4e,0x42,0x0,0x0,0x0,0x68,0x0,0x17,
0x80,0x6f,0x0,0x0,0x3,0xbc,0x2,0x54,0x58,0xc7,0x0,0x0,0x1,0x1a,0x2,0xec,
0xd7,0x19,0x0,0x0,0x1,0xce,0x7,0x71,0x98,0x99,0x0,0x0,0x0,0x8d,0x7,0xe7,
0x98,0x99,0x0,0x0,0x0,0x0,0x8,0xeb,0x29,0xaa,0x0,0x0,0x4,0x49,0x9,0xb5,
0xa9,0xa6,0x0,0x0,0x2,0xf8,0xc,0xa1,0xc7,0xc9,0x0,0x0,0x2,0xa2,0xc,0xd4,
0x95,0xaa,0x0,0x0,0x3,0x3d,0xe,0xe1,0x20,0x2e,0x0,0x0,0x1,0x9f,0xf,0x7,
0x82,0xb5,0x0,0x0,0x2,0x6f,0xf,0x18,0xee,0x2a,0x0,0x0,0x4,0x1c,0xf,0x3a,
0xd3,0x7e,0x0,0x0,0x3,0x89,0x69,0x0,0x0,0x4,0x95,0x3,0x0,0x0,0x0,0x46,
0x0,0x57,0x0,0x69,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x73,0x0,0x20,
0x0,0x37,0x0,0x20,0x0,0x58,0x0,0x38,0x0,0x36,0x0,0x28,0x0,0x53,0x0,0x75,
0x0,0x70,0x0,0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x41,0x0,0x75,
0x0,0x74,0x0,0x6f,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x61,
0x0,0x6c,0x0,0x6c,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x28,
0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x20,0x37,0x20,0x33,0x32,0x20,0xe4,0xbd,0x8d,
0xef,0xbc,0x88,0xe6,0x94,0xaf,0xe6,0x8c,0x81,0xe8,0x87,0xaa,0xe5,0x8a,0xa8,0xe5,
0xae,0x89,0xe8,0xa3,0x85,0xef,0xbc,0x89,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,
0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x46,0x0,0x57,0x0,
0x69,0x0,0x6e,0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x73,0x0,0x20,0x0,0x37,0x0,
0x20,0x0,0x58,0x0,0x36,0x0,0x34,0x0,0x28,0x0,0x53,0x0,0x75,0x0,0x70,0x0,
0x70,0x0,0x6f,0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x41,0x0,0x75,0x0,0x74,0x0,
0x6f,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,
0x6c,0x0,0x29,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x28,0x57,0x69,0x6e,
0x64,0x6f,0x77,0x73,0x20,0x37,0x20,0x36,0x34,0x20,0xe4,0xbd,0x8d,0xef,0xbc,0x88,
0xe6,0x94,0xaf,0xe6,0x8c,0x81,0xe8,0x87,0xaa,0xe5,0x8a,0xa8,0xe5,0xae,0x89,0xe8,
0xa3,0x85,0xef,0xbc,0x89,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,
0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x4c,0x0,0x57,0x0,0x69,0x0,0x6e,
0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x73,0x0,0x20,0x0,0x53,0x0,0x79,0x0,0x73,
0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x49,0x0,0x6e,0x0,0x73,0x0,0x74,
0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x42,0x0,0x79,
0x0,0x20,0x0,0x56,0x0,0x69,0x0,0x72,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,
0x0,0x42,0x0,0x6f,0x0,0x78,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,
0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x20,0xe5,0xba,0x94,0xe7,0x94,0xa8,0xe9,0x80,
0x82,0xe9,0x85,0x8d,0xe5,0xb7,0xa5,0xe5,0x85,0xb7,0x7,0x0,0x0,0x0,0xa,0x4d,
0x61,0x69,0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0xa,0x0,
0x41,0x0,0x62,0x0,0x6f,0x0,0x75,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,
0x0,0x0,0x6,0xe5,0x85,0xb3,0xe4,0xba,0x8e,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,
0x69,0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x52,0x0,0x4f,
0x0,0x74,0x0,0x68,0x0,0x65,0x0,0x72,0x0,0x20,0x0,0x57,0x0,0x69,0x0,0x6e,
0x0,0x64,0x0,0x6f,0x0,0x77,0x0,0x73,0x0,0x28,0x0,0x44,0x0,0x6f,0x0,0x6e,
0x0,0x27,0x0,0x74,0x0,0x20,0x0,0x53,0x0,0x75,0x0,0x70,0x0,0x70,0x0,0x6f,
0x0,0x72,0x0,0x74,0x0,0x20,0x0,0x41,0x0,0x75,0x0,0x74,0x0,0x6f,0x0,0x20,
0x0,0x49,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x29,
0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x30,0xe5,0x85,0xb6,0xe5,0xae,0x83,
0x20,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x20,0xe7,0xb3,0xbb,0xe7,0xbb,0x9f,0xef,
0xbc,0x88,0xe4,0xb8,0x8d,0xe6,0x94,0xaf,0xe6,0x8c,0x81,0xe8,0x87,0xaa,0xe5,0x8a,
0xa8,0xe5,0xae,0x89,0xe8,0xa3,0x85,0xef,0xbc,0x89,0x7,0x0,0x0,0x0,0xa,0x4d,
0x61,0x69,0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0xe,0x0,
0x49,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,0x8,0x0,0x0,
0x0,0x0,0x6,0x0,0x0,0x0,0x6,0xe5,0xae,0x89,0xe8,0xa3,0x85,0x7,0x0,0x0,
0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,
0x0,0x24,0x0,0x49,0x0,0x6e,0x0,0x73,0x0,0x74,0x0,0x61,0x0,0x6c,0x0,0x6c,
0x0,0x2f,0x0,0x55,0x0,0x73,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x20,0x0,0x48,
0x0,0x65,0x0,0x6c,0x0,0x70,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x13,
0xe5,0xae,0x89,0xe8,0xa3,0x85,0x2f,0xe4,0xbd,0xbf,0xe7,0x94,0xa8,0xe5,0xb8,0xae,
0xe5,0x8a,0xa9,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,0x6e,0x64,
0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x1a,0x0,0x42,0x0,0x72,0x0,0x6f,0x0,0x77,
0x0,0x73,0x0,0x65,0x0,0x72,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x0,0x2e,0x0,0x2e,
0x0,0x2e,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xc,0xe6,0xb5,0x8f,0xe8,
0xa7,0x88,0xe2,0x80,0xa6,0xe2,0x80,0xa6,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,
0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x53,0x0,
0x79,0x0,0x73,0x0,0x74,0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x56,0x0,0x65,0x0,
0x72,0x0,0x73,0x0,0x69,0x0,0x6f,0x0,0x6e,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,
0x6,0x0,0x0,0x0,0xf,0xe7,0xb3,0xbb,0xe7,0xbb,0x9f,0xe7,0x89,0x88,0xe6,0x9c,
0xac,0xef,0xbc,0x9a,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,0x6e,
0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0xe,0x0,0x53,0x0,0x65,0x0,0x74,0x0,
0x74,0x0,0x69,0x0,0x6e,0x0,0x67,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,
0x6,0xe8,0xae,0xbe,0xe7,0xbd,0xae,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,
0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x2c,0x0,0x49,0x0,0x6e,
0x0,0x70,0x0,0x75,0x0,0x74,0x0,0x20,0x0,0x53,0x0,0x79,0x0,0x73,0x0,0x74,
0x0,0x65,0x0,0x6d,0x0,0x20,0x0,0x49,0x0,0x53,0x0,0x4f,0x0,0x20,0x0,0x49,
0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,
0x0,0x15,0xe8,0xaf,0xb7,0xe9,0x80,0x89,0xe6,0x8b,0xa9,0xe7,0xb3,0xbb,0xe7,0xbb,
0x9f,0xe9,0x95,0x9c,0xe5,0x83,0x8f,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,
0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x8,0x0,0x45,0x0,0x78,
0x0,0x69,0x0,0x74,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x6,0xe9,0x80,
0x80,0xe5,0x87,0xba,0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,0x6e,
0x64,0x6f,0x77,0x1,0x3,0x0,0x0,0x0,0x1e,0x0,0x49,0x0,0x53,0x0,0x4f,0x0,
0x20,0x0,0x49,0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x20,0x0,0x50,0x0,
0x61,0x0,0x74,0x0,0x68,0x0,0x3a,0x8,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,
0xf,0xe9,0x95,0x9c,0xe5,0x83,0x8f,0xe8,0xb7,0xaf,0xe5,0xbe,0x84,0xef,0xbc,0x9a,
0x7,0x0,0x0,0x0,0xa,0x4d,0x61,0x69,0x6e,0x57,0x69,0x6e,0x64,0x6f,0x77,0x1,
}; };
static const unsigned char qt_resource_name[] = { static const unsigned char qt_resource_name[] = {
// deepin-wine-runner.png // LANG
0x0,0x4,
0x0,0x5,0x6,0x27,
0x0,0x4c,
0x0,0x41,0x0,0x4e,0x0,0x47,
// deepin-wine-runner.png
0x0,0x16, 0x0,0x16,
0x1,0xfc,0x35,0xc7, 0x1,0xfc,0x35,0xc7,
0x0,0x64, 0x0,0x64,
@ -215340,64 +215659,85 @@ static const unsigned char qt_resource_name[] = {
0x56,0xfe,0x0,0x5f,0x0,0x56,0x0,0x69,0x0,0x72,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x42,0x0,0x6f,0x0,0x78,0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x63, 0x56,0xfe,0x0,0x5f,0x0,0x56,0x0,0x69,0x0,0x72,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x42,0x0,0x6f,0x0,0x78,0x0,0x20,0x0,0x4d,0x0,0x61,0x0,0x63,
0x0,0x68,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x5f,0x0,0x32,0x0,0x30,0x0,0x32,0x0,0x32,0x0,0x30,0x0,0x37,0x0,0x31,0x0,0x32,0x0,0x31,0x0,0x39,0x0,0x31, 0x0,0x68,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x5f,0x0,0x32,0x0,0x30,0x0,0x32,0x0,0x32,0x0,0x30,0x0,0x37,0x0,0x31,0x0,0x32,0x0,0x31,0x0,0x39,0x0,0x31,
0x0,0x37,0x0,0x35,0x0,0x36,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, 0x0,0x37,0x0,0x35,0x0,0x36,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// virtualmachine-en_US.ts
0x0,0x17,
0x3,0x26,0xf0,0x93,
0x0,0x76,
0x0,0x69,0x0,0x72,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2d,0x0,0x65,0x0,0x6e,
0x0,0x5f,0x0,0x55,0x0,0x53,0x0,0x2e,0x0,0x74,0x0,0x73,
// virtualmachine-en_US.qm
0x0,0x17,
0x3,0x26,0xf0,0x5d,
0x0,0x76,
0x0,0x69,0x0,0x72,0x0,0x74,0x0,0x75,0x0,0x61,0x0,0x6c,0x0,0x6d,0x0,0x61,0x0,0x63,0x0,0x68,0x0,0x69,0x0,0x6e,0x0,0x65,0x0,0x2d,0x0,0x65,0x0,0x6e,
0x0,0x5f,0x0,0x55,0x0,0x53,0x0,0x2e,0x0,0x71,0x0,0x6d,
}; };
static const unsigned char qt_resource_struct[] = { static const unsigned char qt_resource_struct[] = {
// : // :
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1, 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/LANG
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x13,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/deepin-wine-runner.png // :/deepin-wine-runner.png
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
0x0,0x0,0x1,0x82,0x16,0x7c,0xaa,0x8, 0x0,0x0,0x1,0x82,0x16,0x7c,0xaa,0x8,
// :/deepin-wine-runner.svg // :/deepin-wine-runner.svg
0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x42,0x15, 0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x42,0x15,
0x0,0x0,0x1,0x82,0x16,0x74,0x25,0x6b, 0x0,0x0,0x1,0x82,0x16,0x74,0x25,0x6b,
// :/picture // :/picture
0x0,0x0,0x0,0x64,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x4, 0x0,0x0,0x0,0x72,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x5,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/picture/截图 // :/picture/截图
0x0,0x0,0x0,0x78,0x0,0x2,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x6, 0x0,0x0,0x0,0x86,0x0,0x2,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x7,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/picture/截图_VirtualBox Machine_20220712142929.png // :/picture/截图_VirtualBox Machine_20220712142929.png
0x0,0x0,0x0,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6e,0x8c, 0x0,0x0,0x0,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6e,0x8c,
0x0,0x0,0x1,0x81,0xf1,0x1b,0x6f,0x60, 0x0,0x0,0x1,0x81,0xf1,0x1b,0x6f,0x60,
// :/picture/截图/截图_选择区域_20220712224639.png // :/picture/截图/截图_选择区域_20220712224639.png
0x0,0x0,0x2,0xdc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x17,0xa1,0x2b, 0x0,0x0,0x2,0xea,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x17,0xa1,0x2b,
0x0,0x0,0x1,0x81,0xf2,0xe0,0xae,0xa0, 0x0,0x0,0x1,0x81,0xf2,0xe0,0xae,0xa0,
// :/picture/截图/截图_VirtualBox Manager_20220712223602.png // :/picture/截图/截图_VirtualBox Manager_20220712223602.png
0x0,0x0,0x1,0xda,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xe,0x70,0x91, 0x0,0x0,0x1,0xe8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xe,0x70,0x91,
0x0,0x0,0x1,0x81,0xf2,0xd8,0x55,0xe8, 0x0,0x0,0x1,0x81,0xf2,0xd8,0x55,0xe8,
// :/picture/截图/截图_VirtualBox Machine_20220712143103.png // :/picture/截图/截图_VirtualBox Machine_20220712143103.png
0x0,0x0,0x2,0x30,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x1c,0xd0, 0x0,0x0,0x2,0x3e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x1c,0xd0,
0x0,0x0,0x1,0x81,0xf1,0x1b,0x9e,0x40, 0x0,0x0,0x1,0x81,0xf1,0x1b,0x9e,0x40,
// :/picture/截图/截图_VirtualBox Machine_20220712143006.png // :/picture/截图/截图_VirtualBox Machine_20220712143006.png
0x0,0x0,0x4,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2e,0x76,0xc1, 0x0,0x0,0x4,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2e,0x76,0xc1,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xe8,0x78, 0x0,0x0,0x1,0x81,0xf1,0x1b,0xe8,0x78,
// :/picture/截图/截图_VirtualBox Machine_20220712143018.png // :/picture/截图/截图_VirtualBox Machine_20220712143018.png
0x0,0x0,0x0,0xd8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x1f,0x9, 0x0,0x0,0x0,0xe6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x1f,0x9,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xd4,0xf0, 0x0,0x0,0x1,0x81,0xf1,0x1b,0xd4,0xf0,
// :/picture/截图/截图_VirtualBox Machine_20220712143029.png // :/picture/截图/截图_VirtualBox Machine_20220712143029.png
0x0,0x0,0x2,0x86,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x13,0xc8,0x43, 0x0,0x0,0x2,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x13,0xc8,0x43,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xc9,0x38, 0x0,0x0,0x1,0x81,0xf1,0x1b,0xc9,0x38,
// :/picture/截图/截图_VirtualBox Machine_20220712143037.png // :/picture/截图/截图_VirtualBox Machine_20220712143037.png
0x0,0x0,0x3,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2a,0xc4,0x82, 0x0,0x0,0x3,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2a,0xc4,0x82,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xb9,0x98, 0x0,0x0,0x1,0x81,0xf1,0x1b,0xb9,0x98,
// :/picture/截图/截图_VirtualBox Machine_20220712143044.png // :/picture/截图/截图_VirtualBox Machine_20220712143044.png
0x0,0x0,0x1,0x84,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0x77,0xc3, 0x0,0x0,0x1,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0x77,0xc3,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xad,0xe0, 0x0,0x0,0x1,0x81,0xf1,0x1b,0xad,0xe0,
// :/picture/截图/截图_VirtualBox_20220712223705.png // :/picture/截图/截图_VirtualBox_20220712223705.png
0x0,0x0,0x3,0xc2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2d,0xb9,0x6d, 0x0,0x0,0x3,0xd0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2d,0xb9,0x6d,
0x0,0x0,0x1,0x81,0xf2,0xd8,0x65,0x88, 0x0,0x0,0x1,0x81,0xf2,0xd8,0x65,0x88,
// :/picture/截图/截图_VirtualBox Machine_20220712192850.png // :/picture/截图/截图_VirtualBox Machine_20220712192850.png
0x0,0x0,0x1,0x2e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x91,0x7a, 0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x91,0x7a,
0x0,0x0,0x1,0x81,0xf2,0x2c,0x4,0xa0, 0x0,0x0,0x1,0x81,0xf2,0x2c,0x4,0xa0,
// :/picture/截图/截图_VirtualBox Machine_20220712191756.png // :/picture/截图/截图_VirtualBox Machine_20220712191756.png
0x0,0x0,0x4,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x31,0x8f,0xdb, 0x0,0x0,0x4,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x31,0x8f,0xdb,
0x0,0x0,0x1,0x81,0xf2,0x21,0xd7,0x28, 0x0,0x0,0x1,0x81,0xf2,0x21,0xd7,0x28,
// :/picture/截图/截图_VirtualBox Machine_20220712193527.png // :/picture/截图/截图_VirtualBox Machine_20220712193527.png
0x0,0x0,0x3,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x27,0x59,0x2, 0x0,0x0,0x3,0x24,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x27,0x59,0x2,
0x0,0x0,0x1,0x81,0xf2,0x32,0x2e,0xc0, 0x0,0x0,0x1,0x81,0xf2,0x32,0x2e,0xc0,
// :/LANG/virtualmachine-en_US.qm
0x0,0x0,0x4,0xf6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x34,0x96,0x28,
0x0,0x0,0x1,0x82,0xc5,0xe0,0x5a,0x58,
// :/LANG/virtualmachine-en_US.ts
0x0,0x0,0x4,0xc2,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x34,0x88,0x1b,
0x0,0x0,0x1,0x82,0xc5,0xea,0xbd,0x5e,
}; };
@ -215420,6 +215760,16 @@ namespace QT_NAMESPACE {
bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
#if defined(__ELF__) || defined(__APPLE__)
static inline unsigned char qResourceFeatureZlib()
{
extern const unsigned char qt_resourceFeatureZlib;
return qt_resourceFeatureZlib;
}
#else
unsigned char qResourceFeatureZlib();
#endif
#ifdef QT_NAMESPACE #ifdef QT_NAMESPACE
} }
#endif #endif
@ -215437,6 +215787,7 @@ int QT_RCC_MANGLE_NAMESPACE(qCleanupResources___)();
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources___)() int QT_RCC_MANGLE_NAMESPACE(qCleanupResources___)()
{ {
int version = 3; int version = 3;
version += QT_RCC_PREPEND_NAMESPACE(qResourceFeatureZlib());
QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData)
(version, qt_resource_struct, qt_resource_name, qt_resource_data); (version, qt_resource_struct, qt_resource_name, qt_resource_data);
return 1; return 1;

BIN
VM-source/qrc_图标.o Executable file → Normal file

Binary file not shown.

0
VM-source/ui_mainwindow.h Executable file → Normal file

1
VM-source/zh_CN.qm Normal file

@ -0,0 +1 @@
<クd<>箆!ソ`。スン

176
VM-source/zh_CN.ts Normal file

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<source>退</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

@ -2,6 +2,8 @@
<qresource prefix="/"> <qresource prefix="/">
<file>deepin-wine-runner.svg</file> <file>deepin-wine-runner.svg</file>
<file>deepin-wine-runner.png</file> <file>deepin-wine-runner.png</file>
<file>LANG/virtualmachine-en_US.qm</file>
<file>LANG/virtualmachine-en_US.ts</file>
</qresource> </qresource>
<qresource prefix="/picture"> <qresource prefix="/picture">
<file>截图_VirtualBox Machine_20220712142929.png</file> <file>截图_VirtualBox Machine_20220712142929.png</file>

Binary file not shown.

BIN
WineThemes/deepin.msstyles Executable file

Binary file not shown.

212
WineThemes/deepin.reg Normal file

@ -0,0 +1,212 @@
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-0-0-0-1000\Control Panel\Colors]
"ActiveBorder"="212 208 200"
"ActiveTitle"="14 14 14"
"AppWorkSpace"="128 128 128"
"Background"="59 59 59"
"ButtonAlternateFace"="181 181 181"
"ButtonDkShadow"="255 255 255"
"ButtonFace"="250 250 250"
"ButtonHilight"="255 255 255"
"ButtonLight"="241 239 226"
"ButtonShadow"="225 225 225"
"ButtonText"="0 0 0"
"GradientActiveTitle"="59 59 59"
"GradientInactiveTitle"="88 88 88"
"GrayText"="172 168 153"
"Hilight"="0 170 255"
"HilightText"="255 255 255"
"HotTrackingColor"="100 139 203"
"InactiveBorder"="212 208 200"
"InactiveTitle"="59 59 59"
"InactiveTitleText"="161 161 161"
"InfoText"="0 0 0"
"InfoWindow"="255 255 225"
"Menu"="255 255 255"
"MenuBar"="250 250 250"
"MenuHilight"="0 170 255"
"MenuText"="46 52 54"
"Scrollbar"="212 208 200"
"TitleText"="255 255 255"
"Window"="255 255 255"
"WindowFrame"="0 0 0"
"WindowText"="0 0 0"
[HKEY_USERS\S-1-5-21-0-0-0-1000\Control Panel\Desktop]
"ActiveWndTrackTimeout"=dword:00000000
"BlockSendInputResets"="0"
"CaretWidth"=dword:00000001
"ClickLockTime"=dword:000004b0
"DoubleClickHeight"="4"
"DoubleClickWidth"="4"
"DragFullWindows"="0"
"DragHeight"="4"
"DragWidth"="4"
"FocusBorderHeight"=dword:00000001
"FocusBorderWidth"=dword:00000001
"FontSmoothing"="2"
"FontSmoothingGamma"=dword:00000000
"FontSmoothingOrientation"=dword:00000001
"FontSmoothingType"=dword:00000001
"ForegroundFlashCount"=dword:00000003
"ForegroundLockTimeout"=dword:00000000
"IconTitleWrap"="1"
"LowPowerActive"="0"
"MenuShowDelay"="400"
"UserPreferencesMask"=hex:30,00,02,80,12,00,00,00
"Wallpaper"=""
"WheelScrollChars"="3"
"WheelScrollLines"="3"
[HKEY_USERS\S-1-5-21-0-0-0-1000\Control Panel\Desktop\WindowMetrics]
"BorderWidth"="1"
"CaptionFont"=hex:09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,bc,02,00,00,\
00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"CaptionHeight"="-270"
"CaptionWidth"="-270"
"IconFont"=hex:0a,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,00,\
00,00,01,00,00,00,00,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"IconSpacing"="-1125"
"IconTitleWrap"="1"
"IconVerticalSpacing"="-1125"
"MenuFont"=hex:09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,00,\
00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"MenuHeight"="-270"
"MenuWidth"="-270"
"MessageFont"=hex:09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,\
00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"PaddedBorderWidth"="0"
"ScrollHeight"="-240"
"ScrollWidth"="-240"
"SmCaptionFont"=hex:f8,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\
00,00,00,00,01,00,00,00,00,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"SmCaptionHeight"="-300"
"SmCaptionWidth"="-300"
"StatusFont"=hex:09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,\
00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel\Colors]
"ActiveBorder"="212 208 200"
"ActiveTitle"="14 14 14"
"AppWorkSpace"="128 128 128"
"Background"="59 59 59"
"ButtonAlternateFace"="181 181 181"
"ButtonDkShadow"="255 255 255"
"ButtonFace"="250 250 250"
"ButtonHilight"="255 255 255"
"ButtonLight"="241 239 226"
"ButtonShadow"="225 225 225"
"ButtonText"="0 0 0"
"GradientActiveTitle"="59 59 59"
"GradientInactiveTitle"="88 88 88"
"GrayText"="172 168 153"
"Hilight"="0 170 255"
"HilightText"="255 255 255"
"HotTrackingColor"="100 139 203"
"InactiveBorder"="212 208 200"
"InactiveTitle"="59 59 59"
"InactiveTitleText"="161 161 161"
"InfoText"="0 0 0"
"InfoWindow"="255 255 225"
"Menu"="255 255 255"
"MenuBar"="250 250 250"
"MenuHilight"="0 170 255"
"MenuText"="46 52 54"
"Scrollbar"="212 208 200"
"TitleText"="255 255 255"
"Window"="255 255 255"
"WindowFrame"="0 0 0"
"WindowText"="0 0 0"
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel\Desktop]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel\Desktop\WindowMetrics]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel\Mouse]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Wine\Temporary System Parameters\Control Panel\Sound]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Microsoft\Windows\CurrentVersion\ThemeManager]
"ColorName"="NormalColor"
"DllName"="C:\\windows\\Resources\\Themes\\deepin\\deepin.msstyles"
"FlatMenu"=dword:00000000
"GradientCaption"=dword:00000001
"IconTitleFont"=hex:f4,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\
00,00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"LoadedBefore"="1"
"NonClientMetrics"=hex:f8,01,00,00,01,00,00,00,10,00,00,00,10,00,00,00,12,00,\
00,00,12,00,00,00,09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,bc,02,00,\
00,00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0f,00,\
00,00,0f,00,00,00,f9,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\
00,00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,12,00,\
00,00,12,00,00,00,09,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\
00,00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,09,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,00,00,00,86,00,00,00,\
22,8b,5b,53,4f,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,09,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,90,01,00,00,00,00,00,86,00,00,00,22,8b,5b,53,4f,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00
"SizeName"="NormalSize"
"ThemeActive"="1"
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Microsoft\Windows\CurrentVersion\ThemeManager\Control Panel]
[HKEY_USERS\S-1-5-21-0-0-0-1000\Software\Microsoft\Windows\CurrentVersion\ThemeManager\Control Panel\Colors]
"ActiveBorder"="212 208 200"
"ActiveTitle"="10 36 106"
"AppWorkSpace"="128 128 128"
"Background"="58 110 165"
"ButtonAlternateFace"="181 181 181"
"ButtonDkShadow"="64 64 64"
"ButtonFace"="212 208 200"
"ButtonHilight"="255 255 255"
"ButtonLight"="212 208 200"
"ButtonShadow"="128 128 128"
"ButtonText"="0 0 0"
"GradientActiveTitle"="166 202 240"
"GradientInactiveTitle"="192 192 192"
"GrayText"="128 128 128"
"Hilight"="10 36 106"
"HilightText"="255 255 255"
"HotTrackingColor"="0 0 200"
"InactiveBorder"="212 208 200"
"InactiveTitle"="128 128 128"
"InactiveTitleText"="212 208 200"
"InfoText"="0 0 0"
"InfoWindow"="255 255 225"
"Menu"="212 208 200"
"MenuBar"="212 208 200"
"MenuHilight"="10 36 106"
"MenuText"="0 0 0"
"Scrollbar"="212 208 200"
"TitleText"="255 255 255"
"Window"="255 255 255"
"WindowFrame"="0 0 0"
"WindowText"="0 0 0"

@ -32,6 +32,15 @@ def InstallSparkWine(wine):
################### ###################
# 程序功能 # 程序功能
################### ###################
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
print("请保证你能有 root 权限以便安装") print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ') print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input() input()

@ -37,6 +37,15 @@ if __name__ == "__main__":
sys.exit() sys.exit()
CleanTerminal() CleanTerminal()
print('''
mm mmmm m
## mmmm mmmm #" " mm#mm mmm m mm mmm
# # #" "# #" "# "#mmm # #" "# #" " #" #
#mm# # # # # "# # # # # #""""
# # ##m#" ##m#" "mmm#" "mm "#m#" # "#mm"
# #
" "
''')
while True: while True:
search = input(">") search = input(">")
if search.replace(" ", "").replace("\n", "") == "": if search.replace(" ", "").replace("\n", "") == "":

@ -19,7 +19,15 @@ if __name__ == "__main__":
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
while True: while True:
os.system("clear") os.system("clear")
os.system("toilet Fonts") print('''
mmmmmm m
# mmm m mm mm#mm mmm
#mmmmm #" "# #" # # # "
# # # # # # """m
# "#m#" # # "mm "mmm"
''')
if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"): if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器,无法继续,按回车键退出") input("您选择的不是 Wine 容器,无法继续,按回车键退出")
exit() exit()

@ -26,7 +26,26 @@ if len(sys.argv) <= 3 or sys.argv[1] == "" or sys.argv[2] == "" or sys.argv[3] =
print("参数一为需要安装的容器参数二为需要使用的wine参数三为安装gecko或monogecko/mono参数四为是否缓存可略四个参数位置不能颠倒") print("参数一为需要安装的容器参数二为需要使用的wine参数三为安装gecko或monogecko/mono参数四为是否缓存可略四个参数位置不能颠倒")
sys.exit() sys.exit()
os.system(f"toilet '{sys.argv[3]}'") if sys.argv[3] == "mono":
print('''
m m
## ## mmm m mm mmm
# ## # #" "# #" # #" "#
# "" # # # # # # #
# # "#m#" # # "#m#"
''')
else:
print('''
mmm #
m" " mmm mmm # m mmm
# mm #" # #" " # m" #" "#
# # #"""" # #"# # #
"mmm" "#mm" "#mm" # "m "#m#"
''')
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
try: try:
# 获取最新版本的版本号 # 获取最新版本的版本号

@ -26,7 +26,15 @@ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
sys.exit() sys.exit()
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
os.system("toilet MSXML") print('''
m m mmmm m m m m m
## ## #" " # # ## ## #
# ## # "#mmm ## # ## # #
# "" # "# m""m # "" # #
# # "mmm#" m" "m # # #mmmmm
''')
msxmlList = [ msxmlList = [
["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"], ["MSXML 4.0 SP2", "https://www.gitlink.org.cn/api/attachments/390679?gfdgd_xi", "msxml6.0.msi"],
["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"], ["MSXML 4.0 SP3", "https://www.gitlink.org.cn/api/attachments/390678?gfdgd_xi", "msxml4.0SP3.msi"],

@ -26,7 +26,15 @@ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
sys.exit() sys.exit()
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
os.system("toilet .NET") print('''
mm m mmmmmmmmmmmmm
#"m # # #
# #m # #mmmmm #
# # # # #
# # ## #mmmmm #
''')
netList = [ netList = [
["3.5 SP1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe"], ["3.5 SP1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe"],
["4.0 Offline Installer", "https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"], ["4.0 Offline Installer", "https://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"],

@ -1,4 +1,13 @@
#!/bin/bash #!/bin/bash
echo
echo 'm m " m m mmmm '
echo '# # # mmm m mm mmm # # m" "m'
echo '" #"# # # #" # #" # #mmmm# # #'
echo ' ## ##" # # # #"""" # # # #'
echo ' # # mm#mm # # "#mm" # # #mm#"'
echo ' # '
ubuntuSource=( ubuntuSource=(
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources" "sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources" "sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
@ -11,7 +20,6 @@ debianSource=(
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources" "sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
) )
# 选择发行版 # 选择发行版
toilet WineHQ
echo "WineHQ 官网https://wiki.winehq.org/" echo "WineHQ 官网https://wiki.winehq.org/"
echo echo
echo "选择发行版:" echo "选择发行版:"

@ -26,7 +26,15 @@ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
sys.exit() sys.exit()
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
os.system("toilet Other") print('''
mmmm m #
m" "m mm#mm # mm mmm m mm
# # # #" # #" # #" "
# # # # # #"""" #
#mm# "mm # # "#mm" #
''')
msxmlList = [ msxmlList = [
["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"], ["Windows Script 5.7 for Windows XP", "https://download.microsoft.com/download/f/f/e/ffea3abf-b55f-4924-b5a5-bde0805ad67c/scripten.exe", "exe", "scripten.exe"],
["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"] ["Windows Management Instrumentation 1.50.1131", "https://www.gitlink.org.cn/api/attachments/390680", "exe", "WMITools.exe"]

@ -26,7 +26,15 @@ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
sys.exit() sys.exit()
homePath = os.path.expanduser('~') homePath = os.path.expanduser('~')
os.system("toilet VC++") print('''
m m mmm
"m m" m" " m m
# # # # #
"mm" # """#""""""#"""
## "mmm" # #
''')
netList = [ netList = [
["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"], ["2005 Service Pack 1 Redistributable Package MFC 安全更新", "https://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE", "vcredist05_x86.exe"],
["2008 (VC++ 9.0) SP1 (不再支持) ", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"], ["2008 (VC++ 9.0) SP1 (不再支持) ", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"],

@ -45,6 +45,15 @@ def Repair():
print("修复完成!") print("修复完成!")
if __name__ == "__main__": if __name__ == "__main__":
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
print("能不用这个就不用这个!!!真心建议!!!\n") print("能不用这个就不用这个!!!真心建议!!!\n")
print("下面的安装过程皆需要换源等操作,安装过程千万不要中断,以及千万不要 apt upgrade感谢\n") print("下面的安装过程皆需要换源等操作,安装过程千万不要中断,以及千万不要 apt upgrade感谢\n")

Binary file not shown.

Binary file not shown.

@ -1,3 +1,11 @@
echo
echo ' mmm # '
echo ' m" " mmm mmm # m '
echo ' # mm #" # #" # # m" '
echo ' # # #"""" #"""" #"# '
echo ' "mmm" "#mm" "#mm" # "m '
echo
echo
cd /tmp cd /tmp
echo 提示: echo 提示:
echo Geek Uninstaller 官网访问较慢,所以请耐心等待 echo Geek Uninstaller 官网访问较慢,所以请耐心等待

@ -2,6 +2,15 @@
import os import os
if __name__ == "__main__": if __name__ == "__main__":
print('''
mmm ""#
m" " # mmm mmm m mm
# # #" # " # #" #
# # #"""" m"""# # #
"mmm" "mm "#mm" "mm"# # #
''')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
print("此程序可以帮助您删除程序无需的组件以节约空间") print("此程序可以帮助您删除程序无需的组件以节约空间")
print("如果全部删除,将只会有核心功能") print("如果全部删除,将只会有核心功能")
@ -79,6 +88,7 @@ if __name__ == "__main__":
f"{programPath}/InstallWineOnDeepin23.py", f"{programPath}/InstallWineOnDeepin23.py",
f"{programPath}/sparkstore.list", f"{programPath}/sparkstore.list",
f"{programPath}/InstallNewWineHQ.sh", f"{programPath}/InstallNewWineHQ.sh",
f"{programPath}/wine",
"/usr/bin/deepin-wine-runner-wine-installer", "/usr/bin/deepin-wine-runner-wine-installer",
"/usr/bin/deepin-wine-runner-wine-install-deepin23", "/usr/bin/deepin-wine-runner-wine-install-deepin23",
"/usr/bin/deepin-wine-runner-wine-install", "/usr/bin/deepin-wine-runner-wine-install",

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
######################################################################### #########################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布
# 版本:1.9.0 # 版本:2.0.1
# 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 PyQt5 构建 # 基于 Python3 的 PyQt5 构建
######################################################################### #########################################################################
@ -10,6 +10,7 @@
################# #################
import os import os
import sys import sys
import time
import json import json
import shutil import shutil
import random import random
@ -26,17 +27,17 @@ import PyQt5.QtWidgets as QtWidgets
################# #################
def button1_cl(): def button1_cl():
path = QtWidgets.QFileDialog.getExistingDirectory(widget, "选择 wine 容器", f"{get_home()}/.deepinwine") path = QtWidgets.QFileDialog.getExistingDirectory(QtCore.QCoreApplication.translate("U", "选择 wine 容器"), f"{get_home()}/.deepinwine")
if path != "": if path != "":
e6_text.setText(path) e6_text.setText(path)
def button2_cl(): def button2_cl():
path = QtWidgets.QFileDialog.getOpenFileName(widget, "选择图标文件", get_home(), "PNG图标(*.png);;SVG图标(*.svg);;全部文件(*.*)")[0] path = QtWidgets.QFileDialog.getOpenFileName(widget, QtCore.QCoreApplication.translate("U", "选择图标文件"), get_home(), "PNG图标(*.png);;SVG图标(*.svg);;全部文件(*.*)")[0]
if path != "": if path != "":
e9_text.setText(path) e9_text.setText(path)
def button4_cl(): def button4_cl():
path = QtWidgets.QFileDialog.getSaveFileName(widget, "保存 deb 包", get_home(), "deb 文件(*.deb);;所有文件(*.*)", "{}_{}_i386.deb".format(e1_text.text(), e2_text.text()))[0] path = QtWidgets.QFileDialog.getSaveFileName(widget, QtCore.QCoreApplication.translate("U", "保存 deb 包"), get_home(), "deb 文件(*.deb);;所有文件(*.*)", "{}_{}_i386.deb".format(e1_text.text(), e2_text.text()))[0]
if path != "": if path != "":
e12_text.setText(path) e12_text.setText(path)
@ -65,13 +66,32 @@ def disabled_or_NORMAL_all(choose):
rmBash.setDisabled(choose) rmBash.setDisabled(choose)
cleanBottonByUOS.setDisabled(choose) cleanBottonByUOS.setDisabled(choose)
installDeb.setDisabled(choose) installDeb.setDisabled(choose)
useInstallWineArch.setDisabled(choose)
buildDebDir.setDisabled(choose)
debDepends.setDisabled(choose)
debRecommend.setDisabled(choose)
if not choose: if not choose:
ChangeArchCombobox() ChangeArchCombobox()
ChangeWine()
class QT: class QT:
thread = None thread = None
def make_deb(): savePath = ""
savePathBlock = False
def SavePathGet(temp):
global savePath
global savePathBlock
savePath = QtWidgets.QFileDialog.getExistingDirectory(widget, "选择模板生成位置", get_home())
savePathBlock = True
def ErrorMsg(info):
QtWidgets.QMessageBox.critical(widget, "错误", info)
def InfoMsg(info):
QtWidgets.QMessageBox.information(widget, "提示", info)
def make_deb(build=False):
clean_textbox1_things() clean_textbox1_things()
disabled_or_NORMAL_all(False) disabled_or_NORMAL_all(False)
if e1_text.text() == "" or e2_text.text() == "" or e3_text.text() == "" or e4_text.text() == "" or e5_text.text() == "" or e6_text.text() == "" or e7_text.text() == "" or e8_text.text() == "" or e12_text.text() == "": if e1_text.text() == "" or e2_text.text() == "" or e3_text.text() == "" or e4_text.text() == "" or e5_text.text() == "" or e6_text.text() == "" or e7_text.text() == "" or e8_text.text() == "" or e12_text.text() == "":
@ -79,13 +99,17 @@ def make_deb():
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("必填信息没有填写完整,无法继续构建 deb 包") label13_text_change("必填信息没有填写完整,无法继续构建 deb 包")
return return
if QtWidgets.QMessageBox.question(widget, "提示", "打包将会改动现在选择的容器,是否继续?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, QtCore.QCoreApplication.translate("U", "提示"), QtCore.QCoreApplication.translate("U", "打包将会改动现在选择的容器,是否继续?")) == QtWidgets.QMessageBox.No:
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
return return
#thread = threading.Thread(target=make_deb_threading) #thread = threading.Thread(target=make_deb_threading)
QT.thread = make_deb_threading() QT.thread = make_deb_threading(build)
QT.thread.signal.connect(chang_textbox1_things) QT.thread.signal.connect(chang_textbox1_things)
QT.thread.label.connect(label13_text_change) QT.thread.label.connect(label13_text_change)
QT.thread.getSavePath.connect(SavePathGet)
QT.thread.errorMsg.connect(ErrorMsg)
QT.thread.infoMsg.connect(InfoMsg)
QT.thread.disabled_or_NORMAL_all.connect(disabled_or_NORMAL_all)
QT.thread.start() QT.thread.start()
#thread.start() #thread.start()
@ -94,10 +118,17 @@ def label13_text_change(thing):
label13_text.setText(f"<p align='center'>当前 deb 打包情况:{thing}</p>") label13_text.setText(f"<p align='center'>当前 deb 打包情况:{thing}</p>")
class make_deb_threading(QtCore.QThread): class make_deb_threading(QtCore.QThread):
signal = QtCore.pyqtSignal(str) signal = QtCore.pyqtSignal(str)
label = QtCore.pyqtSignal(str) label = QtCore.pyqtSignal(str)
def __init__(self) -> None: getSavePath = QtCore.pyqtSignal(str)
errorMsg = QtCore.pyqtSignal(str)
infoMsg = QtCore.pyqtSignal(str)
disabled_or_NORMAL_all = QtCore.pyqtSignal(bool)
build = False
def __init__(self, build) -> None:
super().__init__() super().__init__()
self.build = build
def run_command(self, command): def run_command(self, command):
res = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) res = subprocess.Popen([command], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
@ -154,14 +185,17 @@ class make_deb_threading(QtCore.QThread):
imms = ".svg" imms = ".svg"
a = "/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(e1_text.text(), e1_text.text(), imms) a = "/opt/apps/{}/entries/icons/hicolor/scalable/apps/{}.{}".format(e1_text.text(), e1_text.text(), imms)
if not os.path.exists(e9_text.text()): if not os.path.exists(e9_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "图标的路径填写错误,无法进行构建 deb 包") self.errorMsg.emit("图标的路径填写错误,无法进行构建 deb 包")
disabled_or_NORMAL_all(True) self.disabled_or_NORMAL_all.emit(True)
self.label.emit("图标的路径填写错误,无法进行构建 deb 包") self.label.emit("图标的路径填写错误,无法进行构建 deb 包")
return return
if not os.path.exists(e6_text.text()): if not os.path.exists(e6_text.text()):
QtWidgets.QMessageBox.critical(widget, "错误", "路径填写错误,无法继续构建 deb 包") print("aa")
disabled_or_NORMAL_all(True) self.errorMsg.emit("路径填写错误,无法继续构建 deb 包")
print("aaa1")
self.disabled_or_NORMAL_all.emit(True)
self.label.emit("容器路径填写错误,无法进行构建 deb 包") self.label.emit("容器路径填写错误,无法进行构建 deb 包")
print("bbb")
return return
debInformation = [ debInformation = [
{ {
@ -173,7 +207,7 @@ class make_deb_threading(QtCore.QThread):
f"{wine[wineVersion.currentText()]}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei" f"{wine[wineVersion.currentText()]}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei"
][int(chooseWineHelperValue.isChecked())], ][int(chooseWineHelperValue.isChecked())],
"postinst": "", "postinst": "",
"postrm": ["", f"""#!/bin/bash "postrm": ["", f"""#!/bin/bash..
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
@ -647,12 +681,108 @@ WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
}} }}
}}'''} }}'''}
] ]
print("c")
if os.path.exists(wine[wineVersion.currentText()]):
debInformation[0]["Depends"] = ["deepin-wine-helper (>= 5.1.30-1)",
"spark-dwine-helper (>= 1.6.2)"
][int(chooseWineHelperValue.isChecked())] #+ ["", "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\nRecommends: 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"][]
print("d")
debInformation[0]["run.sh"] = f'''#!/bin/sh
# Copyright (C) 2016 Deepin, Inc.
#
# Author: Li LongYu <lilongyu@linuxdeepin.com>
# Peng Hao <penghao@linuxdeepin.com>
version_gt() {{ test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }}
extract_archive()
{{
archive=$1
version_file=$2
dest_dir=$3
if [ -f "$archive" ] && [ -n "$dest_dir" ] && [ "$dest_dir" != "." ];then
archive_version=`cat $version_file`
if [ -d "$dest_dir" ];then
if [ -f "$dest_dir/VERSION" ];then
dest_version=`cat $dest_dir/VERSION`
if version_gt "$archive_version" "$dest_version";then
7z x "$archive" -o/"$dest_dir" -aoa
echo "$archive_version" > "$dest_dir/VERSION"
fi
fi
else
mkdir -p $dest_dir
7z x "$archive" -o/"$dest_dir" -aoa
echo "$archive_version" > "$dest_dir/VERSION"
fi
fi
}}
BOTTLENAME="{e5_text.text()}"
APPVER="{e2_text.text()}"
EXEC_PATH="{e7_text.text()}"
START_SHELL_PATH="{["/opt/deepinwine/tools/run_v4.sh", "/opt/deepinwine/tools/spark_run_v4.sh"][int(chooseWineHelperValue.isChecked())]}"
export MIME_TYPE=""
export DEB_PACKAGE_NAME="{e1_text.text()}"
export APPRUN_CMD="$HOME/.deepinwine/{os.path.basename(wine[wineVersion.currentText()]).replace('.7z', '')}/bin/{useInstallWineArch.currentText()}"
export PATCH_LOADER_ENV=""
export FILEDLG_PLUGIN="/opt/apps/$DEB_PACKAGE_NAME/files/gtkGetFileNameDlg"
DISABLE_ATTACH_FILE_DIALOG="1"
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"
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 "$EXEC_PATH" ];then
$START_SHELL_PATH $BOTTLENAME $APPVER "$EXEC_PATH" "$@"
else
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
fi
'''
############# #############
# 删除文件 # 删除文件
############# #############
self.label.emit("正在删除对构建 deb 包有影响的文件……") self.label.emit("正在删除对构建 deb 包有影响的文件……")
debPackagePath = f"/tmp/{random.randint(0, 9999)}" if self.build:
self.run_command(f"rm -rfv /tmp/{debPackagePath}") global savePath
global savePathBlock
savePathBlock = False
self.getSavePath.emit("")
# 必须保证信号完全执行才可以继续
# 所以自制信号锁
while not savePathBlock:
time.sleep(0.1)
#
if savePath == "":
print("ggg")
self.disabled_or_NORMAL_all.emit(True)
return
print("aaa")
debPackagePath = savePath
print("g")
else:
debPackagePath = f"/tmp/{random.randint(0, 9999)}"
#self.run_command(f"rm -rfv /tmp/{debPackagePath}")
print("f")
self.run_command(f"rm -rfv '{debPackagePath}'")
print("d")
############### ###############
# 创建目录 # 创建目录
############### ###############
@ -697,6 +827,17 @@ WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
self.run_command(f"rm -fv '{b}/drive_c/users/@current_user@/Templates'") self.run_command(f"rm -fv '{b}/drive_c/users/@current_user@/Templates'")
os.chdir(programPath) os.chdir(programPath)
############### ###############
# 压缩 Wine
###############
print("e")
self.label.emit("正在处理 Wine")
if os.path.exists(wine[wineVersion.currentText()]):
shutil.copy(f"{programPath}/gtkGetFileNameDlg", f"{debPackagePath}/opt/apps/{e1_text.text()}/files/gtkGetFileNameDlg")
if wine[wineVersion.currentText()][-3:] == ".7z":
shutil.copy(wine[wineVersion.currentText()], f"{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z")
else:
self.run_command(f"7z a '{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z' '{wine[wineVersion.currentText()]}/*'")
###############
# 压缩容器 # 压缩容器
############### ###############
self.label.emit("正在打包 wine 容器") self.label.emit("正在打包 wine 容器")
@ -705,6 +846,8 @@ WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
# 复制文件 # 复制文件
############### ###############
self.label.emit("正在复制文件……") self.label.emit("正在复制文件……")
if os.path.exists(wine[wineVersion.currentText()]):
shutil.copy(f"{programPath}/gtkGetFileNameDlg", f"{debPackagePath}/opt/apps/{e1_text.text()}/files")
# arm64 box86 需要复制 dlls-arm 目录 # arm64 box86 需要复制 dlls-arm 目录
if debArch.currentIndex() == 1: if debArch.currentIndex() == 1:
if not os.path.exists(f"{programPath}/dlls-arm"): if not os.path.exists(f"{programPath}/dlls-arm"):
@ -732,7 +875,8 @@ WINEPREFIX=$BOTTLE $EMU $EMU_ARGS $WINE "$EXE" --disable-gpu &""",
# 写入文本文档 # 写入文本文档
################ ################
self.label.emit("正在写入文件……") self.label.emit("正在写入文件……")
write_txt(f"{debPackagePath}/DEBIAN/control", f'''Package: {e1_text.text()} if debRecommend.text() == "":
write_txt(f"{debPackagePath}/DEBIAN/control", f'''Package: {e1_text.text()}
Version: {e2_text.text()} Version: {e2_text.text()}
Architecture: {debInformation[debArch.currentIndex()]["Architecture"]} Architecture: {debInformation[debArch.currentIndex()]["Architecture"]}
Maintainer: {e4_text.text()} Maintainer: {e4_text.text()}
@ -742,6 +886,19 @@ Priority: optional
Multi-Arch: foreign Multi-Arch: foreign
Installed-Size: {size} Installed-Size: {size}
Description: {e3_text.text()} Description: {e3_text.text()}
''')
else:
write_txt(f"{debPackagePath}/DEBIAN/control", f'''Package: {e1_text.text()}
Version: {e2_text.text()}
Architecture: {debInformation[debArch.currentIndex()]["Architecture"]}
Maintainer: {e4_text.text()}
Depends: {debInformation[debArch.currentIndex()]["Depends"]}
Recommends: {debRecommend.text()}
Section: non-free/otherosfs
Priority: optional
Multi-Arch: foreign
Installed-Size: {size}
Description: {e3_text.text()}
''') ''')
if debInformation[debArch.currentIndex()]["postinst"] != "": if debInformation[debArch.currentIndex()]["postinst"] != "":
write_txt(f"{debPackagePath}/DEBIAN/postinst", debInformation[debArch.currentIndex()]["postinst"]) write_txt(f"{debPackagePath}/DEBIAN/postinst", debInformation[debArch.currentIndex()]["postinst"])
@ -762,20 +919,21 @@ Description: {e3_text.text()}
################ ################
# 构建 deb 包 # 构建 deb 包
################ ################
self.label.emit("正在构建 deb 包……") if not self.build:
self.run_command("dpkg -b {} {}".format(debPackagePath, e12_text.text())) self.label.emit("正在构建 deb 包……")
self.run_command("dpkg -b {} {}".format(debPackagePath, e12_text.text()))
################ ################
# 完成构建 # 完成构建
################ ################
self.label.emit("完成构建!") self.label.emit("完成构建!")
disabled_or_NORMAL_all(True) self.disabled_or_NORMAL_all.emit(True)
QtWidgets.QMessageBox.information(widget, "提示", "打包完毕!") self.infoMsg.emit("打包完毕!")
except: except:
traceback.print_exc() traceback.print_exc()
QtWidgets.QMessageBox.critical(widget, "错误", "程序出现错误,错误信息:\n{}".format(traceback.format_exc())) self.errorMsg.emit("程序出现错误,错误信息:\n{}".format(traceback.format_exc()))
self.label.emit("deb 包构建出现错误") self.label.emit("deb 包构建出现错误")
self.signal.emit(traceback.format_exc()) self.signal.emit(traceback.format_exc())
disabled_or_NORMAL_all(True) self.disabled_or_NORMAL_all.emit(True)
# 写入文本文档 # 写入文本文档
def write_txt(path, things): def write_txt(path, things):
@ -834,20 +992,59 @@ def ChangeArchCombobox():
option = False option = False
chooseWineHelperValue.setEnabled(option) chooseWineHelperValue.setEnabled(option)
wineVersion.setEnabled(option) wineVersion.setEnabled(option)
useInstallWineArch.setEnabled(option)
#chooseWineHelperValue.setEnabled(option)
rmBash.setEnabled(option) rmBash.setEnabled(option)
if debArch.currentIndex() == 0:
ChangeWine()
elif debArch.currentIndex() == 1:
debDepends.setText("deepin-elf-verify (>= 0.0.16.7-1), com.deepin-wine6-stable.deepin(>=6.0deepin14), com.deepin-box86.deepin(>=0.2.3deepin8), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk")
elif debArch.currentIndex() == 2:
debDepends.setText("zenity, com.deepin-wine6-stable.deepin(>=6.0deepin14), deepin-wine-exagear-images(>=10deepin4), com.deepin-box86.deepin(>=0.2.3deepin9), p7zip-full, fonts-wqy-microhei, fonts-noto-cjk")
def InstallDeb(): def InstallDeb():
os.system(f"xdg-open '{e12_text.text()}'") os.system(f"xdg-open '{e12_text.text()}'")
def ChangeWine():
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",
f"{wine[wineVersion.currentText()]}, spark-dwine-helper (>= 1.6.2), fonts-wqy-microhei, fonts-wqy-zenhei"
][int(chooseWineHelperValue.isChecked())])
debRecommend.setText("")
if os.path.exists(wine[wineVersion.currentText()]):
debDepends.setText(["deepin-wine-helper (>= 5.1.30-1)",
"spark-dwine-helper (>= 1.6.2)"
][int(chooseWineHelperValue.isChecked())])
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")
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")
############### ###############
# 程序信息 # 程序信息
############### ###############
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"} 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"}
# 读取 wine 本地列表
for i in ["/opt/wine-staging", "/opt/wine-dev", "/opt/wine-stable", "/opt/spark-wine7-devel"]:
if os.path.exists(i):
wine[i] = i
try:
for i in os.listdir(f"{get_home()}/.deepinwine"):
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine"):
wine[f"{get_home()}/.deepinwine/{i}"] = f"{get_home()}/.deepinwine/{i}"
except:
pass
try:
for i in json.loads(readtxt(f"{programPath}/wine/winelist.json")):
if os.path.exists(f"{programPath}/wine/{i}.7z"):
wine[f"{programPath}/wine/{i}.7z"] = f"{programPath}/wine/{i}.7z"
continue
if os.path.exists(f"{programPath}/wine/{i}"):
wine[f"{programPath}/wine/{i}"] = f"{programPath}/wine/{i}"
except:
pass
os.chdir("/") os.chdir("/")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
iconPath = "{}/deepin-wine-runner.svg".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
@ -885,51 +1082,46 @@ e12_text = QtWidgets.QLineEdit()
e15_text = QtWidgets.QLineEdit() e15_text = QtWidgets.QLineEdit()
label13_text = QtWidgets.QLabel("<p align='center'>当前 deb 打包情况:暂未打包</p>") label13_text = QtWidgets.QLabel("<p align='center'>当前 deb 打包情况:暂未打包</p>")
option1_text = QtWidgets.QComboBox() option1_text = QtWidgets.QComboBox()
button1 = QtWidgets.QPushButton("浏览……") button1 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
button2 = QtWidgets.QPushButton("浏览……") button2 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
button4 = QtWidgets.QPushButton("浏览……") button4 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
debControlFrame = QtWidgets.QHBoxLayout() debControlFrame = QtWidgets.QHBoxLayout()
button5 = QtWidgets.QPushButton("打包……") button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "打包……"))
installDeb = QtWidgets.QPushButton("安装打包完成的 deb……") installDeb = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "安装打包完成的 deb……"))
buildDebDir = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "根据填写内容打包模板"))
debControlFrame.addWidget(button5) debControlFrame.addWidget(button5)
debControlFrame.addWidget(installDeb) debControlFrame.addWidget(installDeb)
debOption = QtWidgets.QHBoxLayout() rmBash = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "设置卸载该 deb 后自动删除该容器"))
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器") cleanBottonByUOS = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "使用统信 Wine 生态适配活动容器清理脚本"))
cleanBottonByUOS = QtWidgets.QCheckBox("使用统信 Wine 生态适配活动容器清理脚本")
debOption.addWidget(rmBash)
debOption.addWidget(cleanBottonByUOS)
debArch = QtWidgets.QComboBox() debArch = QtWidgets.QComboBox()
debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"]) debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"])
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"])
option1_text.setCurrentText("Network") option1_text.setCurrentText("Network")
wineFrame = QtWidgets.QHBoxLayout() wineFrame = QtWidgets.QHBoxLayout()
chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper如不勾选默认为deepin-wine-helper") chooseWineHelperValue = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "使用星火wine helper\n如不勾选默认为deepin-wine-helper"))
button1.clicked.connect(button1_cl) button1.clicked.connect(button1_cl)
button2.clicked.connect(button2_cl) button2.clicked.connect(button2_cl)
button4.clicked.connect(button4_cl) button4.clicked.connect(button4_cl)
button5.clicked.connect(make_deb) button5.clicked.connect(make_deb)
buildDebDir.clicked.connect(lambda: make_deb(True))
installDeb.clicked.connect(InstallDeb) installDeb.clicked.connect(InstallDeb)
wineFrame.addWidget(wineVersion) wineFrame.addWidget(wineVersion)
debArch.currentIndexChanged.connect(ChangeArchCombobox) debArch.currentIndexChanged.connect(ChangeArchCombobox)
wineFrame.addWidget(chooseWineHelperValue)
# 创建控件 # 创建控件
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的包名(※必填):"), 0, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的包名(※必填):")), 0, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的版本号(※必填):"), 1, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的版本号(※必填):")), 1, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的说明(※必填):"), 2, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的说明(※必填):")), 2, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的维护者(※必填):"), 3, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的维护者(※必填):")), 3, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器的容器名(※必填):"), 4, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要解压的 wine 容器的容器名(※必填):")), 4, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器(※必填):"), 5, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要解压的 wine 容器(※必填):")), 5, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器里需要运行的可执行文件路径(※必填):"), 6, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "wine 容器里需要运行的可执行文件路径(※必填):")), 6, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的分类(※必填):"), 7, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的分类(※必填):")), 7, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器里需要运行的可执行文件的参数(选填):"), 8, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "wine 容器里需要运行的可执行文件的参数(选填):")), 8, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的名称(※必填):"), 9, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的图标(选填):"), 10, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的图标(选填):")), 10, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的 MimeType 内容(选填):"), 11, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "选择打包的 wine 版本(※必选):")), 12, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("选择打包的 wine 版本(※必选):"), 12, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "打包 deb 的保存路径(※必填):")), 13, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 的保存路径(※必填):"), 13, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("deb 包选项(选填):"), 14, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 架构(※必选):"), 15, 0, 1, 1)
widgetLayout.addWidget(e1_text, 0, 1, 1, 1) widgetLayout.addWidget(e1_text, 0, 1, 1, 1)
widgetLayout.addWidget(e2_text, 1, 1, 1, 1) widgetLayout.addWidget(e2_text, 1, 1, 1, 1)
widgetLayout.addWidget(e3_text, 2, 1, 1, 1) widgetLayout.addWidget(e3_text, 2, 1, 1, 1)
@ -943,20 +1135,50 @@ widgetLayout.addWidget(e15_text, 8, 1, 1, 1)
widgetLayout.addWidget(e8_text, 9, 1, 1, 1) widgetLayout.addWidget(e8_text, 9, 1, 1, 1)
widgetLayout.addWidget(e9_text, 10, 1, 1, 1) widgetLayout.addWidget(e9_text, 10, 1, 1, 1)
widgetLayout.addWidget(button2, 10, 2, 1, 1) widgetLayout.addWidget(button2, 10, 2, 1, 1)
widgetLayout.addWidget(e10_text, 11, 1, 1, 1)
widgetLayout.addLayout(wineFrame, 12, 1, 1, 1) widgetLayout.addLayout(wineFrame, 12, 1, 1, 1)
widgetLayout.addWidget(e12_text, 13, 1, 1, 1) widgetLayout.addWidget(e12_text, 13, 1, 1, 1)
widgetLayout.addWidget(button4, 13, 2, 1, 1) widgetLayout.addWidget(button4, 13, 2, 1, 1)
widgetLayout.addLayout(debOption, 14, 1, 1, 1)
widgetLayout.addWidget(debArch, 15, 1, 1, 1)
widgetLayout.addLayout(debControlFrame, 16, 1, 1, 1) widgetLayout.addLayout(debControlFrame, 16, 1, 1, 1)
widgetLayout.addWidget(label13_text, 17, 0, 1, 3) widgetLayout.addWidget(label13_text, 17, 0, 1, 3)
widgetLayout.addWidget(textbox1, 18, 0, 1, 3) widgetLayout.addWidget(textbox1, 18, 0, 1, 3)
# 高级功能
moreSetting = QtWidgets.QGroupBox(QtCore.QCoreApplication.translate("U", "高级设置"))
debDepends = QtWidgets.QLineEdit()
debRecommend = QtWidgets.QLineEdit()
debDepends.setPlaceholderText(QtCore.QCoreApplication.translate("U", "deb 包的依赖(如无特殊需求默认即可)"))
debDepends.setText("deepin-wine6-stable, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei")
debRecommend.setPlaceholderText(QtCore.QCoreApplication.translate("U", "deb 包的推荐依赖(非强制,一般默认即可)"))
moreSettingLayout = QtWidgets.QVBoxLayout()
localWineVersion = QtWidgets.QComboBox()
useInstallWineArch = QtWidgets.QComboBox()
useInstallWineArch.addItems(["wine", "wine64"])
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "Wine 位数(只限本地需要打包集成的Wine)\n提示32位的Wine不能使用64位容器")))
#moreSettingLayout.addWidget(localWineVersion)
moreSettingLayout.addWidget(useInstallWineArch)
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 包选项:")))
moreSettingLayout.addWidget(rmBash)
moreSettingLayout.addWidget(cleanBottonByUOS)
moreSettingLayout.addWidget(chooseWineHelperValue)
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 的依赖(强制,如无特殊需求默认即可)")))
moreSettingLayout.addWidget(debDepends)
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 的推荐依赖(非强制,一般默认即可)")))
moreSettingLayout.addWidget(debRecommend)
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的 MimeType")))
moreSettingLayout.addWidget(e10_text)
moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "打包 deb 架构:")))
moreSettingLayout.addWidget(debArch)
moreSetting.setLayout(moreSettingLayout)
widgetLayout.addWidget(moreSetting, 0, 3, 16, 1)
widgetLayout.addWidget(buildDebDir, 16, 3)
useInstallWineArch.setDisabled(True)
wineVersion.currentTextChanged.connect(ChangeWine)
chooseWineHelperValue.stateChanged.connect(ChangeWine)
# 菜单栏
menu = window.menuBar() menu = window.menuBar()
programmenu = menu.addMenu("程序") programmenu = menu.addMenu(QtCore.QCoreApplication.translate("U", "程序"))
help = menu.addMenu("帮助") help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助"))
exit = QtWidgets.QAction("退出程序") exit = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "退出程序"))
tip = QtWidgets.QAction("小提示") tip = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示"))
exit.triggered.connect(window.close) exit.triggered.connect(window.close)
tip.triggered.connect(helps) tip.triggered.connect(helps)
programmenu.addAction(exit) programmenu.addAction(exit)
@ -972,5 +1194,6 @@ 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.resize(int(window.frameSize().width() * 2.1), window.frameSize().height())
window.show() window.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

@ -2,7 +2,7 @@
# 使用系统默认的 python3 运行 # 使用系统默认的 python3 运行
########################################################################################### ###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:1.9.0 # 版本:2.0.0
# 更新时间2022年08月12日 # 更新时间2022年08月12日
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序 # 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
# 基于 Python3 的 PyQt5 构建 # 基于 Python3 的 PyQt5 构建
@ -26,7 +26,8 @@ import urllib.parse as parse
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
# 方便一些,单独把 tr 抽出来
from PyQt5.QtCore import QObject
################### ###################
# 程序所需事件 # 程序所需事件
################### ###################
@ -194,7 +195,7 @@ def about_this_program()->"显示“关于这个程序”窗口":
aboutInfo = QtWidgets.QTextBrowser(messageWidget) aboutInfo = QtWidgets.QTextBrowser(messageWidget)
aboutInfo.setHtml(about) aboutInfo.setHtml(about)
messageLayout.addWidget(aboutInfo, 0, 1, 1, 1) messageLayout.addWidget(aboutInfo, 0, 1, 1, 1)
ok = QtWidgets.QPushButton("确定") ok = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "确定"))
ok.clicked.connect(QT.message.close) ok.clicked.connect(QT.message.close)
messageLayout.addWidget(ok, 1, 1, 1, 1, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight) messageLayout.addWidget(ok, 1, 1, 1, 1, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight)
messageWidget.setLayout(messageLayout) messageWidget.setLayout(messageLayout)
@ -372,7 +373,7 @@ def OpenWineFontPath():
wineBottonPath = setting["DefultBotton"] wineBottonPath = setting["DefultBotton"]
else: else:
wineBottonPath = e1.currentText() wineBottonPath = e1.currentText()
QtWidgets.QMessageBox.information(widget, "提示", "如果安装字体?只需要把字体文件复制到此字体目录\n按下“OK”按钮可以打开字体目录") QtWidgets.QMessageBox.information(widget, "提示", QtCore.QCoreApplication.translate("U", "如果安装字体?只需要把字体文件复制到此字体目录\n按下“OK”按钮可以打开字体目录"))
os.system("xdg-open \"" + wineBottonPath.replace("\'", "\\\'") + "/drive_c/windows/Fonts\"") os.system("xdg-open \"" + wineBottonPath.replace("\'", "\\\'") + "/drive_c/windows/Fonts\"")
class RunWineProgramThread(QtCore.QThread): class RunWineProgramThread(QtCore.QThread):
@ -696,28 +697,28 @@ class UpdateWindow():
updateWidgetLayout = QtWidgets.QGridLayout() updateWidgetLayout = QtWidgets.QGridLayout()
versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本未知\n更新内容") versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本未知\n更新内容")
updateText = QtWidgets.QTextBrowser() updateText = QtWidgets.QTextBrowser()
ok = QtWidgets.QPushButton("更新更新过程中会关闭所有Python应用包括这个应用") ok = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "更新更新过程中会关闭所有Python应用包括这个应用"))
ok.clicked.connect(UpdateWindow.Update) ok.clicked.connect(UpdateWindow.Update)
cancel = QtWidgets.QPushButton("取消") cancel = QtWidgets.QPushButton("取消")
cancel.clicked.connect(UpdateWindow.update.close) cancel.clicked.connect(UpdateWindow.update.close)
try: try:
UpdateWindow.data = json.loads(requests.get("http://120.25.153.144/spark-deepin-wine-runner/update.json").text) UpdateWindow.data = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg==").decode("utf-8")).text)
versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本{UpdateWindow.data['Version']}\n更新内容") versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本{UpdateWindow.data['Version']}\n更新内容")
if UpdateWindow.data["Version"] == version: if UpdateWindow.data["Version"] == version:
updateText.setText("此为最新版本,无需更新") updateText.setText(QtCore.QCoreApplication.translate("U", "此为最新版本,无需更新"))
ok.setDisabled(True) ok.setDisabled(True)
else: else:
updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n")) updateText.setText(UpdateWindow.data["New"].replace("\\n", "\n"))
except: except:
traceback.print_exc() traceback.print_exc()
QtWidgets.QMessageBox.critical(updateWidget, "错误", "无法连接服务器!") QtWidgets.QMessageBox.critical(updateWidget, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "无法连接服务器!"))
updateWidgetLayout.addWidget(versionLabel, 0, 0, 1, 1) updateWidgetLayout.addWidget(versionLabel, 0, 0, 1, 1)
updateWidgetLayout.addWidget(updateText, 1, 0, 1, 3) updateWidgetLayout.addWidget(updateText, 1, 0, 1, 3)
updateWidgetLayout.addWidget(ok, 2, 2, 1, 1) updateWidgetLayout.addWidget(ok, 2, 2, 1, 1)
updateWidgetLayout.addWidget(cancel, 2, 1, 1, 1) updateWidgetLayout.addWidget(cancel, 2, 1, 1, 1)
updateWidget.setLayout(updateWidgetLayout) updateWidget.setLayout(updateWidgetLayout)
UpdateWindow.update.setCentralWidget(updateWidget) UpdateWindow.update.setCentralWidget(updateWidget)
UpdateWindow.update.setWindowTitle("检查更新") UpdateWindow.update.setWindowTitle(QtCore.QCoreApplication.translate("U", "检查更新"))
UpdateWindow.update.resize(updateWidget.frameGeometry().width(), int(updateWidget.frameGeometry().height() * 1.5)) UpdateWindow.update.resize(updateWidget.frameGeometry().width(), int(updateWidget.frameGeometry().height() * 1.5))
UpdateWindow.update.show() UpdateWindow.update.show()
@ -772,22 +773,22 @@ class GetDllFromWindowsISO:
以及不要拷贝/替换太多的 dll否则可能会导致 wine 容器异常 以及不要拷贝/替换太多的 dll否则可能会导致 wine 容器异常
最后,拷贝/替换 dll 后,建议点击下面“设置 wine 容器”按钮==》函数库 进行设置 最后,拷贝/替换 dll 后,建议点击下面“设置 wine 容器”按钮==》函数库 进行设置
当前选择的 Wine 容器:{GetDllFromWindowsISO.wineBottonPath}"""), 0, 0, 1, 5) 当前选择的 Wine 容器:{GetDllFromWindowsISO.wineBottonPath}"""), 0, 0, 1, 5)
isoLabel = QtWidgets.QLabel("ISO镜像") isoLabel = QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "ISO镜像"))
GetDllFromWindowsISO.isoPath = QtWidgets.QComboBox() GetDllFromWindowsISO.isoPath = QtWidgets.QComboBox()
GetDllFromWindowsISO.browser = QtWidgets.QPushButton("浏览") GetDllFromWindowsISO.browser = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览"))
isoControl = QtWidgets.QWidget() isoControl = QtWidgets.QWidget()
isoControlLayout = QtWidgets.QHBoxLayout() isoControlLayout = QtWidgets.QHBoxLayout()
isoControl.setLayout(isoControlLayout) isoControl.setLayout(isoControlLayout)
dllControl = QtWidgets.QWidget() dllControl = QtWidgets.QWidget()
dllControlLayout = QtWidgets.QHBoxLayout() dllControlLayout = QtWidgets.QHBoxLayout()
dllControl.setLayout(dllControlLayout) dllControl.setLayout(dllControlLayout)
GetDllFromWindowsISO.mountButton = QtWidgets.QPushButton("读取/挂载ISO镜像") GetDllFromWindowsISO.mountButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "读取/挂载ISO镜像"))
umountButton = QtWidgets.QPushButton("关闭/卸载ISO镜像") umountButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "关闭/卸载ISO镜像"))
GetDllFromWindowsISO.dllFound = QtWidgets.QComboBox() GetDllFromWindowsISO.dllFound = QtWidgets.QComboBox()
GetDllFromWindowsISO.foundButton = QtWidgets.QPushButton("查找") GetDllFromWindowsISO.foundButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "查找"))
GetDllFromWindowsISO.dllList = QtWidgets.QListView() GetDllFromWindowsISO.dllList = QtWidgets.QListView()
GetDllFromWindowsISO.saveDll = QtWidgets.QPushButton("保存到 wine 容器中") GetDllFromWindowsISO.saveDll = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "保存到 wine 容器中"))
GetDllFromWindowsISO.setWineBotton = QtWidgets.QPushButton("设置 wine 容器") GetDllFromWindowsISO.setWineBotton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "设置 wine 容器"))
isoLabel.setSizePolicy(size) isoLabel.setSizePolicy(size)
GetDllFromWindowsISO.isoPath.setEditable(True) GetDllFromWindowsISO.isoPath.setEditable(True)
GetDllFromWindowsISO.isoPath.addItems(isoPath) GetDllFromWindowsISO.isoPath.addItems(isoPath)
@ -809,7 +810,7 @@ class GetDllFromWindowsISO:
widgetLayout.addWidget(GetDllFromWindowsISO.isoPath, 1, 1, 1, 1) widgetLayout.addWidget(GetDllFromWindowsISO.isoPath, 1, 1, 1, 1)
widgetLayout.addWidget(GetDllFromWindowsISO.browser, 1, 2, 1, 1) widgetLayout.addWidget(GetDllFromWindowsISO.browser, 1, 2, 1, 1)
widgetLayout.addWidget(isoControl, 2, 1, 1, 1) widgetLayout.addWidget(isoControl, 2, 1, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("查找DLL\n为空则代表不查找\n将显示全部内容"), 3, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "查找DLL\n为空则代表不查找\n将显示全部内容")), 3, 0, 1, 1)
widgetLayout.addWidget(GetDllFromWindowsISO.dllFound, 3, 1, 1, 1) widgetLayout.addWidget(GetDllFromWindowsISO.dllFound, 3, 1, 1, 1)
widgetLayout.addWidget(GetDllFromWindowsISO.foundButton, 3, 2, 1, 1) widgetLayout.addWidget(GetDllFromWindowsISO.foundButton, 3, 2, 1, 1)
widgetLayout.addWidget(GetDllFromWindowsISO.dllList, 4, 1, 1, 1) widgetLayout.addWidget(GetDllFromWindowsISO.dllList, 4, 1, 1, 1)
@ -917,12 +918,12 @@ class GetDllFromWindowsISO:
shutil.rmtree("/tmp/wine-runner-getdll") shutil.rmtree("/tmp/wine-runner-getdll")
except: except:
traceback.print_exc() traceback.print_exc()
QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, "错误", f"关闭/卸载镜像失败,报错如下:\n{traceback.format_exc()}") QtWidgets.QMessageBox.critical(GetDllFromWindowsISO.message, QtCore.QCoreApplication.translate("U", "错误"), f"关闭/卸载镜像失败,报错如下:\n{traceback.format_exc()}")
return return
GetDllFromWindowsISO.DisbledDown(True) GetDllFromWindowsISO.DisbledDown(True)
GetDllFromWindowsISO.DisbledUp(False) GetDllFromWindowsISO.DisbledUp(False)
GetDllFromWindowsISO.mount = False GetDllFromWindowsISO.mount = False
QtWidgets.QMessageBox.information(GetDllFromWindowsISO.message, "提示", "关闭/卸载成功!") QtWidgets.QMessageBox.information(GetDllFromWindowsISO.message, QtCore.QCoreApplication.translate("U", "提示"), QtCore.QCoreApplication.translate("U", "关闭/卸载成功!"))
def CopyDll(): def CopyDll():
choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data() choose = GetDllFromWindowsISO.dllList.selectionModel().selectedIndexes()[0].data()
@ -944,23 +945,24 @@ class ProgramRunStatusShow():
return return
try: try:
sha = ProgramRunStatusUpload.GetSHA1(e2.currentText()) sha = ProgramRunStatusUpload.GetSHA1(e2.currentText())
lists = json.loads(requests.get(f"http://120.25.153.144/spark-deepin-wine-runner/app/{sha}/all.json").text) lists = json.loads(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).text)
r = requests.get(f"http://120.25.153.144/spark-deepin-wine-runner/app/{sha}/title.txt") r = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L3RpdGxlLnR4dA==").decode("utf-8"))
r.encoding = "utf-8" r.encoding = "utf-8"
title = r.text title = r.text
except: except:
if QtWidgets.QMessageBox.question(widget, "提示", "暂时还没有该软件的运行情况信息\n是否自己上传该软件的运行情况") == QtWidgets.QMessageBox.Yes: if QtWidgets.QMessageBox.question(widget, QtCore.QCoreApplication.translate("U", "提示"), QtCore.QCoreApplication.translate("U", "暂时还没有该软件的运行情况信息\n是否自己上传该软件的运行情况")) == QtWidgets.QMessageBox.Yes:
ProgramRunStatusUpload.ShowWindow(sha) ProgramRunStatusUpload.ShowWindow(sha)
return return
informationList = ["0分无法运行并且也没有报错自己无法解决", informationList = [
"1分无法运行但有报错自己无法解决", "0分无法运行并且也没有报错自己无法解决",
"2分可以运行但是效果很差几乎无法使用", "1分无法运行但有报错自己无法解决",
"3分可以运行且勉强可以使用", "2分可以运行但是效果很差几乎无法使用",
"4分可以运行体验大差不差还是有点小问题", "3分可以运行且勉强可以使用",
"5分可以运行且完全没有bug和问题和在 Windows 上一样", "4分可以运行体验大差不差还是有点小问题",
"含有不良内容,不宜安装", "5分可以运行且完全没有bug和问题和在 Windows 上一样",
"含有病毒、木马等对计算机有害的软件" "含有不良内容,不宜安装",
] "含有病毒、木马等对计算机有害的软件"
]
if title.lower() == "null": if title.lower() == "null":
title = "未知应用" title = "未知应用"
maxHead = lists.index(max(lists)) maxHead = lists.index(max(lists))
@ -968,9 +970,9 @@ class ProgramRunStatusShow():
msgWidget = QtWidgets.QWidget() msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout() msgWidgetLayout = QtWidgets.QGridLayout()
starLayout = QtWidgets.QHBoxLayout() starLayout = QtWidgets.QHBoxLayout()
uploadButton = QtWidgets.QPushButton("点此上传运行情况") uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此上传运行情况"))
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(sha, title)) uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(sha, title))
msgWidgetLayout.addWidget(QtWidgets.QLabel("综合评价:"), 0, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0)
msgWidgetLayout.addLayout(starLayout, 0, 1) msgWidgetLayout.addLayout(starLayout, 0, 1)
msgWidgetLayout.addWidget(QtWidgets.QLabel(informationList[maxHead]), 1, 0, 1, 2) msgWidgetLayout.addWidget(QtWidgets.QLabel(informationList[maxHead]), 1, 0, 1, 2)
msgWidgetLayout.addWidget(uploadButton, 2, 0, 1, 2) msgWidgetLayout.addWidget(uploadButton, 2, 0, 1, 2)
@ -1018,7 +1020,7 @@ class ProgramRunStatusUpload():
ProgramRunStatusUpload.programName = QtWidgets.QLineEdit() ProgramRunStatusUpload.programName = QtWidgets.QLineEdit()
ProgramRunStatusUpload.fen = QtWidgets.QComboBox() ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout() ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
upload = QtWidgets.QPushButton("上传") upload = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "上传"))
upload.clicked.connect(ProgramRunStatusUpload.Upload) upload.clicked.connect(ProgramRunStatusUpload.Upload)
if title != "": if title != "":
ProgramRunStatusUpload.programName.setText(title) ProgramRunStatusUpload.programName.setText(title)
@ -1028,7 +1030,7 @@ class ProgramRunStatusUpload():
ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>")) ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>"))
ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1]) ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1])
ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)) ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
ProgramRunStatusUpload.programName.setPlaceholderText("如果这个程序和程序名确实是合法还是检测到敏感词改为“NULL”即可") ProgramRunStatusUpload.programName.setPlaceholderText(QtCore.QCoreApplication.translate("U", "如果这个程序和程序名确实是合法还是检测到敏感词改为“NULL”即可"))
ProgramRunStatusUpload.fen.addItems(["0分无法运行并且也没有报错自己无法解决", ProgramRunStatusUpload.fen.addItems(["0分无法运行并且也没有报错自己无法解决",
"1分无法运行但有报错自己无法解决", "1分无法运行但有报错自己无法解决",
"2分可以运行但是效果很差几乎无法使用", "2分可以运行但是效果很差几乎无法使用",
@ -1039,15 +1041,15 @@ class ProgramRunStatusUpload():
"含有病毒、木马等对计算机有害的软件"]) "含有病毒、木马等对计算机有害的软件"])
ProgramRunStatusUpload.fen.setCurrentIndex(4) ProgramRunStatusUpload.fen.setCurrentIndex(4)
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar) ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
msgWidgetLayout.addWidget(QtWidgets.QLabel("程序名:"), 0, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
msgWidgetLayout.addWidget(QtWidgets.QLabel("评分:"), 1, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1) msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1) msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1) msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
msgWidgetLayout.addWidget(upload, 3, 1) msgWidgetLayout.addWidget(upload, 3, 1)
msgWidget.setLayout(msgWidgetLayout) msgWidget.setLayout(msgWidgetLayout)
ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget) ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusUpload.msgWindow.setWindowTitle("上传程序运行情况") ProgramRunStatusUpload.msgWindow.setWindowTitle(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath)) ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusUpload.msgWindow.show() ProgramRunStatusUpload.msgWindow.show()
@ -1055,17 +1057,20 @@ class ProgramRunStatusUpload():
if not os.path.exists(e2.currentText()): if not os.path.exists(e2.currentText()):
QtWidgets.QMessageBox.critical(None, "错误", "exe 文件不存在!") QtWidgets.QMessageBox.critical(None, "错误", "exe 文件不存在!")
return return
if ProgramRunStatusUpload.programName.text() == "":
QtWidgets.QMessageBox.critical(None, "错误", "程序名称不能为空!")
return
try: try:
if ProgramRunStatusUpload.sha1Value == "": if ProgramRunStatusUpload.sha1Value == "":
ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText()) ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
QtWidgets.QMessageBox.information(None, "提示", json.loads(requests.post("http://120.25.153.144:30250", { QtWidgets.QMessageBox.information(None, QtCore.QCoreApplication.translate("U", "提示"), json.loads(requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUw").decode("utf-8"), {
"SHA1": ProgramRunStatusUpload.sha1Value, "SHA1": ProgramRunStatusUpload.sha1Value,
"Name": ProgramRunStatusUpload.programName.text(), "Name": ProgramRunStatusUpload.programName.text(),
"Fen": ProgramRunStatusUpload.fen.currentIndex(), "Fen": ProgramRunStatusUpload.fen.currentIndex(),
"Wine": o1.currentText() "Wine": o1.currentText()
}).text)["Error"]) }).text)["Error"])
except: except:
QtWidgets.QMessageBox.critical(None, "错误", "数据上传失败!") QtWidgets.QMessageBox.critical(None, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
def GetSHA1(filePath): def GetSHA1(filePath):
sha1 = hashlib.sha1() sha1 = hashlib.sha1()
@ -1096,34 +1101,34 @@ class ProgramSetting():
ProgramSetting.message = QtWidgets.QMainWindow() ProgramSetting.message = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget() widget = QtWidgets.QWidget()
widgetLayout = QtWidgets.QGridLayout() widgetLayout = QtWidgets.QGridLayout()
widgetLayout.addWidget(QtWidgets.QLabel("选择 Wine 容器版本:"), 0, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "选择 Wine 容器版本:")), 0, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("wine DEBUG 信息输出:"), 1, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "wine DEBUG 信息输出:")), 1, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("默认 Wine"), 2, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "默认 Wine")), 2, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("默认 Wine 容器:"), 3, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "默认 Wine 容器:")), 3, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("使用终端打开:"), 4, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "使用终端打开:")), 4, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("自定义 wine 参数:"), 5, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "自定义 wine 参数:")), 5, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("程序主题:"), 6, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序主题:")), 6, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("Wine 默认 Mono 和 Gecko 安装器:"), 7, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "Wine 默认 Mono 和 Gecko 安装器:")), 7, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("忽略未安装的 Wine"), 8, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "忽略未安装的 Wine")), 8, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("下载缓存:"), 9, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "下载缓存:")), 9, 0, 1, 1)
ProgramSetting.wineBottonA = QtWidgets.QComboBox() ProgramSetting.wineBottonA = QtWidgets.QComboBox()
ProgramSetting.wineDebug = QtWidgets.QCheckBox("开启 DEBUG 输出") ProgramSetting.wineDebug = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "开启 DEBUG 输出"))
ProgramSetting.defultWine = QtWidgets.QComboBox() ProgramSetting.defultWine = QtWidgets.QComboBox()
ProgramSetting.defultBotton = QtWidgets.QLineEdit() ProgramSetting.defultBotton = QtWidgets.QLineEdit()
ProgramSetting.theme = QtWidgets.QComboBox() ProgramSetting.theme = QtWidgets.QComboBox()
ProgramSetting.theme.addItems(QtWidgets.QStyleFactory.keys()) ProgramSetting.theme.addItems(QtWidgets.QStyleFactory.keys())
ProgramSetting.theme.setCurrentText(setting["Theme"]) ProgramSetting.theme.setCurrentText(setting["Theme"])
save = QtWidgets.QPushButton("保存") save = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "保存"))
save.clicked.connect(ProgramSetting.Save) save.clicked.connect(ProgramSetting.Save)
defultBottonButton = QtWidgets.QPushButton("浏览") defultBottonButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览"))
defultBottonButton.clicked.connect(ProgramSetting.Browser) defultBottonButton.clicked.connect(ProgramSetting.Browser)
themeTry = QtWidgets.QPushButton("测试(重启后变回设置的主题)") themeTry = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "测试(重启后变回设置的主题)"))
themeTry.clicked.connect(ProgramSetting.Try) themeTry.clicked.connect(ProgramSetting.Try)
ProgramSetting.terminalOpen = QtWidgets.QCheckBox("使用终端打开deepin 终端)") ProgramSetting.terminalOpen = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "使用终端打开deepin 终端)"))
ProgramSetting.wineOption = QtWidgets.QLineEdit() ProgramSetting.wineOption = QtWidgets.QLineEdit()
ProgramSetting.monogeckoInstaller = QtWidgets.QCheckBox("屏蔽 Wine 默认 Mono 和 Gecko 安装器") ProgramSetting.monogeckoInstaller = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "屏蔽 Wine 默认 Mono 和 Gecko 安装器"))
ProgramSetting.autoWine = QtWidgets.QCheckBox("不显示未检测到的 Wine") ProgramSetting.autoWine = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "不显示未检测到的 Wine"))
ProgramSetting.runtimeCache = QtWidgets.QCheckBox("开启下载缓存") ProgramSetting.runtimeCache = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "开启下载缓存"))
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"])
@ -1155,7 +1160,7 @@ class ProgramSetting():
ProgramSetting.message.show() ProgramSetting.message.show()
def Browser(): def Browser():
path = QtWidgets.QFileDialog.getExistingDirectory(ProgramSetting.message, "选择 Wine 容器", json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBotton.json"))["path"]) path = QtWidgets.QFileDialog.getExistingDirectory(ProgramSetting.message, QtCore.QCoreApplication.translate("U", "选择 Wine 容器"), json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBotton.json"))["path"])
if path == "" or path == None or path == "()" or path == (): if path == "" or path == None or path == "()" or path == ():
return return
ProgramSetting.defultBotton.setText(path) ProgramSetting.defultBotton.setText(path)
@ -1273,6 +1278,16 @@ try:
canUseWine.append(f"{programPath}/wine/{i}/bin/wine64") canUseWine.append(f"{programPath}/wine/{i}/bin/wine64")
except: except:
pass pass
try:
for i in os.listdir(f"{get_home()}/.deepinwine/"):
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine"):
wine[f"{get_home()}/.deepinwine/{i}/bin/wine"] = f"{get_home()}/.deepinwine/{i}/bin/wine"
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine")
if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/wine64"):
wine[f"{get_home()}/.deepinwine/{i}/bin/wine64"] = f"{get_home()}/.deepinwine/{i}/bin/wine64"
canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/wine64")
except:
pass
shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values()) shellHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json")).values())
findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values()) findExeHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json")).values())
wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values()) wineBottonHistory = list(json.loads(readtxt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json")).values())
@ -1292,11 +1307,15 @@ except:
QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}") QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}")
sys.exit(1) sys.exit(1)
# 获取当前语言
def get_now_lang()->"获取当前语言":
return os.getenv('LANG')
########################### ###########################
# 程序信息 # 程序信息
########################### ###########################
iconPath = "{}/deepin-wine-runner.svg".format(programPath) iconPath = "{}/deepin-wine-runner.svg".format(programPath)
programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner" programUrl = "https://gitee.com/gfdgd-xi/deep-wine-runner\nhttps://github.com/gfdgd-xi/deep-wine-runner\nhttps://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner\nhttps://gfdgd-xi.github.io"
information = json.loads(readtxt(f"{programPath}/information.json")) information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"] version = information["Version"]
goodRunSystem = "常见 Linux 发行版" goodRunSystem = "常见 Linux 发行版"
@ -1319,28 +1338,19 @@ exe路径\' 参数 \'
<b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可 <b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示 以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''' <code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>'''
updateThingsString = '''<b>※1、修复了重复路径一直自动重复增加的问题 updateThingsString = '''<b>※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中
※2、修复了两个打包器打包错误的问题非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包) ※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine 并支持打包非 i386、amd64 架构计算机的 UOS 系统使用的 wine 程序 deb 包 ※3、开始初步多语言支持</b>
※4、支持安装 dxvk遵守 Zlib 开源协议) 4、修改错别字图形话=>图形化)
※5、运行器、打包器包括非基于生态适配活动脚本制作的支持使用 Wine 生态适配活动的容器清理脚本 5、修复评分功能名称为空也可以上传评分的问题
※6、支持更加简易的安装最新版的 WineHQ</b> 6、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
※7、增加字体商店 7、支持删除所有由 Wine 创建的启动器快捷方式
※8、新增查看可执行文件运行情况的功能
9、支持不显示没有安装的 Wine方便用户识别
10、修改了 Wine 的顺序使其更加合理
11、支持删除安装 exe 后在启动器的快捷方式
12、优化了 Wine 打包器(非基于生态活动脚本)对容器的处理
13、修复了 Wine 打包器(非基于生态活动脚本)打包出的 deb 安装时显示为解压缩后会消耗 0 B 的额外空间以及 postrm 的一些问题
14、支持删除无需使用的程序组件
15、支持组件/运行库下载后缓存方便下次使用(可以清理)
16、点击获取图标按钮后会自动读取 exe 框的程序图标(不支持相对路径和包内路径,只支持绝对路径)
''' '''
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年08月13日" updateTime = "2022年08月22日"
about = f'''<h1>关于</h1> about = f'''<h1>关于</h1>
<p>一个能让Linux用户更加方便运行Windows应用的程序内置了对wine图形的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p> <p>一个能让Linux用户更加方便运行Windows应用的程序内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具可以做到只需要用户下载系统镜像并点击安装即可无需顾及虚拟机安装、创建、虚拟机的分区等等</p> <p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具可以做到只需要用户下载系统镜像并点击安装即可无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
<p>本程序依照 GPLV3 协议开源</p> <p>本程序依照 GPLV3 协议开源</p>
<pre> <pre>
@ -1380,6 +1390,11 @@ except:
# 读取主题 # 读取主题
# Qt 窗口 # Qt 窗口
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
# 语言载入
if not get_now_lang() == "zh_CN.UTF-8":
trans = QtCore.QTranslator()
trans.load(f"{programPath}/LANG/deepin-wine-runner-en_US.qm")
app.installTranslator(trans)
window = QtWidgets.QMainWindow() window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget() widget = QtWidgets.QWidget()
window.setCentralWidget(widget) window.setCentralWidget(widget)
@ -1395,25 +1410,25 @@ leftUp = QtWidgets.QWidget()
mainLayout.addWidget(leftUp, 0, 0, 1, 1) mainLayout.addWidget(leftUp, 0, 0, 1, 1)
leftUpLayout = QtWidgets.QGridLayout() leftUpLayout = QtWidgets.QGridLayout()
leftUp.setLayout(leftUpLayout) leftUp.setLayout(leftUpLayout)
fastLabel = QtWidgets.QLabel("快速启动") fastLabel = QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "快速启动"))
fastLabel.setStyleSheet("font: 30px;") fastLabel.setStyleSheet("font: 30px;")
leftUpLayout.addWidget(fastLabel, 0, 0, 1, 2) leftUpLayout.addWidget(fastLabel, 0, 0, 1, 2)
leftUpLayout.addWidget(QtWidgets.QLabel("<hr>"), 1, 0, 1, 2) leftUpLayout.addWidget(QtWidgets.QLabel("<hr>"), 1, 0, 1, 2)
leftUpLayout.addWidget(QtWidgets.QLabel("请选择容器路径:"), 2, 0, 1, 1) leftUpLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "请选择容器路径:")), 2, 0, 1, 1)
e1 = QtWidgets.QComboBox() e1 = QtWidgets.QComboBox()
e1.setEditable(True) e1.setEditable(True)
leftUpLayout.addWidget(e1, 3, 0, 1, 1) leftUpLayout.addWidget(e1, 3, 0, 1, 1)
button1 = QtWidgets.QPushButton("浏览") button1 = QtWidgets.QPushButton("浏览")
button1.clicked.connect(liulanbutton) button1.clicked.connect(liulanbutton)
leftUpLayout.addWidget(button1, 3, 1, 1, 1) leftUpLayout.addWidget(button1, 3, 1, 1, 1)
leftUpLayout.addWidget(QtWidgets.QLabel("请选择要执行的程序:"), 4, 0, 1, 1) leftUpLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "请选择要执行的程序:")), 4, 0, 1, 1)
e2 = QtWidgets.QComboBox() e2 = QtWidgets.QComboBox()
e2.setEditable(True) e2.setEditable(True)
leftUpLayout.addWidget(e2, 5, 0, 1, 1) leftUpLayout.addWidget(e2, 5, 0, 1, 1)
button2 = QtWidgets.QPushButton("浏览") button2 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览"))
button2.clicked.connect(liulanexebutton) button2.clicked.connect(liulanexebutton)
leftUpLayout.addWidget(button2, 5, 1, 1, 1) leftUpLayout.addWidget(button2, 5, 1, 1, 1)
leftUpLayout.addWidget(QtWidgets.QLabel("请选择WINE版本"), 6, 0, 1, 1) leftUpLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "请选择WINE版本")), 6, 0, 1, 1)
o1 = QtWidgets.QComboBox() o1 = QtWidgets.QComboBox()
leftUpLayout.addWidget(o1, 7, 0, 1, 1) leftUpLayout.addWidget(o1, 7, 0, 1, 1)
# 设置空间权重 # 设置空间权重
@ -1425,58 +1440,58 @@ leftDown = QtWidgets.QWidget()
mainLayout.addWidget(leftDown, 1, 0, 1, 1) mainLayout.addWidget(leftDown, 1, 0, 1, 1)
leftDownLayout = QtWidgets.QVBoxLayout() leftDownLayout = QtWidgets.QVBoxLayout()
leftDown.setLayout(leftDownLayout) leftDown.setLayout(leftDownLayout)
highLabel = QtWidgets.QLabel("高级功能") highLabel = QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "高级功能"))
highLabel.setStyleSheet("font: 30px;") highLabel.setStyleSheet("font: 30px;")
leftDownLayout.addWidget(highLabel) leftDownLayout.addWidget(highLabel)
leftDownLayout.addWidget(QtWidgets.QLabel("<hr>")) leftDownLayout.addWidget(QtWidgets.QLabel("<hr>"))
leftDownLayout.addWidget(QtWidgets.QLabel("创建快捷方式Desktop文件")) leftDownLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "创建快捷方式Desktop文件")))
createDesktopLink = QtWidgets.QHBoxLayout() createDesktopLink = QtWidgets.QHBoxLayout()
label_r_2 = QtWidgets.QLabel("名称:") label_r_2 = QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "名称:"))
createDesktopLink.addWidget(label_r_2) createDesktopLink.addWidget(label_r_2)
combobox1 = QtWidgets.QComboBox() combobox1 = QtWidgets.QComboBox()
combobox1.setEditable(True) combobox1.setEditable(True)
createDesktopLink.addWidget(combobox1) createDesktopLink.addWidget(combobox1)
button5 = QtWidgets.QPushButton("创建到桌面") button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到桌面"))
button5.clicked.connect(make_desktop_on_desktop) button5.clicked.connect(make_desktop_on_desktop)
createDesktopLink.addWidget(button5) createDesktopLink.addWidget(button5)
saveDesktopFileOnLauncher = QtWidgets.QPushButton("创建到开始菜单") saveDesktopFileOnLauncher = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "创建到开始菜单"))
saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher) saveDesktopFileOnLauncher.clicked.connect(make_desktop_on_launcher)
createDesktopLink.addWidget(saveDesktopFileOnLauncher) createDesktopLink.addWidget(saveDesktopFileOnLauncher)
leftDownLayout.addLayout(createDesktopLink) leftDownLayout.addLayout(createDesktopLink)
programManager = QtWidgets.QGridLayout() programManager = QtWidgets.QGridLayout()
leftDownLayout.addLayout(programManager) leftDownLayout.addLayout(programManager)
programManager.addWidget(QtWidgets.QLabel("程序管理:"), 0, 0, 1, 1) programManager.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序管理:")), 0, 0, 1, 1)
getProgramIcon = QtWidgets.QPushButton("提取图标") getProgramIcon = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "提取图标"))
getProgramIcon.clicked.connect(lambda: RunWineProgram(f"{programPath}/BeCyIconGrabber.exe' 'z:/{e2.currentText()}")) getProgramIcon.clicked.connect(lambda: RunWineProgram(f"{programPath}/BeCyIconGrabber.exe' 'z:/{e2.currentText()}"))
programManager.addWidget(getProgramIcon, 1, 0, 1, 1) programManager.addWidget(getProgramIcon, 1, 0, 1, 1)
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 1, 1, 1) programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 1, 1, 1)
trasButton = QtWidgets.QPushButton("窗口透明工具") trasButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "窗口透明工具"))
trasButton.clicked.connect(lambda: RunWineProgram(f"{programPath}/窗体透明度设置工具.exe")) trasButton.clicked.connect(lambda: RunWineProgram(f"{programPath}/窗体透明度设置工具.exe"))
programManager.addWidget(trasButton, 1, 2, 1, 1) programManager.addWidget(trasButton, 1, 2, 1, 1)
uninstallProgram = QtWidgets.QPushButton("卸载程序") uninstallProgram = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "卸载程序"))
uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe")) uninstallProgram.clicked.connect(lambda: RunWineProgram(f"{programPath}/geek.exe"))
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 3, 1, 1) programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 3, 1, 1)
programManager.addWidget(uninstallProgram, 1, 4, 1, 1) programManager.addWidget(uninstallProgram, 1, 4, 1, 1)
miniAppStore = QtWidgets.QPushButton("微型应用商店") miniAppStore = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "微型应用商店"))
miniAppStore.clicked.connect(lambda: threading.Thread(target=MiniAppStore).start()) miniAppStore.clicked.connect(lambda: threading.Thread(target=MiniAppStore).start())
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 5, 1, 1) programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 5, 1, 1)
programManager.addWidget(miniAppStore, 1, 6, 1, 1) programManager.addWidget(miniAppStore, 1, 6, 1, 1)
programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 7, 1, 1) programManager.addWidget(QtWidgets.QLabel(" "*5), 1, 7, 1, 1)
getProgramStatus = QtWidgets.QPushButton("获取该程序运行情况") getProgramStatus = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "获取该程序运行情况"))
getProgramStatus.clicked.connect(ProgramRunStatusShow.ShowWindow) getProgramStatus.clicked.connect(ProgramRunStatusShow.ShowWindow)
programManager.addWidget(getProgramStatus, 1, 8, 1, 1) programManager.addWidget(getProgramStatus, 1, 8, 1, 1)
programManager.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum), 1, 9, 1, 1) programManager.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum), 1, 9, 1, 1)
programManager.addWidget(QtWidgets.QLabel("WINE配置"), 2, 0, 1, 1) programManager.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "WINE配置")), 2, 0, 1, 1)
wineConfig = QtWidgets.QPushButton("配置容器") wineConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "配置容器"))
wineConfig.clicked.connect(lambda: RunWineProgram("winecfg")) wineConfig.clicked.connect(lambda: RunWineProgram("winecfg"))
programManager.addWidget(wineConfig, 3, 0, 1, 1) programManager.addWidget(wineConfig, 3, 0, 1, 1)
fontAppStore = QtWidgets.QPushButton("字体商店") fontAppStore = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "字体商店"))
fontAppStore.clicked.connect(FontAppStore) fontAppStore.clicked.connect(FontAppStore)
programManager.addWidget(fontAppStore, 3, 2, 1, 1) programManager.addWidget(fontAppStore, 3, 2, 1, 1)
button_r_6 = QtWidgets.QPushButton("安装自定义字体") button_r_6 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "安装自定义字体"))
button_r_6.clicked.connect(OpenWineFontPath) button_r_6.clicked.connect(OpenWineFontPath)
programManager.addWidget(button_r_6, 3, 4, 1, 1) programManager.addWidget(button_r_6, 3, 4, 1, 1)
sparkWineSetting = QtWidgets.QPushButton("星火wine配置") sparkWineSetting = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("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=["/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)
# 权重 # 权重
@ -1493,7 +1508,7 @@ returnText.setStyleSheet("""
background-color: black; background-color: black;
color: white; color: white;
""") """)
returnText.setText("在此可以看到wine安装应用时的终端输出内容") returnText.setText(QtCore.QCoreApplication.translate("U", "在此可以看到wine安装应用时的终端输出内容"))
mainLayout.setRowStretch(0, 2) mainLayout.setRowStretch(0, 2)
mainLayout.setRowStretch(1, 1) mainLayout.setRowStretch(1, 1)
mainLayout.setColumnStretch(0, 2) mainLayout.setColumnStretch(0, 2)
@ -1501,7 +1516,7 @@ mainLayout.setColumnStretch(1, 1)
mainLayout.addWidget(returnText, 0, 1, 2, 1) mainLayout.addWidget(returnText, 0, 1, 2, 1)
# 版权 # 版权
copy = QtWidgets.QLabel(f"""\n程序版本{version} copy = QtWidgets.QLabel(f"""\n程序版本{version}<b>提示Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统</b><br>
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""") ©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""")
mainLayout.addWidget(copy, 2, 0, 1, 1) mainLayout.addWidget(copy, 2, 0, 1, 1)
@ -1510,26 +1525,26 @@ programRun = QtWidgets.QWidget()
programRunLayout = QtWidgets.QHBoxLayout() programRunLayout = QtWidgets.QHBoxLayout()
programRun.setLayout(programRunLayout) programRun.setLayout(programRunLayout)
programRunLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)) programRunLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
button3 = QtWidgets.QPushButton("运行程序") button3 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "运行程序"))
button3.clicked.connect(runexebutton) button3.clicked.connect(runexebutton)
programRunLayout.addWidget(button3) programRunLayout.addWidget(button3)
killProgram = QtWidgets.QPushButton("终止程序") killProgram = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "终止程序"))
killProgram.clicked.connect(KillProgram) killProgram.clicked.connect(KillProgram)
programRunLayout.addWidget(killProgram) programRunLayout.addWidget(killProgram)
mainLayout.addWidget(programRun, 2, 1, 1, 1) mainLayout.addWidget(programRun, 2, 1, 1, 1)
# 菜单栏 # 菜单栏
menu = window.menuBar() menu = window.menuBar()
programmenu = menu.addMenu("程序(&P)") programmenu = menu.addMenu(QtCore.QCoreApplication.translate("U", "程序(&P)"))
p1 = QtWidgets.QAction("安装 wine(&I)") p1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 wine(&I)"))
installWineOnDeepin23 = QtWidgets.QAction("安装 wine(只限Deepin23)") installWineOnDeepin23 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 wine(只限Deepin23)"))
installWineHQ = QtWidgets.QAction("安装 WineHQ") installWineHQ = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 WineHQ"))
installMoreWine = QtWidgets.QAction("安装更多 Wine") installMoreWine = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装更多 Wine"))
p2 = QtWidgets.QAction("设置程序(&S)") p2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "设置程序(&S)"))
p3 = QtWidgets.QAction("清空软件历史记录(&C)") p3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清空软件历史记录(&C)"))
cleanCache = QtWidgets.QAction("清空软件缓存") cleanCache = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清空软件缓存"))
cleanProgramUnuse = QtWidgets.QAction("删除程序组件") cleanProgramUnuse = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除程序组件"))
p4 = QtWidgets.QAction("退出程序(&E)") p4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "退出程序(&E)"))
programmenu.addAction(p1) programmenu.addAction(p1)
programmenu.addAction(installWineOnDeepin23) programmenu.addAction(installWineOnDeepin23)
programmenu.addAction(installWineHQ) programmenu.addAction(installWineHQ)
@ -1545,24 +1560,24 @@ programmenu.addAction(p4)
p1.triggered.connect(InstallWine) p1.triggered.connect(InstallWine)
installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23) installWineOnDeepin23.triggered.connect(InstallWineOnDeepin23)
installWineHQ.triggered.connect(InstallWineHQ) installWineHQ.triggered.connect(InstallWineHQ)
installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/wine'"]).start()) installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/installwine'"]).start())
p2.triggered.connect(ProgramSetting.ShowWindow) p2.triggered.connect(ProgramSetting.ShowWindow)
p3.triggered.connect(CleanProgramHistory) p3.triggered.connect(CleanProgramHistory)
cleanCache.triggered.connect(CleanProgramCache) cleanCache.triggered.connect(CleanProgramCache)
cleanProgramUnuse.triggered.connect(CleanProgram) cleanProgramUnuse.triggered.connect(CleanProgram)
p4.triggered.connect(window.close) p4.triggered.connect(window.close)
wineOption = menu.addMenu("Wine(&W)") wineOption = menu.addMenu(QtCore.QCoreApplication.translate("U", "Wine(&W)"))
w1 = QtWidgets.QAction("打开 Wine 容器目录") w1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开 Wine 容器目录"))
w2 = QtWidgets.QAction("安装常见字体") w2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装常见字体"))
w3 = QtWidgets.QAction("安装自定义字体") w3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装自定义字体"))
w4 = QtWidgets.QAction("删除选择的 Wine 容器") w4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除选择的 Wine 容器"))
cleanBottonUOS = QtWidgets.QAction("清理 Wine 容器(基于 Wine 适配活动脚本)") cleanBottonUOS = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
w5 = QtWidgets.QAction("打包 wine 应用") w5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打包 wine 应用"))
w6 = QtWidgets.QAction("使用官方 Wine 适配活动的脚本进行打包") w6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "使用官方 Wine 适配活动的脚本进行打包"))
w7 = QtWidgets.QAction("从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像") w7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像"))
updateGeek = QtWidgets.QAction("从 Geek Uninstaller 官网升级程序") updateGeek = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从 Geek Uninstaller 官网升级程序"))
deleteDesktopIcon = QtWidgets.QAction("删除所有 Wine 程序在启动器的快捷方式") deleteDesktopIcon = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除所有 Wine 程序在启动器的快捷方式"))
wineOption.addAction(w1) wineOption.addAction(w1)
wineOption.addAction(w2) wineOption.addAction(w2)
wineOption.addAction(w3) wineOption.addAction(w3)
@ -1576,26 +1591,26 @@ wineOption.addAction(w7)
wineOption.addSeparator() wineOption.addSeparator()
wineOption.addAction(updateGeek) wineOption.addAction(updateGeek)
wineOption.addSeparator() wineOption.addSeparator()
wm1 = wineOption.addMenu("在指定 Wine、容器安装组件") wm1 = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "在指定 Wine、容器安装组件"))
wm1_1 = QtWidgets.QAction("在指定wine、指定容器安装 .net framework") wm1_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 .net framework"))
wm1_2 = QtWidgets.QAction("在指定wine、指定容器安装 Visual Studio C++") wm1_2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 Visual Studio C++"))
wm1_3 = QtWidgets.QAction("在指定wine、指定容器安装 MSXML") wm1_3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 MSXML"))
wm1_4 = QtWidgets.QAction("在指定wine、指定容器安装 gecko") wm1_4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 gecko"))
wm1_5 = QtWidgets.QAction("在指定wine、指定容器安装 mono") wm1_5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装 mono"))
wm1_6 = QtWidgets.QAction("在指定wine、指定容器安装其它运行库") wm1_6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "在指定wine、指定容器安装其它运行库"))
wm1.addAction(wm1_1) wm1.addAction(wm1_1)
wm1.addAction(wm1_2) wm1.addAction(wm1_2)
wm1.addAction(wm1_3) wm1.addAction(wm1_3)
wm1.addAction(wm1_4) wm1.addAction(wm1_4)
wm1.addAction(wm1_5) wm1.addAction(wm1_5)
wm1.addAction(wm1_6) wm1.addAction(wm1_6)
wm2 = wineOption.addMenu("在指定 Wine、容器运行基础应用") wm2 = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "在指定 Wine、容器运行基础应用"))
wm2_1 = QtWidgets.QAction("打开指定wine、指定容器的控制面板") wm2_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的控制面板"))
wm2_2 = QtWidgets.QAction("打开指定wine、指定容器的浏览器") wm2_2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的浏览器"))
wm2_3 = QtWidgets.QAction("打开指定wine、指定容器的注册表") wm2_3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的注册表"))
wm2_4 = QtWidgets.QAction("打开指定wine、指定容器的任务管理器") wm2_4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的任务管理器"))
wm2_5 = QtWidgets.QAction("打开指定wine、指定容器的资源管理器") wm2_5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的资源管理器"))
wm2_6 = QtWidgets.QAction("打开指定wine、指定容器的关于 wine") wm2_6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打开指定wine、指定容器的关于 wine"))
wm2.addAction(wm2_1) wm2.addAction(wm2_1)
wm2.addAction(wm2_2) wm2.addAction(wm2_2)
wm2.addAction(wm2_3) wm2.addAction(wm2_3)
@ -1603,29 +1618,29 @@ wm2.addAction(wm2_4)
wm2.addAction(wm2_5) wm2.addAction(wm2_5)
wm2.addAction(wm2_6) wm2.addAction(wm2_6)
wineOption.addSeparator() wineOption.addSeparator()
w8 = QtWidgets.QAction("设置 run_v3.sh 的文管为 Deepin 默认文管") w8 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "设置 run_v3.sh 的文管为 Deepin 默认文管"))
w9 = QtWidgets.QAction("设置 run_v3.sh 的文管为 Wine 默认文管") w9 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "设置 run_v3.sh 的文管为 Wine 默认文管"))
w10 = QtWidgets.QAction("重新安装 deepin-wine-helper") w10 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "重新安装 deepin-wine-helper"))
w11 = QtWidgets.QAction("使用winetricks打开指定容器") w11 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "使用winetricks打开指定容器"))
wineOption.addAction(w8) wineOption.addAction(w8)
wineOption.addAction(w9) wineOption.addAction(w9)
wineOption.addAction(w10) wineOption.addAction(w10)
wineOption.addSeparator() wineOption.addSeparator()
wineOption.addAction(w11) wineOption.addAction(w11)
wineOption.addSeparator() wineOption.addSeparator()
wm3 = wineOption.addMenu("启用/禁用 opengl") wm3 = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "启用/禁用 opengl"))
wm3_1 = QtWidgets.QAction("开启 opengl") wm3_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "开启 opengl"))
wm3_2 = QtWidgets.QAction("禁用 opengl") wm3_2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "禁用 opengl"))
wm3.addAction(wm3_1) wm3.addAction(wm3_1)
wm3.addAction(wm3_2) wm3.addAction(wm3_2)
wm4 = wineOption.addMenu("安装/卸载 winbind") wm4 = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "安装/卸载 winbind"))
wm4_1 = QtWidgets.QAction("安装 winbind") wm4_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 winbind"))
wm4_2 = QtWidgets.QAction("卸载 winbind") wm4_2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "卸载 winbind"))
wm4.addAction(wm4_1) wm4.addAction(wm4_1)
wm4.addAction(wm4_2) wm4.addAction(wm4_2)
dxvkMenu = wineOption.addMenu("安装/卸载 DXVK") dxvkMenu = wineOption.addMenu(QtCore.QCoreApplication.translate("U", "安装/卸载 DXVK"))
installDxvk = QtWidgets.QAction("安装 DXVK") installDxvk = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "安装 DXVK"))
uninstallDxvk = QtWidgets.QAction("卸载 DXVK") uninstallDxvk = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "卸载 DXVK"))
dxvkMenu.addAction(installDxvk) dxvkMenu.addAction(installDxvk)
dxvkMenu.addAction(uninstallDxvk) dxvkMenu.addAction(uninstallDxvk)
wineOption.addSeparator() wineOption.addSeparator()
@ -1663,15 +1678,15 @@ installDxvk.triggered.connect(InstallDXVK)
uninstallDxvk.triggered.connect(UninstallDXVK) uninstallDxvk.triggered.connect(UninstallDXVK)
deleteDesktopIcon.triggered.connect(DeleteDesktopIcon) deleteDesktopIcon.triggered.connect(DeleteDesktopIcon)
virtualMachine = menu.addMenu("虚拟机(&V)") virtualMachine = menu.addMenu(QtCore.QCoreApplication.translate("U", "虚拟机(&V)"))
v1 = QtWidgets.QAction("使用 Virtualbox 虚拟机运行 Windows 应用") v1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "使用 Virtualbox 虚拟机运行 Windows 应用"))
virtualMachine.addAction(v1) virtualMachine.addAction(v1)
v1.triggered.connect(RunVM) v1.triggered.connect(RunVM)
safeWebsize = menu.addMenu("云沙箱(&C)") safeWebsize = menu.addMenu(QtCore.QCoreApplication.translate("U", "云沙箱(&C)"))
s1 = QtWidgets.QAction("360 沙箱云") s1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "360 沙箱云"))
s2 = QtWidgets.QAction("微步云沙箱") s2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "微步云沙箱"))
s3 = QtWidgets.QAction("VIRUSTOTAL") s3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "VIRUSTOTAL"))
safeWebsize.addAction(s1) safeWebsize.addAction(s1)
safeWebsize.addAction(s2) safeWebsize.addAction(s2)
safeWebsize.addAction(s3) safeWebsize.addAction(s3)
@ -1679,15 +1694,15 @@ 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/"))
help = menu.addMenu("帮助(&H)") help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助(&H)"))
h1 = QtWidgets.QAction("程序官网") h1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "程序官网"))
h2 = QtWidgets.QAction("小提示") h2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示"))
h3 = QtWidgets.QAction("更新内容") h3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新内容"))
h4 = QtWidgets.QAction("谢明名单") h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "谢明名单"))
h5 = QtWidgets.QAction("更新这个程序") h5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新这个程序"))
h6 = QtWidgets.QAction("反馈这个程序的建议和问题") h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题"))
h7 = QtWidgets.QAction("关于这个程序") h7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于这个程序"))
h8 = QtWidgets.QAction("关于 Qt") h8 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于 Qt"))
help.addAction(h1) help.addAction(h1)
help.addSeparator() help.addSeparator()
help.addAction(h2) help.addAction(h2)
@ -1699,8 +1714,8 @@ help.addAction(h6)
help.addAction(h7) help.addAction(h7)
help.addAction(h8) help.addAction(h8)
help.addSeparator() help.addSeparator()
hm1 = help.addMenu("更多生态适配应用") hm1 = help.addMenu(QtCore.QCoreApplication.translate("U", "更多生态适配应用"))
hm1_1 = QtWidgets.QAction("运行 Android 应用UEngine 运行器") hm1_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "运行 Android 应用UEngine 运行器"))
hm1.addAction(hm1_1) hm1.addAction(hm1_1)
h1.triggered.connect(OpenProgramURL) h1.triggered.connect(OpenProgramURL)
h2.triggered.connect(helps) h2.triggered.connect(helps)
@ -1731,7 +1746,7 @@ else:
o1.addItems(wine.keys()) o1.addItems(wine.keys())
# 禁用被精简掉的控件 # 禁用被精简掉的控件
for i in [ for i in [
[[p1, installWineOnDeepin23, installWineHQ], f"{programPath}/InstallWineOnDeepin23.py"], [[p1, installWineOnDeepin23, installWineHQ, installMoreWine], f"{programPath}/InstallWineOnDeepin23.py"],
[[w5], f"{programPath}/deepin-wine-packager.py"], [[w5], f"{programPath}/deepin-wine-packager.py"],
[[w6], f"{programPath}/deepin-wine-packager-with-script.py"], [[w6], f"{programPath}/deepin-wine-packager-with-script.py"],
[[p1, v1], f"{programPath}/RunVM.sh"], [[p1, v1], f"{programPath}/RunVM.sh"],
@ -1744,6 +1759,7 @@ for i in [
if subprocess.getoutput("arch").lower() != "x86_64": if subprocess.getoutput("arch").lower() != "x86_64":
p1.setDisabled(True) p1.setDisabled(True)
installWineOnDeepin23.setDisabled(True) installWineOnDeepin23.setDisabled(True)
installMoreWine.setDisabled(True)
virtualMachine.setDisabled(True) virtualMachine.setDisabled(True)
v1.setDisabled(True) v1.setDisabled(True)
installWineHQ.setDisabled(True) installWineHQ.setDisabled(True)

Binary file not shown.

Binary file not shown.

@ -1,5 +1,5 @@
{ {
"Version": "2.0.0-2", "Version": "2.1.0",
"Thank": [ "Thank": [
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301", "感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
"感谢 @zhangs https://bbs.deepin.org/post/227948", "感谢 @zhangs https://bbs.deepin.org/post/227948",
@ -18,10 +18,13 @@
"感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包", "感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包",
"感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题", "感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题",
"感谢 @ZYH 提供的敏感词列表", "感谢 @ZYH 提供的敏感词列表",
"感谢 @五行缺钱 反馈的 2.0.0 在 Deepin 23 缺失依赖 toilet 的问题",
"感谢 @云的眼泪 @zhengjl 反馈的 2.0.0 发布忘记把安装包传蓝奏云的问题",
"感谢 @虚幻的早晨 提出的添加 DXVK、VKD3D 的功能VKD3D 暂未实现)", "感谢 @虚幻的早晨 提出的添加 DXVK、VKD3D 的功能VKD3D 暂未实现)",
"感谢统信在 Wine 生态适配活动中提供的打包脚本", "感谢统信在 Wine 生态适配活动中提供的打包脚本",
"也感谢 DXVK 的开发者开发了 DXVK 这个程序项目链接https://github.com/doitsujin/dxvk", "也感谢 DXVK 的开发者开发了 DXVK 这个程序项目链接https://github.com/doitsujin/dxvk",
"也感谢 WineHQ 开发团队开发的 WineHQ项目网址https://dl.winehq.org/", "也感谢 WineHQ 开发团队开发的 WineHQ项目网址https://dl.winehq.org/",
"最后也感谢支持本程序的用户和上传相关软件运行情况数据的用户,有你们的支持和使用,使这个程序变得更好",
"", "",
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!", "可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
"如果上面有遗漏,请向我反馈补充" "如果上面有遗漏,请向我反馈补充"

@ -2,7 +2,7 @@
# 使用系统默认的 python3 运行 # 使用系统默认的 python3 运行
########################################################################################### ###########################################################################################
# 作者gfdgd xi # 作者gfdgd xi
# 版本:1.5.3 # 版本:2.0.1
# 更新时间2022年07月08日 # 更新时间2022年07月08日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 tkinter 构建 # 基于 Python3 的 tkinter 构建
@ -15,6 +15,15 @@ import os
################### ###################
# 程序功能 # 程序功能
################### ###################
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
print("请保证你能有 root 权限以便安装") print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ') print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input() input()

@ -27,17 +27,17 @@ import PyQt5.QtWidgets as QtWidgets
################# #################
def button1_cl(): def button1_cl():
path = QtWidgets.QFileDialog.getExistingDirectory(widget, "选择 wine 容器", f"{get_home()}/.deepinwine") path = QtWidgets.QFileDialog.getExistingDirectory(QtCore.QCoreApplication.translate("U", "选择 wine 容器"), f"{get_home()}/.deepinwine")
if path != "": if path != "":
e6_text.setText(path) e6_text.setText(path)
def button2_cl(): def button2_cl():
path = QtWidgets.QFileDialog.getOpenFileName(widget, "选择图标文件", get_home(), "PNG图标(*.png);;SVG图标(*.svg);;全部文件(*.*)")[0] path = QtWidgets.QFileDialog.getOpenFileName(widget, QtCore.QCoreApplication.translate("U", "选择图标文件"), get_home(), "PNG图标(*.png);;SVG图标(*.svg);;全部文件(*.*)")[0]
if path != "": if path != "":
e9_text.setText(path) e9_text.setText(path)
def button4_cl(): def button4_cl():
path = QtWidgets.QFileDialog.getSaveFileName(widget, "保存 deb 包", get_home(), "deb 文件(*.deb);;所有文件(*.*)", "{}_{}_i386.deb".format(e1_text.text(), e2_text.text()))[0] path = QtWidgets.QFileDialog.getSaveFileName(widget, QtCore.QCoreApplication.translate("U", "保存 deb 包"), get_home(), "deb 文件(*.deb);;所有文件(*.*)", "{}_{}_i386.deb".format(e1_text.text(), e2_text.text()))[0]
if path != "": if path != "":
e12_text.setText(path) e12_text.setText(path)
@ -99,7 +99,7 @@ def make_deb(build=False):
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
label13_text_change("必填信息没有填写完整,无法继续构建 deb 包") label13_text_change("必填信息没有填写完整,无法继续构建 deb 包")
return return
if QtWidgets.QMessageBox.question(widget, "提示", "打包将会改动现在选择的容器,是否继续?") == QtWidgets.QMessageBox.No: if QtWidgets.QMessageBox.question(widget, QtCore.QCoreApplication.translate("U", "提示"), QtCore.QCoreApplication.translate("U", "打包将会改动现在选择的容器,是否继续?")) == QtWidgets.QMessageBox.No:
disabled_or_NORMAL_all(True) disabled_or_NORMAL_all(True)
return return
#thread = threading.Thread(target=make_deb_threading) #thread = threading.Thread(target=make_deb_threading)
@ -832,6 +832,7 @@ fi
print("e") print("e")
self.label.emit("正在处理 Wine") self.label.emit("正在处理 Wine")
if os.path.exists(wine[wineVersion.currentText()]): if os.path.exists(wine[wineVersion.currentText()]):
shutil.copy(f"{programPath}/gtkGetFileNameDlg", f"{debPackagePath}/opt/apps/{e1_text.text()}/files/gtkGetFileNameDlg")
if wine[wineVersion.currentText()][-3:] == ".7z": if wine[wineVersion.currentText()][-3:] == ".7z":
shutil.copy(wine[wineVersion.currentText()], f"{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z") shutil.copy(wine[wineVersion.currentText()], f"{debPackagePath}/opt/apps/{e1_text.text()}/files/wine_archive.7z")
else: else:
@ -1081,24 +1082,24 @@ e12_text = QtWidgets.QLineEdit()
e15_text = QtWidgets.QLineEdit() e15_text = QtWidgets.QLineEdit()
label13_text = QtWidgets.QLabel("<p align='center'>当前 deb 打包情况:暂未打包</p>") label13_text = QtWidgets.QLabel("<p align='center'>当前 deb 打包情况:暂未打包</p>")
option1_text = QtWidgets.QComboBox() option1_text = QtWidgets.QComboBox()
button1 = QtWidgets.QPushButton("浏览……") button1 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
button2 = QtWidgets.QPushButton("浏览……") button2 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
button4 = QtWidgets.QPushButton("浏览……") button4 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "浏览……"))
debControlFrame = QtWidgets.QHBoxLayout() debControlFrame = QtWidgets.QHBoxLayout()
button5 = QtWidgets.QPushButton("打包……") button5 = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "打包……"))
installDeb = QtWidgets.QPushButton("安装打包完成的 deb……") installDeb = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "安装打包完成的 deb……"))
buildDebDir = QtWidgets.QPushButton("根据填写内容打包模板") buildDebDir = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "根据填写内容打包模板"))
debControlFrame.addWidget(button5) debControlFrame.addWidget(button5)
debControlFrame.addWidget(installDeb) debControlFrame.addWidget(installDeb)
rmBash = QtWidgets.QCheckBox("设置卸载该 deb 后自动删除该容器") rmBash = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "设置卸载该 deb 后自动删除该容器"))
cleanBottonByUOS = QtWidgets.QCheckBox("使用统信 Wine 生态适配活动容器清理脚本") cleanBottonByUOS = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "使用统信 Wine 生态适配活动容器清理脚本"))
debArch = QtWidgets.QComboBox() debArch = QtWidgets.QComboBox()
debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"]) debArch.addItems(["i386", "arm64(box86)", "arm64(exagear)"])
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"])
option1_text.setCurrentText("Network") option1_text.setCurrentText("Network")
wineFrame = QtWidgets.QHBoxLayout() wineFrame = QtWidgets.QHBoxLayout()
chooseWineHelperValue = QtWidgets.QCheckBox("使用星火wine helper\n如不勾选默认为deepin-wine-helper") chooseWineHelperValue = QtWidgets.QCheckBox(QtCore.QCoreApplication.translate("U", "使用星火wine helper\n如不勾选默认为deepin-wine-helper"))
button1.clicked.connect(button1_cl) button1.clicked.connect(button1_cl)
button2.clicked.connect(button2_cl) button2.clicked.connect(button2_cl)
button4.clicked.connect(button4_cl) button4.clicked.connect(button4_cl)
@ -1108,19 +1109,19 @@ installDeb.clicked.connect(InstallDeb)
wineFrame.addWidget(wineVersion) wineFrame.addWidget(wineVersion)
debArch.currentIndexChanged.connect(ChangeArchCombobox) debArch.currentIndexChanged.connect(ChangeArchCombobox)
# 创建控件 # 创建控件
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的包名(※必填):"), 0, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的包名(※必填):")), 0, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的版本号(※必填):"), 1, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的版本号(※必填):")), 1, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的说明(※必填):"), 2, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的说明(※必填):")), 2, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要打包的 deb 包的维护者(※必填):"), 3, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要打包的 deb 包的维护者(※必填):")), 3, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器的容器名(※必填):"), 4, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要解压的 wine 容器的容器名(※必填):")), 4, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要解压的 wine 容器(※必填):"), 5, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要解压的 wine 容器(※必填):")), 5, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("wine 容器里需要运行的可执行文件路径(※必填):"), 6, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "wine 容器里需要运行的可执行文件路径(※必填):")), 6, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的分类(※必填):"), 7, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的分类(※必填):")), 7, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("wine 容器里需要运行的可执行文件的参数(选填):"), 8, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "wine 容器里需要运行的可执行文件的参数(选填):")), 8, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的名称(※必填):"), 9, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的名称(※必填):")), 9, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的图标(选填):"), 10, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的图标(选填):")), 10, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("选择打包的 wine 版本(※必选):"), 12, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "选择打包的 wine 版本(※必选):")), 12, 0, 1, 1)
widgetLayout.addWidget(QtWidgets.QLabel("打包 deb 的保存路径(※必填):"), 13, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "打包 deb 的保存路径(※必填):")), 13, 0, 1, 1)
widgetLayout.addWidget(e1_text, 0, 1, 1, 1) widgetLayout.addWidget(e1_text, 0, 1, 1, 1)
widgetLayout.addWidget(e2_text, 1, 1, 1, 1) widgetLayout.addWidget(e2_text, 1, 1, 1, 1)
widgetLayout.addWidget(e3_text, 2, 1, 1, 1) widgetLayout.addWidget(e3_text, 2, 1, 1, 1)
@ -1141,30 +1142,30 @@ widgetLayout.addLayout(debControlFrame, 16, 1, 1, 1)
widgetLayout.addWidget(label13_text, 17, 0, 1, 3) widgetLayout.addWidget(label13_text, 17, 0, 1, 3)
widgetLayout.addWidget(textbox1, 18, 0, 1, 3) widgetLayout.addWidget(textbox1, 18, 0, 1, 3)
# 高级功能 # 高级功能
moreSetting = QtWidgets.QGroupBox("高级设置") moreSetting = QtWidgets.QGroupBox(QtCore.QCoreApplication.translate("U", "高级设置"))
debDepends = QtWidgets.QLineEdit() debDepends = QtWidgets.QLineEdit()
debRecommend = QtWidgets.QLineEdit() debRecommend = QtWidgets.QLineEdit()
debDepends.setPlaceholderText("deb 包的依赖(如无特殊需求默认即可)") debDepends.setPlaceholderText(QtCore.QCoreApplication.translate("U", "deb 包的依赖(如无特殊需求默认即可)"))
debDepends.setText("deepin-wine6-stable, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei") debDepends.setText("deepin-wine6-stable, deepin-wine-helper (>= 5.1.30-1), fonts-wqy-microhei, fonts-wqy-zenhei")
debRecommend.setPlaceholderText("deb 包的推荐依赖(非强制,一般默认即可)") debRecommend.setPlaceholderText(QtCore.QCoreApplication.translate("U", "deb 包的推荐依赖(非强制,一般默认即可)"))
moreSettingLayout = QtWidgets.QVBoxLayout() moreSettingLayout = QtWidgets.QVBoxLayout()
localWineVersion = QtWidgets.QComboBox() localWineVersion = QtWidgets.QComboBox()
useInstallWineArch = QtWidgets.QComboBox() useInstallWineArch = QtWidgets.QComboBox()
useInstallWineArch.addItems(["wine", "wine64"]) useInstallWineArch.addItems(["wine", "wine64"])
moreSettingLayout.addWidget(QtWidgets.QLabel("Wine 位数(只限本地需要打包集成的Wine)\n提示32位的Wine不能使用64位容器")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "Wine 位数(只限本地需要打包集成的Wine)\n提示32位的Wine不能使用64位容器")))
#moreSettingLayout.addWidget(localWineVersion) #moreSettingLayout.addWidget(localWineVersion)
moreSettingLayout.addWidget(useInstallWineArch) moreSettingLayout.addWidget(useInstallWineArch)
moreSettingLayout.addWidget(QtWidgets.QLabel("deb 包选项:")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 包选项:")))
moreSettingLayout.addWidget(rmBash) moreSettingLayout.addWidget(rmBash)
moreSettingLayout.addWidget(cleanBottonByUOS) moreSettingLayout.addWidget(cleanBottonByUOS)
moreSettingLayout.addWidget(chooseWineHelperValue) moreSettingLayout.addWidget(chooseWineHelperValue)
moreSettingLayout.addWidget(QtWidgets.QLabel("deb 的依赖(强制,如无特殊需求默认即可)")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 的依赖(强制,如无特殊需求默认即可)")))
moreSettingLayout.addWidget(debDepends) moreSettingLayout.addWidget(debDepends)
moreSettingLayout.addWidget(QtWidgets.QLabel("deb 的推荐依赖(非强制,一般默认即可)")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "deb 的推荐依赖(非强制,一般默认即可)")))
moreSettingLayout.addWidget(debRecommend) moreSettingLayout.addWidget(debRecommend)
moreSettingLayout.addWidget(QtWidgets.QLabel("要显示的 .desktop 文件的 MimeType")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "要显示的 .desktop 文件的 MimeType")))
moreSettingLayout.addWidget(e10_text) moreSettingLayout.addWidget(e10_text)
moreSettingLayout.addWidget(QtWidgets.QLabel("打包 deb 架构:")) moreSettingLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "打包 deb 架构:")))
moreSettingLayout.addWidget(debArch) moreSettingLayout.addWidget(debArch)
moreSetting.setLayout(moreSettingLayout) moreSetting.setLayout(moreSettingLayout)
widgetLayout.addWidget(moreSetting, 0, 3, 16, 1) widgetLayout.addWidget(moreSetting, 0, 3, 16, 1)
@ -1174,10 +1175,10 @@ wineVersion.currentTextChanged.connect(ChangeWine)
chooseWineHelperValue.stateChanged.connect(ChangeWine) chooseWineHelperValue.stateChanged.connect(ChangeWine)
# 菜单栏 # 菜单栏
menu = window.menuBar() menu = window.menuBar()
programmenu = menu.addMenu("程序") programmenu = menu.addMenu(QtCore.QCoreApplication.translate("U", "程序"))
help = menu.addMenu("帮助") help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助"))
exit = QtWidgets.QAction("退出程序") exit = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "退出程序"))
tip = QtWidgets.QAction("小提示") tip = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示"))
exit.triggered.connect(window.close) exit.triggered.connect(window.close)
tip.triggered.connect(helps) tip.triggered.connect(helps)
programmenu.addAction(exit) programmenu.addAction(exit)

@ -1,5 +1,5 @@
{ {
"Version": "2.0.1", "Version": "2.1.0",
"Thank": [ "Thank": [
"感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301", "感谢 @a2035274 @虚幻的早晨 https://bbs.deepin.org/post/238301",
"感谢 @zhangs https://bbs.deepin.org/post/227948", "感谢 @zhangs https://bbs.deepin.org/post/227948",
@ -18,10 +18,13 @@
"感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包", "感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包",
"感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题", "感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题",
"感谢 @ZYH 提供的敏感词列表", "感谢 @ZYH 提供的敏感词列表",
"感谢 @五行缺钱 反馈的 2.0.0 在 Deepin 23 缺失依赖 toilet 的问题",
"感谢 @云的眼泪 @zhengjl 反馈的 2.0.0 发布忘记把安装包传蓝奏云的问题",
"感谢 @虚幻的早晨 提出的添加 DXVK、VKD3D 的功能VKD3D 暂未实现)", "感谢 @虚幻的早晨 提出的添加 DXVK、VKD3D 的功能VKD3D 暂未实现)",
"感谢统信在 Wine 生态适配活动中提供的打包脚本", "感谢统信在 Wine 生态适配活动中提供的打包脚本",
"也感谢 DXVK 的开发者开发了 DXVK 这个程序项目链接https://github.com/doitsujin/dxvk", "也感谢 DXVK 的开发者开发了 DXVK 这个程序项目链接https://github.com/doitsujin/dxvk",
"也感谢 WineHQ 开发团队开发的 WineHQ项目网址https://dl.winehq.org/", "也感谢 WineHQ 开发团队开发的 WineHQ项目网址https://dl.winehq.org/",
"最后也感谢支持本程序的用户和上传相关软件运行情况数据的用户,有你们的支持和使用,使这个程序变得更好",
"", "",
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!", "可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
"如果上面有遗漏,请向我反馈补充" "如果上面有遗漏,请向我反馈补充"

@ -26,8 +26,6 @@ import urllib.parse as parse
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
# 方便一些,单独把 tr 抽出来
from PyQt5.QtCore import QObject
################### ###################
# 程序所需事件 # 程序所需事件
################### ###################
@ -122,6 +120,7 @@ def DisableButton(things):
e1.setDisabled(things) e1.setDisabled(things)
e2.setDisabled(things) e2.setDisabled(things)
o1.setDisabled(things) o1.setDisabled(things)
miniAppStore.setDisabled(things)
#winetricksOpen.configure(state=a[things]) #winetricksOpen.configure(state=a[things])
getProgramIcon.setDisabled(things) getProgramIcon.setDisabled(things)
uninstallProgram.setDisabled(things) uninstallProgram.setDisabled(things)
@ -516,6 +515,13 @@ def FontAppStore():
wineBottonPath = e1.currentText() wineBottonPath = e1.currentText()
os.system(f"WINE='{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}") os.system(f"WINE='{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallFont.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
def GetDllFromInternet():
if e1.currentText() == "":
wineBottonPath = setting["DefultBotton"]
else:
wineBottonPath = e1.currentText()
os.system(f"WINE='{programPath}/launch.sh' deepin-terminal -e '{programPath}/InstallDll.py' '{wineBottonPath}' {int(setting['RuntimeCache'])}")
def InstallMonoGecko(program): def InstallMonoGecko(program):
if e1.currentText() == "": if e1.currentText() == "":
wineBottonPath = setting["DefultBotton"] wineBottonPath = setting["DefultBotton"]
@ -1042,7 +1048,7 @@ class ProgramRunStatusUpload():
ProgramRunStatusUpload.fen.setCurrentIndex(4) ProgramRunStatusUpload.fen.setCurrentIndex(4)
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar) ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
msgWidgetLayout.addWidget(QtCore.QCoreApplication.translate("U", QtWidgets.QLabel("评分:")), 1, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1) msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1) msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1) msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
@ -1307,6 +1313,10 @@ except:
QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}") QtWidgets.QMessageBox.critical(None, "错误", f"无法读取配置,无法继续\n{traceback.format_exc()}")
sys.exit(1) sys.exit(1)
# 获取当前语言
def get_now_lang()->"获取当前语言":
return os.getenv('LANG')
########################### ###########################
# 程序信息 # 程序信息
########################### ###########################
@ -1335,15 +1345,16 @@ exe路径\' 参数 \'
以及此脚本安装的 Wine 无法保证 100% 能使用以及副作用是会提示 以及此脚本安装的 Wine 无法保证 100% 能使用以及副作用是会提示
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构跳过配置文件 'main/binary-i386/Packages' 的获取</code>''' <code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构跳过配置文件 'main/binary-i386/Packages' 的获取</code>'''
updateThingsString = '''<b>※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中 updateThingsString = '''<b>※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中
2Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 可以不依赖 Wine一般不推荐把 Wine 打包入内推荐用依赖的形式并支持设置自定义依赖和生成模板</b> 2Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 可以不依赖 Wine一般不推荐把 Wine 打包入内推荐用依赖的形式并支持设置自定义依赖和生成模板
3修改错别字图形话=>图形化 3开始初步多语言支持</b>
3修复评分功能名称为空也可以上传评分的问题 4修改错别字图形话=>图形化
4去除 toilet 依赖使在 Deepin 23 Preview 上运行更佳 5修复评分功能名称为空也可以上传评分的问题
5支持删除所有由 Wine 创建的启动器快捷方式 6去除 toilet 依赖使在 Deepin 23 Preview 上运行更佳
7支持删除所有由 Wine 创建的启动器快捷方式
''' '''
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年08月22" updateTime = "2022年08月24"
about = f'''<h1>关于</h1> about = f'''<h1>关于</h1>
<p>一个能让Linux用户更加方便运行Windows应用的程序内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器运行库安装工具等等</p> <p>一个能让Linux用户更加方便运行Windows应用的程序内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器运行库安装工具等等</p>
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具可以做到只需要用户下载系统镜像并点击安装即可无需顾及虚拟机安装创建虚拟机的分区等等</p> <p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具可以做到只需要用户下载系统镜像并点击安装即可无需顾及虚拟机安装创建虚拟机的分区等等</p>
@ -1386,9 +1397,10 @@ except:
# Qt 窗口 # Qt 窗口
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
# 语言载入 # 语言载入
trans = QtCore.QTranslator() if not get_now_lang() == "zh_CN.UTF-8":
trans.load(f"{programPath}/LANG/deepin-wine-runner-en_US.qm") trans = QtCore.QTranslator()
app.installTranslator(trans) trans.load(f"{programPath}/LANG/deepin-wine-runner-en_US.qm")
app.installTranslator(trans)
window = QtWidgets.QMainWindow() window = QtWidgets.QMainWindow()
widget = QtWidgets.QWidget() widget = QtWidgets.QWidget()
window.setCentralWidget(widget) window.setCentralWidget(widget)
@ -1569,6 +1581,7 @@ w4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除选择的 W
cleanBottonUOS = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清理 Wine 容器(基于 Wine 适配活动脚本)")) cleanBottonUOS = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
w5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打包 wine 应用")) w5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "打包 wine 应用"))
w6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "使用官方 Wine 适配活动的脚本进行打包")) w6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "使用官方 Wine 适配活动的脚本进行打包"))
getDllOnInternet = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从互联网获取DLL"))
w7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像")) w7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从镜像获取DLL只支持Windows XP、Windows Server 2003官方安装镜像"))
updateGeek = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从 Geek Uninstaller 官网升级程序")) updateGeek = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从 Geek Uninstaller 官网升级程序"))
deleteDesktopIcon = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除所有 Wine 程序在启动器的快捷方式")) deleteDesktopIcon = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除所有 Wine 程序在启动器的快捷方式"))
@ -1581,6 +1594,7 @@ wineOption.addSeparator()
wineOption.addAction(w5) wineOption.addAction(w5)
wineOption.addAction(w6) wineOption.addAction(w6)
wineOption.addSeparator() wineOption.addSeparator()
wineOption.addAction(getDllOnInternet)
wineOption.addAction(w7) wineOption.addAction(w7)
wineOption.addSeparator() wineOption.addSeparator()
wineOption.addAction(updateGeek) wineOption.addAction(updateGeek)
@ -1646,6 +1660,7 @@ w4.triggered.connect(DeleteWineBotton)
cleanBottonUOS.triggered.connect(CleanWineBottonByUOS) cleanBottonUOS.triggered.connect(CleanWineBottonByUOS)
w5.triggered.connect(BuildExeDeb) w5.triggered.connect(BuildExeDeb)
w6.triggered.connect(UOSPackageScript) w6.triggered.connect(UOSPackageScript)
getDllOnInternet.triggered.connect(GetDllFromInternet)
w7.triggered.connect(GetDllFromWindowsISO.ShowWindow) w7.triggered.connect(GetDllFromWindowsISO.ShowWindow)
updateGeek.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-terminal -C '\"{programPath}/UpdateGeek.sh\"' --keep-open")) updateGeek.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-terminal -C '\"{programPath}/UpdateGeek.sh\"' --keep-open"))
w8.triggered.connect(SetDeepinFileDialogDeepin) w8.triggered.connect(SetDeepinFileDialogDeepin)
@ -1689,7 +1704,7 @@ 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/"))
help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助(&H)")) help = menu.addMenu(QtCore.QCoreApplication.translate("U", "帮助(&H)"))
h1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "程序官网")) h1 = help.addMenu(QtCore.QCoreApplication.translate("U", "程序官网"))
h2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示")) h2 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "小提示"))
h3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新内容")) h3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新内容"))
h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "谢明名单")) h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "谢明名单"))
@ -1697,12 +1712,29 @@ h5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新这个程
h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题")) h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题"))
h7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于这个程序")) h7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于这个程序"))
h8 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于 Qt")) h8 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于 Qt"))
help.addAction(h1) gfdgdxiio = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "作者个人站"))
gitee = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "Gitee"))
github = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "Github"))
gitlink = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "Gitlink"))
gitlab = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "Gitlab"))
jihu = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "极狐"))
h1.addAction(gfdgdxiio)
h1.addAction(gitee)
h1.addAction(github)
h1.addAction(gitlink)
h1.addAction(gitlab)
h1.addAction(jihu)
help.addSeparator() help.addSeparator()
help.addAction(h2) help.addAction(h2)
help.addAction(h3) help.addAction(h3)
help.addAction(h4) help.addAction(h4)
help.addSeparator() help.addSeparator()
videoHelp = help.addMenu(QtCore.QCoreApplication.translate("U", "视频教程"))
easyHelp = QtWidgets.QAction("简易使用教程")
buildHelp = QtWidgets.QAction("打包教程")
videoHelp.addAction(easyHelp)
videoHelp.addAction(buildHelp)
help.addSeparator()
help.addAction(h5) help.addAction(h5)
help.addAction(h6) help.addAction(h6)
help.addAction(h7) help.addAction(h7)
@ -1711,10 +1743,17 @@ help.addSeparator()
hm1 = help.addMenu(QtCore.QCoreApplication.translate("U", "更多生态适配应用")) hm1 = help.addMenu(QtCore.QCoreApplication.translate("U", "更多生态适配应用"))
hm1_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "运行 Android 应用UEngine 运行器")) hm1_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "运行 Android 应用UEngine 运行器"))
hm1.addAction(hm1_1) hm1.addAction(hm1_1)
h1.triggered.connect(OpenProgramURL) gfdgdxiio.triggered.connect(lambda: webbrowser.open_new_tab("https://gfdgd-xi.github.io"))
gitee.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd-xi/deep-wine-runner"))
github.triggered.connect(lambda: webbrowser.open_new_tab("https://github.com/gfdgd-xi/deep-wine-runner"))
gitlink.triggered.connect(lambda: webbrowser.open_new_tab("https://gitlink.org.cn/gfdgd_xi/deep-wine-runner"))
gitlab.triggered.connect(lambda: webbrowser.open_new_tab("https://gitlab.com/gfdgd-xi/deep-wine-runner"))
jihu.triggered.connect(lambda: webbrowser.open_new_tab("https://jihulab.com//gfdgd-xi/deep-wine-runner"))
h2.triggered.connect(helps) h2.triggered.connect(helps)
h3.triggered.connect(UpdateThings) h3.triggered.connect(UpdateThings)
h4.triggered.connect(ThankWindow) h4.triggered.connect(ThankWindow)
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)
h7.triggered.connect(about_this_program) h7.triggered.connect(about_this_program)

Binary file not shown.

@ -1,3 +1,3 @@
{ {
"Version": "2.0.1" "Version": "2.1.0"
} }

Binary file not shown.

@ -262,6 +262,10 @@ def on_delButton_clicked():
traceback.print_exc() traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc()) QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
# 获取当前语言
def get_now_lang()->"获取当前语言":
return os.getenv('LANG')
if __name__ == "__main__": if __name__ == "__main__":
localJsonList = [] localJsonList = []
internetJsonList = [] internetJsonList = []
@ -269,9 +273,10 @@ if __name__ == "__main__":
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
# 读取翻译 # 读取翻译
trans = QtCore.QTranslator() if not get_now_lang() == "zh_CN.UTF-8":
trans.load(f"{programPath}/../LANG/installwine-en_US.qm") trans = QtCore.QTranslator()
app.installTranslator(trans) trans.load(f"{programPath}/../LANG/installwine-en_US.qm")
app.installTranslator(trans)
# 窗口构建 # 窗口构建
window = QtWidgets.QMainWindow() window = QtWidgets.QMainWindow()
ui = Ui_MainWindow() ui = Ui_MainWindow()

Binary file not shown.

Binary file not shown.

@ -1,207 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'downloadthread.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.3)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../wine-source/downloadthread.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'downloadthread.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.3. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_DownloadThread_t {
QByteArrayData data[12];
char stringdata0[127];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_DownloadThread_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_DownloadThread_t qt_meta_stringdata_DownloadThread = {
{
QT_MOC_LITERAL(0, 0, 14), // "DownloadThread"
QT_MOC_LITERAL(1, 15, 14), // "MessageBoxInfo"
QT_MOC_LITERAL(2, 30, 0), // ""
QT_MOC_LITERAL(3, 31, 4), // "info"
QT_MOC_LITERAL(4, 36, 15), // "MessageBoxError"
QT_MOC_LITERAL(5, 52, 12), // "ChangeDialog"
QT_MOC_LITERAL(6, 65, 16), // "QProgressDialog*"
QT_MOC_LITERAL(7, 82, 6), // "dialog"
QT_MOC_LITERAL(8, 89, 5), // "value"
QT_MOC_LITERAL(9, 95, 13), // "downloadBytes"
QT_MOC_LITERAL(10, 109, 10), // "totalBytes"
QT_MOC_LITERAL(11, 120, 6) // "Finish"
},
"DownloadThread\0MessageBoxInfo\0\0info\0"
"MessageBoxError\0ChangeDialog\0"
"QProgressDialog*\0dialog\0value\0"
"downloadBytes\0totalBytes\0Finish"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_DownloadThread[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
4, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
4, // signalCount
// signals: name, argc, parameters, tag, flags
1, 1, 34, 2, 0x06 /* Public */,
4, 1, 37, 2, 0x06 /* Public */,
5, 4, 40, 2, 0x06 /* Public */,
11, 0, 49, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void, QMetaType::QString, 3,
QMetaType::Void, QMetaType::QString, 3,
QMetaType::Void, 0x80000000 | 6, QMetaType::Int, QMetaType::Int, QMetaType::Int, 7, 8, 9, 10,
QMetaType::Void,
0 // eod
};
void DownloadThread::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<DownloadThread *>(_o);
(void)_t;
switch (_id) {
case 0: _t->MessageBoxInfo((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 1: _t->MessageBoxError((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 2: _t->ChangeDialog((*reinterpret_cast< QProgressDialog*(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< int(*)>(_a[4]))); break;
case 3: _t->Finish(); break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
switch (_id) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 2:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QProgressDialog* >(); break;
}
break;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (DownloadThread::*)(QString );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DownloadThread::MessageBoxInfo)) {
*result = 0;
return;
}
}
{
using _t = void (DownloadThread::*)(QString );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DownloadThread::MessageBoxError)) {
*result = 1;
return;
}
}
{
using _t = void (DownloadThread::*)(QProgressDialog * , int , int , int );
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DownloadThread::ChangeDialog)) {
*result = 2;
return;
}
}
{
using _t = void (DownloadThread::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&DownloadThread::Finish)) {
*result = 3;
return;
}
}
}
}
QT_INIT_METAOBJECT const QMetaObject DownloadThread::staticMetaObject = { {
QMetaObject::SuperData::link<QThread::staticMetaObject>(),
qt_meta_stringdata_DownloadThread.data,
qt_meta_data_DownloadThread,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *DownloadThread::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *DownloadThread::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_DownloadThread.stringdata0))
return static_cast<void*>(this);
return QThread::qt_metacast(_clname);
}
int DownloadThread::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QThread::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 4)
qt_static_metacall(this, _c, _id, _a);
_id -= 4;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 4)
qt_static_metacall(this, _c, _id, _a);
_id -= 4;
}
return _id;
}
// SIGNAL 0
void DownloadThread::MessageBoxInfo(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
// SIGNAL 1
void DownloadThread::MessageBoxError(QString _t1)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))) };
QMetaObject::activate(this, &staticMetaObject, 1, _a);
}
// SIGNAL 2
void DownloadThread::ChangeDialog(QProgressDialog * _t1, int _t2, int _t3, int _t4)
{
void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t2))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t3))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(_t4))) };
QMetaObject::activate(this, &staticMetaObject, 2, _a);
}
// SIGNAL 3
void DownloadThread::Finish()
{
QMetaObject::activate(this, &staticMetaObject, 3, nullptr);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

@ -1,168 +0,0 @@
/****************************************************************************
** Meta object code from reading C++ file 'mainwindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.3)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../wine-source/mainwindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mainwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.3. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
QByteArrayData data[16];
char stringdata0[218];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
{
QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
QT_MOC_LITERAL(1, 11, 20), // "on_addButton_clicked"
QT_MOC_LITERAL(2, 32, 0), // ""
QT_MOC_LITERAL(3, 33, 20), // "ReadLocalInformation"
QT_MOC_LITERAL(4, 54, 23), // "ReadInternetInformation"
QT_MOC_LITERAL(5, 78, 20), // "on_delButton_clicked"
QT_MOC_LITERAL(6, 99, 14), // "MessageBoxInfo"
QT_MOC_LITERAL(7, 114, 4), // "info"
QT_MOC_LITERAL(8, 119, 15), // "MessageBoxError"
QT_MOC_LITERAL(9, 135, 12), // "ChangeDialog"
QT_MOC_LITERAL(10, 148, 16), // "QProgressDialog*"
QT_MOC_LITERAL(11, 165, 6), // "dialog"
QT_MOC_LITERAL(12, 172, 5), // "value"
QT_MOC_LITERAL(13, 178, 13), // "downloadBytes"
QT_MOC_LITERAL(14, 192, 10), // "totalBytes"
QT_MOC_LITERAL(15, 203, 14) // "DownloadFinish"
},
"MainWindow\0on_addButton_clicked\0\0"
"ReadLocalInformation\0ReadInternetInformation\0"
"on_delButton_clicked\0MessageBoxInfo\0"
"info\0MessageBoxError\0ChangeDialog\0"
"QProgressDialog*\0dialog\0value\0"
"downloadBytes\0totalBytes\0DownloadFinish"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_MainWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
8, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 54, 2, 0x08 /* Private */,
3, 0, 55, 2, 0x08 /* Private */,
4, 0, 56, 2, 0x08 /* Private */,
5, 0, 57, 2, 0x08 /* Private */,
6, 1, 58, 2, 0x0a /* Public */,
8, 1, 61, 2, 0x0a /* Public */,
9, 4, 64, 2, 0x0a /* Public */,
15, 0, 73, 2, 0x0a /* Public */,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void, QMetaType::QString, 7,
QMetaType::Void, QMetaType::QString, 7,
QMetaType::Void, 0x80000000 | 10, QMetaType::Int, QMetaType::Int, QMetaType::Int, 11, 12, 13, 14,
QMetaType::Void,
0 // eod
};
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<MainWindow *>(_o);
(void)_t;
switch (_id) {
case 0: _t->on_addButton_clicked(); break;
case 1: _t->ReadLocalInformation(); break;
case 2: _t->ReadInternetInformation(); break;
case 3: _t->on_delButton_clicked(); break;
case 4: _t->MessageBoxInfo((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 5: _t->MessageBoxError((*reinterpret_cast< QString(*)>(_a[1]))); break;
case 6: _t->ChangeDialog((*reinterpret_cast< QProgressDialog*(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< int(*)>(_a[4]))); break;
case 7: _t->DownloadFinish(); break;
default: ;
}
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
switch (_id) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 6:
switch (*reinterpret_cast<int*>(_a[1])) {
default: *reinterpret_cast<int*>(_a[0]) = -1; break;
case 0:
*reinterpret_cast<int*>(_a[0]) = qRegisterMetaType< QProgressDialog* >(); break;
}
break;
}
}
}
QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { {
QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),
qt_meta_stringdata_MainWindow.data,
qt_meta_data_MainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *MainWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *MainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 8)
qt_static_metacall(this, _c, _id, _a);
_id -= 8;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 8)
qt_static_metacall(this, _c, _id, _a);
_id -= 8;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

@ -1,375 +0,0 @@
#define __DBL_MIN_EXP__ (-1021)
#define __FLT32X_MAX_EXP__ 1024
#define __cpp_attributes 200809
#define __UINT_LEAST16_MAX__ 0xffff
#define __ATOMIC_ACQUIRE 2
#define __FLT128_MAX_10_EXP__ 4932
#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
#define __GCC_IEC_559_COMPLEX 2
#define __UINT_LEAST8_TYPE__ unsigned char
#define __SIZEOF_FLOAT80__ 16
#define __INTMAX_C(c) c ## L
#define __CHAR_BIT__ 8
#define __UINT8_MAX__ 0xff
#define __WINT_MAX__ 0xffffffffU
#define __FLT32_MIN_EXP__ (-125)
#define __cpp_static_assert 200410
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __SIZE_MAX__ 0xffffffffffffffffUL
#define __WCHAR_MAX__ 0x7fffffff
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __DBL_DENORM_MIN__ double(4.94065645841246544176568792868221372e-324L)
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_IEC_559 2
#define __FLT32X_DECIMAL_DIG__ 17
#define __FLT_EVAL_METHOD__ 0
#define __unix__ 1
#define __cpp_binary_literals 201304
#define __FLT64_DECIMAL_DIG__ 17
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __x86_64 1
#define __cpp_variadic_templates 200704
#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
#define __SIG_ATOMIC_TYPE__ int
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 0
#define __FLT32_HAS_DENORM__ 1
#define __UINT_FAST8_MAX__ 0xff
#define __has_include(STR) __has_include__(STR)
#define __DEC64_MAX_EXP__ 385
#define __INT8_C(c) c
#define __INT_LEAST8_WIDTH__ 8
#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
#define __SHRT_MAX__ 0x7fff
#define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L
#define __FLT64X_MAX_10_EXP__ 4932
#define __UINT_LEAST8_MAX__ 0xff
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __DEC32_EPSILON__ 1E-6DF
#define __FLT_EVAL_METHOD_TS_18661_3__ 0
#define __OPTIMIZE__ 1
#define __unix 1
#define __UINT32_MAX__ 0xffffffffU
#define __GXX_EXPERIMENTAL_CXX0X__ 1
#define __LDBL_MAX_EXP__ 16384
#define __FLT128_MIN_EXP__ (-16381)
#define __WINT_MIN__ 0U
#define __linux__ 1
#define __FLT128_MIN_10_EXP__ (-4931)
#define __INT_LEAST16_WIDTH__ 16
#define __SCHAR_MAX__ 0x7f
#define __FLT128_MANT_DIG__ 113
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __INT64_C(c) c ## L
#define __DBL_DIG__ 15
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
#define __FLT64X_MANT_DIG__ 64
#define __SIZEOF_INT__ 4
#define __SIZEOF_POINTER__ 8
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __USER_LABEL_PREFIX__
#define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x
#define __STDC_HOSTED__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __FLT32_DIG__ 6
#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
#define __GXX_WEAK__ 1
#define __SHRT_WIDTH__ 16
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
#define __DEC32_MAX__ 9.999999E96DF
#define __cpp_threadsafe_static_init 200806
#define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x
#define __FLT32X_HAS_INFINITY__ 1
#define __INT32_MAX__ 0x7fffffff
#define __INT_WIDTH__ 32
#define __SIZEOF_LONG__ 8
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201706L
#define __UINT16_C(c) c
#define __PTRDIFF_WIDTH__ 64
#define __DECIMAL_DIG__ 21
#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
#define __gnu_linux__ 1
#define __INTMAX_WIDTH__ 64
#define __FLT64_MIN_EXP__ (-1021)
#define __has_include_next(STR) __has_include_next__(STR)
#define __FLT64X_MIN_10_EXP__ (-4931)
#define __LDBL_HAS_QUIET_NAN__ 1
#define __FLT64_MANT_DIG__ 53
#define __GNUC__ 8
#define __GXX_RTTI 1
#define __MMX__ 1
#define __cpp_delegating_constructors 200604
#define __FLT_HAS_DENORM__ 1
#define __SIZEOF_LONG_DOUBLE__ 16
#define __BIGGEST_ALIGNMENT__ 16
#define __STDC_UTF_16__ 1
#define __FLT64_MAX_10_EXP__ 308
#define __FLT32_HAS_INFINITY__ 1
#define __DBL_MAX__ double(1.79769313486231570814527423731704357e+308L)
#define __cpp_raw_strings 200710
#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
#define __DBL_HAS_INFINITY__ 1
#define __DEC32_MIN_EXP__ (-94)
#define __INTPTR_WIDTH__ 64
#define __FLT32X_HAS_DENORM__ 1
#define __INT_FAST16_TYPE__ long int
#define __LDBL_HAS_DENORM__ 1
#define __cplusplus 201103L
#define __cpp_ref_qualifiers 200710
#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
#define __INT_LEAST32_MAX__ 0x7fffffff
#define __DEC32_MIN__ 1E-95DF
#define __DEPRECATED 1
#define __cpp_rvalue_references 200610
#define __DBL_MAX_EXP__ 1024
#define __WCHAR_WIDTH__ 32
#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
#define __DEC128_EPSILON__ 1E-33DL
#define __SSE2_MATH__ 1
#define __ATOMIC_HLE_RELEASE 131072
#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
#define __amd64 1
#define __ATOMIC_HLE_ACQUIRE 65536
#define __FLT32_HAS_QUIET_NAN__ 1
#define __GNUG__ 8
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
#define __SIZEOF_SIZE_T__ 8
#define __cpp_rvalue_reference 200610
#define __cpp_nsdmi 200809
#define __FLT64X_MIN_EXP__ (-16381)
#define __SIZEOF_WINT_T__ 4
#define __LONG_LONG_WIDTH__ 64
#define __cpp_initializer_lists 200806
#define __FLT32_MAX_EXP__ 128
#define __cpp_hex_float 201603
#define __GCC_HAVE_DWARF2_CFI_ASM 1
#define __GXX_ABI_VERSION 1013
#define __FLT128_HAS_INFINITY__ 1
#define __FLT_MIN_EXP__ (-125)
#define __cpp_lambdas 200907
#define __FLT64X_HAS_QUIET_NAN__ 1
#define __INT_FAST64_TYPE__ long int
#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
#define __DBL_MIN__ double(2.22507385850720138309023271733240406e-308L)
#define __LP64__ 1
#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
#define __DECIMAL_BID_FORMAT__ 1
#define __FLT64_MIN_10_EXP__ (-307)
#define __FLT64X_DECIMAL_DIG__ 21
#define __DEC128_MIN__ 1E-6143DL
#define __REGISTER_PREFIX__
#define __UINT16_MAX__ 0xffff
#define __DBL_HAS_DENORM__ 1
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char
#define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21
#define __VERSION__ "8.3.0"
#define __UINT64_C(c) c ## UL
#define __cpp_unicode_characters 200704
#define _STDC_PREDEF_H 1
#define __GCC_ATOMIC_INT_LOCK_FREE 2
#define __FLT128_MAX_EXP__ 16384
#define __FLT32_MANT_DIG__ 24
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __STDC_IEC_559_COMPLEX__ 1
#define __FLT128_HAS_DENORM__ 1
#define __FLT128_DIG__ 33
#define __SCHAR_WIDTH__ 8
#define __INT32_C(c) c
#define __DEC64_EPSILON__ 1E-15DD
#define __ORDER_PDP_ENDIAN__ 3412
#define __DEC128_MIN_EXP__ (-6142)
#define __FLT32_MAX_10_EXP__ 38
#define __INT_FAST32_TYPE__ long int
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __FLT64X_HAS_INFINITY__ 1
#define unix 1
#define __INT16_MAX__ 0x7fff
#define __cpp_rtti 199711
#define __SIZE_TYPE__ long unsigned int
#define __UINT64_MAX__ 0xffffffffffffffffUL
#define __FLT64X_DIG__ 18
#define __INT8_TYPE__ signed char
#define __ELF__ 1
#define __GCC_ASM_FLAG_OUTPUTS__ 1
#define __FLT_RADIX__ 2
#define __INT_LEAST16_TYPE__ short int
#define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L
#define __UINTMAX_C(c) c ## UL
#define __GLIBCXX_BITSIZE_INT_N_0 128
#define __k8 1
#define __SIG_ATOMIC_MAX__ 0x7fffffff
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __SIZEOF_PTRDIFF_T__ 8
#define __FLT32X_MANT_DIG__ 53
#define __x86_64__ 1
#define __FLT32X_MIN_EXP__ (-1021)
#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
#define __FLT64_DIG__ 15
#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
#define __UINT_LEAST64_TYPE__ long unsigned int
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 0x7fffffffffffffffL
#define __FLT64X_HAS_DENORM__ 1
#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
#define __FLT_HAS_INFINITY__ 1
#define __cpp_unicode_literals 200710
#define __UINT_FAST16_TYPE__ long unsigned int
#define __DEC64_MAX__ 9.999999999999999E384DD
#define __INT_FAST32_WIDTH__ 64
#define __CHAR16_TYPE__ short unsigned int
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __SIZE_WIDTH__ 64
#define __SEG_FS 1
#define __INT_LEAST16_MAX__ 0x7fff
#define __DEC64_MANT_DIG__ 16
#define __INT64_MAX__ 0x7fffffffffffffffL
#define __UINT_LEAST32_MAX__ 0xffffffffU
#define __SEG_GS 1
#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
#define __SIG_ATOMIC_WIDTH__ 32
#define __INT_LEAST64_TYPE__ long int
#define __INT16_TYPE__ short int
#define __INT_LEAST8_TYPE__ signed char
#define __DEC32_MAX_EXP__ 97
#define __INT_FAST8_MAX__ 0x7f
#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
#define __INTPTR_MAX__ 0x7fffffffffffffffL
#define linux 1
#define __cpp_range_based_for 200907
#define __FLT64_HAS_QUIET_NAN__ 1
#define __FLT32_MIN_10_EXP__ (-37)
#define __SSE2__ 1
#define __EXCEPTIONS 1
#define __LDBL_MANT_DIG__ 64
#define __DBL_HAS_QUIET_NAN__ 1
#define __FLT64_HAS_INFINITY__ 1
#define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
#define __code_model_small__ 1
#define __k8__ 1
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __WCHAR_TYPE__ int
#define __SIZEOF_FLOAT__ 4
#define __UINTPTR_MAX__ 0xffffffffffffffffUL
#define __INT_FAST64_WIDTH__ 64
#define __DEC64_MIN_EXP__ (-382)
#define __cpp_decltype 200707
#define __FLT32_DECIMAL_DIG__ 9
#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
#define __FLT_DIG__ 6
#define __FLT64X_MAX_EXP__ 16384
#define __UINT_FAST64_TYPE__ long unsigned int
#define __INT_MAX__ 0x7fffffff
#define __amd64__ 1
#define __INT64_TYPE__ long int
#define __FLT_MAX_EXP__ 128
#define __ORDER_BIG_ENDIAN__ 4321
#define __DBL_MANT_DIG__ 53
#define __cpp_inheriting_constructors 201511
#define __SIZEOF_FLOAT128__ 16
#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
#define __DEC64_MIN__ 1E-383DD
#define __WINT_TYPE__ unsigned int
#define __UINT_LEAST32_TYPE__ unsigned int
#define __SIZEOF_SHORT__ 2
#define __SSE__ 1
#define __LDBL_MIN_EXP__ (-16381)
#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
#define __WINT_WIDTH__ 32
#define __INT_LEAST8_MAX__ 0x7f
#define __FLT32X_MAX_10_EXP__ 308
#define __SIZEOF_INT128__ 16
#define __LDBL_MAX_10_EXP__ 4932
#define __ATOMIC_RELAXED 0
#define __DBL_EPSILON__ double(2.22044604925031308084726333618164062e-16L)
#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
#define _LP64 1
#define __UINT8_C(c) c
#define __FLT64_MAX_EXP__ 1024
#define __INT_LEAST32_TYPE__ int
#define __SIZEOF_WCHAR_T__ 4
#define __FLT128_HAS_QUIET_NAN__ 1
#define __INT_FAST8_TYPE__ signed char
#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
#define __GNUC_STDC_INLINE__ 1
#define __FLT64_HAS_DENORM__ 1
#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
#define __DBL_DECIMAL_DIG__ 17
#define __STDC_UTF_32__ 1
#define __INT_FAST8_WIDTH__ 8
#define __FXSR__ 1
#define __DEC_EVAL_METHOD__ 2
#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
#define __cpp_runtime_arrays 198712
#define __UINT64_TYPE__ long unsigned int
#define __UINT32_C(c) c ## U
#define __INTMAX_MAX__ 0x7fffffffffffffffL
#define __cpp_alias_templates 200704
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
#define __INT8_MAX__ 0x7f
#define __LONG_WIDTH__ 64
#define __UINT_FAST32_TYPE__ long unsigned int
#define __CHAR32_TYPE__ unsigned int
#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
#define __cpp_constexpr 200704
#define __INT32_TYPE__ int
#define __SIZEOF_DOUBLE__ 8
#define __cpp_exceptions 199711
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
#define __INT_LEAST32_WIDTH__ 32
#define __INTMAX_TYPE__ long int
#define __DEC128_MAX_EXP__ 6145
#define __FLT32X_HAS_QUIET_NAN__ 1
#define __ATOMIC_CONSUME 1
#define __GNUC_MINOR__ 3
#define __GLIBCXX_TYPE_INT_N_0 __int128
#define __INT_FAST16_WIDTH__ 64
#define __UINTMAX_MAX__ 0xffffffffffffffffUL
#define __DEC32_MANT_DIG__ 7
#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L
#define __INT16_C(c) c
#define __STDC__ 1
#define __FLT32X_DIG__ 15
#define __PTRDIFF_TYPE__ long int
#define __ATOMIC_SEQ_CST 5
#define __UINT32_TYPE__ unsigned int
#define __FLT32X_MIN_10_EXP__ (-307)
#define __UINTPTR_TYPE__ long unsigned int
#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
#define __DEC128_MANT_DIG__ 34
#define __LDBL_MIN_10_EXP__ (-4931)
#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
#define __SSE_MATH__ 1
#define __SIZEOF_LONG_LONG__ 8
#define __cpp_user_defined_literals 200809
#define __FLT128_DECIMAL_DIG__ 36
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
#define __LDBL_DIG__ 18
#define __FLT_DECIMAL_DIG__ 9
#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __INT_LEAST64_WIDTH__ 64
#define __UINT_FAST8_TYPE__ unsigned char
#define _GNU_SOURCE 1
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_RELEASE 3

@ -1,140 +0,0 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.15.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QListView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralWidget;
QVBoxLayout *verticalLayout_2;
QHBoxLayout *horizontalLayout_2;
QListView *localWineList;
QVBoxLayout *verticalLayout;
QSpacerItem *verticalSpacer;
QPushButton *addButton;
QPushButton *delButton;
QSpacerItem *verticalSpacer_2;
QListView *internetWineList;
QHBoxLayout *horizontalLayout;
QCheckBox *unzip;
QCheckBox *deleteZip;
QSpacerItem *horizontalSpacer;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(693, 404);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
verticalLayout_2 = new QVBoxLayout(centralWidget);
verticalLayout_2->setSpacing(6);
verticalLayout_2->setContentsMargins(11, 11, 11, 11);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(6);
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
localWineList = new QListView(centralWidget);
localWineList->setObjectName(QString::fromUtf8("localWineList"));
horizontalLayout_2->addWidget(localWineList);
verticalLayout = new QVBoxLayout();
verticalLayout->setSpacing(6);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer);
addButton = new QPushButton(centralWidget);
addButton->setObjectName(QString::fromUtf8("addButton"));
verticalLayout->addWidget(addButton);
delButton = new QPushButton(centralWidget);
delButton->setObjectName(QString::fromUtf8("delButton"));
verticalLayout->addWidget(delButton);
verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer_2);
horizontalLayout_2->addLayout(verticalLayout);
internetWineList = new QListView(centralWidget);
internetWineList->setObjectName(QString::fromUtf8("internetWineList"));
horizontalLayout_2->addWidget(internetWineList);
verticalLayout_2->addLayout(horizontalLayout_2);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setSpacing(6);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
unzip = new QCheckBox(centralWidget);
unzip->setObjectName(QString::fromUtf8("unzip"));
horizontalLayout->addWidget(unzip);
deleteZip = new QCheckBox(centralWidget);
deleteZip->setObjectName(QString::fromUtf8("deleteZip"));
deleteZip->setChecked(true);
deleteZip->setTristate(false);
horizontalLayout->addWidget(deleteZip);
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout->addItem(horizontalSpacer);
verticalLayout_2->addLayout(horizontalLayout);
MainWindow->setCentralWidget(centralWidget);
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "\344\270\213\350\275\275 Wine", nullptr));
addButton->setText(QCoreApplication::translate("MainWindow", "<<", nullptr));
delButton->setText(QCoreApplication::translate("MainWindow", ">>", nullptr));
unzip->setText(QCoreApplication::translate("MainWindow", "\344\270\215\350\247\243\345\216\213Wine\350\265\204\346\272\220\346\226\207\344\273\266", nullptr));
deleteZip->setText(QCoreApplication::translate("MainWindow", "\345\210\240\351\231\244\344\270\213\350\275\275\347\232\204\350\265\204\346\272\220\345\214\205\357\274\214\345\217\252\350\247\243\345\216\213\344\277\235\347\225\231\357\274\210\344\270\244\344\270\252\351\200\211\351\241\271\351\203\275\351\200\211\347\233\270\344\272\222\346\212\265\346\266\210\357\274\211", nullptr));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H

BIN
封面图(小白版).jpg Normal file

Binary file not shown.

After

(image error) Size: 160 KiB

BIN
封面图(小白版).psd Normal file

Binary file not shown.

BIN
封面图(非小白版).jpg Normal file

Binary file not shown.

After

(image error) Size: 169 KiB

BIN
封面图(非小白版).psd Executable file

Binary file not shown.