From 8149ea0e8de0b54455776a271680da7fe896655b Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Fri, 26 Aug 2022 14:41:08 +0800
Subject: [PATCH] =?UTF-8?q?2.1.0=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
AutoConfig.py | 11 +
Makefile | 10 +-
README.md | 25 +-
deb/DEBIAN/control | 37 +-
deb/DEBIAN/postinst | 3 +-
deb/opt/apps/deepin-wine-runner/AllInstall.py | 20 +-
deb/opt/apps/deepin-wine-runner/AutoConfig.py | 118 +++++
.../ConfigLanguareRunner.py | 439 ++++++++++++++++++
deb/opt/apps/deepin-wine-runner/InstallDll.py | 127 +++++
.../apps/deepin-wine-runner/InstallFont.py | 38 +-
.../apps/deepin-wine-runner/InstallMono.py | 27 +-
.../apps/deepin-wine-runner/InstallMsxml.py | 117 ++---
.../deepin-wine-runner/InstallNetFramework.py | 139 +++---
.../deepin-wine-runner/InstallNewWineHQ.sh | 15 +
.../apps/deepin-wine-runner/InstallOther.py | 25 +-
.../InstallVisualCPlusPlus.py | 120 +++--
.../InstallWineOnDeepin23.py | 4 +-
.../deepin-wine-runner/LANG/InstallDll.py | 127 +++++
.../apps/deepin-wine-runner/UI/AutoConfig.py | 76 +++
.../deepin-wine-runner/deepin-wine-runner | 91 +++-
deb/opt/apps/deepin-wine-runner/dxvk.7z | Bin 3150826 -> 3150883 bytes
.../apps/deepin-wine-runner/information.json | 2 +-
.../deepin-wine-runner/package-script.zip | Bin 300045 -> 300045 bytes
.../apps/deepin-wine-runner/wine/.qmake.stash | 24 +
.../apps/deepin-wine-runner/wine}/Makefile | 0
.../apps/deepin-wine-runner/wine/installwine | 2 +-
.../deepin-wine-runner/wine}/installwine.out | Bin
.../deepin-wine-runner/wine/winelist.json | 2 +-
mainwindow.py | 2 +-
package-script.zip | Bin 300045 -> 300045 bytes
30 files changed, 1351 insertions(+), 250 deletions(-)
create mode 100755 deb/opt/apps/deepin-wine-runner/AutoConfig.py
create mode 100755 deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
create mode 100755 deb/opt/apps/deepin-wine-runner/InstallDll.py
create mode 100755 deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py
create mode 100644 deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py
create mode 100644 deb/opt/apps/deepin-wine-runner/wine/.qmake.stash
rename {wine => deb/opt/apps/deepin-wine-runner/wine}/Makefile (100%)
rename {wine => deb/opt/apps/deepin-wine-runner/wine}/installwine.out (100%)
diff --git a/AutoConfig.py b/AutoConfig.py
index f16cafb..87909ea 100755
--- a/AutoConfig.py
+++ b/AutoConfig.py
@@ -1,4 +1,15 @@
#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
import os
import sys
import json
diff --git a/Makefile b/Makefile
index 8817a67..d62679a 100755
--- a/Makefile
+++ b/Makefile
@@ -8,12 +8,9 @@ build:
cp -rv VM-source/Windows7X64Auto.iso VM
cp -rv VM-source/Windows7X86Auto.iso VM
cp -rv VM-source/run.py VM
- cp -rv wine/installwine deb/opt/apps/deepin-wine-runner/wine
+ cp -rv wine/ deb/opt/apps/deepin-wine-runner/
zip -v -q -r package-script.zip package-script
cp -rv VM deb/opt/apps/deepin-wine-runner
- mkdir -p 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
cp -rv AllInstall.py deb/opt/apps/deepin-wine-runner
cp -rv BeCyIconGrabber.exe deb/opt/apps/deepin-wine-runner
cp -rv deepin-wine-packager-with-script.py deb/opt/apps/deepin-wine-runner
@@ -54,6 +51,11 @@ build:
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
+ cp -rv InstallDll.py deb/opt/apps/deepin-wine-runner/LANG
+ cp -rv ConfigLanguareRunner.py deb/opt/apps/deepin-wine-runner
+ cp -rv AutoConfig.py deb/opt/apps/deepin-wine-runner
+ cp -rv UI/*.py deb/opt/apps/deepin-wine-runner/UI
+ cp -rv InstallDll.py deb/opt/apps/deepin-wine-runner
dpkg -b deb spark-deepin-wine-runner.deb
diff --git a/README.md b/README.md
index 4534df6..a9770fa 100755
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-Wine 运行器
+Wine 运行器 2.1.0
## 介绍
@@ -11,7 +11,7 @@ env WINEPREFIX=容器路径 wine(wine的路径) 可执行文件路径
是使用 Python3 的 tkinter 构建的
(自己美术功底太差,图标只能在网络上找了)
(测试平台:deepin 20.6;UOS 家庭版 21.3.1;Ubuntu 22.04)
-![image.png](https://storage.deepin.org/thread/202208131811324016_image.png)
+![截图_选择区域_20220826143213.png](https://storage.deepin.org/thread/202208261437088825_截图_选择区域_20220826143213.png)
而打包器可以方便的把您的 wine 容器打包成 deb 包供他人使用,程序创建的 deb 构建临时文件夹目录树如下:
```bash
/XXX
@@ -85,6 +85,27 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
+### 2.1.0(2022年08月26日)
+**※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中**
+**※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine(一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板**
+**※3、开始初步多语言支持**
+**※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题**
+**※5、支持云端自动获取数据配置 Wine 容器**
+**※6、支持手动导入配置文件自动配置 Wine 容器**
+**※7、新增从云端下载 Dll 的功能**
+**※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题**
+9、修改错别字(图形话=>图形化)
+10、修复评分功能名称为空也可以上传评分的问题
+11、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
+12、支持删除所有由 Wine 创建的启动器快捷方式
+![截图_选择区域_20220826143213.png](https://storage.deepin.org/thread/202208261437088825_截图_选择区域_20220826143213.png)
+
+### 2.0.0-2(2022年08月16日)
+修复了在 deepin 23 安装缺少`toilet`依赖导致无法安装的问题,更多更新内容请见 2.0.0
+
+### 2.0.0-1(2022年08月15日)
+修复了缺失`python3-psutil`依赖的问题,更多更新内容请见 2.0.0
+
### 2.0.0(2022年08月13日)
**※1、修复了重复路径一直自动重复增加的问题**
**※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)**
diff --git a/deb/DEBIAN/control b/deb/DEBIAN/control
index 9ded81b..6a87fa2 100755
--- a/deb/DEBIAN/control
+++ b/deb/DEBIAN/control
@@ -1,29 +1,26 @@
Package: spark-deepin-wine-runner
-Version: 2.0.0-2
+Version: 2.1.0
Maintainer: gfdgd xi <3025613752@qq.com>, 为什么您不喜欢熊出没和阿布呢
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
Architecture: all
Priority: optional
Depends: python3, python3-pil, python3-pil.imagetk, python3-pyquery, deepin-terminal, aria2, curl, unrar, unzip, python3-requests, fakeroot, bash, python3-pyqt5, python3-psutil
-Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
-Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer
-Installed-Size: 23500
+Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
+Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
+Installed-Size: 24928
Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器
更新内容:
- ※1、修复了重复路径一直自动重复增加的问题
- ※2、修复了两个打包器打包错误的问题(非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)
- ※3、适配了部分非 i386、amd64 架构计算机的 UOS 系统使用的 wine 并支持打包非 i386、amd64 架构计算机的 UOS 系统使用的 wine 程序 deb 包
- ※4、支持安装 dxvk(遵守 Zlib 开源协议)
- ※5、运行器、打包器(包括非基于生态适配活动脚本制作的)支持使用 Wine 生态适配活动的容器清理脚本
- ※6、支持更加简易的安装最新版的 WineHQ
- ※7、增加字体商店
- ※8、新增查看可执行文件运行情况的功能
- 9、支持不显示没有安装的 Wine,方便用户识别
- 10、修改了 Wine 的顺序使其更加合理
- 11、支持删除安装 exe 后在启动器的快捷方式
- 12、优化了 Wine 打包器(非基于生态活动脚本)对容器的处理
- 13、修复了 Wine 打包器(非基于生态活动脚本)打包出的 deb 安装时显示为解压缩后会消耗 0 B 的额外空间以及 postrm 的一些问题
- 14、支持删除无需使用的程序组件
- 15、支持组件/运行库下载后缓存方便下次使用(可以清理)
- 16、点击获取图标按钮后会自动读取 exe 框的程序图标(不支持相对路径和包内路径,只支持绝对路径)
+ ※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中
+ ※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine(一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板
+ ※3、开始初步多语言支持
+ ※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题
+ ※5、支持云端自动获取数据配置 Wine 容器
+ ※6、支持手动导入配置文件自动配置 Wine 容器
+ ※7、新增从云端下载 Dll 的功能
+ ※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题
+ 9、修改错别字(图形话=>图形化)
+ 10、修复评分功能名称为空也可以上传评分的问题
+ 11、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
+ 12、支持删除所有由 Wine 创建的启动器快捷方式
+ 更新时间:2022年08月26日
作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
diff --git a/deb/DEBIAN/postinst b/deb/DEBIAN/postinst
index e9563dc..40e8b8f 100755
--- a/deb/DEBIAN/postinst
+++ b/deb/DEBIAN/postinst
@@ -10,6 +10,7 @@ if [ `arch` != "x86_64" ]; then
rm -rf /usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
# 删除安装 wine 功能
rm -rf "/opt/apps/deepin-wine-runner/wine install"
+ rm -rf "/opt/apps/deepin-wine-runner/wine"
rm -rf /usr/bin/deepin-wine-runner-wine-installer
rm -rf /usr/bin/deepin-wine-runner-wine-install-deepin23
rm -rf /usr/bin/deepin-wine-runner-wine-install
@@ -22,4 +23,4 @@ fi
# 设置目录权限,让用户可读可写,方便后续删除组件
chmod 777 -R /opt/apps/deepin-wine-runner
# 向服务器返回安装数加1(不显示内容且忽略错误)
-curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=2.0.0-1 -s > /dev/null | true
+curl http://120.25.153.144/spark-deepin-wine-runner/Install.php?Version=2.1.0 -s > /dev/null | true
diff --git a/deb/opt/apps/deepin-wine-runner/AllInstall.py b/deb/opt/apps/deepin-wine-runner/AllInstall.py
index 3748f37..ad61ad8 100755
--- a/deb/opt/apps/deepin-wine-runner/AllInstall.py
+++ b/deb/opt/apps/deepin-wine-runner/AllInstall.py
@@ -1,11 +1,11 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
-# 作者:gfdgd xi
-# 版本:1.5.1
-# 更新时间:2022年07月03日
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
-# 基于 Python3 的 tkinter 构建
+# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
@@ -26,8 +26,16 @@ def InstallSparkWine(wine):
#os.system("sudo apt install apt-fast -y")
#os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
#return
- os.system("sudo ss-apt-fast update")
- os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
+ #os.system("sudo ss-apt-fast update")
+ if not os.system("which aptss"):
+ os.system(f"sudo aptss install \"{wine}\" -y")
+ elif not os.system("which ss-apt-fast"):
+ os.system("sudo ss-apt-fast update")
+ os.system(f"sudo ss-apt-fast install \"{wine}\" -y")
+ elif not os.system("which apt-fast"):
+ os.system(f"sudo apt-fast install \"{wine}\" -y")
+ else:
+ os.system(f"sudo apt install \"{wine}\" -y")
###################
# 程序功能
diff --git a/deb/opt/apps/deepin-wine-runner/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/AutoConfig.py
new file mode 100755
index 0000000..87909ea
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/AutoConfig.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
+import os
+import sys
+import json
+import traceback
+import requests
+import PyQt5.QtWidgets as QtWidgets
+from UI.AutoConfig import *
+
+urlSources = "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto"
+lists = []
+
+class Connect:
+ def SearchBotton_Clicked():
+ nmodel = QtGui.QStandardItemModel(window)
+ if ui.searchThings.text() == "":
+ # 显示全部内容
+ for i in lists:
+ nmodel.appendRow(QtGui.QStandardItem(i[0]))
+ ui.searchList.setModel(nmodel)
+ return
+ for i in lists:
+ # 显示筛选的内容
+ if ui.searchThings.text() in i[0]:
+ nmodel.appendRow(QtGui.QStandardItem(i[0]))
+ ui.searchList.setModel(nmodel)
+
+ def RunBotton_Clicked():
+ # 获取选中项
+ try:
+ choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
+ except:
+ QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
+ return
+ fileName = ""
+ for i in lists:
+ print(i)
+ if i[0] == choose:
+ fileName = i[1]
+ break
+ # 下载脚本
+ try:
+ print(f"{urlSources}/{fileName}")
+ file = open("/tmp/wine-runner-auto-config.wsh", "w")
+ file.write(requests.get(f"{urlSources}/{fileName}").text)
+ file.close()
+ except:
+ traceback.print_exc()
+ QtWidgets.QMessageBox.critical(window, "错误", "无法获取配置文件")
+ return
+ # 执行脚本
+ process = QtCore.QProcess()
+ process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", "/tmp/wine-runner-auto-config.wsh", "--system"])
+ process.waitForFinished()
+
+ def OpenFile_Triggered():
+ path = QtWidgets.QFileDialog.getOpenFileName(window, "提示", homePath, "配置文件(*.sh *.wsh);;全部文件(*.*)")
+ if path[0] == "":
+ return
+ # 执行脚本
+ process = QtCore.QProcess()
+ process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", path[0], "--system"])
+ process.waitForFinished()
+
+# 读取文本文档
+def readtxt(path):
+ f = open(path, "r") # 设置文件对象
+ str = f.read() # 获取内容
+ f.close() # 关闭文本对象
+ return str # 返回结果
+
+if __name__ == "__main__":
+ homePath = os.path.expanduser('~')
+ programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
+ information = json.loads(readtxt(f"{programPath}/information.json"))
+ version = information["Version"]
+ wine = "deepin-wine6-stable"
+ wineprefix = f"{homePath}/.wine"
+ try:
+ wine = sys.argv[1]
+ wineprefix = sys.argv[2]
+ except:
+ pass
+ app = QtWidgets.QApplication(sys.argv)
+ window = QtWidgets.QMainWindow()
+ ui = Ui_MainWindow()
+ ui.setupUi(window)
+ window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本")
+ window.show()
+ # 连接信号和槽
+ ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
+ ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
+ ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
+ ui.exitProgram.triggered.connect(window.close)
+ # 解析云列表
+ try:
+ # 获取列表
+ lists = json.loads(requests.get(f"{urlSources}/list.json").text)
+ # 解释列表并显示在 GUI 上
+ nmodel = QtGui.QStandardItemModel(window)
+ for i in lists:
+ nmodel.appendRow(QtGui.QStandardItem(i[0]))
+ ui.searchList.setModel(nmodel)
+ except:
+ traceback.print_exc()
+ QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
+ app.exec_()
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
new file mode 100755
index 0000000..a6611ab
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
@@ -0,0 +1,439 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+import os
+import sys
+import time
+import json
+import traceback
+import PyQt5.QtWidgets as QtWidgets
+# 读取文本文档
+def readtxt(path):
+ f = open(path, "r") # 设置文件对象
+ str = f.read() # 获取内容
+ f.close() # 关闭文本对象
+ return str # 返回结果
+
+programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
+information = json.loads(readtxt(f"{programPath}/information.json"))
+version = information["Version"]
+thankText = ""
+for i in information["Thank"]:
+ thankText += f"{i}\n"
+programEnv = [
+ ["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
+ ["($WINE)", "deepin-wine6-stable"],
+ ["($DANGER)", "0"],
+ ["($HOME)", os.path.expanduser('~')],
+ ["($PROGRAMPATH)", programPath],
+ ["($VERSION)", version],
+ ["($THANK)", thankText],
+ ["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
+ ["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
+ ["($?)", "0"]
+]
+readOnlyEnv = [
+ "($DANGER)",
+ "($HOME)",
+ "($PROGRAMPATH)",
+ "($VERSION)",
+ "($THANK)",
+ "($MAKER)",
+ "($COPYRIGHT)",
+ "($?)"
+]
+
+class Command():
+ # 有风险的命令
+ dangerCommand = [
+ "bash",
+ "bat",
+ "download",
+ "reg"
+ ]
+ # 可以被使用的命令
+ commandList = [
+ "installdll",
+ "installfont",
+ "installsparkcorefont",
+ "installmono",
+ "installgecko",
+ "installvcpp",
+ "installnet",
+ "installmsxml",
+ "echo",
+ "info",
+ "error",
+ "warning",
+ "exit",
+ "bash",
+ "bat",
+ "version",
+ "thank",
+ "pause",
+ "download",
+ "installdxvk",
+ "createbotton",
+ "reg",
+ "enabledopengl",
+ "disbledopengl",
+ "winecfg",
+ "winver",
+ "changeversion",
+ "stopdll"
+ ]
+
+ def __init__(self, commandString: str) -> None:
+ self.commandString = commandString
+
+ # 解析器
+ # 命令字符串转可供解析的列表
+ def GetCommandList(self) -> list:
+ shellList = []
+ shellFirstShell = self.commandString.split("\n")
+ # 转换成可以执行的数组
+ for l in range(0, len(shellFirstShell)):
+ i = shellFirstShell[l]
+ # 判断有没有注释
+ if "#" in i:
+ # 忽略注释
+ i = i[:i.index("#")]
+ # 删除前后空格
+ i = i.strip()
+ # 如果是空行
+ if i == "":
+ # 忽略此行,此行不做处理
+ continue
+ # 空格转义
+ i = i.replace("\\ ", "@Space@")
+ # 解析
+ i = i.split()
+ # 判断是否为合法的参数,否则提示并忽略
+ if not i[0] in self.commandList and i[0][0] != "(":
+ print(f"行{l + 1}命令{i[0]}不存在,忽略")
+ programEnv[9][1] = "-2"
+ continue
+ if programEnv[2][1] == "0" and i[0] in self.dangerCommand:
+ print(f"行{l + 1}命令{i[0]}目前解析器不允许运行,忽略")
+ print("如果需要运行,可以在配置面板开启“允许修改系统”选项(针对GUI用户)")
+ print("或添加参数 --system(终端调用运行用户)")
+ programEnv[9][1] = "-1"
+ continue
+ rightList = []
+ for k in i:
+ # 处理符号转义
+ rightList.append(k.replace("@Space@", " ").replace("\\n", "\n").replace("\\r", "\r"))
+ shellList.append(rightList)
+ return shellList
+
+ # 运行器
+ class Run():
+ close = False
+ programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
+ def Exit(self):
+ self.close = True
+ return 0
+
+ def InstallDll(self) -> int:
+ import InstallDll
+ # 如果是数字
+ number = False
+ try:
+ int(self.command[1])
+ number = True
+ except:
+ pass
+ if number:
+ return InstallDll.Download(self.wineBottonPath, InstallDll.GetNameByNumber(int(self.command[1])), InstallDll.GetUrlByNumber(int(self.command[1])), self.wine)
+ return InstallDll.Download(self.wineBottonPath, self.command[1], InstallDll.GetUrlByName(self.command[1]), self.wine)
+
+ def InstallDxvk(self):
+ if not os.path.exists(f"{programPath}/dxvk"):
+ if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
+ print("错误:无法解压资源")
+ return 1
+ os.remove(f"{programPath}/dxvk.7z")
+ return os.system(f"env 'WINE={self.wine}' 'WINE64={self.wine}' 'WINEPREFIX={self.wineBottonPath}' bash '{programPath}/dxvk/auto.sh' install")
+
+ def Thank(self) -> int:
+ for i in information["Thank"]:
+ print(i)
+ return 0
+
+ def InstallFont(self) -> int:
+ import InstallFont
+ return InstallFont.Download(self.wineBottonPath, int(self.command[1]))
+
+ def InstallMono(self) -> int:
+ return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' mono")
+
+ def InstallGecko(self) -> int:
+ return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' gecko")
+
+ def InstallVCPP(self) -> int:
+ import InstallVisualCPlusPlus
+ return InstallVisualCPlusPlus.Download(self.wineBottonPath, int(self.command[1]), self.wine)
+
+ def InstallNet(self) -> int:
+ import InstallNetFramework
+ return InstallNetFramework.Download(self.wineBottonPath, int(self.command[1]), self.wine)
+
+ def InstallMsxml(self) -> int:
+ import InstallMsxml
+ return InstallMsxml.Download(self.wineBottonPath, int(self.command[1]), self.wine)
+
+ def Info(self) -> int:
+ QtWidgets.QMessageBox.information(None, self.command[1], self.command[2])
+ return 0
+
+ def StopDll(self) -> int:
+ os.system(f"WINEPREFIX='{self.wineBottonPath}' '{self.wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(self.command[1])[0]} /f")
+
+ def CreateBotton(self):
+ self.command = ["bat", "exit"]
+ self.Bat()
+ return 0
+
+ def InstallSparkCoreFont(self):
+ if not os.system("which aptss"):
+ # 最新版本星火应用商店处理
+ os.system("pkexec bash aptss ssupdate")
+ return os.system("pkexec bash aptss install ms-core-fonts")
+ if not os.system("which ss-apt-fast"):
+ # 稍久的版本
+ os.system("pkexec ss-apt-fast update")
+ return os.system("pkexec bash ss-apt-fast install ms-core-fonts")
+ # 不知道什么版本的处理方法
+ if not os.system("which apt-fast"):
+ # 稍久的版本
+ os.system("pkexec apt-fast update")
+ return os.system("pkexec apt-fast install ms-core-fonts")
+ os.system("pkexec apt update")
+ return os.system("pkexec apt install ms-core-fonts")
+
+ def Echo(self) -> int:
+ del self.command[0]
+ print(" ".join(self.command))
+ return 0
+
+ def Warning(self):
+ QtWidgets.QMessageBox.warning(None, self.command[1], self.command[2])
+ return 0
+
+ def Error(self):
+ QtWidgets.QMessageBox.critical(None, self.command[1], self.command[2])
+ return 0
+
+ def Bash(self):
+ command = ""
+ for i in self.command[1:]:
+ command += f"'{i}' "
+ return os.system(command)
+
+ def Bat(self) -> int:
+ command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)"]
+ for i in programEnv:
+ for k in range(len(command)):
+ command[k] = command[k].replace(i[0], i[1])
+ for i in self.command[1:]:
+ command.append(i)
+ commandStr = command[0] + " "
+ for i in command[1:]:
+ commandStr += f"'{i}' "
+ print(commandStr)
+ return os.system(commandStr)
+
+ def Version(self):
+ print(f"版本:{version}")
+ print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
+ return 0
+
+ def Pause(self) -> int:
+ input("按回车键继续……")
+ return 0
+
+ def Download(self) -> int:
+ command = f"aria2c -x 16 -s 16 -c '{self.command[1]}' "
+ try:
+ command += f"-d '{self.command[2]}' "
+ command += f"-o '{self.command[3]}' "
+ except:
+ pass
+ return os.system(command)
+
+ def Reg(self) -> int:
+ self.command = ["bat", "regedit", "/s", self.command[1]]
+ return self.Bat()
+
+ def EnabledOpenGl(self) -> int:
+ self.command = ["reg", f"z:{programPath}/EnabledOpengl.reg"]
+ return self.Reg()
+
+ def DisbledOpenGl(self) -> int:
+ self.command = ["reg", f"z:{programPath}/DisabledOpengl.reg"]
+ return self.Reg()
+
+ def Winver(self):
+ self.command = ["bat", "winver"]
+ return self.Bat()
+
+ def Winecfg(self):
+ self.command = ["bat", "winecfg"]
+ return self.Bat()
+
+ def ChangeVersion(self):
+ # 判断是否为正确的版本
+ if not os.path.exists(f"{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"):
+ print("错误:您选择的版本错误,目前只支持以下版本")
+ for i in os.listdir(f"{programPath}/ChangeWineBottonVersion"):
+ print(i.replace(".reg", ""), end=" ")
+ print()
+ return 1
+ self.command = ["reg", f"z:/{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"]
+ return self.Reg()
+
+ # 可以运行的命令的映射关系
+ # 可以被使用的命令的映射
+ commandList = {
+ "installdll": InstallDll,
+ "installfont": InstallFont,
+ "installsparkcorefont": InstallSparkCoreFont,
+ "installmono": InstallMono,
+ "installgecko": InstallGecko,
+ "installvcpp": InstallVCPP,
+ "installnet": InstallNet,
+ "installmsxml": InstallMsxml,
+ "echo": Echo,
+ "info": Info,
+ "warning": Warning,
+ "error": Error,
+ "exit": Exit,
+ "bash": Bash,
+ "bat": Bat,
+ "version": Version,
+ "thank": Thank,
+ "pause": Pause,
+ "download": Download,
+ "installdxvk": InstallDxvk,
+ "createbotton": CreateBotton,
+ "reg": Reg,
+ "enabledopengl": EnabledOpenGl,
+ "disbledopengl": DisbledOpenGl,
+ "winecfg": Winecfg,
+ "winver": Winver,
+ "changeversion": ChangeVersion,
+ "stopdll": StopDll
+ }
+
+ # 参数数列表
+ commandInfo = {
+ "installdll": [1],
+ "installfont": [1],
+ "installsparkcorefont": [0],
+ "installmono": [0],
+ "installgecko": [0],
+ "installvcpp": [1],
+ "installnet": [1],
+ "installmsxml": [1],
+ "echo": [1],
+ "info": [2],
+ "warning": [2],
+ "error": [2],
+ "exit": [0],
+ "bash": [1],
+ "bat": [1],
+ "version": [0],
+ "thank": [0],
+ "pause": [0],
+ "download": [1],
+ "installdxvk": [0],
+ "createbotton": [0],
+ "reg": [1],
+ "enabledopengl": [0],
+ "disbledopengl": [0],
+ "winecfg": [0],
+ "winver": [0],
+ "changeversion": [1],
+ "stopdll": [1]
+ }
+
+ # 解析
+ def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
+ self.wineBottonPath = wineBottonPath
+ self.wine = wine
+ for i in command:
+ self.command = i
+ # 变量解析
+ if self.command[0][0] == "(" and "=" in self.command[0]:
+ env = i[0][: i[0].index("=")]
+ value = i[0][i[0].index("=") + 1:]
+ # 判断是不是只读变量
+ if env in readOnlyEnv:
+ print(f"运行命令{' '.join(self.command)}出现错误")
+ print(f"变量 {env} 只读,无法修改,忽略")
+ continue
+ change = False
+ for k in range(len(programEnv)):
+ # 修改变量
+ if env == programEnv[k][0]:
+ programEnv[k][1] = value
+ change = True
+ break
+ if not change:
+ # 添加变量
+ programEnv.append([f"{env}", value])
+ continue
+ # 正常命令解析
+ if len(i) -1 < self.commandInfo[i[0]][0]:
+ print("参数不足")
+ programEnv[9][1] = "-3"
+ continue
+ # 替换环境变量
+ for a in range(1, len(i)):
+ for b in programEnv:
+ if b[0] in i[a]:
+ i[a] = i[a].replace(b[0], b[1])
+ commandReturn = self.commandList[i[0]](self)
+ if commandReturn:
+ print(f"运行命令{' '.join(self.command)}出现错误")
+ programEnv[9][1] = str(commandReturn)
+ if self.close:
+ break
+
+if __name__ == "__main__":
+ app = QtWidgets.QApplication(sys.argv)
+ optionAll = 0
+ if "--system" in sys.argv:
+ programEnv[2][1] = "1"
+ optionAll += 1
+ if os.getenv("WINE") != None:
+ programEnv[1][1] = os.getenv("WINE")
+ if os.getenv("WINEPREFIX") != None:
+ programEnv[0][1] = os.getenv("WINEPREFIX")
+ if len(sys.argv) - optionAll < 2:
+ print("Wine 运行器自动配置文件解析器交互环境")
+ print(f"版本:{version}")
+ print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
+ print("--------------------------------------------------------------")
+ while True:
+ commandLine = input(">")
+ if commandLine == "exit":
+ break
+ com = Command(commandLine)
+ com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
+ exit()
+ # 读取文件
+ try:
+ file = open(sys.argv[1], "r")
+ com = Command(file.read())
+ file.close()
+ except:
+ print("错误:无法读取该文件,无法继续")
+ sys.exit(1)
+ com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallDll.py b/deb/opt/apps/deepin-wine-runner/InstallDll.py
new file mode 100755
index 0000000..b299773
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/InstallDll.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
+import os
+import sys
+import json
+import traceback
+import requests
+# 获取云列表
+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列表获取成功!")
+
+def GetUrlByNumber(dllID: int) -> str:
+ dllName = lists[dllID][0]
+ return f"{url}/{lists[int(dllID)][1]}/{lists[int(dllID)][2]}/{lists[int(dllID)][0]}"
+
+def GetNameByNumber(dllID: int) -> str:
+ return lists[dllID][0]
+
+def GetUrlByName(dllName: str):
+ for i in range(0, len(lists)):
+ if dllName == lists[i][0]:
+ return f"{url}/{lists[i][1]}/{lists[i][2]}/{lists[i][0]}"
+
+def Download(wineBotton, dllName, urlPart, wine: str) -> bool:
+ try:
+ os.remove(f"{wineBotton}/drive_c/windows/system32/{dllName}")
+ except:
+ pass
+ os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'")
+ os.system(f"WINEPREFIX='{wineBotton}' '{wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f")
+ return 0
+
+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]
+ wine = sys.argv[2]
+ 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()
+ # 获取用户希望安装的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 = GetUrlByNumber(int(dllName))
+ 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 Download(wineBotton, dllName, urlPart, wine):
+ print("下载失败!请重试")
diff --git a/deb/opt/apps/deepin-wine-runner/InstallFont.py b/deb/opt/apps/deepin-wine-runner/InstallFont.py
index 14eaa92..bb94430 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallFont.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallFont.py
@@ -1,7 +1,34 @@
#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
import os
import sys
+import json
import shutil
+import requests
+homePath = os.path.expanduser('~')
+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 有问题)"],
+ ["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"],
+ ["msyh.ttc", "https://gitlink.org.cn/api/attachments/392182", "msyh.ttc", "msyh.ttc"],
+ ["msyhl.ttc", "https://gitlink.org.cn/api/attachments/392184", "msyhl.ttc", "msyhl.ttc"],
+ ["msyhbd.ttc", "https://gitlink.org.cn/api/attachments/392183", "msyhbd.ttc", "msyhbd.ttc"]
+]
+def Download(wineBotton: str, id: int) -> int:
+ return os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/Fonts/{fontList[id][2]}' -o '{fontList[id][0]}' \"{fontList[id][1]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:
@@ -15,8 +42,6 @@ if __name__ == "__main__":
print("XXX 参数一")
print("参数一为需要安装的容器")
sys.exit()
-
- homePath = os.path.expanduser('~')
while True:
os.system("clear")
print('''
@@ -31,14 +56,7 @@ if __name__ == "__main__":
if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器,无法继续,按回车键退出")
exit()
- fontList = [
- ["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"],
- ["simsunb.ttf", "https://gitlink.org.cn/api/attachments/392180", "simsunb.ttf", "simsunb.ttf"],
- ["msyh.ttc", "https://gitlink.org.cn/api/attachments/392182", "msyh.ttc", "msyh.ttc"],
- ["msyhl.ttc", "https://gitlink.org.cn/api/attachments/392184", "msyhl.ttc", "msyhl.ttc"],
- ["msyhbd.ttc", "https://gitlink.org.cn/api/attachments/392183", "msyhbd.ttc", "msyhbd.ttc"]
- ]
+
for i in range(0, len(fontList)):
print(f"{i} {fontList[i][3]}")
while True:
diff --git a/deb/opt/apps/deepin-wine-runner/InstallMono.py b/deb/opt/apps/deepin-wine-runner/InstallMono.py
index d9ecef2..fd9feb7 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallMono.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallMono.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月06日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
@@ -12,6 +12,7 @@
#################
import os
import sys
+import traceback
import pyquery
if "--help" in sys.argv:
@@ -47,6 +48,10 @@ else:
''')
homePath = os.path.expanduser('~')
+try:
+ exitInputShow = int(os.getenv("ENTERNOTSHOW"))
+except:
+ exitInputShow = True
try:
# 获取最新版本的版本号
programVersionList = pyquery.PyQuery(url=f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/")
@@ -54,13 +59,15 @@ except:
print("无法连接下载服务器,将使用本地缓存")
if not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi") or not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt"):
print("无本地缓存数据,无法进行、结束")
- input("按回车键退出")
+ if exitInputShow:
+ input("按回车键退出")
exit()
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "r")
version = file.read().replace("\n", "")
print("安装版本:", version)
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
- input("安装结束,按回车键退出")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
+ if exitInputShow:
+ input("安装结束,按回车键退出")
exit()
programVersion = programVersionList("a:last-child").attr.href
# 获取最新版本安装包的URL
@@ -91,8 +98,9 @@ if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.m
print("缓存版本:", version.replace("/", ""))
print("已经缓存,使用本地版本")
file.close()
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
- input("安装结束,按回车键退出")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
+ if exitInputShow:
+ input("安装结束,按回车键退出")
exit()
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "w+")
@@ -101,7 +109,7 @@ os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.
os.system("mkdir -p /tmp/winegeckomonoinstall")
os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}\" -o install.msi \"{programDownloadUrl}\"")
print("开始安装")
-os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
+os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
try:
if sys.argv[4] == "1":
print("写入缓存")
@@ -114,4 +122,5 @@ except:
print("写入缓存")
file.write(programVersion)
file.close()
-input("安装结束,按回车键退出")
\ No newline at end of file
+if exitInputShow:
+ input("安装结束,按回车键退出")
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallMsxml.py b/deb/opt/apps/deepin-wine-runner/InstallMsxml.py
index 3638856..49998d1 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallMsxml.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallMsxml.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月06日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
@@ -12,21 +12,36 @@
#################
import os
import sys
+import json
+import requests
+try:
+ msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json").text)
+except:
+ 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"]
+ ]
-if "--help" in sys.argv:
- print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
- print("版本:1.0.0")
- print("本程序可以更方便的在 wine 容器中安装 MSXML")
- sys.exit()
-if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
- print("您未指定需要安装 MSXML 的容器和使用的 wine,无法继续")
- print("参数:")
- print("XXX 参数一 参数二 参数三(可略)")
- print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
- sys.exit()
+def Download(wineBotton: str, id: int, wine: str):
+ os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-msxml/\" -o \"{msxmlList[id][2]}\" \"{msxmlList[id][1]}\"")
+ os.system(f"WINEPREFIX='{wineBotton}' '{wine}' msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"")
-homePath = os.path.expanduser('~')
-print('''
+if __name__ == "__main__":
+ if "--help" in sys.argv:
+ print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
+ print("版本:1.0.0")
+ print("本程序可以更方便的在 wine 容器中安装 MSXML")
+ sys.exit()
+ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
+ print("您未指定需要安装 MSXML 的容器和使用的 wine,无法继续")
+ print("参数:")
+ print("XXX 参数一 参数二 参数三(可略)")
+ print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
+ sys.exit()
+
+ homePath = os.path.expanduser('~')
+ print('''
m m mmmm m m m m m
## ## #" " # # ## ## #
# ## # "#mmm ## # ## # #
@@ -35,44 +50,40 @@ print('''
''')
-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 进行安装(不保证能正常安装运行)")
-for i in range(0, len(msxmlList)):
- print(f"{i}、{msxmlList[i][0]}")
-while True:
- try:
- choose = input("请输入要选择要安装的 MSXML(输入“exit”退出):")
- if choose.lower() == "exit":
+
+ print("请选择以下的 MSXML 进行安装(不保证能正常安装运行)")
+ for i in range(0, len(msxmlList)):
+ print(f"{i}、{msxmlList[i][0]}")
+ while True:
+ try:
+ choose = input("请输入要选择要安装的 MSXML(输入“exit”退出):")
+ if choose.lower() == "exit":
+ break
+ choose = int(choose)
+ except:
+ print("输入错误,请重新输入")
+ continue
+ if 0 <= choose and choose < len(msxmlList):
break
- choose = int(choose)
+ try:
+ if choose.lower() == "exit":
+ exit()
except:
- print("输入错误,请重新输入")
- continue
- if 0 <= choose and choose < len(msxmlList):
- break
-try:
- if choose.lower() == "exit":
+ pass
+ print(f"您选择了 {msxmlList[choose][0]}")
+ if len(sys.argv) <= 3:
+ choice = True
+ else:
+ choice = (sys.argv[3] == "1")
+ if os.path.exists(f"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}") and choice:
+ print("已经缓存,使用本地版本")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
+ input("安装结束,按回车键退出")
exit()
-except:
- pass
-print(f"您选择了 {msxmlList[choose][0]}")
-if len(sys.argv) <= 3:
- choice = True
-else:
- choice = (sys.argv[3] == "1")
-if os.path.exists(f"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}") and choice:
- print("已经缓存,使用本地版本")
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
- input("安装结束,按回车键退出")
- exit()
-print("开始下载")
-os.system(f"rm -rfv \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
-os.system(f"mkdir -p \"{homePath}/.config/deepin-wine-runner/MSXML/\"")
-os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.config/deepin-wine-runner/MSXML\" -o \"{msxmlList[choose][2]}\" \"{msxmlList[choose][1]}\"")
-print("开始安装")
-os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
-input("安装结束,按回车键退出")
\ No newline at end of file
+ print("开始下载")
+ os.system(f"rm -rfv \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
+ os.system(f"mkdir -p \"{homePath}/.config/deepin-wine-runner/MSXML/\"")
+ os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.config/deepin-wine-runner/MSXML\" -o \"{msxmlList[choose][2]}\" \"{msxmlList[choose][1]}\"")
+ print("开始安装")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
+ input("安装结束,按回车键退出")
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py b/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py
index ba98873..8a29b65 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallNetFramework.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月01日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
@@ -12,21 +12,46 @@
#################
import os
import sys
+import json
+import requests
+try:
+ netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/list.json").text)
+except:
+ netList = [
+ ["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.5 Web Installer", "https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.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.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.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.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.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.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"]
+ ]
-if "--help" in sys.argv:
- print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
- print("版本:1.0.0")
- print("本程序可以更方便的在 wine 容器中安装 .net framework")
- sys.exit()
-if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
- print("您未指定需要安装 .net framework 的容器和使用的 wine,无法继续")
- print("参数:")
- print("XXX 参数一 参数二 参数三(可略)")
- print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
- sys.exit()
+def Download(wineBotton: str, id: int, wine: str):
+ programName = os.path.split(netList[id][1])[1]
+ os.system(f"aria2c -x 16 -s 16 -d \"/tmp/deepin-wine-runner-net\" -o \"{programName}\" \"{netList[id][1]}\"")
+ os.system(f"WINEPREFIX='{wineBotton}' '{wine}' '/tmp/deepin-wine-runner-net/{programName}'")
-homePath = os.path.expanduser('~')
-print('''
+if __name__ == "__main__":
+ if "--help" in sys.argv:
+ print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
+ print("版本:1.0.0")
+ print("本程序可以更方便的在 wine 容器中安装 .net framework")
+ sys.exit()
+ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
+ print("您未指定需要安装 .net framework 的容器和使用的 wine,无法继续")
+ print("参数:")
+ print("XXX 参数一 参数二 参数三(可略)")
+ print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
+ sys.exit()
+
+ homePath = os.path.expanduser('~')
+ print('''
mm m mmmmmmmmmmmmm
#"m # # #
# #m # #mmmmm #
@@ -35,54 +60,40 @@ print('''
''')
-netList = [
- ["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.5 Web Installer", "https://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.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.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.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.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.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.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 进行安装(不保证能正常安装运行)")
-for i in range(0, len(netList)):
- print(f"{i} .net framework {netList[i][0]}")
-while True:
- try:
- choose = input("请输入要选择的 .net framework 版本(输入“exit”退出):").lower()
- if choose == "exit":
+ print("请选择以下的 .net framework 进行安装(不保证能正常安装运行)")
+ for i in range(0, len(netList)):
+ print(f"{i} .net framework {netList[i][0]}")
+ while True:
+ try:
+ choose = input("请输入要选择的 .net framework 版本(输入“exit”退出):").lower()
+ if choose == "exit":
+ break
+ choose = int(choose)
+ except:
+ print("输入错误,请重新输入")
+ continue
+ if 0 <= choose and choose < len(netList):
break
- choose = int(choose)
- except:
- print("输入错误,请重新输入")
- continue
- if 0 <= choose and choose < len(netList):
- break
-if choose == "exit":
- exit()
-if len(sys.argv) <= 3:
- choice = True
-else:
- choice = (sys.argv[3] == "1")
-print(f"您选择了 .net framework {netList[choose][0]}")
-print(f"如果是 Offline Installer 版本,提示需要连接互联网,其实是不需要的,断网也可以安装")
-print(f"如果 Offline Installer 版本连接网络时安装失败,提示无法连接服务器或连接超时,可以尝试下载完安装包加载过程中断网以便断网安装")
-print(f"一般建议 Offline Installer 版本在下载完 exe 安装程序后在加载过程中断网以便提高安装速度")
-programName = os.path.split(netList[choose][1])[1]
-if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/.netframework/{programName}") and choice:
- print("已经缓存,使用本地版本")
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
- input("安装结束,按回车键退出")
- exit()
-print("开始下载")
-os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
-os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/.netframework'")
-os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/.netframework\" -o \"{programName}\" \"{netList[choose][1]}\"")
-os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
-input("安装结束,按回车键退出")
\ No newline at end of file
+ if choose == "exit":
+ exit()
+ if len(sys.argv) <= 3:
+ choice = True
+ else:
+ choice = (sys.argv[3] == "1")
+ print(f"您选择了 .net framework {netList[choose][0]}")
+ print(f"如果是 Offline Installer 版本,提示需要连接互联网,其实是不需要的,断网也可以安装")
+ print(f"如果 Offline Installer 版本连接网络时安装失败,提示无法连接服务器或连接超时,可以尝试下载完安装包加载过程中断网以便断网安装")
+ print(f"一般建议 Offline Installer 版本在下载完 exe 安装程序后在加载过程中断网以便提高安装速度")
+ programName = os.path.split(netList[choose][1])[1]
+ if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/.netframework/{programName}") and choice:
+ print("已经缓存,使用本地版本")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
+ input("安装结束,按回车键退出")
+ exit()
+ print("开始下载")
+ os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
+ os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/.netframework'")
+ os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.cache/deepin-wine-runner/.netframework\" -o \"{programName}\" \"{netList[choose][1]}\"")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/.netframework/{programName}'")
+ input("安装结束,按回车键退出")
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh b/deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
index 8347126..7c2a986 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
+++ b/deb/opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
@@ -1,4 +1,15 @@
#!/bin/bash
+# 使用系统默认的 bash 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
echo
echo 'm m " m m mmmm '
echo '# # # mmm m mm mmm # # m" "m'
@@ -60,6 +71,10 @@ which ss-apt-fast > /dev/null
if [ $? == 0 ]; then
apt="ss-apt-fast"
fi
+which aptss > /dev/null
+if [ $? == 0 ]; then
+ apt="aptss"
+fi
# 添加源
if [ $system = "0" ]; then
${debianSource[$systemVersion]}
diff --git a/deb/opt/apps/deepin-wine-runner/InstallOther.py b/deb/opt/apps/deepin-wine-runner/InstallOther.py
index a330f1f..79840f2 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallOther.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallOther.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月01日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
@@ -12,6 +12,8 @@
#################
import os
import sys
+import json
+import requests
if "--help" in sys.argv:
print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
@@ -35,10 +37,13 @@ print('''
''')
-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"]
-]
+try:
+ msxmlList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/list.json").text)
+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("请选择以下的应用进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)):
print(f"{i}、{msxmlList[i][0]}")
@@ -61,11 +66,11 @@ print(f"您选择了{msxmlList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}") and choice:
print("已经缓存,使用本地版本")
if msxmlList[choose][2] == "msi":
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()
if msxmlList[choose][2] == "exe":
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()
print("开始下载")
@@ -74,12 +79,12 @@ os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/other'")
if msxmlList[choose][2] == "msi":
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"")
print("开始安装")
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' msiexec /i '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
print("安装结束")
sys.exit()
if msxmlList[choose][2] == "exe":
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/other' -o '{msxmlList[choose][3]}' \"{msxmlList[choose][1]}\"")
print("开始安装")
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
input("安装结束,按回车键退出")
sys.exit()
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py b/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py
index 4877a11..ace14b6 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallVisualCPlusPlus.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月01日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
@@ -12,21 +12,48 @@
#################
import os
import sys
+import json
+import requests
+try:
+ netList = json.loads(requests.get("https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json").text)
+except:
+ 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"],
+ ["2008 (VC++ 9.0) SP1 (不再支持) X86", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_x86.exe"],
+ ["2008 (VC++ 9.0) SP1 (不再支持) X64", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe", "vcredist08_x86.exe"],
+ ["2010 (VC++ 10.0) SP1 (不再支持) X86", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x86.exe"],
+ ["2010 (VC++ 10.0) SP1 (不再支持) X64", "https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe", "vcredist10_x64.exe"],
+ ["2012 (VC++ 11.0) Update 4 X86", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe", "vcredist12_x86.exe"],
+ ["2012 (VC++ 11.0) Update 4 X64", "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe", "vcredist12_x64.exe"],
+ ["2013 (VC++ 12.0) X86", "https://aka.ms/highdpimfc2013x86enu", "vcredist13_x86.exe"],
+ ["2013 (VC++ 12.0) X64", "https://aka.ms/highdpimfc2013x64enu", "vcredist13_x64.exe"],
+ ["2015、2017、2019 和 2022 X86", "https://aka.ms/vs/17/release/vc_redist.x86.exe", "vc_redist15.x86.exe"],
+ ["2015、2017、2019 和 2022 X64", "https://aka.ms/vs/17/release/vc_redist.x64.exe", "vc_redist15.x64.exe"],
+ ["2015、2017、2019 和 2022 ARM64", "https://aka.ms/vs/17/release/vc_redist.arm64.exe", "vc_redist15.arm64.exe"]
+ ]
+def Download(wineBotton: str, id: int, wine: str) -> int:
+ try:
+ os.remove(f"/tmp/deepin-wine-runner-vcpp/{netList[id][2]}")
+ except:
+ pass
+ os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-vcpp' -o '{netList[id][2]}' \"{netList[id][1]}\"")
+ os.system(f"WINEPREFIX='{wineBotton}' '{wine}' '/tmp/deepin-wine-runner-vcpp/{netList[id][2]}'")
-if "--help" in sys.argv:
- print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
- print("版本:1.0.0")
- print("本程序可以更方便的在 wine 容器中安装 Visual Studio C++")
- sys.exit()
-if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
- print("您未指定需要安装 Visual Studio C++ 的容器和使用的 wine,无法继续")
- print("参数:")
- print("XXX 参数一 参数二 参数三(可略)")
- print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
- sys.exit()
+if __name__ == "__main__":
+ if "--help" in sys.argv:
+ print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
+ print("版本:1.0.0")
+ print("本程序可以更方便的在 wine 容器中安装 Visual Studio C++")
+ sys.exit()
+ if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
+ print("您未指定需要安装 Visual Studio C++ 的容器和使用的 wine,无法继续")
+ print("参数:")
+ print("XXX 参数一 参数二 参数三(可略)")
+ print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
+ sys.exit()
-homePath = os.path.expanduser('~')
-print('''
+ homePath = os.path.expanduser('~')
+ print('''
m m mmm
"m m" m" " m m
# # # # #
@@ -35,39 +62,32 @@ print('''
''')
-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"],
- ["2008 (VC++ 9.0) SP1 (不再支持) ", "https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe", "vcredist08_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++ 进行安装(不保证能正常安装运行)")
-for i in range(0, len(netList)):
- print(f"{i} Visual Studio C++ {netList[i][0]}")
-while True:
- try:
- choose = input("请输入要选择的 Visual Studio C++ 版本(输入“exit”退出):").lower()
- if choose == "exit":
+
+ print("请选择以下的 Visual Studio C++ 进行安装(不保证能正常安装运行)")
+ for i in range(0, len(netList)):
+ print(f"{i} Visual Studio C++ {netList[i][0]}")
+ while True:
+ try:
+ choose = input("请输入要选择的 Visual Studio C++ 版本(输入“exit”退出):").lower()
+ if choose == "exit":
+ break
+ choose = int(choose)
+ except:
+ print("输入错误,请重新输入")
+ continue
+ if 0 <= choose and choose < len(netList):
break
- choose = int(choose)
- except:
- print("输入错误,请重新输入")
- continue
- if 0 <= choose and choose < len(netList):
- break
-if choose == "exit":
- exit()
-print(f"您选择了 Visual Studio C++ {netList[choose][0]}")
-if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}"):
- print("已经缓存,使用本地版本")
- os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
- input("安装结束,按回车键退出")
- exit()
-print("开始下载")
-os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
-os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vcpp'")
-os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vcpp' -o '{netList[choose][2]}' \"{netList[choose][1]}\"")
-os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
-input("安装结束,按回车键退出")
\ No newline at end of file
+ if choose == "exit":
+ exit()
+ print(f"您选择了 Visual Studio C++ {netList[choose][0]}")
+ if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}"):
+ print("已经缓存,使用本地版本")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
+ input("安装结束,按回车键退出")
+ exit()
+ print("开始下载")
+ os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
+ os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vcpp'")
+ os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vcpp' -o '{netList[choose][2]}' \"{netList[choose][1]}\"")
+ os.system(f"WINEPREFIX='{sys.argv[1]}' '{sys.argv[2]}' '{homePath}/.cache/deepin-wine-runner/vcpp/{netList[choose][2]}'")
+ input("安装结束,按回车键退出")
\ No newline at end of file
diff --git a/deb/opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py b/deb/opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py
index 2f81807..fb77be1 100755
--- a/deb/opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py
+++ b/deb/opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py
@@ -2,8 +2,8 @@
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
-# 版本:1.8.0
-# 更新时间:2022年08月02日
+# 版本:2.1.0
+# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
diff --git a/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py b/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py
new file mode 100755
index 0000000..b299773
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python3
+# 使用系统默认的 python3 运行
+###########################################################################################
+# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
+# 版本:2.1.0
+# 更新时间:2022年08月25日
+# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
+# 基于 Python3 构建
+###########################################################################################
+#################
+# 引入所需的库
+#################
+import os
+import sys
+import json
+import traceback
+import requests
+# 获取云列表
+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列表获取成功!")
+
+def GetUrlByNumber(dllID: int) -> str:
+ dllName = lists[dllID][0]
+ return f"{url}/{lists[int(dllID)][1]}/{lists[int(dllID)][2]}/{lists[int(dllID)][0]}"
+
+def GetNameByNumber(dllID: int) -> str:
+ return lists[dllID][0]
+
+def GetUrlByName(dllName: str):
+ for i in range(0, len(lists)):
+ if dllName == lists[i][0]:
+ return f"{url}/{lists[i][1]}/{lists[i][2]}/{lists[i][0]}"
+
+def Download(wineBotton, dllName, urlPart, wine: str) -> bool:
+ try:
+ os.remove(f"{wineBotton}/drive_c/windows/system32/{dllName}")
+ except:
+ pass
+ os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/system32' -o '{dllName}' '{urlPart}'")
+ os.system(f"WINEPREFIX='{wineBotton}' '{wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f")
+ return 0
+
+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]
+ wine = sys.argv[2]
+ 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()
+ # 获取用户希望安装的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 = GetUrlByNumber(int(dllName))
+ 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 Download(wineBotton, dllName, urlPart, wine):
+ print("下载失败!请重试")
diff --git a/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py
new file mode 100644
index 0000000..1418666
--- /dev/null
+++ b/deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'AutoConfig.ui'
+#
+# Created by: PyQt5 UI code generator 5.11.3
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(800, 600)
+ self.centralwidget = QtWidgets.QWidget(MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.searchTips = QtWidgets.QLabel(self.centralwidget)
+ self.searchTips.setObjectName("searchTips")
+ self.horizontalLayout.addWidget(self.searchTips)
+ self.searchThings = QtWidgets.QLineEdit(self.centralwidget)
+ self.searchThings.setObjectName("searchThings")
+ self.horizontalLayout.addWidget(self.searchThings)
+ self.saerchBotton = QtWidgets.QPushButton(self.centralwidget)
+ self.saerchBotton.setObjectName("saerchBotton")
+ self.horizontalLayout.addWidget(self.saerchBotton)
+ self.verticalLayout_3.addLayout(self.horizontalLayout)
+ self.searchList = QtWidgets.QListView(self.centralwidget)
+ self.searchList.setObjectName("searchList")
+ self.verticalLayout_3.addWidget(self.searchList)
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.horizontalLayout_2.addItem(spacerItem)
+ self.runBotton = QtWidgets.QPushButton(self.centralwidget)
+ self.runBotton.setObjectName("runBotton")
+ self.horizontalLayout_2.addWidget(self.runBotton)
+ self.verticalLayout_3.addLayout(self.horizontalLayout_2)
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 36))
+ self.menubar.setObjectName("menubar")
+ self.menu = QtWidgets.QMenu(self.menubar)
+ self.menu.setObjectName("menu")
+ MainWindow.setMenuBar(self.menubar)
+ self.about = QtWidgets.QAction(MainWindow)
+ self.about.setObjectName("about")
+ self.exitProgram = QtWidgets.QAction(MainWindow)
+ self.exitProgram.setObjectName("exitProgram")
+ self.help = QtWidgets.QAction(MainWindow)
+ self.help.setObjectName("help")
+ self.openFile = QtWidgets.QAction(MainWindow)
+ self.openFile.setObjectName("openFile")
+ self.menu.addAction(self.openFile)
+ self.menu.addSeparator()
+ self.menu.addAction(self.exitProgram)
+ self.menubar.addAction(self.menu.menuAction())
+
+ self.retranslateUi(MainWindow)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "自动部署脚本"))
+ self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
+ self.saerchBotton.setText(_translate("MainWindow", "搜索"))
+ self.runBotton.setText(_translate("MainWindow", "部署此方案"))
+ self.menu.setTitle(_translate("MainWindow", "程序"))
+ self.about.setText(_translate("MainWindow", "关于"))
+ self.exitProgram.setText(_translate("MainWindow", "退出程序"))
+ self.help.setText(_translate("MainWindow", "帮助"))
+ self.openFile.setText(_translate("MainWindow", "打开本地部署脚本"))
+
diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
index e9297d2..86d680b 100755
--- a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
+++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner
@@ -26,8 +26,6 @@ import urllib.parse as parse
import PyQt5.QtGui as QtGui
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
-# 方便一些,单独把 tr 抽出来
-from PyQt5.QtCore import QObject
###################
# 程序所需事件
###################
@@ -122,6 +120,7 @@ def DisableButton(things):
e1.setDisabled(things)
e2.setDisabled(things)
o1.setDisabled(things)
+ miniAppStore.setDisabled(things)
#winetricksOpen.configure(state=a[things])
getProgramIcon.setDisabled(things)
uninstallProgram.setDisabled(things)
@@ -516,6 +515,20 @@ def FontAppStore():
wineBottonPath = e1.currentText()
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}' '{wine[o1.currentText()]}' {int(setting['RuntimeCache'])}")
+
+def WineBottonAutoConfig():
+ if e1.currentText() == "":
+ wineBottonPath = setting["DefultBotton"]
+ else:
+ wineBottonPath = e1.currentText()
+ os.system(f"'{programPath}/AutoConfig.py' '{wine[o1.currentText()]}' '{wineBottonPath}'")
+
def InstallMonoGecko(program):
if e1.currentText() == "":
wineBottonPath = setting["DefultBotton"]
@@ -556,7 +569,7 @@ def InstallDXVK():
wineBottonPath = e1.currentText()
process = QtCore.QProcess()
process.startDetached(f"{programPath}/launch.sh", ["deepin-terminal", "-e",
- "env", f"WINE={wine[o1.currentText()]}", f"WINE64={wine[o1.currentText()]}", f"WINEPREFIX={wineBottonPath}",
+ "env", f"WINE={wine[o1.currentText()]}", f"WINE64={wine[o1.currentText()]}", f"WINEPREFIX={wineBottonPath}", "bash",
f"{programPath}/dxvk/setup_dxvk.sh", "install"])
def UninstallDXVK():
@@ -647,7 +660,15 @@ def ThankWindow():
about_this_program()
def InstallWineFont():
- threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'echo 这些字体来自星火应用商店 && sudo ss-apt-fast install ms-core-fonts winfonts -y' --keep-open"]).start()
+ # 筛选 apt
+ if not os.system("which aptss"):
+ threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'echo 这些字体来自星火应用商店 && sudo aptss install ms-core-fonts -y' --keep-open"]).start()
+ elif not os.system("which ss-apt-fast"):
+ threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'echo 这些字体来自星火应用商店 && sudo ss-apt-fast update && sudo ss-apt-fast install ms-core-fonts -y' --keep-open"]).start()
+ elif not os.system("which apt-fast"):
+ threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'echo 这些字体来自星火应用商店 && sudo apt-fast install ms-core-fonts -y' --keep-open"]).start()
+ else:
+ threading.Thread(target=os.system, args=[f"'{programPath}/launch.sh' deepin-terminal -C 'echo 这些字体来自星火应用商店 && sudo apt install ms-core-fonts -y' --keep-open"]).start()
def WineRunnerBugUpload():
threading.Thread(target=os.system, args=[f"'{programPath}/deepin-wine-runner-update-bug'"]).start()
@@ -932,6 +953,7 @@ class GetDllFromWindowsISO:
return
try:
shutil.copy(f"/tmp/wine-runner-getdll/i386/{choose[:-1]}_", f"{GetDllFromWindowsISO.wineBottonPath}/drive_c/windows/system32/{choose}")
+ os.system(f"WINEPREFIX='{GetDllFromWindowsISO.wineBottonPath}' '{wine[o1.currentText()]}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(choose)[0]} /d native /f")
QtWidgets.QMessageBox.information(GetDllFromWindowsISO.message, "提示", "提取成功!")
except:
traceback.print_exc()
@@ -1340,15 +1362,20 @@ exe路径\' 参数 \'
N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。
'''
updateThingsString = '''※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中
※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine(一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板
-※3、开始初步多语言支持
-4、修改错别字(图形话=>图形化)
-5、修复评分功能名称为空也可以上传评分的问题
-6、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
-7、支持删除所有由 Wine 创建的启动器快捷方式
+※3、开始初步多语言支持
+※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题
+※5、支持云端自动获取数据配置 Wine 容器
+※6、支持手动导入配置文件自动配置 Wine 容器
+※7、新增从云端下载 Dll 的功能
+※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题
+9、修改错别字(图形话=>图形化)
+10、修复评分功能名称为空也可以上传评分的问题
+11、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
+12、支持删除所有由 Wine 创建的启动器快捷方式
'''
for i in information["Thank"]:
thankText += f"{i}\n"
-updateTime = "2022年08月22日"
+updateTime = "2022年08月26日"
about = f'''关于
一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等
同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等
@@ -1494,6 +1521,9 @@ programManager.addWidget(button_r_6, 3, 4, 1, 1)
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())
programManager.addWidget(sparkWineSetting, 3, 6, 1, 1)
+wineAutoConfig = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "自动/手动配置 Wine 容器"))
+wineAutoConfig.clicked.connect(WineBottonAutoConfig)
+programManager.addWidget(wineAutoConfig, 3, 8, 1, 1)
# 权重
button5.setSizePolicy(size)
saveDesktopFileOnLauncher.setSizePolicy(size)
@@ -1575,6 +1605,7 @@ w4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除选择的 W
cleanBottonUOS = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
w5 = 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官方安装镜像)"))
updateGeek = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "从 Geek Uninstaller 官网升级程序"))
deleteDesktopIcon = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "删除所有 Wine 程序在启动器的快捷方式"))
@@ -1587,6 +1618,7 @@ wineOption.addSeparator()
wineOption.addAction(w5)
wineOption.addAction(w6)
wineOption.addSeparator()
+wineOption.addAction(getDllOnInternet)
wineOption.addAction(w7)
wineOption.addSeparator()
wineOption.addAction(updateGeek)
@@ -1652,6 +1684,7 @@ w4.triggered.connect(DeleteWineBotton)
cleanBottonUOS.triggered.connect(CleanWineBottonByUOS)
w5.triggered.connect(BuildExeDeb)
w6.triggered.connect(UOSPackageScript)
+getDllOnInternet.triggered.connect(GetDllFromInternet)
w7.triggered.connect(GetDllFromWindowsISO.ShowWindow)
updateGeek.triggered.connect(lambda: os.system(f"'{programPath}/launch.sh' deepin-terminal -C '\"{programPath}/UpdateGeek.sh\"' --keep-open"))
w8.triggered.connect(SetDeepinFileDialogDeepin)
@@ -1695,7 +1728,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/"))
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", "小提示"))
h3 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新内容"))
h4 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "谢明名单"))
@@ -1703,12 +1736,29 @@ h5 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "更新这个程
h6 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "反馈这个程序的建议和问题"))
h7 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "关于这个程序"))
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.addAction(h2)
help.addAction(h3)
help.addAction(h4)
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(h6)
help.addAction(h7)
@@ -1717,10 +1767,17 @@ help.addSeparator()
hm1 = help.addMenu(QtCore.QCoreApplication.translate("U", "更多生态适配应用"))
hm1_1 = QtWidgets.QAction(QtCore.QCoreApplication.translate("U", "运行 Android 应用:UEngine 运行器"))
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)
h3.triggered.connect(UpdateThings)
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)
h6.triggered.connect(WineRunnerBugUpload)
h7.triggered.connect(about_this_program)
@@ -1772,6 +1829,10 @@ if len(sys.argv) > 1 and sys.argv[1]:
e2.setEditText(sys.argv[1])
if not os.path.exists("/opt/durapps/spark-dwine-helper/spark-dwine-helper-settings/settings.sh"):
sparkWineSetting.setEnabled(False)
-#ProgramRunStatusShow.ShowWindow()
-#ProgramRunStatusUpload.ShowWindow()
+if o1.currentText() == "":
+ # 一个 Wine 都没有却用 Wine 的功能
+ # 还是要处理的,至少不会闪退
+ wine["没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"] = "没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用"
+ canUseWine.append("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
+ o1.addItem("没有识别到任何Wine,请在菜单栏“程序”安装Wine或安装任意Wine应用")
sys.exit(app.exec_())
diff --git a/deb/opt/apps/deepin-wine-runner/dxvk.7z b/deb/opt/apps/deepin-wine-runner/dxvk.7z
index 8c022edc7cadb5ea79e424674cf15e0f2dee8776..b1f483792bf899981139bb21f1ad94b6ac8238f8 100644
GIT binary patch
delta 2450
zcmW;Bc|6mP1IO`=F(D$!eU7=0=Dx)y3%Lp9D)*6N!e}C5PFo2+tpGsGNkN;6FxYc8!1B@IW)F^in#eVcYaNdHV9#QAJ9O0
z=FNuM>nQdfOOx3Tqwlc0W@0{beuO*scxM-WGWtrZ!S@wKYzibc@y?P`8ze@!!&xmE
zbFzdep^G7oZavqWa0^wPHk;`^&6bPa%wk5E3(+`D9n&(~u;P#`vU>mb!^
z^?^&O)r*(>qV$-27rxd_D*7+KqK>X_BH&Boaaq}BJY(j)V{|G&QSR`Jg
zxM$G&TRM21u7o1P`0Ert@-s%ng6SP5ulmai639`+DLdB6U{gxvs??S|;aT3gjbA
zOM)u6J8yDkWknOI-1Q1$>1q^kcOW*`JkY*h=G$J`t$eo))AU&taRLM6ZK&+yipjG$
zL7_Nh+i$^1mF=d|i7$0wD
zs~Sx*dvnA=KL3`tu4SewU)R!_%6DvebvuP`7b8sU3AAe6BMym5rwJasFz#FrWrq21
z$MetTFk#m-Nc)k2XN+1|n~vf|9Ou$;dm#P*oDjKV8|k2C&1JSEEJEC1t%=xHj5Zsb
z)GB7?Jeq9pnQ8hYyl+$;IO*{j;-Pi6RKV#MmJB=NrLO(1!3YIp%J!6fR(Gv!vt6hW>brxJcq}-t&~QuUgbVGLZlgdL#cqlAY
z>3LP#-3R*ybh5=9#WaMzwJkuA)(@CSo8h)BDmKW@X3^_8C@3tK8etJ)7P1~&TlHS8
zQdnG!-f!bO*sXlSM3sy9I~I$YqI`;BK)}BfPBl7CQHd3AyYO2!xS}dJ;$~Ewmjt6J
z#bG>nCgP8J%KC6|i7R@(KvYR+k+PIFzkgtoLhF<)xsdeI8bS1z`VvN0()=>rIE&Q2
zJ#Nu!&v|mfaBt$H{hQ?Upq7M$2a&Ej=iROrxiy;Y{4gxO#`Nf-zQ^tru`3o7Z0`De
zG7IM5Sl(Jql@n6qfn&c#id9Hj@+gh$sfZ4=n;(fJ<&SYULs`l`d>Rtgt88V>Q0|8#
zzBD~kX^7sV8OGn?=CB(-H>}O$;~{4)o$vXMaHlaFDOadHwNdRvWw|{LF;SBG^A=YZ
zMze}#kMdI#y_-;%Rju-_kgMS^W&x)YDdQ<=dX1|r_{dW04KB4hc4ts^NG;^R&RzNg
zHbRE+DZ_)AbD1#4LDVW{wXH7ZG@F=l7_qD_4ZFr>G+r4UrQu;4D9*BCb&PDPRU>a{
zSwQJ{wHrKE)9L1-jrQ>uhYWAyX=9~_aO<;J29~LOt
zLMa)j?>65L#`Oh4nD^oeFs;23F%q#cyId9^lpGhTI?tv1h}1G-81rf4(RdlIsh1UMhq250eEg^3iUxW$0Wj)s
z4F1{29b-F^PPetBA@USRaBriOlKhH8k6zSmnq=}GH%X=8z543iTpCtX%(hlG?47U=
zvA@xD8>0K5yd&+K!ci+j`|juurwrkg$-dKGQ)XN0>(*rp14FATRgiFWaJDb!WrME7
zT&13Ye3wkDL$@M>=Y^!A8~mw*guWK^i@kX%>#A~+2q6-BVnqt}`9o_V`@{;z@uG@J!|IhEI;m`4~k9O>9Yw|mazQ6GO$
zKK{7b_ye7so^bg=WhCoQaVjbWF97{%dC!YosV3Q1x3!@8`u%rli2-1ZKP&C&I^1Ch
zY4gcpMrCc=jw4S?v@+@uk%_BstSdW-Dxe}etZa!neDg@I<-xGBvu0r+*wua#t3MMK5@iRw?@?uK26GE7-0hl|~G
zd!>myUnn|e#Z#)77<5^P_es2Glqqz~AM~4&sj)EufdyJZt~lMd)jOEF
z#UW^ufS!(|WR=`l90j{pRs4Z(%^i^^>-y||W2Qi$^UO=x+$!KxcdbBBHZTY*$p{8B
VT?3r~f!LGYvx2|n)X_np{{aLme{cW*
delta 2393
zcmW;Bc|6mP1IO{nF=lR>doyP4D{@R!b5`VBO3Hn%zOK;0mbF!c=x|>RBXbWKUq?+s
z+!&@y?Xju>!7~QxJ%^*iXwsb}E$^#Xpwm0sfT27rTK9=_&j<)K)liCP>pfV#P
zP`$uTs8#g1u@tE|^90K43mN`wEj^rhmrYA@hAbZjLPR$qLe1yExYo
zjv7e~Cgs;Wp-AzTRbz7X`4vzXWQQ=rk&<|@AhShDRF27)hlxeF;7^JxGtH8X_YF?f
z4XoCy=%q~QdXL_jy?A4>Gj-WD&9Yj}JE}R08nskwLSHoewAwNJvLk})KK3yQd^_wr
zOZk(@yOjP&`-107Y}`@gq*rpC_eVd1$F0QgjIrhT6ozR@xVC^C-mUIMz&KOZ<5~=M
zA6%ZL>@?0ZrJXl(k;p(h{jS!&@9{+dPv~B
z?|7UX1lL33SEIW=A=_^l*|MxHAP`~lud=9nng;PJp9ZOvXTeNZh-`wV7GWqC8bKbk
z*0zi_0y(`$7KYWUcTcycU=7of+?e@9%gSGJT&05*FfN(c9TQ*eR=%FS$KmlJXOsr+
zcGzJDTRylSUFOfd0(IGhbZQ$U48%l##$Gy`d+6xj8_L~}H03ER_+(aa)$z@bbFIsc
zWrXu|>E6Izj0%nYMTp*QLXelZUEeig+y&p+HvFxIiHq2MT=hGAW*lzsZ90$JU$7g#
zQIli7G#Owq=Hk$=vL!o_?>F-yoBraO&Q|=#S4nadg_qt9FG>1AIe!l+^CdHN)fHIt
zU3M5VJIVO*VIK+B(MkDLyApcyAjl@t=}}M=LlQ$x`X%!XRlY}`Bk19VXgbG*clTmE
z)uD$?l!LH!K~Q3t)d5wy
zute~BP^q82*}l}!Mp;*`isX5&QI^K36s=GEb8fkLQ_cpn_R92fzEIohSpV%)2gp~K
z-P~gp&SSXSxy7VI2{DB0k)x|!PxH|7?!}rhX^IZhjP%?@KPA4i@0%9B
zcZWJMnN}&DYbAgVdN%1TapJt951lcwae7AHVduQXUsyll&vPJef?n(T(mjC{^`VQH`q6%~vNIeR71M2CbSj;|!b@lsOT~6r+wo!isGa`F<)kX}_D2i#b
z6Yth2jh=Lr2=u)0kga#8NdH@VRg(B3RWf^v^O;_Be5F~Bv~j#Jb*cr{ZQWe?C{e5Z
zV68=p;IU=*`>O}tkC9#y<6kC|E56RDd)76ai+l>*rec;N#mAF@Tq)?yvk>ij-XeiR
zmCGcJ;QUsR@9zH7SUVqkZx1K=>yIhRD{}wCUD=cuPWYQs%i6Ek#^3Ay97V~B6>d}f
zLT6ou#Ap4IiOad|&)!`+co#&lH;!wyj{EXw4T=@BfI16YmH%L!RZWTj-;V%u0FD4S
z0bBrX01x25#tYyBKmhyzC_n%p2oM4Y14IC#05O0#Kmu?S00T$@qyW+Y8GtN64j>PJ
z0}ucO01}`GPy(O;$^bM#1)vI01E>Qu0Ga?TfOca9SjUQ=AQ0J@GP%-pxG@atRjU28
zGM}81=|EeFoa|?mE0`gQ1~b<6^JJE-h8Wv13xSbkALezpXm+T<#3Necmq~$3tiN3J
zRj*mL_Lw8wVEWdZ2}tm_u??ypbaVL9Pqeh5?q!b|J1yKL4cW{d^L6gz
zEaH`yxk@Dx{y9}JFgBqJntweR_-~*>cElxX96RT;bBa#w6hZY7zEW{R=t+N+ZIwj!
zqdUiiV{iT}_gRPsW4v76%ORy4bup(|H7=8^3fIQv6X)~due&L5n78UR8b@1tu?up{
zg{w1y>ue|Xj)B5rHYqkfHP6TWF7WJBdkM@Go%AH4TtQe{VJ(Wt^zV0Myy!R-MO
R27#cYJO~H6Bu)|p`X30^TIT=&
diff --git a/deb/opt/apps/deepin-wine-runner/information.json b/deb/opt/apps/deepin-wine-runner/information.json
index 60a4ce1..b36c36f 100755
--- a/deb/opt/apps/deepin-wine-runner/information.json
+++ b/deb/opt/apps/deepin-wine-runner/information.json
@@ -13,7 +13,7 @@
"感谢 @PossibleVing 提供的新版应用图标",
"感谢 @zhengjl 反馈的 1.7.0 中 .net framrwork 3.5 非离线版安装包的问题以及 1.8.0 重复路径一直自动重复增加的问题",
"感谢 @国川 @刘岐 提供的非 i386、amd64 运行 wine 使用 i386/amd64 可执行文件的教程和脚本",
- "感谢 @勇往直前 梦想启航 @189******09 @tfhyl 提供在非 X86 平台的国产 PC 进行测试",
+ "感谢 @王俊文 @189******09 @tfhyl 提供在非 X86 平台的国产 PC 进行测试",
"感谢 @cuisirwork 提供的提供视频教程的建议",
"感谢 @办公助手 提供的非 X86 平台 Wine 运行自定义 exe 应用教程和 deb 包",
"感谢 @季星火 反馈的无法使用该程序删除生成的 .desktop 的问题",
diff --git a/deb/opt/apps/deepin-wine-runner/package-script.zip b/deb/opt/apps/deepin-wine-runner/package-script.zip
index afd6c0520706ef7ecde6ffeeebd4b2e42d118867..e4e994d6d8b65c1ecb55f96cc7d82b01fe80dae7 100755
GIT binary patch
delta 361
zcmeBOA=JApiv85!X^HMdXt!N|o7l4zg*
zn{oU6-%M`exzRcNR!~Xg*$AA@Vj|pVvhOn|in5%igvM&;uUkMxW<=@Wl33QzQPU{(uc-Z+7o3n4gt_hUw`=`&kc_$D9XQUl3P
ze$Dj_Oh4g145nA{gn{VI%)C5IU;!ci{a}GB{I4XK8%{AbAJo`>P=oRDE>vS3L5jBj
zf6Vxi7gd65y5J{9XRvJeC&nnSq1(57VH5zfrXT;tI2$CnJoP&xBV4EE_DMe&xtKxr
zwa@>}xPAU_rniC2orNsZ`+b?S!G`_yWsYG6vtk07xxq@eXN53V^Mb`*Br?AeKo~du
ze-X1PoGU!tx|rD>tgg10S%4ADnoz>L55fv8W3~sgrcW+seg$?zLk08ph6※1、新增新的 Wine 安装器,并支持将安
'''
for i in information["Thank"]:
thankText += f"{i}\n"
-updateTime = "2022年08月24日"
+updateTime = "2022年08月26日"
about = f'''关于
一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等
同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等
diff --git a/package-script.zip b/package-script.zip
index afd6c0520706ef7ecde6ffeeebd4b2e42d118867..e4e994d6d8b65c1ecb55f96cc7d82b01fe80dae7 100755
GIT binary patch
delta 361
zcmeBOA=JApiv85!X^HMdXt!N|o7l4zg*
zn{oU6-%M`exzRcNR!~Xg*$AA@Vj|pVvhOn|in5%igvM&;uUkMxW<=@Wl33QzQPU{(uc-Z+7o3n4gt_hUw`=`&kc_$D9XQUl3P
ze$Dj_Oh4g145nA{gn{VI%)C5IU;!ci{a}GB{I4XK8%{AbAJo`>P=oRDE>vS3L5jBj
zf6Vxi7gd65y5J{9XRvJeC&nnSq1(57VH5zfrXT;tI2$CnJoP&xBV4EE_DMe&xtKxr
zwa@>}xPAU_rniC2orNsZ`+b?S!G`_yWsYG6vtk07xxq@eXN53V^Mb`*Br?AeKo~du
ze-X1PoGU!tx|rD>tgg10S%4ADnoz>L55fv8W3~sgrcW+seg$?zLk08ph6