mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-01-13 01:58:27 +08:00
2.1.0完成
This commit is contained in:
parent
1a453c6778
commit
8149ea0e8d
@ -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
|
||||
|
10
Makefile
10
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
|
||||
|
||||
|
||||
|
25
README.md
25
README.md
@ -1,5 +1,5 @@
|
||||
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
|
||||
<h1 align="center">Wine 运行器</h1>
|
||||
<h1 align="center">Wine 运行器 2.1.0</h1>
|
||||
<hr>
|
||||
|
||||
## 介绍
|
||||
@ -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 无法打包)**
|
||||
|
@ -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、为什么您不喜欢熊出没和阿布呢
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
||||
###################
|
||||
# 程序功能
|
||||
|
118
deb/opt/apps/deepin-wine-runner/AutoConfig.py
Executable file
118
deb/opt/apps/deepin-wine-runner/AutoConfig.py
Executable file
@ -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_()
|
439
deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
Executable file
439
deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py
Executable file
@ -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])
|
127
deb/opt/apps/deepin-wine-runner/InstallDll.py
Executable file
127
deb/opt/apps/deepin-wine-runner/InstallDll.py
Executable file
@ -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("下载失败!请重试")
|
@ -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:
|
||||
|
@ -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("安装结束,按回车键退出")
|
||||
if exitInputShow:
|
||||
input("安装结束,按回车键退出")
|
@ -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]}\"")
|
||||
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("安装结束,按回车键退出")
|
||||
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("安装结束,按回车键退出")
|
@ -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}'")
|
||||
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("安装结束,按回车键退出")
|
||||
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("安装结束,按回车键退出")
|
@ -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]}
|
||||
|
@ -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()
|
@ -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]}'")
|
||||
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("安装结束,按回车键退出")
|
||||
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("安装结束,按回车键退出")
|
@ -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 构建
|
||||
###########################################################################################
|
||||
|
127
deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py
Executable file
127
deb/opt/apps/deepin-wine-runner/LANG/InstallDll.py
Executable file
@ -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("下载失败!请重试")
|
76
deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py
Normal file
76
deb/opt/apps/deepin-wine-runner/UI/AutoConfig.py
Normal file
@ -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", "打开本地部署脚本"))
|
||||
|
@ -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路径\' 参数 \'
|
||||
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>'''
|
||||
updateThingsString = '''<b>※1、新增新的 Wine 安装器,并支持将安装的 Wine 打包到 Wine 程序 deb 包中
|
||||
※2、Wine 打包器打包 Windows 应用支持将 Wine 打包入 deb 内,可以不依赖 Wine(一般不推荐把 Wine 打包入内,推荐用依赖的形式),并支持设置自定义依赖和生成模板
|
||||
※3、开始初步多语言支持</b>
|
||||
4、修改错别字(图形话=>图形化)
|
||||
5、修复评分功能名称为空也可以上传评分的问题
|
||||
6、去除 toilet 依赖,使在 Deepin 23 Preview 上运行更佳
|
||||
7、支持删除所有由 Wine 创建的启动器快捷方式
|
||||
※3、开始初步多语言支持
|
||||
※4、修复了在没有安装任何 Wine 的情况下使用高级功能导致程序闪退的问题
|
||||
※5、支持云端自动获取数据配置 Wine 容器
|
||||
※6、支持手动导入配置文件自动配置 Wine 容器
|
||||
※7、新增从云端下载 Dll 的功能
|
||||
※8、修复了 Dll 提取工具不会在 winecfg 中添加原装的问题</b>
|
||||
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'''<h1>关于</h1>
|
||||
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||
@ -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_())
|
||||
|
Binary file not shown.
@ -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 的问题",
|
||||
|
Binary file not shown.
24
deb/opt/apps/deepin-wine-runner/wine/.qmake.stash
Normal file
24
deb/opt/apps/deepin-wine-runner/wine/.qmake.stash
Normal file
@ -0,0 +1,24 @@
|
||||
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
|
||||
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 8
|
||||
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
|
||||
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
|
||||
QMAKE_CXX.COMPILER_MACROS = \
|
||||
QT_COMPILER_STDCXX \
|
||||
QMAKE_GCC_MAJOR_VERSION \
|
||||
QMAKE_GCC_MINOR_VERSION \
|
||||
QMAKE_GCC_PATCH_VERSION
|
||||
QMAKE_CXX.INCDIRS = \
|
||||
/usr/include/c++/8 \
|
||||
/usr/include/x86_64-linux-gnu/c++/8 \
|
||||
/usr/include/c++/8/backward \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8/include \
|
||||
/usr/local/include \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed \
|
||||
/usr/include/x86_64-linux-gnu \
|
||||
/usr/include
|
||||
QMAKE_CXX.LIBDIRS = \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/8 \
|
||||
/usr/lib/x86_64-linux-gnu \
|
||||
/usr/lib \
|
||||
/lib/x86_64-linux-gnu \
|
||||
/lib
|
@ -2,7 +2,7 @@
|
||||
# 本来是用C++写的,但在非deepin/UOS编译/运行就是下载不了https文件,只能用python重写
|
||||
#########################################################################
|
||||
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布
|
||||
# 版本:2.0.1
|
||||
# 版本:2.1.0
|
||||
# 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序
|
||||
# 基于 Python3 的 PyQt5 构建
|
||||
#########################################################################
|
||||
|
@ -1375,7 +1375,7 @@ updateThingsString = '''<b>※1、新增新的 Wine 安装器,并支持将安
|
||||
'''
|
||||
for i in information["Thank"]:
|
||||
thankText += f"{i}\n"
|
||||
updateTime = "2022年08月24日"
|
||||
updateTime = "2022年08月26日"
|
||||
about = f'''<h1>关于</h1>
|
||||
<p>一个能让Linux用户更加方便运行Windows应用的程序,内置了对wine图形化的支持和各种Wine工具和自制Wine程序打包器、运行库安装工具等等</p>
|
||||
<p>同时也内置了基于VirtualBox制作的小白Windows虚拟机安装工具,可以做到只需要用户下载系统镜像并点击安装即可,无需顾及虚拟机安装、创建、虚拟机的分区等等</p>
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user