From c0ea459daec78a9a5b8b10cd403bef84d020fc74 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Fri, 25 Nov 2022 09:40:24 +0800
Subject: [PATCH] 2.5.0 done
---
README.md | 18 ++++-
deb/DEBIAN/control | 30 ++++----
.../deepin-wine-runner/deepin-wine-runner | 76 +++++++++++++++++--
.../apps/deepin-wine-runner/information.json | 3 +-
information.json | 3 +-
mainwindow.py | 65 ++++++++++++----
wine/winelist.json | 1 +
7 files changed, 156 insertions(+), 40 deletions(-)
create mode 100644 wine/winelist.json
diff --git a/README.md b/README.md
index 7754ac2..4e9724c 100755
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-Wine 运行器 2.4.1.1
+Wine 运行器 2.5.0
## 介绍
@@ -104,6 +104,22 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
+### 2.5.0(2022年11月25日)
+**※1、容器自动配置脚本 GUI 查看介绍使用 QWebEngineWidget,支持图片(非强制依赖,只做推荐);**
+**※2、不基于生态适配活动脚本打包器跟进 arm 架构 2022年11月11日的 Wine 微信打包方式;**
+**※3、支持多图标的程序打包;**
+**※4、修复了安装更多 Wine 换源换了个寂寞的问题;**
+**※5、修复安装更多 Wine 重新安装后列表丢失的问题;**
+**※6、新增了对 Deepin 23 Alpha 优化的 Wine 安装器;**
+**※7、新增 Dll 名称查询功能,可以查询对应 Dll 的作用;**
+**※8、支持静态获取可执行文件可以调用的 Dll 并提供解决方案;**
+**※9、支持移除指定的 .desktop 快捷方式;**
+**※10、新增日志分析功能以及导出、上传日志功能;**
+11、修复了不基于生态适配活动脚本打包器在选择 arm 打包架构下容器自动删除脚本取消勾选无用的问题;
+12、优化文案、新增友链;
+13、提供了部分组件的测试功能。
+![image.png](https://storage.deepin.org/thread/202211250932168081_image.png)
+
### 2.4.1.1(2022年11月21日)
**※1、修复已知问题**
diff --git a/deb/DEBIAN/control b/deb/DEBIAN/control
index 7f12e7a..f2b79f5 100755
--- a/deb/DEBIAN/control
+++ b/deb/DEBIAN/control
@@ -1,5 +1,5 @@
Package: spark-deepin-wine-runner
-Version: 2.5.0~alpha2
+Version: 2.5.0
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner, https://github.com/gfdgd-xi/deep-wine-runner, https://gitlink.org.cn/gfdgd_xi/deep-wine-runner
Architecture: all
@@ -11,17 +11,19 @@ Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
Installed-Size: 21844
Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器
- 2.4.1 更新内容:
- ※1、不基于生态适配活动脚本的打包器支持只生成制作容器的 7z 包
- ※2、两个打包器的容器自动删除脚本添加 kill.sh
- ※3、Wine 运行器支持杀死对应容器进程
- ※4、容器自动配置脚本和 Wine 安装器支持切换源
- 5、非生态适配脚本打包器追加运行参数改为 --uri XXX 而非直接 XXX
- 6、两个打包器新增星火应用商店投稿入口
- 7、优化开启 Windows 虚拟机功能在未安装 VirtualBox 时的提示
- 8、Reg Shot 版本从 1.8.3-beta1V5 升级到 1.9.0
- 9、Geek Uninstaller 版本从 1.5.1.161 升级到 1.5.1.163
- 10、容器自动配置脚本添加 installother 命令、修复返回值传递问题
- 11、不显示 pip 安装库的提示信息(因为不是很核心的库)
- 更新时间:2022年11月06日
+ 2.5.0 更新内容:
+ ※1、容器自动配置脚本 GUI 查看介绍使用 QWebEngineWidget,支持图片(非强制依赖,只做推荐);
+ ※2、不基于生态适配活动脚本打包器跟进 arm 架构 2022年11月11日的 Wine 微信打包方式;
+ ※3、支持多图标的程序打包;
+ ※4、修复了安装更多 Wine 换源换了个寂寞的问题;
+ ※5、修复安装更多 Wine 重新安装后列表丢失的问题;
+ ※6、新增了对 Deepin 23 Alpha 优化的 Wine 安装器;
+ ※7、新增 Dll 名称查询功能,可以查询对应 Dll 的作用;
+ ※8、支持静态获取可执行文件可以调用的 Dll 并提供解决方案;
+ ※9、支持移除指定的 .desktop 快捷方式;
+ ※10、新增日志分析功能以及导出、上传日志功能;
+ 11、修复了不基于生态适配活动脚本打包器在选择 arm 打包架构下容器自动删除脚本取消勾选无用的问题;
+ 12、优化文案、新增友链;
+ 13、提供了部分组件的测试功能。
+ 更新时间:2022年11月25日
作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
index a7412d7..0f3da67 100755
--- a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
+++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
@@ -166,9 +166,15 @@ class LogChecking():
index = questionList.currentIndex().row()
lists = questionMap[index]
print(f"{programPath}/CheckDLL/bash/{lists[1].lower()}.sh")
- if os.path.exists(f"{programPath}/CheckDLL/bash/{lists[1].lower()}.sh"):
+ if lists[0] == 1 and os.path.exists(f"{programPath}/CheckDLL/bash/{lists[1].lower()}.sh"):
OpenTerminal(f"'{programPath}/AutoShell/main.py' '{programPath}/CheckDLL/bash/{lists[1].lower()}.sh'")
return
+ if lists[0] == 2:
+ QtWidgets.QMessageBox.information(logWindow, "修复方法", "切换其它 Wine")
+ return
+ if lists[0] == 4:
+ QtWidgets.QMessageBox.information(logWindow, "修复方法", "如是 Deepin Wine 可以尝试切换 WineHQ,\n并且取消勾选运行器主页面菜单栏“程序”=>“设置Wine”,取消勾选“屏蔽 Wine 默认 Mono 和 Gecko 安装器”\n然后尝试在菜单栏的“Wine”=>“在指定 Wine、容器安装组件”=>“在指定 Wine、容器安装 Gecko”来安装 Gecko")
+ return
QtWidgets.QMessageBox.critical(logWindow, "错误", "无法修复该问题")
def Show(lists):
@@ -177,15 +183,21 @@ class LogChecking():
disbledButton = False
print(lists)
if not len(lists):
- nmodel.appendRow(QtGui.QStandardItem(f"无法分析到错误"))
+ nmodel.appendRow(QtGui.QStandardItem(f"√ 无法分析到错误"))
disbledButton = True
for i in lists:
if i[0] == 0:
- nmodel.appendRow(QtGui.QStandardItem(f"无法分析到错误"))
+ nmodel.appendRow(QtGui.QStandardItem(f"√ 无法分析到错误"))
disbledButton = True
break
if i[0] == 1:
- nmodel.appendRow(QtGui.QStandardItem(f"无法调用 Dll:{i[1]}"))
+ nmodel.appendRow(QtGui.QStandardItem(f"× 无法调用 Dll:{i[1]}"))
+ if i[0] == 2:
+ nmodel.appendRow(QtGui.QStandardItem(f"× 尝试用 Mono 运行非 .net 应用 {i[1]}?"))
+ if i[0] == 3:
+ nmodel.appendRow(QtGui.QStandardItem(f"! 无法加载 Gecko,是被禁用或未安装?"))
+ if i[0] == 4:
+ nmodel.appendRow(QtGui.QStandardItem(f"× 无法更新 Wine 容器版本,是否还有 Wine 程序运行?"))
questionMap = lists[:]
repairButton.setDisabled(disbledButton)
questionList.setModel(nmodel)
@@ -211,6 +223,14 @@ class LogThreading(QtCore.QThread):
# Lose Dll
repairList.append([1, i[i.index("_ilonly") + 8: i.index("not")].strip()])
continue
+ if "Cannot open assembly".lower() in checkingText and ": File does not contain a valid CIL image.".lower() in checkingText:
+ # Mono
+ repairList.append([2, i.replace(": File does not contain a valid CIL image.", "").replace("Cannot open assembly", "").strip()[1: -1]])
+ if "Could not load wine-gecko. HTML rendering will be disabled.".lower() in checkingText and "Could not find Wine Gecko. HTML rendering will be disabled.".lower() in checkingText:
+ # Disbled Gecko
+ repairList.append([3, ""])
+ if "Your wineserver binary was not upgraded correctly".lower() in checkingText:
+ repairList.append([4, ""])
self.done.emit(repairList)
@@ -1770,6 +1790,39 @@ class ValueCheck():
def ChangePath():
e1.setCurrentText(f'{setting["DefultBotton"]}/{os.path.splitext(os.path.basename(e2.currentText()))[0]}')
+def UploadLog():
+ if QtWidgets.QMessageBox.question(window, "提示", "您确定要上传吗?上传内容将不会公开,将用于加强日志分析功能") == QtWidgets.QMessageBox.Yes:
+ text = QtWidgets.QInputDialog.getMultiLineText(window, "输入内容", "输入描述信息")
+ try:
+ returnList = requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL2xvZw==").decode("utf-8"), {
+ "Log": returnText.toPlainText(),
+ "Wine": wine[o1.currentText()],
+ "Tips": text
+ }).json
+ if returnList["ExitCode"] == 0:
+ QtWidgets.QMessageBox.information(window, "提示", "上传成功!")
+ else:
+ print(returnList)
+ QtWidgets.QMessageBox.critical(window, "错误", "上传失败!")
+ except:
+ traceback.print_exc()
+ QtWidgets.QMessageBox.critical(window, "错误", "上传失败!")
+
+def SaveLog():
+ path = QtWidgets.QFileDialog.getSaveFileName(window, "保存日志", get_home(), "txt文件(*.txt);;html 文件(*.html);;所有文件(*.*))")
+ if not path[1]:
+ return
+ print(path)
+ try:
+ with open(path[0], "w") as file:
+ if path[1] == "html 文件(*.html)":
+ file.write(returnText.toHtml())
+ else:
+ file.write(returnText.toPlainText())
+ except:
+ traceback.print_exc()
+ QtWidgets.QMessageBox.critical(window, "错误", traceback.format_exc())
+
###########################
# 加载配置
###########################
@@ -2079,13 +2132,14 @@ updateThingsString = '''※1、容器自动配置脚本 GUI 查看介绍使用 Q
※7、新增 Dll 名称查询功能,可以查询对应 Dll 的作用;
※8、支持静态获取可执行文件可以调用的 Dll 并提供解决方案;
※9、支持移除指定的 .desktop 快捷方式;
-10、修复了不基于生态适配活动脚本打包器在选择 arm 打包架构下容器自动删除脚本取消勾选无用的问题;
-11、优化文案、新增友链;
-12、提供了部分组件的测试功能。
+※10、新增日志分析功能以及导出、上传日志功能;
+11、修复了不基于生态适配活动脚本打包器在选择 arm 打包架构下容器自动删除脚本取消勾选无用的问题;
+12、优化文案、新增友链;
+13、提供了部分组件的测试功能。
'''
for i in information["Thank"]:
thankText += f"{i}\n"
-updateTime = "2022年11月23日"
+updateTime = "2022年11月25日"
about = f'''