2.1.0完成

This commit is contained in:
gfdgd xi 2022-08-26 14:41:08 +08:00
parent 1a453c6778
commit 8149ea0e8d
30 changed files with 1351 additions and 250 deletions

View File

@ -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

View File

@ -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

View File

@ -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=容器路径 winewine的路径 可执行文件路径
是使用 Python3 的 tkinter 构建的
(自己美术功底太差,图标只能在网络上找了)
测试平台deepin 20.6UOS 家庭版 21.3.1Ubuntu 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.02022年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-22022年08月16日
修复了在 deepin 23 安装缺少`toilet`依赖导致无法安装的问题,更多更新内容请见 2.0.0
### 2.0.0-12022年08月15日
修复了缺失`python3-psutil`依赖的问题,更多更新内容请见 2.0.0
### 2.0.02022年08月13日
**※1、修复了重复路径一直自动重复增加的问题**
**※2、修复了两个打包器打包错误的问题非基于生态活动脚本的为 wine 导入错误,基于生态活动脚本的为架构有误导致打包出的 deb 无法打包)**

View File

@ -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、为什么您不喜欢熊出没和阿布呢

View File

@ -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

View File

@ -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")
###################
# 程序功能

View 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_()

View 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])

View 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("下载失败!请重试")

View File

@ -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:

View File

@ -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("安装结束,按回车键退出")

View File

@ -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("安装结束,按回车键退出")

View File

@ -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("安装结束,按回车键退出")

View File

@ -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]}

View File

@ -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()

View File

@ -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("安装结束,按回车键退出")

View File

@ -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 构建
###########################################################################################

View 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("下载失败!请重试")

View 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", "打开本地部署脚本"))

View File

@ -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_())

View File

@ -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 的问题",

View 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

View File

@ -2,7 +2,7 @@
# 本来是用C++写的但在非deepin/UOS编译/运行就是下载不了https文件只能用python重写
#########################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布
# 版本2.0.1
# 版本2.1.0
# 感谢:感谢 deepin-wine 团队,提供了 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 的 PyQt5 构建
#########################################################################

View File

@ -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.