mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-01-13 01:58:27 +08:00
1.9.0初步
This commit is contained in:
parent
f832e032de
commit
19cd835b00
@ -297,4 +297,8 @@ Gitlink:https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
|
|||||||
+ https://github.com/gfdgd-xi/deep-wine-runner
|
+ https://github.com/gfdgd-xi/deep-wine-runner
|
||||||
+ https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
|
+ https://www.gitlink.org.cn/gfdgd_xi/deep-wine-runner
|
||||||
|
|
||||||
|
## Star 一下吧
|
||||||
|
开发不易,原创艰难,给一个 Star 吧,你的 Star 是我继续开发的动力
|
||||||
|
[![star](https://gitee.com/gfdgd-xi/deep-wine-runner/badge/star.svg?theme=dark)](https://gitee.com/gfdgd-xi/deep-wine-runner/stargazers)
|
||||||
|
|
||||||
# ©2020-Now
|
# ©2020-Now
|
@ -1,5 +1,5 @@
|
|||||||
Package: spark-deepin-wine-runner
|
Package: spark-deepin-wine-runner
|
||||||
Version: 1.8.0
|
Version: 1.9.0Alpha1
|
||||||
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
|
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
|
||||||
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
|
||||||
Architecture: all
|
Architecture: all
|
||||||
@ -7,7 +7,7 @@ Priority: optional
|
|||||||
Depends: python3, python3-pil, python3-pil.imagetk, python3-pyquery, deepin-terminal, aria2, curl, unrar, unzip, python3-requests, fakeroot, bash, python3-pyqt5
|
Depends: python3, python3-pil, python3-pil.imagetk, python3-pyquery, deepin-terminal, aria2, curl, unrar, unzip, python3-requests, fakeroot, bash, python3-pyqt5
|
||||||
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
|
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
|
||||||
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
|
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
|
||||||
Description: gfdgd xi 制作的 wine 运行器
|
Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器
|
||||||
更新内容:
|
更新内容:
|
||||||
※1、界面大改造,从使用 Tkinter 改为 Qt,参考了 @134******28 和 @sgb76 提供的设计方案和代码
|
※1、界面大改造,从使用 Tkinter 改为 Qt,参考了 @134******28 和 @sgb76 提供的设计方案和代码
|
||||||
※2、添加了基于 UOS 生态适配活动打包脚本的打包器,以及基于 Virtualbox 的简易 Windows 镜像安装工具
|
※2、添加了基于 UOS 生态适配活动打包脚本的打包器,以及基于 Virtualbox 的简易 Windows 镜像安装工具
|
||||||
|
@ -219,7 +219,7 @@ Section: non-free/otherosfs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Description: {}
|
Description: {}
|
||||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wineVersion.currentText(), e3_text.text()))
|
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||||
else:
|
else:
|
||||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||||
Version: {}
|
Version: {}
|
||||||
@ -230,7 +230,7 @@ Section: non-free/otherosfs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Description: {}
|
Description: {}
|
||||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wineVersion.currentText(), e3_text.text()))
|
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||||
if rmBash.isChecked():
|
if rmBash.isChecked():
|
||||||
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi
|
fi
|
||||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wineVersion.currentText()))
|
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||||
else:
|
else:
|
||||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||||
|
|
||||||
@ -404,7 +404,7 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi
|
fi
|
||||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wineVersion.currentText()))
|
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
||||||
################
|
################
|
||||||
# 修改文件权限
|
# 修改文件权限
|
||||||
|
@ -85,7 +85,7 @@ run = None
|
|||||||
def runexebutton(self):
|
def runexebutton(self):
|
||||||
global run
|
global run
|
||||||
DisableButton(True)
|
DisableButton(True)
|
||||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)":
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
return
|
return
|
||||||
@ -158,10 +158,12 @@ class Runexebutton_threading(QtCore.QThread):
|
|||||||
text = ""
|
text = ""
|
||||||
self.signal.emit(text)
|
self.signal.emit(text)
|
||||||
print(text)
|
print(text)
|
||||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||||
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
if len(wineBottonHistory) == 0 or wineBottonHistory[-1] != e2.currentText():
|
||||||
|
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
self.showHistory.emit("")
|
self.showHistory.emit("")
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
|
|
||||||
@ -229,10 +231,11 @@ Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.cu
|
|||||||
Icon={iconPath}
|
Icon={iconPath}
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true''') # 写入文本文档
|
StartupNotify=true''') # 写入文本文档
|
||||||
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
if len(shellHistory) == 0 or shellHistory[-1] != combobox1.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
||||||
combobox1.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.clear()
|
||||||
|
combobox1.addItems(shellHistory)
|
||||||
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
@ -274,10 +277,11 @@ Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.cu
|
|||||||
Icon={iconPath}
|
Icon={iconPath}
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true''') # 写入文本文档
|
StartupNotify=true''') # 写入文本文档
|
||||||
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
if len(shellHistory) == 0 or shellHistory[-1] != combobox1.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
||||||
combobox1.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.clear()
|
||||||
|
combobox1.addItems(shellHistory)
|
||||||
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
@ -359,13 +363,13 @@ class RunWineProgramThread(QtCore.QThread):
|
|||||||
self.signal.emit(text)
|
self.signal.emit(text)
|
||||||
print(text)
|
print(text)
|
||||||
if self.history:
|
if self.history:
|
||||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||||
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
if len(wineBottonHistory) == 0 or wineBottonHistory[-1] != e2.currentText():
|
||||||
|
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
self.showHistory.emit("")
|
self.showHistory.emit("")
|
||||||
#e1['value'] = findExeHistory
|
|
||||||
#e2['value'] = wineBottonHistory
|
|
||||||
if self.Disbled:
|
if self.Disbled:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
|
|
||||||
@ -374,7 +378,7 @@ runProgram = None
|
|||||||
def RunWineProgram(wineProgram, history = False, Disbled = True):
|
def RunWineProgram(wineProgram, history = False, Disbled = True):
|
||||||
global runProgram
|
global runProgram
|
||||||
DisableButton(True)
|
DisableButton(True)
|
||||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
return
|
return
|
||||||
@ -731,8 +735,9 @@ class GetDllFromWindowsISO:
|
|||||||
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
||||||
if found in i[:-1] + "l":
|
if found in i[:-1] + "l":
|
||||||
findList.append(i[:-1] + "l")
|
findList.append(i[:-1] + "l")
|
||||||
isoPathFound.append(found) # 将记录写进数组
|
if len(isoPath) == 0 or isoPathFound[-1] != found:
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json", str(json.dumps(ListToDictionary(isoPathFound)))) # 将历史记录的数组转换为字典并写入
|
isoPathFound.append(found) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json", str(json.dumps(ListToDictionary(isoPathFound)))) # 将历史记录的数组转换为字典并写入
|
||||||
GetDllFromWindowsISO.dllFound.clear()
|
GetDllFromWindowsISO.dllFound.clear()
|
||||||
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
||||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||||
@ -772,10 +777,11 @@ class GetDllFromWindowsISO:
|
|||||||
GetDllFromWindowsISO.DisbledDown(False)
|
GetDllFromWindowsISO.DisbledDown(False)
|
||||||
GetDllFromWindowsISO.DisbledUp(True)
|
GetDllFromWindowsISO.DisbledUp(True)
|
||||||
GetDllFromWindowsISO.mount = True
|
GetDllFromWindowsISO.mount = True
|
||||||
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
if len(isoPath) == 0 or isoPath[-1] != GetDllFromWindowsISO.isoPath.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
||||||
GetDllFromWindowsISO.isoPath.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
||||||
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
GetDllFromWindowsISO.isoPath.clear()
|
||||||
|
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
||||||
#GetDllFromWindowsISO.isoPath['value'] = isoPath
|
#GetDllFromWindowsISO.isoPath['value'] = isoPath
|
||||||
|
|
||||||
def UmountDisk():
|
def UmountDisk():
|
||||||
@ -909,7 +915,8 @@ defultProgramList = {
|
|||||||
"WineBottonDifferent": False,
|
"WineBottonDifferent": False,
|
||||||
"CenterWindow": False,
|
"CenterWindow": False,
|
||||||
"Theme": "",
|
"Theme": "",
|
||||||
"MonoGeckoInstaller": True
|
"MonoGeckoInstaller": True,
|
||||||
|
"AutoWine": True
|
||||||
}
|
}
|
||||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
||||||
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
|
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
|
||||||
@ -938,6 +945,10 @@ if not os.path.exists(get_home() + "/.config/deepin-wine-runner/WineSetting.json
|
|||||||
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
||||||
try:
|
try:
|
||||||
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"}
|
||||||
|
canUseWine = []
|
||||||
|
for i in wine.keys():
|
||||||
|
if not os.system(f"which '{wine[i]}'"):
|
||||||
|
canUseWine.append(i)
|
||||||
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
||||||
for i in os.listdir("/persistent/linglong/layers/"):
|
for i in os.listdir("/persistent/linglong/layers/"):
|
||||||
try:
|
try:
|
||||||
@ -945,9 +956,16 @@ try:
|
|||||||
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
||||||
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
||||||
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
||||||
|
canUseWine.append("基于 linglong 的 deepin-wine6-stable(不推荐)")
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
if os.path.exists("/opt/deepin-box86/box86"):
|
||||||
|
wine["基于 box86 的 deepin-wine6-stable"] = f"/opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine --disable-gpu"
|
||||||
|
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||||
|
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||||
|
wine["基于 exagear 的 deepin-wine6-stable"] = f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine --disable-gpu"
|
||||||
|
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||||
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())
|
||||||
@ -975,7 +993,7 @@ 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"
|
||||||
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 发行版"
|
||||||
thankText = ""
|
thankText = ""
|
||||||
tips = '''<h4>提示:</h4>
|
tips = '''<h4>提示:</h4>
|
||||||
1、使用终端运行该程序,可以看到 wine 以及程序本身的提示和报错;
|
1、使用终端运行该程序,可以看到 wine 以及程序本身的提示和报错;
|
||||||
@ -992,20 +1010,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 = '''※1、修复了打包器(非基于活动脚本) control、postrm 写入文件颠倒的问题
|
updateThingsString = '''※1、修复了重复路径一直自动重复增加的问题
|
||||||
※2、内置一个微型的 Windows 应用商店(应用来源:腾讯软件管家)
|
※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)
|
||||||
※3、初步支持 deepin 23(添加基于 linglong Wine 的运行方式,需要安装一个 linglong 包的 使用 Wine 应用<此方式运行限制较多,详细请见程序提示>;添加从 Deepin 20 源获取 Wine 的安装方式<不推荐>)
|
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine
|
||||||
4、更新了打包器(非基于活动脚本)调用星火 spark-wine-helper 的 run.sh 脚本格式
|
|
||||||
5、修复了打包器(基于活动脚本)在 dde-top-panel 和 dde-globalmenu-service 下无法打开帮助提示的问题
|
|
||||||
6、支持屏蔽 Wine 默认的 Mono、Gecko 安装器(屏蔽方法来自星火应用商店审核组和提供的新 run.sh 标准)
|
|
||||||
'''
|
'''
|
||||||
for i in information["Thank"]:
|
for i in information["Thank"]:
|
||||||
thankText += f"{i}\n"
|
thankText += f"{i}\n"
|
||||||
updateTime = "2022年08月02日"
|
updateTime = "2022年08月05日"
|
||||||
about = f'''<h1>关于</h1>
|
about = f'''<h1>关于</h1>
|
||||||
<pre>一个基于 Python3 的 PyQt5 制作的 Wine 运行器
|
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形话的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||||
|
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||||
|
<pre>
|
||||||
|
|
||||||
一个图形化了以下命令的程序
|
一个图形化了如下命令的程序(最简单格式)
|
||||||
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
||||||
让你可以简易方便的使用 wine
|
让你可以简易方便的使用 wine
|
||||||
|
|
||||||
@ -1350,7 +1367,10 @@ app.setStyle(QtWidgets.QStyleFactory.create(setting["Theme"]))
|
|||||||
e1.addItems(findExeHistory)
|
e1.addItems(findExeHistory)
|
||||||
e2.addItems(wineBottonHistory)
|
e2.addItems(wineBottonHistory)
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.addItems(shellHistory)
|
||||||
o1.addItems(wine.keys())
|
if setting["AutoWine"]:
|
||||||
|
o1.addItems(canUseWine)
|
||||||
|
else:
|
||||||
|
o1.addItems(wine.keys())
|
||||||
o1.setCurrentText(setting["DefultWine"])
|
o1.setCurrentText(setting["DefultWine"])
|
||||||
e1.setEditText(setting["DefultBotton"])
|
e1.setEditText(setting["DefultBotton"])
|
||||||
e2.setEditText("")
|
e2.setEditText("")
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"Version": "1.8.0",
|
"Version": "1.9.0Alpha1",
|
||||||
"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",
|
||||||
@ -10,7 +10,8 @@
|
|||||||
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
|
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
|
||||||
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
|
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
|
||||||
"感谢 @PossibleVing 提供的新版应用图标",
|
"感谢 @PossibleVing 提供的新版应用图标",
|
||||||
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题",
|
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题以及 1.8.0 重复路径一直自动重复增加的问题",
|
||||||
|
"感谢 @国川 @刘岐 提供的非 i386、amd64 运行 wine 使用 i386/amd64 可执行文件的教程和脚本",
|
||||||
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
||||||
"",
|
"",
|
||||||
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
||||||
|
Binary file not shown.
@ -219,7 +219,7 @@ Section: non-free/otherosfs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Description: {}
|
Description: {}
|
||||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wineVersion.currentText(), e3_text.text()))
|
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||||
else:
|
else:
|
||||||
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
write_txt("{}/DEBIAN/control".format(debPackagePath), '''Package: {}
|
||||||
Version: {}
|
Version: {}
|
||||||
@ -230,7 +230,7 @@ Section: non-free/otherosfs
|
|||||||
Priority: optional
|
Priority: optional
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Description: {}
|
Description: {}
|
||||||
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wineVersion.currentText(), e3_text.text()))
|
'''.format(e1_text.text(), e2_text.text(), e4_text.text(), wine[wineVersion.currentText()], e3_text.text()))
|
||||||
if rmBash.isChecked():
|
if rmBash.isChecked():
|
||||||
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
write_txt("{}/DEBIAN/postrm".format(debPackagePath, e1_text.text()), f'''#!/bin/bash
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi
|
fi
|
||||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wineVersion.currentText()))
|
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||||
else:
|
else:
|
||||||
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
write_txt("{}/opt/apps/{}/files/run.sh".format(debPackagePath, e1_text.text()), '''#!/bin/sh
|
||||||
|
|
||||||
@ -404,7 +404,7 @@ if [ -n "$EXEC_PATH" ];then
|
|||||||
else
|
else
|
||||||
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
$START_SHELL_PATH $BOTTLENAME $APPVER "uninstaller.exe" "$@"
|
||||||
fi
|
fi
|
||||||
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wineVersion.currentText()))
|
'''.format(e5_text.text(), e2_text.text(), e7_text.text(), e1_text.text(), wine[wineVersion.currentText()]))
|
||||||
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
write_txt("{}/opt/apps/{}/info".format(debPackagePath, e1_text.text()), '{\n "appid": "' + e1_text.text() + '",\n "name": "' + e8_text.text() + '",\n "version": "' + e2_text.text() + '",\n "arch": ["i386"],\n "permissions": {\n "autostart": false,\n "notification": false,\n "trayicon": true,\n "clipboard": true,\n "account": false,\n "bluetooth": false,\n "camera": false,\n "audio_record": false,\n "installed_apps": false\n }\n}')
|
||||||
################
|
################
|
||||||
# 修改文件权限
|
# 修改文件权限
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"Version": "1.8.0",
|
"Version": "1.9.0Alpha1",
|
||||||
"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",
|
||||||
@ -10,7 +10,8 @@
|
|||||||
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
|
"感谢 @GershonWang 在 https://github.com/gfdgd-xi/deep-wine-runner/issues/1 提供窗口居中的建议",
|
||||||
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
|
"感谢 @134******28 和 @sgb76 提供的新程序 GUI 布局和实现代码",
|
||||||
"感谢 @PossibleVing 提供的新版应用图标",
|
"感谢 @PossibleVing 提供的新版应用图标",
|
||||||
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题",
|
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题以及 1.8.0 重复路径一直自动重复增加的问题",
|
||||||
|
"感谢 @国川 @刘岐 提供的非 i386、amd64 运行 wine 使用 i386/amd64 可执行文件的教程和脚本",
|
||||||
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
"感谢统信在 Wine 生态适配活动中提供的打包脚本",
|
||||||
"",
|
"",
|
||||||
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
"可以从上面的各种解决方案更好的学习 Wine 生态适配,也可以看 deepin 论坛板块 https://bbs.deepin.org/module/detail/116 进行学习,最后也向各位有进行 Wine 生态适配的大佬进行由衷的感谢!",
|
||||||
|
@ -85,7 +85,7 @@ run = None
|
|||||||
def runexebutton(self):
|
def runexebutton(self):
|
||||||
global run
|
global run
|
||||||
DisableButton(True)
|
DisableButton(True)
|
||||||
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)":
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
return
|
return
|
||||||
@ -158,10 +158,12 @@ class Runexebutton_threading(QtCore.QThread):
|
|||||||
text = ""
|
text = ""
|
||||||
self.signal.emit(text)
|
self.signal.emit(text)
|
||||||
print(text)
|
print(text)
|
||||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||||
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
if len(wineBottonHistory) == 0 or wineBottonHistory[-1] != e2.currentText():
|
||||||
|
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
self.showHistory.emit("")
|
self.showHistory.emit("")
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
|
|
||||||
@ -229,10 +231,11 @@ Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.cu
|
|||||||
Icon={iconPath}
|
Icon={iconPath}
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true''') # 写入文本文档
|
StartupNotify=true''') # 写入文本文档
|
||||||
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
if len(shellHistory) == 0 or shellHistory[-1] != combobox1.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
||||||
combobox1.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.clear()
|
||||||
|
combobox1.addItems(shellHistory)
|
||||||
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
@ -274,10 +277,11 @@ Exec=env WINEPREFIX='{wineBottonPath}' {option} {wine[o1.currentText()]} '{e2.cu
|
|||||||
Icon={iconPath}
|
Icon={iconPath}
|
||||||
Type=Application
|
Type=Application
|
||||||
StartupNotify=true''') # 写入文本文档
|
StartupNotify=true''') # 写入文本文档
|
||||||
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
if len(shellHistory) == 0 or shellHistory[-1] != combobox1.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
shellHistory.append(combobox1.currentText()) # 将记录写进数组
|
||||||
combobox1.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ShellHistory.json", str(json.dumps(ListToDictionary(shellHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.clear()
|
||||||
|
combobox1.addItems(shellHistory)
|
||||||
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
QtWidgets.QMessageBox.information(widget, "提示", "生成完成!") # 显示完成对话框
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
@ -359,13 +363,13 @@ class RunWineProgramThread(QtCore.QThread):
|
|||||||
self.signal.emit(text)
|
self.signal.emit(text)
|
||||||
print(text)
|
print(text)
|
||||||
if self.history:
|
if self.history:
|
||||||
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
if len(findExeHistory) == 0 or findExeHistory[-1] != wineBottonPath:
|
||||||
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
findExeHistory.append(wineBottonPath) # 将记录写进数组
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
write_txt(get_home() + "/.config/deepin-wine-runner/FindExeHistory.json", str(json.dumps(ListToDictionary(findExeHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
if len(wineBottonHistory) == 0 or wineBottonHistory[-1] != e2.currentText():
|
||||||
|
wineBottonHistory.append(e2.currentText()) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/WineBottonHistory.json", str(json.dumps(ListToDictionary(wineBottonHistory)))) # 将历史记录的数组转换为字典并写入
|
||||||
self.showHistory.emit("")
|
self.showHistory.emit("")
|
||||||
#e1['value'] = findExeHistory
|
|
||||||
#e2['value'] = wineBottonHistory
|
|
||||||
if self.Disbled:
|
if self.Disbled:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
|
|
||||||
@ -374,7 +378,7 @@ runProgram = None
|
|||||||
def RunWineProgram(wineProgram, history = False, Disbled = True):
|
def RunWineProgram(wineProgram, history = False, Disbled = True):
|
||||||
global runProgram
|
global runProgram
|
||||||
DisableButton(True)
|
DisableButton(True)
|
||||||
if not CheckProgramIsInstall(wine[o1.currentText()]):
|
if not CheckProgramIsInstall(wine[o1.currentText()]) and o1.currentText() != "基于 linglong 的 deepin-wine6-stable(不推荐)" and o1.currentText() != "基于 exagear 的 deepin-wine6-stable" and o1.currentText() != "基于 box86 的 deepin-wine6-stable":
|
||||||
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
if QtWidgets.QMessageBox.question(widget, "提示", "检查到您未安装这个 wine,是否继续使用这个 wine 运行?") == QtWidgets.QMessageBox.No:
|
||||||
DisableButton(False)
|
DisableButton(False)
|
||||||
return
|
return
|
||||||
@ -731,8 +735,9 @@ class GetDllFromWindowsISO:
|
|||||||
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
for i in os.listdir("/tmp/wine-runner-getdll/i386"):
|
||||||
if found in i[:-1] + "l":
|
if found in i[:-1] + "l":
|
||||||
findList.append(i[:-1] + "l")
|
findList.append(i[:-1] + "l")
|
||||||
isoPathFound.append(found) # 将记录写进数组
|
if len(isoPath) == 0 or isoPathFound[-1] != found:
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json", str(json.dumps(ListToDictionary(isoPathFound)))) # 将历史记录的数组转换为字典并写入
|
isoPathFound.append(found) # 将记录写进数组
|
||||||
|
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPathFound.json", str(json.dumps(ListToDictionary(isoPathFound)))) # 将历史记录的数组转换为字典并写入
|
||||||
GetDllFromWindowsISO.dllFound.clear()
|
GetDllFromWindowsISO.dllFound.clear()
|
||||||
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
GetDllFromWindowsISO.dllFound.addItems(isoPathFound)
|
||||||
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
GetDllFromWindowsISO.dllListModel.setStringList(findList)
|
||||||
@ -772,10 +777,11 @@ class GetDllFromWindowsISO:
|
|||||||
GetDllFromWindowsISO.DisbledDown(False)
|
GetDllFromWindowsISO.DisbledDown(False)
|
||||||
GetDllFromWindowsISO.DisbledUp(True)
|
GetDllFromWindowsISO.DisbledUp(True)
|
||||||
GetDllFromWindowsISO.mount = True
|
GetDllFromWindowsISO.mount = True
|
||||||
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
if len(isoPath) == 0 or isoPath[-1] != GetDllFromWindowsISO.isoPath.currentText():
|
||||||
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
isoPath.append(GetDllFromWindowsISO.isoPath.currentText()) # 将记录写进数组
|
||||||
GetDllFromWindowsISO.isoPath.clear()
|
write_txt(get_home() + "/.config/deepin-wine-runner/ISOPath.json", str(json.dumps(ListToDictionary(isoPath)))) # 将历史记录的数组转换为字典并写入
|
||||||
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
GetDllFromWindowsISO.isoPath.clear()
|
||||||
|
GetDllFromWindowsISO.isoPath.addItems(isoPath)
|
||||||
#GetDllFromWindowsISO.isoPath['value'] = isoPath
|
#GetDllFromWindowsISO.isoPath['value'] = isoPath
|
||||||
|
|
||||||
def UmountDisk():
|
def UmountDisk():
|
||||||
@ -909,7 +915,8 @@ defultProgramList = {
|
|||||||
"WineBottonDifferent": False,
|
"WineBottonDifferent": False,
|
||||||
"CenterWindow": False,
|
"CenterWindow": False,
|
||||||
"Theme": "",
|
"Theme": "",
|
||||||
"MonoGeckoInstaller": True
|
"MonoGeckoInstaller": True,
|
||||||
|
"AutoWine": True
|
||||||
}
|
}
|
||||||
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
if not os.path.exists(get_home() + "/.config/deepin-wine-runner"): # 如果没有配置文件夹
|
||||||
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
|
os.mkdir(get_home() + "/.config/deepin-wine-runner") # 创建配置文件夹
|
||||||
@ -938,6 +945,10 @@ if not os.path.exists(get_home() + "/.config/deepin-wine-runner/WineSetting.json
|
|||||||
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
# 如果要添加其他 wine,请在字典添加其名称和执行路径
|
||||||
try:
|
try:
|
||||||
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"}
|
||||||
|
canUseWine = []
|
||||||
|
for i in wine.keys():
|
||||||
|
if not os.system(f"which '{wine[i]}'"):
|
||||||
|
canUseWine.append(i)
|
||||||
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
if os.path.exists("/persistent/linglong/layers/"): # 判断是否使用 linglong
|
||||||
for i in os.listdir("/persistent/linglong/layers/"):
|
for i in os.listdir("/persistent/linglong/layers/"):
|
||||||
try:
|
try:
|
||||||
@ -945,9 +956,16 @@ try:
|
|||||||
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
arch = os.listdir(f"/persistent/linglong/layers/{i}/{dire}")[-1]
|
||||||
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
if os.path.exists(f"/persistent/linglong/layers/{i}/{dire}/{arch}/runtime/bin/deepin-wine6-stable"):
|
||||||
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
wine["基于 linglong 的 deepin-wine6-stable(不推荐)"] = f"ll-cli run {i} --exec '/bin/deepin-wine6-stable'"
|
||||||
|
canUseWine.append("基于 linglong 的 deepin-wine6-stable(不推荐)")
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
if os.path.exists("/opt/deepin-box86/box86"):
|
||||||
|
wine["基于 box86 的 deepin-wine6-stable"] = f"/opt/deepin-box86/box86 /opt/deepin-wine6-stable/bin/wine --disable-gpu"
|
||||||
|
canUseWine.append("基于 box86 的 deepin-wine6-stable")
|
||||||
|
if os.path.exists("/opt/exagear/bin/ubt_x64a64_al"):
|
||||||
|
wine["基于 exagear 的 deepin-wine6-stable"] = f"/opt/exagear/bin/ubt_x64a64_al --path-prefix {get_home()}/.deepinwine/debian-buster --utmp-paths-list {get_home()}/.deepinwine/debian-buster/.exagear/utmp-list --vpaths-list {get_home()}/.deepinwine/debian-buster/.exagear/vpaths-list --opaths-list {get_home()}/.deepinwine/debian-buster/.exagear/opaths-list --smo-mode fbase --smo-severity smart --fd-limit 8192 --foreign-ubt-binary /opt/exagear/bin/ubt_x32a64_al -- /opt/deepin-wine6-stable/bin/wine --disable-gpu"
|
||||||
|
canUseWine.append("基于 exagear 的 deepin-wine6-stable")
|
||||||
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())
|
||||||
@ -975,7 +993,7 @@ 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"
|
||||||
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 发行版"
|
||||||
thankText = ""
|
thankText = ""
|
||||||
tips = '''<h4>提示:</h4>
|
tips = '''<h4>提示:</h4>
|
||||||
1、使用终端运行该程序,可以看到 wine 以及程序本身的提示和报错;
|
1、使用终端运行该程序,可以看到 wine 以及程序本身的提示和报错;
|
||||||
@ -992,20 +1010,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 = '''※1、修复了打包器(非基于活动脚本) control、postrm 写入文件颠倒的问题
|
updateThingsString = '''※1、修复了重复路径一直自动重复增加的问题
|
||||||
※2、内置一个微型的 Windows 应用商店(应用来源:腾讯软件管家)
|
※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)
|
||||||
※3、初步支持 deepin 23(添加基于 linglong Wine 的运行方式,需要安装一个 linglong 包的 使用 Wine 应用<此方式运行限制较多,详细请见程序提示>;添加从 Deepin 20 源获取 Wine 的安装方式<不推荐>)
|
※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine
|
||||||
4、更新了打包器(非基于活动脚本)调用星火 spark-wine-helper 的 run.sh 脚本格式
|
|
||||||
5、修复了打包器(基于活动脚本)在 dde-top-panel 和 dde-globalmenu-service 下无法打开帮助提示的问题
|
|
||||||
6、支持屏蔽 Wine 默认的 Mono、Gecko 安装器(屏蔽方法来自星火应用商店审核组和提供的新 run.sh 标准)
|
|
||||||
'''
|
'''
|
||||||
for i in information["Thank"]:
|
for i in information["Thank"]:
|
||||||
thankText += f"{i}\n"
|
thankText += f"{i}\n"
|
||||||
updateTime = "2022年08月02日"
|
updateTime = "2022年08月05日"
|
||||||
about = f'''<h1>关于</h1>
|
about = f'''<h1>关于</h1>
|
||||||
<pre>一个基于 Python3 的 PyQt5 制作的 Wine 运行器
|
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形话的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||||
|
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||||
|
<pre>
|
||||||
|
|
||||||
一个图形化了以下命令的程序
|
一个图形化了如下命令的程序(最简单格式)
|
||||||
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
<code>env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径</code>
|
||||||
让你可以简易方便的使用 wine
|
让你可以简易方便的使用 wine
|
||||||
|
|
||||||
@ -1350,7 +1367,10 @@ app.setStyle(QtWidgets.QStyleFactory.create(setting["Theme"]))
|
|||||||
e1.addItems(findExeHistory)
|
e1.addItems(findExeHistory)
|
||||||
e2.addItems(wineBottonHistory)
|
e2.addItems(wineBottonHistory)
|
||||||
combobox1.addItems(shellHistory)
|
combobox1.addItems(shellHistory)
|
||||||
o1.addItems(wine.keys())
|
if setting["AutoWine"]:
|
||||||
|
o1.addItems(canUseWine)
|
||||||
|
else:
|
||||||
|
o1.addItems(wine.keys())
|
||||||
o1.setCurrentText(setting["DefultWine"])
|
o1.setCurrentText(setting["DefultWine"])
|
||||||
e1.setEditText(setting["DefultBotton"])
|
e1.setEditText(setting["DefultBotton"])
|
||||||
e2.setEditText("")
|
e2.setEditText("")
|
||||||
|
Binary file not shown.
@ -6,11 +6,11 @@ Build-Depends: debhelper (>= 3.0), fakeroot
|
|||||||
Standards-Version: 3.7.3.0
|
Standards-Version: 3.7.3.0
|
||||||
Package: @deb_package_name@
|
Package: @deb_package_name@
|
||||||
Depends: @package_depends@
|
Depends: @package_depends@
|
||||||
|
Architecture: i386
|
||||||
Recommends: 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
|
Recommends: 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
|
||||||
Replaces: @old_package@
|
Replaces: @old_package@
|
||||||
Provides: @old_package@
|
Provides: @old_package@
|
||||||
Conflicts: @old_package@
|
Conflicts: @old_package@
|
||||||
Architecture: @Arch@
|
|
||||||
Multi-Arch: foreign
|
Multi-Arch: foreign
|
||||||
Description: @app_description@
|
Description: @app_description@
|
||||||
Version:@deb_version_string@
|
Version:@deb_version_string@
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"Version": "1.8.0"
|
"Version": "1.9.0Alpha1"
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user