Compare commits

..
3 Commits
Author SHA1 Message Date
gfdgd-xi 13708434c9 测试demo 2024-01-29 19:19:36 +08:00
3025613752@qq.com 67e8e18237 初步 2024-01-29 09:12:31 +08:00
3025613752@qq.com 58f2d5229a 创建分支 2024-01-29 09:03:05 +08:00
536 changed files with 36 additions and 270825 deletions
+3
View File
@@ -0,0 +1,3 @@
*.user*
.qmake.stash
__pycache__
-3
View File
@@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
-6
View File
@@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
-4
View File
@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/deepin-wine-run.iml" filepath="$PROJECT_DIR$/.idea/deepin-wine-run.iml" />
</modules>
</component>
</project>
Generated
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
-54
View File
@@ -1,54 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.4.0
# 更新时间:2022年10月15日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 加入路径
#################
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
#################
# 引入所需的库(正式内容)
#################
import os
import sys
import ConfigLanguareRunner
class Old:
wine = ""
wineprefix = ""
def __init__(self, wine = "", wineprefix = "") -> None:
self.wine = os.getenv("WINE") if wine == "" else wine
self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
def runCommand(self, command: str) -> None:
com = ConfigLanguareRunner.Command(command)
print(com.GetCommandList())
return com.Run(com.GetCommandList(), self.wineprefix, self.wine)
def runList(self, command: list) -> None:
return ConfigLanguareRunner.Command("").Run(command, self.wineprefix, self.wine)
class Bash:
wine = ""
wineprefix = ""
def __init__(self, wine = "", wineprefix = "") -> None:
self.wine = os.getenv("WINE") if wine == "" else wine
self.wineprefix = os.getenv("WINEPREFIX") if wine == "" else wineprefix
def runCommand(self, command: str) -> int:
return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{command}\"")
def runList(self, command: list) -> int:
commandStr = ""
for k in command:
for i in k:
commandStr += f"'{i}' "
commandStr += ";"
return os.system(f"'{programPath}/../../AutoShell/main.py' -c \"{commandStr}\"")
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
import WineRunner
WineRunner.Bash("a").runList([["thank"], ["version"]])
#WineRunner.Bash("a").runCommand("thank")
-86
View File
@@ -1,86 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.1.0
# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
def AddSparkStoreSource():
# Download and install key
os.system("mkdir -p /tmp/spark-store-install")
os.system("wget -O /tmp/spark-store-install/spark-store.asc https://d.store.deepinos.org.cn/dcs-repo.gpg-key.asc")
os.system("sudo gpg --dearmor /tmp/spark-store-install/spark-store.asc")
os.system("cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg")
# Run apt update to avoid users being fucked up by the non-exist dependency problem
os.system("sudo apt update -o Dir::Etc::sourcelist=\"sources.list.d/sparkstore.list\" -o Dir::Etc::sourceparts=\"-\" -o APT::Get::List-Cleanup=\"0\"")
def InstallSparkWine(wine):
#if os.path.exists("/usr/local/bin/ss-apt-fast"):
#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")
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")
###################
# 程序功能
###################
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
print("请保证你能有 root 权限以便安装")
print("如果有请按回车,否则按 [Ctrl+C] 退出", end=' ')
input()
os.system("sudo apt update")
print("请问是否要更新操作系统?[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt upgrade -y")
print("请问是否要安装原版 winewine64)?[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install wine -y")
print("请问是否要安装 deepin-wine[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine -y")
print("请问是否要安装 deepin-wine5(需要安装最新版星火应用商店)?[Y/N]", end=' ')
choose = input().upper()
print("请问是否要安装 deepin-wine5-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine5-stable -y")
print("请问是否要安装 deepin-wine6-stable[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
os.system("sudo apt install deepin-wine6-stable -y")
print("请问是否要安装 spark-wine7-devel(需要安装最新版星火应用商店)?[Y/N]", end=' ')
choose = input().upper()
if not choose == "N":
InstallSparkWine("spark-wine7-devel")
print("请问是否要安装 ukylin-wine(需要添加 ukylin 源,但因为可能会导致系统问题,将不会自动添加)?[Y/N]", end=" ")
choose = input().upper()
if not choose == "N":
os.system("sudo apt install ukylin-wine -y")
print("全部完成!")
-111
View File
@@ -1,111 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:1.8.0
# 更新时间:2022年08月01日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import pyquery
import req as requests
import urllib.parse as parse
def CleanTerminal():
os.system("clear")
print('''
mm mmmm m
## mmmm mmmm #" " mm#mm mmm m mm mmm
# # #" "# #" "# "#mmm # #" "# #" " #" #
#mm# # # # # "# # # # # #""""
# # ##m#" ##m#" "mmm#" "mm "#m#" # "#mm"
# #
" "
''')
print("本软件源来自腾讯软件管家,只会下载文件后缀为“.exe”的文件")
print("请输入要搜索的内容,如果要结束,请输入“exit”或点击右上角“×”关闭")
print("无法保证从这里下载的安装包能正常安装/运行")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本:1.0.0")
print("本程序可以更方便的在 wine 容器中安装指定应用")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装的容器和使用的 wine,无法继续")
print("参数:")
print("XXX 参数一 参数二")
print("参数一为需要安装的容器,参数二为需要使用的wine,两个参数位置不能颠倒")
sys.exit()
CleanTerminal()
while True:
search = input(">")
if search.replace(" ", "").replace("\n", "") == "":
continue
if search.lower() == "exit": # 输入“exit”
break # 结束程序
# 获取初步 API
try:
apiReturn = json.loads(requests.get(f"https://s.pcmgr.qq.com/tapi/web/searchcgi.php?type=search&callback=searchCallback&keyword={parse.quote(search)}&page=1&pernum=30").text[:-2][15:])
except:
#traceback.print_exc()
input("无法连接服务器,按回车键继续")
CleanTerminal()
continue
option = 0
downloadUrl = []
if not "list" in apiReturn:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
for i in apiReturn["list"]: # 遍历选项
htmlShow = i["xmlInfo"]
url = pyquery.PyQuery(htmlShow)("url").text()
if url[-3:] != "exe": # 格式非 exe,忽略
continue
print(option, i["SoftName"], url)
downloadUrl.append(url)
option += 1
if option == 0:
print("没有搜到结果,尝试换一个关键词试试")
input("按回车键继续")
CleanTerminal()
continue
while True:
try:
choose = input("请输入选项编号(输入“exit”取消) >")
if choose.lower() == "exit":
choose = choose.lower()
break
choose = int(choose)
except:
print("输入有误,请正确输入编号")
continue
if not 0 <= choose or not choose < len(downloadUrl):
print("输入的值超出范围,请正确输入编号")
continue
break
if choose == "exit":
CleanTerminal()
continue
print("开始下载……")
os.system("rm -rf /tmp/wineappstore")
os.system("mkdir -p /tmp/wineappstore")
os.system(f"aria2c -x 16 -s 16 -d /tmp/wineappstore -o install.exe \"{downloadUrl[choose]}\"")
print("开始安装……")
print(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
os.system(f"WINEPREFIX={sys.argv[1]} {sys.argv[2]} /tmp/wineappstore/install.exe")
print("安装结束……")
input("按回车键继续……")
CleanTerminal()
-444
View File
@@ -1,444 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.4.0
# 更新时间:2022年10月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import base64
import json
import traceback
import req as requests
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
from Model import *
try:
import PyQt5.QtWebEngineWidgets as QtWebEngineWidgets
webeng = True
except:
print("未安装此依赖库")
webeng = False
urlSourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/auto", # Gitlink 源
"https://gitee.com/gfdgd-xi/deep-wine-runner-auto-configuration-script/raw/master/", # Gitee 源
"https://gfdgd-xi.github.io/deep-wine-runner-auto-configuration-script/", # Github 源
"http://gfdgdxi.msns.cn/wine-runner-list/auto/", # 备用源1,纯 IPv6 源
"http://120.25.153.144/deep-wine-runner-auto-configuration-script/", # 备用源2
"http://gfdgdxi.free.idcfengye.com/wine-runner-list/auto/", # 备用源 3
"http://127.0.0.1/wine-runner-list/auto/" # 本地测试源
]
urlSources = urlSourcesList[0]
lists = []
class ProgramRunStatusUpload():
msgWindow = None
starLayout = None
fen = None
starList = []
sha1Value = ""
programName = None
def ChangeStar():
if ProgramRunStatusUpload.fen.currentIndex() > 5:
for i in ProgramRunStatusUpload.starList:
i.setText(f"<img src='{programPath}/Icon/BadStar.svg' width=25>")
return
for i in range(ProgramRunStatusUpload.fen.currentIndex()):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/Star.svg' width=25>")
head = ProgramRunStatusUpload.fen.currentIndex()
end = len(ProgramRunStatusUpload.starList)
for i in range(head, end):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/UnStar.svg' width=25>")
def ShowWindow(sha="", title=""):
ProgramRunStatusUpload.starList = []
ProgramRunStatusUpload.sha1Value = sha
ProgramRunStatusUpload.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
ProgramRunStatusUpload.programName = QtWidgets.QLineEdit()
ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
upload = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "上传"))
upload.clicked.connect(ProgramRunStatusUpload.Upload)
if title != "":
ProgramRunStatusUpload.programName.setText(title)
ProgramRunStatusUpload.programName.setDisabled(True)
# 生成星星列表
for i in [1, 1, 1, 1, 0]:
ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>"))
ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1])
ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
ProgramRunStatusUpload.programName.setPlaceholderText(QtCore.QCoreApplication.translate("U", "如果这个程序和程序名确实是合法还是检测到敏感词,改为“NULL”即可"))
ProgramRunStatusUpload.fen.addItems(["0分", "1分", "2分", "3分", "4分", "5分"])
ProgramRunStatusUpload.fen.setCurrentIndex(4)
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
msgWidgetLayout.addWidget(upload, 3, 1)
msgWidget.setLayout(msgWidgetLayout)
ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusUpload.msgWindow.setWindowTitle(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusUpload.msgWindow.show()
def Upload():
try:
#if ProgramRunStatusUpload.sha1Value == "":
#ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
QtWidgets.QMessageBox.information(None, QtCore.QCoreApplication.translate("U", "提示"), requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL2Jhc2g=").decode("utf-8"), {
"BashName": ProgramRunStatusUpload.sha1Value,
"Fen": ProgramRunStatusUpload.fen.currentIndex()
}).json()["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(None, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
class InformationWindow():
def ShowWindow():
#webeng = False
# 获取选中项
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
aboutHtml = ""
try:
get = requests.get(f"{urlSources}/information/{fileName}.txt")
if get.status_code / 100 != 2 and get.status_code / 100 != 3:
int("Bad")
about = get.text
aboutHtml = str(about)
if not "<" in about:
# 非 Html 标签
for i in about.splitlines():
about += f"<p>{i}</p>\n"
#about = f"<pre>{about}</pre>"
about = f"<h1>关于“{choose}”的介绍</h1>\n{about}"
except:
traceback.print_exc()
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
try:
import requests as r
fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
end = 5
starHtml = ""
if maxHead > 5:
for i in range(end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/BadStar.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/BadStar.svg' width=50>\n"
else:
for i in range(maxHead):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/Star.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/Star.svg' width=50>\n"
head = maxHead
for i in range(head, end):
if webeng:
starHtml += f"<img src='https://code.gitlink.org.cn/gfdgd_xi/deep-wine-runner/raw/branch/main/Icon/UnStar.svg' width=50>"
else:
starHtml += f"<img src='{programPath}/Icon/UnStar.svg' width=50>"
about += f"\n<hr/><h1>评分情况</h1>\n<p align='center'>{starHtml}</p>\n<p align='center'>{tipsInfo}</p>"
message = QtWidgets.QDialog()
messageLayout = QtWidgets.QVBoxLayout()
if webeng:
informationText = QtWebEngineWidgets.QWebEngineView()
print(aboutHtml)
if aboutHtml[:7] == "Visit: ":
url = aboutHtml[7:].splitlines()[0]
print(url)
informationText.setUrl(QtCore.QUrl(url.strip()))
else:
#informationText.linkClicked.connect(lambda: print("a"))
try:
with open("/tmp/deepin-wine-runner-information.html", "w") as file:
file.write(about)
informationText.setUrl(QtCore.QUrl("file:///tmp/deepin-wine-runner-information.html"))
except:
traceback.print_exc()
informationText.setHtml(about)
#informationText.urlChanged.connect(lambda: informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io")))
else:
informationText = QtWidgets.QTextBrowser()
informationText.setHtml(about)
uploadFen = QtWidgets.QPushButton("提交评分")
uploadFen.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
#informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io"))
messageLayout.addWidget(informationText)
messageLayout.addWidget(uploadFen)
message.setWindowTitle(f"关于“{choose}”的介绍")
message.resize(int(message.frameSize().width() * 1.5), int(message.frameSize().height()))
message.setLayout(messageLayout)
#message.setWindowModality(ApplicationModal);
message.show()
message.exec_()
class ProgramRunStatusShow():
msgWindow = None
def ShowWindow():
global lists
# 获取选中项
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:
fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
#r = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9hcHAv").decode("utf-8") + sha + base64.b64decode("L3RpdGxlLnR4dA==").decode("utf-8"))
#r.encoding = "utf-8"
#title = r.text
tipsInfo = ""
except:
#traceback.print_exc()
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
starLayout = QtWidgets.QHBoxLayout()
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此上传运行情况"))
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0)
msgWidgetLayout.addLayout(starLayout, 0, 1)
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 1, 0, 1, 2)
#msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
msgWidgetLayout.addWidget(uploadButton, 3, 0, 1, 2)
end = 5
if maxHead > 5:
for i in range(end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/BadStar.svg' width=50>"))
else:
for i in range(maxHead):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/Star.svg' width=50>"))
head = maxHead
for i in range(head, end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>"))
msgWidget.setLayout(msgWidgetLayout)
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况")
ProgramRunStatusShow.msgWindow.show()
def UploadFen():
global lists
# 获取选中项
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
ProgramRunStatusUpload.ShowWindow(fileName, choose)
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().upper() in i[0].upper():
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
# 下载脚本
things = ""
try:
print(f"{urlSources}/{fileName}")
file = open("/tmp/wine-runner-auto-config.wsh", "w")
things = requests.get(f"{urlSources}/{fileName}").text
file.write(things)
file.close()
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", "无法获取配置文件")
return
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
print("a")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '/tmp/wine-runner-auto-config.wsh' --system")
# 执行脚本
print(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
#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
try:
things = ""
with open(path) as file:
things = file.read()
except:
traceback.print_exc()
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '{path[0]}' --system")
# 执行脚本
OpenTerminal(f"env WINEARCH='{os.getenv('WINEARCH')}' WINEDEBUG='{os.getenv('WINEDEBUG')}' WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '{path[0]}'")
#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 # 返回结果
def ChangeSources():
global urlSources
sources = [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action_2, ui.action_3, ui.action]
for i in range(0, len(sources)):
if sources[i].isChecked():
urlSources = urlSourcesList[i]
# 解析云列表
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, "提示", "无法连接服务器")
break
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.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
iconPath = "{}/deepin-wine-runner.svg".format(programPath)
window.show()
#ui.actionGitlink.setExclusive(True)
sourcesGroup = QtWidgets.QActionGroup(window)
sourcesGroup.addAction(ui.actionGitlink)
sourcesGroup.addAction(ui.actionGitee)
sourcesGroup.addAction(ui.actionGithub)
sourcesGroup.addAction(ui.action_IPv6)
sourcesGroup.addAction(ui.action_2)
sourcesGroup.addAction(ui.action_3)
sourcesGroup.addAction(ui.action)
sourcesGroup.triggered.connect(ChangeSources)
sourcesGroup.setExclusive(True)
#for i in [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action]:
#i.triggered.connect(ChangeSources)
#pass
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
ui.uploadFen.clicked.connect(UploadFen)
ui.getInfoButton.clicked.connect(InformationWindow.ShowWindow)
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
ui.exitProgram.triggered.connect(window.close)
ui.getFen.clicked.connect(ProgramRunStatusShow.ShowWindow)
# 解析云列表
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_()
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))
-75
View File
@@ -1,75 +0,0 @@
#!/usr/bin/env python3
import os
import sys
import time
import json
import platform
# 读取文本文档
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"],
["PROGRAMPATH", programPath],
["VERSION", version],
["THANK", thankText.replace("\n", "\\n")],
["MAKER", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["PLATFORM", platform.system()],
["DEBUG", str(int("--debug" in sys.argv))]
]
'''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"],
["PLATFORM)", platform.system()],
["DEBUG)", str(int("--debug" in sys.argv))]
]'''
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv.append(["DANGER", "1"])
optionAll += 1
if os.getenv("WINE") != None:
programEnv.append(["WINE", os.getenv("WINE")])
if os.getenv("WINEPREFIX") != None:
programEnv.append(["WINEPREFIX", os.getenv("WINEPREFIX")])
# 生成可以使用的参数
commandEnv = ""
for i in programEnv:
commandEnv += f"{i[0]}=\"{i[1]}\" "
commandEnv += f"PATH=\"{programPath}/command:$PATH\" "
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境(基于 Bash)")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash ")
exit()
command = ""
for i in sys.argv[1:]:
command += f"\"{i}\" "
print("Wine 运行器自动配置文件解析器(基于 Bash)")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash {command}")
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-42
View File
@@ -1,42 +0,0 @@
{
"installdll": "安装指定 dll 在指定容器\n参数数量:1\n参数介绍:dll名称或在从互联网获取DLL工具的编号,如 7012 xolehlp.dll 平台:2003 架构:64 的 7012",
"stopdll": "不允许指定 dll/exe 运行\n参数数量:1\n参数介绍:dll/exe 名称,如 example.exe",
"installfont": "安装指定字体到指定容器\n参数数量:1\n在字体商店的编号,如 5 msyhbd.ttc 的 5",
"installsparkcorefont": "安装星火应用商店的“微软核心字体”\n参数数量:0\n参数介绍:无",
"installmono": "安装最新版本的 mono 到指定容器\n参数数量:0\n参数介绍:无",
"installgecko": "安装最新版本的 gecko 到指定容器\n参数数量:0\n参数介绍:无",
"installvcpp": "安装指定的 VCPP 运行库到指定容器\n参数数量:1\n参数介绍:在安装 Visual Studio C++ 工具的编号,如 10 Visual Studio C++ 2015、2017、2019 和 2022 X64 的 10",
"installnet": "安装指定的 .net framework 运行库到指定容器\n参数数量:1\n参数介绍:在安装 .net framework 工具的编号,如 3 .net framework 4.5.1 Offline Installer 的 3",
"installmsxml": "安装指定的 MSXML 运行库到指定容器\n参数数量:1\n参数介绍:在安装 MSXML 工具的编号,如 1、MSXML 4.0 SP3 的 1",
"echo": "显示内容\n参数数量:≥1\n参数介绍:接要显示的内容",
"info": "显示提示对话框\n参数数量:2\n参数介绍:标题+显示内容",
"error": "显示错误对话框\n参数数量:2\n参数介绍:标题+显示内容",
"warning": "显示警告对话框\n参数数量:2\n参数介绍:标题+显示内容",
"exit": "退出程序\n参数数量:0\n参数介绍:无",
"bat": "执行 cmd 命令在 Wine 容器内(在 Windows 将在系统执行命令)\n参数数量:≥1\n参数介绍:接要执行的命令",
"bash": "执行 bash 命令(在 Windows 系统将执行 cmd 命令)\n参数数量:≥1\n参数介绍:接要执行的命令",
"version": "显示解释器版本(Wine 运行器版本)\n参数数量:0\n参数介绍:无",
"thank": "显示谢明列表\n参数数量:0\n参数介绍:无",
"pause": "按回车键后继续\n参数数量:0\n参数介绍:无",
"download": "使用 aria2 下载文件\n参数数量:≥1 && ≤3\n参数介绍:下载URL+保存在的文件夹+保存的文件名",
"installdxvk": "安装 dxvk 到指定容器\n参数数量:0\n参数介绍:无",
"createbotton": "在指定目录创建容器\n参数数量:0\n参数介绍:无",
"reg": "导入 .reg 文件\n参数数量:0\n参数介绍:reg 文件路径",
"enabledopengl": "开启 OpenGL\n参数数量:0\n参数介绍:无",
"disbledopengl": "关闭 OpenGL\n参数数量:0\n参数介绍:无",
"winecfg": "显示“Wine 设置”\n参数数量:0\n参数介绍:无",
"winver": "显示“关于 Wine”\n参数数量:0\n参数介绍:无",
"changeversion": "更改 Wine 容器系统版本(未实现)\n参数数量:无\n参数介绍:无",
"cat": "显示指定文件(只支持显示编码为UTF-8的文件)\n参数数量:1\n参数介绍:无",
"enabledhttpproxy": "设置指定容器代理\n参数数量:2\n参数介绍:代理服务器地址+端口",
"disbledhttpproxy": "禁用指定容器代理\n参数数量:0\n参数介绍:无",
"enabledwinecrashdialog": "启用 Wine 容器程序崩溃提示窗口\n参数数量:0\n参数介绍:无",
"disbledwinecrashdialog": "禁用 Wine 容器程序崩溃提示窗口\n参数数量:0\n参数介绍:无",
"disbledWinebottlecreatelink": "禁止 Wine 容器生成快捷方式\n参数数量:0\n参数介绍:无",
"enabledWinebottlecreatelink": "允许 Wine 容器生成快捷方式\n参数数量:0\n参数介绍:无",
"killall": "杀死指定进程\n参数数量:1\n参数介绍:进程名",
"control": "打开控制面板\n参数数量:0\n参数介绍:无",
"taskmgr": "打开任务管理器\n参数数量:0\n参数介绍:无",
"killallwineserver": "杀死所有 Wine 程序\n参数数量:0\n参数介绍:无",
"installvb": "安装指定的 VB 运行库到指定容器\n参数数量:1\n参数介绍:在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6"
}
-599
View File
@@ -1,599 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.1.0
# 更新时间:2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
import os
import sys
import time
import json
import platform
import traceback
import subprocess
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 = ""
helpList = json.loads(readtxt(f"{programPath}/ConfigLanguareRunner-help.json"))
for i in information["Thank"]:
thankText += f"{i}\n"
programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
#["($DANGER)", "0"],
["($DANGER)", "1"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($?)", "0"],
["($PLATFORM)", platform.system()],
["($DEBUG)", "1"]
#["($DEBUG)", str(int("--debug" in sys.argv))]
]
readOnlyEnv = [
"($DANGER)",
"($HOME)",
"($PROGRAMPATH)",
"($VERSION)",
"($THANK)",
"($MAKER)",
"($COPYRIGHT)",
"($?)",
"($SYSTEM)",
"($DEBUG)"
]
def Debug():
if "--debug" in sys.argv:
traceback.print_exc()
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",
"cat",
"taskmgr",
"control",
"killall",
"killallwineserver",
"enabledhttpproxy",
"disbledhttpproxy",
"enabledwinecrashdialog",
"disbledwinecrashdialog",
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink",
"installvb",
"installother"
]
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:
# Windows 直接转换为以 cmd 运行
if platform.system() == "Windows":
# 直接调用 Bash 函数
return self.Bash()
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}' "
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()
def Cat(self):
try:
file = open(self.command[1], "r")
print(file.read())
file.close()
except:
print("文件读取错误")
Debug()
def Taskmgr(self):
self.command = ["bat", "taskmgr"]
return self.Bat()
def Control(self):
self.command = ["bat", "control"]
return self.Bat()
def Killall(self):
os.system(f"killall -9 {self.command[1]}")
def KillallWineServer(self):
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)", "-k"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
if "box86" in command[1] or "exagear" in command[1] or "box64" in command[1]:
print("不支持此 Wine")
return 1
if os.path.exists(command[1]):
# 文件存在
command[1] = f"{os.path.dirname(command[1])}/wineserver"
else:
# 读 which
command[1] = f"{os.path.dirname(subprocess.getoutput(f'which {command[1]}').strip())}/wineserver"
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def EnabledWineBottleCreateLink(self):
self.command = ["bat", "reg", "delete", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
self.Bat()
def DisbledWineBottleCreateLink(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
self.Bat()
def DisbledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000000", "/f"]
self.Bat()
def EnabledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
def EnabledHttpProxy(self):
proxyServerAddress = self.command[1]
port = self.command[2]
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"]
self.Bat()
def DisbledHttpProxy(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
self.Bat()
def InstallVB(self):
import InstallVisualBasicRuntime
return InstallVisualBasicRuntime.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallOther(self):
import InstallOther
return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine)
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
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,
"cat": Cat,
"taskmgr": Taskmgr,
"control": Control,
"killallwineserver": KillallWineServer,
"enabledhttpproxy": EnabledHttpProxy,
"disbledhttpproxy": DisbledHttpProxy,
"enabledwinecrashdialog": EnabledWineCrashDialog,
"disbledwinecrashdialog": DisbledWineCrashDialog,
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB,
"installother": InstallOther
}
# 参数数列表
commandInfo = {
"killall": [1],
"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],
"cat": [1],
"taskmgr": [0],
"control": [0],
"killallwineserver": [0],
"enabledhttpproxy": [2],
"disbledhttpproxy": [0],
"enabledwinecrashdialog": [0],
"disbledwinecrashdialog": [0],
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0],
"installvb": [1],
"installother": [1]
}
windowsUnrun = [
"createbotton",
"installdll",
"installmono",
"installgecko",
"winecfg",
"stopdll",
"changeversion",
"enabledopengl",
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont"
]
# 解析
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
# 解析命令是否可以在 Windows 使用(只限在 Windows 系统时)
if platform.system() == "Windows" and i[0] in self.windowsUnrun:
print("此命令不支持在 Windows 上运行")
programEnv[9][1] = "-5"
continue
# 获取程序帮助信息
try:
if i[1] == "--help":
print(helpList[i[0]].replace("\\n", "\n"))
continue
except:
pass
# 正常命令解析
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
app = QtWidgets.QApplication(sys.argv)
if os.getenv("WINE") != None:
programEnv[1][1] = os.getenv("WINE")
if os.getenv("WINEPREFIX") != None:
programEnv[0][1] = os.getenv("WINEPREFIX")
if __name__ == "__main__":
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv[2][1] = "1"
optionAll += 1
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])
sys.exit(int(programEnv[9][1]))
# 读取文件
try:
file = open(sys.argv[1], "r")
com = Command(file.read())
file.close()
except:
print("错误:无法读取该文件,无法继续")
sys.exit(1)
print("Wine 运行器自动配置文件解析器")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------")
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))
Binary file not shown.
BIN
View File
Binary file not shown.
+22
View File
@@ -0,0 +1,22 @@
import time
import socket
import traceback
while True:
try:
s = socket.socket()
s.connect(("127.0.0.1", 8080))
info = "Apple".encode("utf-8")
len = s.send(info)
ret = s.recv(1024)
if info == ret:
print("success")
break
except:
traceback.print_exc()
time.sleep(0.1)
exit()
while True:
if not ret:
s.close()
-329
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

-81
View File
@@ -1,81 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="BadStar.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="2.1794989"
inkscape:cy="208.04937"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.16628225"
inkscape:transform-center-y="-3.3924633"
style="fill:none;stroke-width:11.54627375;stroke:#000000;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.22402028,0,0,0.234398,-5.3781204e-6,227.3838)" />
<path
style="fill:none;stroke:#db0000;stroke-width:4.17411947;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 4.6835638,237.71432 60.365607,288.71648"
id="path4588"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

-245
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

-342
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 28 KiB

-76
View File
@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="Star.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="2.1794989"
inkscape:cy="208.04937"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.15367302"
inkscape:transform-center-y="-3.1244574"
style="fill:#ffff00;stroke:#000000;stroke-width:11.54627419;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.20703169,0,0,0.21588,2.5808914,230.58088)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

-289
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

-1275
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 91 KiB

-76
View File
@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733331 67.733331"
version="1.1"
id="svg3719"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="UnStar.svg">
<defs
id="defs3713" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="-87.142857"
inkscape:cy="560"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata3716">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26667)">
<path
sodipodi:type="star"
id="path3737"
sodipodi:sides="5"
sodipodi:cx="151.91904"
sodipodi:cy="166.98949"
sodipodi:r1="158.97482"
sodipodi:r2="79.487411"
sodipodi:arg1="-0.32926921"
sodipodi:arg2="0.29904932"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 302.35356,115.58473 -74.475,74.82269 19.41613,103.76885 L 153.12004,246.46782 60.429914,297 76.701777,192.69187 -6.9307488e-6,120.15362 104.23121,103.39609 149.51703,8.0328112 197.6636,101.98423 Z"
inkscape:transform-center-x="0.16628225"
inkscape:transform-center-y="-3.3924633"
style="fill:none;stroke-width:11.54627375;stroke:#000000;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.22402028,0,0,0.234398,-5.3781204e-6,227.3838)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

-328
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

-340
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

-1012
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 37 KiB

-723
View File
@@ -1,723 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="266.66666"
height="417.33334"
viewBox="0 0 266.66666 417.33334"
sodipodi:docname="wine.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1600"
inkscape:window-height="860"
id="namedview4"
showgrid="false"
inkscape:zoom="0.56549519"
inkscape:cx="133.33333"
inkscape:cy="208.66667"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<image
width="266.66666"
height="417.33334"
preserveAspectRatio="none"
style="image-rendering:optimizeQuality"
xlink:href="data:image/png;base64,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
R7+HQhhyUwAAAABJRU5ErkJggg==
"
id="image10"
x="0"
y="0" />
<g
id="g730">
<path
style="fill:#d0d2ce;stroke-width:1.33333337"
d="m 92.666664,412.49675 c -22.954171,-3.58098 -30.778596,-14.60612 -19.048086,-26.84 4.967275,-5.18042 20.856717,-13.64206 31.618922,-16.8381 9.63398,-2.86098 12.87667,-5.17523 16.09741,-11.4884 C 127.0793,346.07031 126.09469,328.40417 118.36258,304 110.95405,280.6171 107.70677,276.39176 85.800497,261.63046 65.373321,247.86583 54.481644,233.94008 39.304342,202.18196 29.536814,181.74366 21.172665,158.19984 12.591519,126.98943 0.84914549,84.281329 0,79.540524 0,56.690593 V 36.02591 L 6.3333332,31.316358 C 22.14421,19.559175 46.031918,11.006282 73.513517,7.2627761 108.43885,2.505295 124.04993,2.5327026 133.40021,7.367916 c 4.39563,2.2730676 4.37557,2.2159326 13.79431,39.298751 17.07752,67.236453 21.34336,92.791603 21.36661,128.000003 0.0212,32.08644 -1.07559,37.03639 -14.46977,65.30535 -12.64748,26.693 -13.29463,28.86165 -12.33315,41.32976 1.84231,23.89062 9.33001,47.67791 18.1812,57.75884 9.46173,10.77632 9.75123,10.86308 38.72725,11.60605 24.36036,0.62463 26.42043,0.87688 32.66667,4 4.64306,2.32154 6.79736,4.25434 7.09721,6.36754 0.69527,4.89973 -3.79017,14.71264 -8.69261,19.01704 -13.38014,11.74792 -50.36891,24.30446 -88.17432,29.93248 -14.4709,2.15425 -42.095956,3.57402 -48.896946,2.51302 z M 136,374.72287 c 0,-2.32628 -11.7493,-8.26065 -15.47632,-7.81682 -5.10745,0.60822 -7.3272,4.65348 -3.93551,7.17205 C 119.51453,376.25114 136,376.79871 136,374.72287 Z M 51.679691,116.22618 c 1.31558,-0.83517 1.08943,-2.78171 -1.043252,-8.97958 -3.418626,-9.935012 -11.969773,-44.441492 -11.969773,-48.301678 0,-4.109388 -5.652855,-7.58132 -9.22818,-5.667864 -4.083669,2.185514 -4.533761,6.383486 -2.167481,20.215887 1.820376,10.641247 8.179527,37.158905 9.099825,37.946265 0.162709,0.13921 2.395836,1.52009 4.962502,3.06863 4.966883,2.99666 7.634769,3.43974 10.346359,1.71834 z m 30.034051,-6.33491 c 3.403829,-1.1598 8.575868,-4.42532 11.493418,-7.2567 5.628616,-5.46239 17.4595,-24.462697 17.4595,-28.039821 0,-1.170221 -1.41437,-6.282767 -3.14304,-11.361212 C 101.6695,46.035487 91.67234,29.134354 84.620635,24.513898 80.320951,21.696636 73.833983,21.800283 70.58772,24.738111 60.725792,33.663034 60.860693,71.194632 70.871416,103.66667 72.284401,108.25 73.909487,112 74.482719,112 c 0.573234,0 3.827194,-0.94893 7.231023,-2.10873 z"
id="path738"
inkscape:connector-curvature="0" />
<path
style="fill:#b2a3a3;stroke-width:1.33333337"
d="m 88.751799,406.58487 c -7.617476,-1.27485 -13.234381,-4.94736 -13.844536,-9.05197 -0.521841,-3.51051 -0.100306,-3.52907 6.275638,-0.27631 16.170021,8.24934 59.648479,6.0778 102.817099,-5.13518 8.43333,-2.19055 16.83333,-4.36606 18.66666,-4.83444 8.37208,-2.13895 -1.67196,2.3749 -14.66666,6.59129 -33.52208,10.87688 -76.95517,16.43756 -99.248201,12.70661 z M 227.44393,362.84562 c -0.57436,-0.92933 -0.68422,-2.04977 -0.24412,-2.48988 1.19329,-1.19328 2.49436,0.56173 1.84985,2.49527 -0.45163,1.35489 -0.76569,1.35384 -1.60573,-0.005 z m -99.06232,-7.19571 c 3.87166,-10.32902 2.09665,-30.72794 -4.55052,-52.29576 C 116.29709,278.90887 112.23243,273.6048 88.454803,257.1909 67.923297,243.01782 55.322716,226.39615 41.561698,195.33334 29.283254,167.61714 22.38137,145.71014 8.7259167,91.110524 0.34505092,57.600688 -1.018888,49.539947 0.86233554,44.637557 2.2307998,41.071397 4.7174999,48.334351 12.047914,77.307504 c 3.621596,14.314207 6.938303,27.283846 7.370459,28.821426 0.562345,2.00078 1.609649,2.63928 3.683682,2.24579 1.809496,-0.3433 5.972018,1.43921 11.082532,4.74586 7.271452,4.70483 8.446899,6.0906 10.535731,12.42087 4.483581,13.58765 15.098471,34.29834 15.237277,29.72943 0.02332,-0.76768 -2.357119,-8.53816 -5.28987,-17.26772 -3.603481,-10.72606 -4.893993,-16.31022 -3.980445,-17.22377 0.743504,-0.74351 6.05498,-1.75601 11.803278,-2.25 19.053813,-1.63743 28.851909,-8.53477 44.315922,-31.196055 11.60161,-17.001231 11.59935,-16.998534 17.73468,-21.162082 4.00052,-2.714829 6.78859,-3.504585 12.37217,-3.504585 10.9872,0 12.15413,1.776149 18.83408,28.666667 7.65581,30.818885 10.90553,54.101265 10.91311,78.186045 0.009,30.90418 -5.86434,54.13413 -18.59328,73.53018 -6.5956,10.0502 -18.59179,22.28378 -21.85138,22.28378 -1.0441,0 -6.01981,-1.5403 -11.05712,-3.42287 L 106,258.4876 l 6.85795,7.08954 c 7.83141,8.09585 9.42074,10.96145 14.28502,25.7562 5.07668,15.44074 8.79499,33.45173 8.82817,42.76248 0.0317,8.91217 -2.96843,19.4328 -6.31798,22.15492 -1.85149,1.50468 -2.02928,1.42067 -1.27155,-0.60083 z"
id="path736"
inkscape:connector-curvature="0" />
<path
style="fill:#9b1426;stroke-width:1.33333337"
d="M 113.08101,258.1579 C 97.91614,251.53683 90.951246,247.10835 81.533661,238.09918 61.040348,218.4946 43.052986,181.51824 28.722614,129.53628 c -2.698457,-9.78838 -4.593223,-18.11011 -4.210591,-18.49275 0.985491,-0.98549 8.984212,3.89018 10.318669,6.28981 0.611722,1.1 3.283159,8 5.936528,15.33333 9.692557,26.78812 31.088074,65.49743 40.135469,72.61411 4.899785,3.85417 7.810281,3.0265 7.586061,-2.15728 -0.09785,-2.2623 -4.466007,-13.49614 -9.707008,-24.9641 -11.297212,-24.7197 -22.991449,-54.07473 -22.110033,-55.50089 0.34451,-0.55743 4.084311,-1.42856 8.310669,-1.93584 17.087851,-2.05102 28.38197,-10.47289 42.605302,-31.770191 14.71566,-22.034469 21.57421,-26.896571 33.43538,-23.702691 5.55786,1.496573 5.60016,1.555742 8.90946,12.460297 7.82894,25.797325 13.52126,56.611385 14.86965,80.493385 1.51624,26.85516 -3.34305,55.05813 -12.66973,73.53417 -7.33574,14.532 -21.70942,30.96222 -27.04348,30.91275 -0.9656,-0.009 -6.36917,-2.03057 -12.00795,-4.49249 z"
id="path734"
inkscape:connector-curvature="0" />
<path
style="fill:#7a071a;stroke-width:1.33333337"
d="M 114.66666,256.932 C 98.161967,249.82235 93.686663,246.99467 83.252455,237.08319 67.880629,222.48146 56.883067,204.1257 44.439663,172.30172 38.120814,156.14127 26.303457,116.32766 27.145933,114.03776 c 0.576986,-1.56829 0.97237,-0.67005 9.667239,21.96224 12.726929,33.12754 32.614284,68.15434 48.732922,85.83134 6.601568,7.23982 7.657218,7.88096 13.97599,8.4881 5.917146,0.56856 7.247636,0.2331 9.907356,-2.498 1.68977,-1.73513 6.67124,-4.65477 11.06993,-6.4881 6.60079,-2.75115 8.61864,-4.39286 11.55327,-9.39962 6.72084,-11.46641 8.59316,-19.28594 8.60402,-35.93372 0.012,-18.71774 -1.03176,-24.47392 -5.64641,-31.13286 -10.10683,-14.58417 -25.83019,-22.78883 -37.669524,-19.65648 -8.154314,2.1574 -15.275519,7.07391 -19.506525,13.4674 C 75.897155,141.60512 73.799577,144 73.172912,144 c -1.158986,0 -10.506247,-17.61128 -10.506247,-19.79494 0,-0.65716 2.895971,-1.57901 6.435492,-2.04854 8.591852,-1.13975 18.450909,-6.22209 24.930943,-12.85188 2.915127,-2.9825 10.10023,-12.426382 15.9669,-20.986408 5.86666,-8.560025 12.70539,-16.933456 15.19717,-18.607623 5.32142,-3.575328 16.11668,-4.20628 19.20073,-1.122228 2.36203,2.362031 9.584,28.059555 13.72058,48.821179 11.77353,59.09167 3.72384,107.28883 -22.57906,135.19114 -4.52764,4.80296 -8.82622,8.71156 -9.55241,8.6858 -0.72619,-0.0258 -5.82035,-1.9853 -11.32035,-4.3545 z"
id="path732"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 57 KiB

-338
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

-267
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

-137
View File
@@ -1,137 +0,0 @@
#!/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 req as requests
def exit():
if __name__ == "__main__":
input("按回车键退出")
sys.exit()
sys.exit()
# 获取云列表
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/dlls",
"http://gfdgdxi.msns.cn/wine-runner-list/dlls"
]
url = sourcesList[0]
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}'")
#print(f"WINEPREFIX='{wineBotton}' {wine} reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(dllName)[0]} /d native /f")
return 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("下载失败!请重试")
-97
View File
@@ -1,97 +0,0 @@
#!/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 req as requests
homePath = os.path.expanduser('~')
try:
sources = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/fonts/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/fonts/list.json"
]
fontList = json.loads(requests.get(sources[0]).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:
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()
while True:
os.system("clear")
print('''
mmmmmm m
# mmm m mm mm#mm mmm
#mmmmm #" "# #" # # # "
# # # # # # """m
# "#m#" # # "mm "mmm"
''')
if not os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts"):
input("您选择的不是 Wine 容器,无法继续,按回车键退出")
exit()
for i in range(0, len(fontList)):
print(f"{i} {fontList[i][3]}")
while True:
try:
choose = input("请输入要选择的 字体(输入“exit”退出):").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(fontList):
break
if choose == "exit":
exit()
print(f"您选择了字体 {fontList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}"):
print("已经缓存,使用本地版本")
if os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}"):
print("字体已存在,覆盖")
shutil.copy(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}", f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}")
input("安装结束,按回车键继续")
continue
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/font'")
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/font' -o '{fontList[choose][0]}' \"{fontList[choose][1]}\"")
if os.path.exists(f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}"):
print("字体已存在,覆盖")
try:
shutil.copy(f"{homePath}/.cache/deepin-wine-runner/font/{fontList[choose][0]}", f"{sys.argv[1]}/drive_c/windows/Fonts/{fontList[choose][2]}")
except:
print("拷贝失败!")
input("安装结束,按回车键继续")
-126
View File
@@ -1,126 +0,0 @@
#!/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 traceback
import pyquery
if "--help" in sys.argv:
print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本:1.0.0")
print("本程序可以更方便的在 wine 容器中安装 mono、gecko")
sys.exit()
if len(sys.argv) <= 3 or sys.argv[1] == "" or sys.argv[2] == "" or sys.argv[3] == "":
print("您未指定需要安装 gecko 或者 mono 的容器和使用的 wine,无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三 参数四(可略)")
print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为安装gecko或monogecko/mono),参数四为是否缓存(可略),四个参数位置不能颠倒")
sys.exit()
if sys.argv[3] == "mono":
print('''
m m
## ## mmm m mm mmm
# ## # #" "# #" # #" "#
# "" # # # # # # #
# # "#m#" # # "#m#"
''')
else:
print('''
mmm #
m" " mmm mmm # m mmm
# mm #" # #" " # m" #" "#
# # #"""" # #"# # #
"mmm" "#mm" "#mm" # "m "#m#"
''')
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]}/")
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("无本地缓存数据,无法进行、结束")
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\"")
if exitInputShow:
input("安装结束,按回车键退出")
exit()
programVersion = programVersionList("a:last-child").attr.href
# 获取最新版本安装包的URL
programUrl = pyquery.PyQuery(url=f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/{programVersion}")
programDownloadUrl = ""
programFileName = ""
for i in programUrl("a").items():
if i.attr.href[-4:] == ".msi":
programDownloadUrl = f"http://mirrors.ustc.edu.cn/wine/wine/wine-{sys.argv[3]}/{programVersion}{i.attr.href}"
programFileName = i.attr.href
break
if programDownloadUrl == "":
print("无法获取链接,无法继续")
sys.exit()
print(f"当前选择的程序获取路径:{programDownloadUrl}")
if not os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}"):
os.makedirs(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}")
if len(sys.argv) <= 4:
choice = True
else:
choice = (sys.argv[3] == "1")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi") and os.path.exists(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt") and choice:
print("版本号校验")
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "r")
version = file.read().replace("\n", "")
if version == programVersion.replace("\n", ""):
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\"")
if exitInputShow:
input("安装结束,按回车键退出")
exit()
file = open(f"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/information.txt", "w+")
print("开始下载")
os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}/install.msi\"")
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\"")
try:
if sys.argv[4] == "1":
print("写入缓存")
file.write(programVersion)
file.close()
else:
print("删除临时文件")
os.system(f"rm -rf \"{homePath}/.cache/deepin-wine-runner/{sys.argv[3]}\"")
except:
print("写入缓存")
file.write(programVersion)
file.close()
if exitInputShow:
input("安装结束,按回车键退出")
-93
View File
@@ -1,93 +0,0 @@
#!/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 req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/msxml/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/msxml/list.json"
]
msxmlList = json.loads(requests.get(sourcesList[0]).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"]
]
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]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i \"/tmp/deepin-wine-runner-msxml/{msxmlList[id][2]}\"")
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 ## # ## # #
# "" # "# m""m # "" # #
# # "mmm#" m" "m # # #mmmmm
''')
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
try:
if choose.lower() == "exit":
exit()
except:
pass
print(f"您选择了 {msxmlList[choose][0]}")
if len(sys.argv) <= 3:
choice = True
else:
choice = (sys.argv[3] == "1")
if os.path.exists(f"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}") and choice:
print("已经缓存,使用本地版本")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
input("安装结束,按回车键退出")
exit()
print("开始下载")
os.system(f"rm -rfv \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
os.system(f"mkdir -p \"{homePath}/.config/deepin-wine-runner/MSXML/\"")
os.system(f"aria2c -x 16 -s 16 -d \"{homePath}/.config/deepin-wine-runner/MSXML\" -o \"{msxmlList[choose][2]}\" \"{msxmlList[choose][1]}\"")
print("开始安装")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} msiexec /i \"{homePath}/.config/deepin-wine-runner/MSXML/{msxmlList[choose][2]}\"")
input("安装结束,按回车键退出")
-116
View File
@@ -1,116 +0,0 @@
#!/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 req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/net/list.json"
]
netList = json.loads(requests.get(sourcesList[0]).text)
except:
netList = [
["Microsoft® .NET Framework 1.1 版可转散发套件", "https://download.microsoft.com/download/8/2/7/827bb1ef-f5e1-4464-9788-40ef682930fd/dotnetfx.exe"],
["Microsoft .NET Framework 2.0 Service Pack 1 (x86)", "https://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe"],
["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"],
["4.8.1 Offline Installer", "https://download.visualstudio.microsoft.com/download/pr/6f083c7e-bd40-44d4-9e3f-ffba71ec8b09/3951fd5af6098f2c7e8ff5c331a0679c/ndp481-x86-x64-allos-enu.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe"],
[".NET 5.0 Desktop Runtime (v5.0.17) - Windows Arm64 Installer", "https://download.visualstudio.microsoft.com/download/pr/be25784a-4231-4c53-ba6e-869166ef523f/9602c6c0d358d31dc710fd0573fc39e0/windowsdesktop-runtime-5.0.17-win-arm64.exe"],
[".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/e312618d-85c4-4cad-b660-569b5522eca9/e951e76ebe011b5d3ea1289ef68e8281/windowsdesktop-runtime-3.0.3-win-x86.exe"],
[".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/c525a2bb-6e98-4e6e-849e-45241d0db71c/d21612f02b9cae52fa50eb54de905986/windowsdesktop-runtime-3.0.3-win-x64.exe"],
[".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/d2ec7ca2-017d-4d06-a6da-3707daa3c3b1/1f2e108653e3d8316e1657105ef24b93/windowsdesktop-runtime-3.1.28-win-x86.exe"],
[".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/5c74593e-f156-44c8-9957-f11996de72bc/d3e0e26c64a5a2d860c5c0deca975d78/windowsdesktop-runtime-3.1.28-win-x64.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows x86 Installer", "https://download.visualstudio.microsoft.com/download/pr/61747fc6-7236-4d5e-85e5-a5df5f480f3a/02203594bf1331f0875aa6491419ffa1/windowsdesktop-runtime-6.0.8-win-x86.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows x64 Installer", "https://download.visualstudio.microsoft.com/download/pr/b4a17a47-2fe8-498d-b817-30ad2e23f413/00020402af25ba40990c6cc3db5cb270/windowsdesktop-runtime-6.0.8-win-x64.exe"],
[".NET 6.0 Desktop Runtime (v6.0.8) - Windows Arm64 Installer", "https://download.visualstudio.microsoft.com/download/pr/17737b16-dbb0-45f8-9684-16cce46f0835/14475e8380422840249513d58c70d8da/windowsdesktop-runtime-6.0.8-win-arm64.exe"]
]
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]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-net/{programName}'")
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 #
# # # # #
# # ## #mmmmm #
''')
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
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("安装结束,按回车键退出")
-91
View File
@@ -1,91 +0,0 @@
#!/bin/bash
# 使用系统默认的 bash 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.2.0
# 更新时间:2022年09月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
echo
echo 'm m " m m mmmm '
echo '# # # mmm m mm mmm # # m" "m'
echo '" #"# # # #" # #" # #mmmm# # #'
echo ' ## ##" # # # #"""" # # # #'
echo ' # # mm#mm # # "#mm" # # #mm#"'
echo ' # '
ubuntuSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ jammy main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/impish/winehq-impish.sources"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ focal main | sudo tee /etc/apt/sources.list.d/winehq.list"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/ubuntu/ bionic main | sudo tee /etc/apt/sources.list.d/winehq.list"
)
debianSource=(
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ buster main | sudo tee /etc/apt/sources.list.d/winehq.list"
"echo deb [arch=amd64,i386 signed-by=/usr/share/keyrings/winehq-archive.key] https://mirrors.tuna.tsinghua.edu.cn/wine-builds/debian/ bullseye main | sudo tee /etc/apt/sources.list.d/winehq.list"
"sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/debian/dists/bookworm/winehq-bookworm.sources"
)
# 选择发行版
echo "WineHQ 官网:https://wiki.winehq.org/"
echo "国内镜像源:https://mirrors-i.tuna.tsinghua.edu.cn/help/wine-builds/"
echo
echo "选择发行版:"
echo "0. Debian"
echo "1. Ubuntu"
read system
# 选择版本
echo "选择系统版本"
if [ $system = "0" ]; then
echo "0. Debian 10 (Buster)"
echo "1. Debian 11 (Bullseye)"
echo "2. Debian Testing (Bookworm)"
fi
if [ $system = "1" ]; then
echo "0. Ubuntu 22.04"
echo "1. Ubuntu 21.10"
echo "2. Ubuntu 20.04Linux Mint 20.x"
echo "3. Ubuntu 18.04Linux Mint 19.x"
fi
read systemVersion
# 选择 Wine
echo "选择 Wine"
echo "0. 稳定分支"
echo "1. 开发分支"
echo "2. Staging 分支"
read programVersion
# 初步配置
sudo apt-key del "D43F 6401 4536 9C51 D786 DDEA 76F1 A20F F987 672F"
sudo dpkg --add-architecture i386
sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
# 检测 apt-fast 或 ss-apt-fast 是否存在
apt="apt"
which apt-fast > /dev/null
if [ $? == 0 ]; then
apt="apt-fast"
fi
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
bash -c "${debianSource[$systemVersion]}"
fi
if [ $system = "1" ]; then
bash -c "${ubuntuSource[$systemVersion]}"
fi
sudo $apt update
# 安装 Wine
wineInstall=("sudo $apt install --install-recommends winehq-stable" "sudo $apt install --install-recommends winehq-devel" "sudo $apt install --install-recommends winehq-staging")
${wineInstall[$programVersion]}
echo "按回车键退出"
read
-105
View File
@@ -1,105 +0,0 @@
#!/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 req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/other/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/other/list.json"
]
msxmlList = json.loads(requests.get(sourcesList[0]).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"]
]
def Download(wineBotton: str, id: int, wine: str) -> int:
try:
os.remove(f"/tmp/deepin-wine-runner-other/{msxmlList[id][2]}")
except:
pass
os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-other' -o '{msxmlList[id][3]}' \"{msxmlList[id][1]}\"")
if msxmlList[id][2] == "exe":
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-other/{msxmlList[id][3]}'")
if msxmlList[id][2] == "msi":
return os.system(f"WINEPREFIX='{wineBotton}' {wine} msiexec /i '/tmp/deepin-wine-runner-other/{msxmlList[id][3]}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本:1.0.0")
print("本程序可以更方便的在 wine 容器中安装运行库")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装的容器和使用的 wine,无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
mmmm m #
m" "m mm#mm # mm mmm m mm
# # # #" # #" # #" "
# # # # # #"""" #
#mm# "mm # # "#mm" #
''')
print("请选择以下的应用进行安装(不保证能正常安装运行)")
for i in range(0, len(msxmlList)):
print(f"{i}{msxmlList[i][0]}")
while True:
try:
choose = input("请输入要选择要安装的应用(输入“exit”退出):").lower()
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(msxmlList):
break
if choose == "exit":
exit()
if len(sys.argv) <= 3:
choice = True
else:
choice = (sys.argv[3] == "1")
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]}'")
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]}'")
input("安装结束,按回车键退出")
sys.exit()
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/other/{msxmlList[choose][3]}'")
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]}'")
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]}'")
input("安装结束,按回车键退出")
sys.exit()
-90
View File
@@ -1,90 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.1.0
# 更新时间:2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import json
import req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/vb/list.json"
]
netList = json.loads(requests.get().text)
except:
netList = [
["Visual Basic 1(DOS application)", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun100.exe", "vbrun100.exe"],
["Visual Basic 2(DOS application)", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun200.exe", "vbrun200.exe"],
["Visual Basic 3", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vb3run.exe", "vb3run.exe"],
["Visual Basic 4", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vb4run.exe", "vb4run.exe"],
["Visual Basic 6", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vb/vbrun60sp4.exe", "vbrun60sp4.exe"]
]
def Download(wineBotton: str, id: int, wine: str) -> int:
try:
os.remove(f"/tmp/deepin-wine-runner-vb/{netList[id][2]}")
except:
pass
os.system(f"aria2c -x 16 -s 16 -d '/tmp/deepin-wine-runner-vb' -o '{netList[id][2]}' \"{netList[id][1]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-vb/{netList[id][2]}'")
if __name__ == "__main__":
if "--help" in sys.argv:
print("作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("版本:1.0.0")
print("本程序可以更方便的在 wine 容器中安装 Visual Basic Runtime")
sys.exit()
if len(sys.argv) <= 2 or sys.argv[1] == "" or sys.argv[2] == "":
print("您未指定需要安装 Visual Basic Runtime 的容器和使用的 wine,无法继续")
print("参数:")
print("XXX 参数一 参数二 参数三(可略)")
print("参数一为需要安装的容器,参数二为需要使用的wine,参数三为是否缓存(可略),三个参数位置不能颠倒")
sys.exit()
homePath = os.path.expanduser('~')
print('''
m m mmmmm
"m m" # #
# # #mmmm"
"mm" # #
## #mmmm"
''')
print("请选择以下的 Visual Basic Runtime 进行安装(不保证能正常安装运行)")
for i in range(0, len(netList)):
print(f"{i} Visual Basic Runtime {netList[i][0]}")
while True:
try:
choose = input("请输入要选择的 Visual Basic Runtime 版本(输入“exit”退出):").lower()
if choose == "exit":
break
choose = int(choose)
except:
print("输入错误,请重新输入")
continue
if 0 <= choose and choose < len(netList):
break
if choose == "exit":
exit()
print(f"您选择了 Visual Basic Runtime {netList[choose][0]}")
if os.path.exists(f"{homePath}/.cache/deepin-wine-runner/vb/{netList[choose][2]}"):
print("已经缓存,使用本地版本")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vb/{netList[choose][2]}'")
input("安装结束,按回车键退出")
exit()
print("开始下载")
os.system(f"rm -rf '{homePath}/.cache/deepin-wine-runner/vb/{netList[choose][2]}'")
os.system(f"mkdir -p '{homePath}/.cache/deepin-wine-runner/vb'")
os.system(f"aria2c -x 16 -s 16 -d '{homePath}/.cache/deepin-wine-runner/vb' -o '{netList[choose][2]}' \"{netList[choose][1]}\"")
os.system(f"WINEPREFIX='{sys.argv[1]}' {sys.argv[2]} '{homePath}/.cache/deepin-wine-runner/vb/{netList[choose][2]}'")
input("安装结束,按回车键退出")
-98
View File
@@ -1,98 +0,0 @@
#!/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 req as requests
try:
sourcesList = [
"https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/list.json",
"http://gfdgdxi.msns.cn/wine-runner-list/vscpp/list.json"
]
netList = json.loads(requests.get().text)
except:
netList = [
["VC6 运行库", "https://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe"],
["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]}\"")
return os.system(f"WINEPREFIX='{wineBotton}' {wine} '/tmp/deepin-wine-runner-vcpp/{netList[id][2]}'")
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('''
m m mmm
"m m" m" " m m
# # # # #
"mm" # """#""""""#"""
## "mmm" # #
''')
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
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("安装结束,按回车键退出")
-85
View File
@@ -1,85 +0,0 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.1.0
# 更新时间:2022年08月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
def InstallWithDeepinSource(program):
os.system(f"sudo cp '{programPath}/deepin.list' /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo dpkg --add-architecture i386")
os.system(f"sudo apt update")
os.system(f"sudo apt install {program}")
os.system(f"sudo rm /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo apt update")
os.system(f"sudo dpkg --remove-architecture i386")
os.system(f"sudo apt update")
def InstallWithSparkStoreSource(program):
os.system(f"sudo cp '{programPath}/sparkstore.list' /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"sudo cp '{programPath}/deepin.list' /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo dpkg --add-architecture i386")
os.system(f"sudo mkdir /tmp/spark-store-install")
os.system(f"sudo rm -rf /tmp/spark-store-install/spark-store.asc")
os.system(f"sudo wget -O /tmp/spark-store-install/spark-store.asc https://d.store.deepinos.org.cn/dcs-repo.gpg-key.asc")
os.system(f"sudo gpg --dearmor /tmp/spark-store-install/spark-store.asc")
os.system(f"sudo apt update")
os.system(f"sudo apt install {program}")
os.system(f"sudo rm /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"sudo rm /etc/apt/sources.list.d/deepin20-withwinerunner.list")
os.system(f"sudo apt update")
os.system(f"sudo dpkg --remove-architecture i386")
os.system(f"sudo apt update")
def Repair():
print("修复中……")
os.system(f"rm -f /etc/apt/sources.list.d/sparkstore-withwinerunner.list")
os.system(f"rm -f /etc/apt/sources.list.d/deepin20-withwinerunner.list")
print("修复完成!")
if __name__ == "__main__":
print('''
m m "
# # # mmm m mm mmm
" #"# # # #" # #" #
## ##" # # # #""""
# # mm#mm # # "#mm"
''')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
print("能不用这个就不用这个!!!真心建议!!!\n")
print("下面的安装过程皆需要换源等操作,安装过程千万不要中断,以及千万不要 apt upgrade,感谢\n")
print("如果真一不小心中断了,可以在下面输入“repair”进行修复")
print("所有操作均需要 Root 权限,请知悉\n")
print("千万不要中断且 apt upgrade、千万不要中断且 apt upgrade、千万不要中断且 apt upgrade,重要的事情说三遍")
print("以及无法保证安装的 Wine 能使用、无法保证安装的 Wine 能使用、无法保证安装的 Wine 能使用,重要的事情说三遍")
repair = input("按回车后继续")
if repair.lower() == "repair":
Repair()
exit()
for i in [
["原版 WineWine64", "wine"],
["deepin-wine5-stable", "deepin-wine5-stable"],
["deepin-wine6-stable", "deepin-wine6-stable"]
]:
choose = input(f"安装{i[0]}?(添加深度源)[Y/N]").upper()
if choose == "Y":
print("安装中……")
InstallWithDeepinSource(i[1])
print("安装完成!")
#exit()
for i in [
["deepin-wine", "deepin-wine"],
["spark-wine7-devel", "spark-wine7-devel"]
]:
choose = input(f"安装{i[0]}?(添加深度、星火源)[Y/N]").upper()
if choose == "Y":
InstallWithSparkStoreSource(i[1])
Binary file not shown.
-200
View File
@@ -1,200 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>U</name>
<message>
<location filename="../deepin-wine-packager.py" line="30"/>
<source> wine </source>
<translation>Choose Wine Botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="35"/>
<source></source>
<translation>Choose Icon Files</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="40"/>
<source> deb </source>
<translation>Save Deb</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation>Tips</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="103"/>
<source></source>
<translation>Build deb package will change choose botton, are you continuing?</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1162"/>
<source></source>
<translation>Browser...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1164"/>
<source></source>
<translation>Build...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1165"/>
<source> deb</source>
<translation>Install Build Deb...</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1166"/>
<source></source>
<translation>Build Deb Formwork</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1169"/>
<source> deb </source>
<translation>When remove this deb, it will remove botton auto</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1170"/>
<source>使 Wine </source>
<translation>Clean Wine Botton (By UOS Wine Activity Shell)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1177"/>
<source>使wine helper
deepin-wine-helper</source>
<translation>Use Spark Wine Helper(If you don&apos;t checked, will use deepin-wine-helper)</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1187"/>
<source> deb </source>
<translation>Build Deb Package Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1188"/>
<source> deb </source>
<translation>Build Deb Package Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1189"/>
<source> deb </source>
<translation>Build Deb Package Description(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1190"/>
<source> deb </source>
<translation>Build Deb Package Maintainer(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1191"/>
<source> wine </source>
<translation>Deb Use Wine Botton Unzip Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1192"/>
<source> wine </source>
<translation>Deb Use Wine Botton Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1193"/>
<source>wine </source>
<translation>Deb Use Wine Botton Program Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1194"/>
<source> .desktop </source>
<translation>Program Link Type(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1195"/>
<source>wine </source>
<translation>Deb Use Wine Botton Program Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1196"/>
<source> .desktop </source>
<translation>Program Link Name(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1197"/>
<source> .desktop </source>
<translation>Program Link Icon Path:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1198"/>
<source> wine </source>
<translation>Build Deb Using Wine Version(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1199"/>
<source> deb </source>
<translation>Build Deb Save Path(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1220"/>
<source></source>
<translation>More Setting</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1223"/>
<source>deb ()</source>
<translation>Deb Depends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1225"/>
<source>deb ()</source>
<translation>Deb Recommends</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1230"/>
<source>Wine (Wine)
32Wine不能使用64位容器</source>
<translation>Deb Use Wine Architecture :
Tips: X86 Wine is unable to use x86 botton</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1233"/>
<source>deb </source>
<translation>Deb Option:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1237"/>
<source>deb ()</source>
<translation>Deb Depends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1239"/>
<source>deb ()</source>
<translation>Deb Recommends:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1241"/>
<source> .desktop MimeType</source>
<translation>Program Link MimeType(*Must):</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1243"/>
<source> deb </source>
<translation>Build Deb Architecture:</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1253"/>
<source></source>
<translation>Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1254"/>
<source></source>
<translation>Help</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1255"/>
<source>退</source>
<translation>Exit Program</translation>
</message>
<message>
<location filename="../deepin-wine-packager.py" line="1256"/>
<source></source>
<translation>Tips</translation>
</message>
</context>
</TS>
Binary file not shown.
-849
View File
@@ -1,849 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="en" sourcelanguage="zh_CN">
<context encoding="UTF-8">
<name>U</name>
<message>
<location filename="../mainwindow.py" line="2142"/>
<source>Wine(&amp;W)</source>
<translation>Wine(&amp;W)</translation>
</message>
<message>
<location filename="../mainwindow.py" line="2319"/>
<source>VIRUSTOTAL</source>
<translation>VIRUSTOTAL</translation>
</message>
<message>
<location filename="../mainwindow.py" line="2057"/>
<source>RegShot</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2299"/>
<source>MD5(&amp;M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2300"/>
<source>SHA1(&amp;M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2302"/>
<source>SHA256(&amp;S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2303"/>
<source>SHA512(&amp;S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2338"/>
<source>Gitee</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2339"/>
<source>Github</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2340"/>
<source>Gitlink</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.py" line="2341"/>
<source>Gitlab</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="250"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="469"/>
<source>
OK</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="876"/>
<source>Python应用</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="895"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1390"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="901"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="910"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="967"/>
<source>ISO镜像</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1994"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="976"/>
<source>/ISO镜像</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="977"/>
<source>/ISO镜像</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="979"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="981"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="982"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1004"/>
<source>DLL
</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1382"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1194"/>
<source>/</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1287"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1289"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1339"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1349"/>
<source>NULL</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1360"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1361"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1368"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1390"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1423"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1424"/>
<source>wine DEBUG </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1425"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1426"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1427"/>
<source>使</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1428"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1429"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1430"/>
<source>Wine Mono Gecko </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1431"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1432"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1433"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1434"/>
<source>EXE名称生成路径</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1436"/>
<source> DEBUG </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1442"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1446"/>
<source>()</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1448"/>
<source>使deepin </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1450"/>
<source> Wine Mono Gecko </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1451"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1452"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1453"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1454"/>
<source>wine容器路径才可指定其它路径</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1490"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1977"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1981"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1988"/>
<source>EXEMSI或者命令</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="1997"/>
<source>WINE版本</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2009"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2013"/>
<source>Desktop文件</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2015"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2020"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2023"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2029"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2030"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2034"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2037"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2041"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2046"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2050"/>
<source>WINE配置</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2051"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2054"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2060"/>
<source>wine配置</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2063"/>
<source>/ Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2080"/>
<source>wine安装应用时的终端输出内容</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2097"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2100"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2103"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2110"/>
<source>(&amp;P)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2111"/>
<source> wine(&amp;I)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2112"/>
<source> wine(Deepin23)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2113"/>
<source> WineHQ</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2114"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2115"/>
<source>(&amp;S)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2116"/>
<source>(&amp;C)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2117"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2118"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2119"/>
<source>退(&amp;E)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2143"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2144"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2145"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2146"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2147"/>
<source> Wine Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2148"/>
<source>Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2149"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2150"/>
<source>使 Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2151"/>
<source>DLL</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2152"/>
<source>DLLDOS内核如 Windows 95 </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2153"/>
<source> Geek Uninstaller </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2154"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2171"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2172"/>
<source>wine .net framework</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2173"/>
<source>wine Visual Studio C++</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2174"/>
<source>wine MSXML</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2175"/>
<source>wine gecko</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2176"/>
<source>wine mono</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2177"/>
<source>wine Visual Basic Runtime</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2178"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2186"/>
<source> Wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2187"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2188"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2189"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2190"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2191"/>
<source>wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2192"/>
<source>wine wine</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2200"/>
<source> run_v3.sh Deepin </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2201"/>
<source> run_v3.sh Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2202"/>
<source> deepin-wine-helper</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2203"/>
<source>使winetricks打开指定容器</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2210"/>
<source>/ opengl</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2211"/>
<source> opengl</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2212"/>
<source> opengl</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2215"/>
<source>/ winbind</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2216"/>
<source> winbind</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2217"/>
<source> winbind</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2220"/>
<source>/ DXVK</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2221"/>
<source> DXVK</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2222"/>
<source> DXVK</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2226"/>
<source>/ wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2227"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2228"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2231"/>
<source>/ wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2232"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2233"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2236"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2237"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2238"/>
<source> wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2241"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2242"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2243"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2244"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2293"/>
<source>(&amp;V)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2294"/>
<source>使 Virtualbox Windows </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2298"/>
<source>(&amp;S)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2301"/>
<source>Base64()(&amp;B)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2316"/>
<source>(&amp;C)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2317"/>
<source>360 </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2318"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2327"/>
<source>(&amp;H)</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2328"/>
<source> Wine </source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2329"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2330"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2331"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2332"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2333"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2334"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2335"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2336"/>
<source> Qt</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2337"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2342"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2356"/>
<source> Wiki</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2358"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2369"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<location filename="../mainwindow.py" line="2370"/>
<source> Android UEngine </source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
Binary file not shown.
-32
View File
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>MainWindow</name>
<message>
<location filename="../wine-source/mainwindow.ui" line="14"/>
<source> Wine</source>
<translation type="unfinished">Download Wine</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="41"/>
<source>&lt;&lt;</source>
<translation type="unfinished">&lt;&lt;</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="48"/>
<source>&gt;&gt;</source>
<translation type="unfinished">&gt;&gt;</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="77"/>
<source>Wine资源文件</source>
<translation type="unfinished">Don&apos;t Unzip Wine File</translation>
</message>
<message>
<location filename="../wine-source/mainwindow.ui" line="84"/>
<source></source>
<translation type="unfinished">Delete Download Zip File And Only Unzip</translation>
</message>
</context>
</TS>
Binary file not shown.
-176
View File
@@ -1,176 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" sourcelanguage="zh">
<context>
<name>MainWindow</name>
<message>
<location filename="mainwindow.ui" line="14"/>
<source>Windows </source>
<translation type="unfinished">Windows System Installer By VirtualBox</translation>
</message>
<message>
<location filename="mainwindow.ui" line="32"/>
<location filename="mainwindow.ui" line="35"/>
<source></source>
<translation type="unfinished">Setting</translation>
</message>
<message>
<location filename="mainwindow.ui" line="43"/>
<source></source>
<translation type="unfinished">ISO Image Path:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="50"/>
<source></source>
<translation type="unfinished">Input System ISO Image</translation>
</message>
<message>
<location filename="mainwindow.ui" line="57"/>
<source></source>
<translation type="unfinished">Browser......</translation>
</message>
<message>
<location filename="mainwindow.ui" line="68"/>
<source></source>
<translation type="unfinished">System Version:</translation>
</message>
<message>
<location filename="mainwindow.ui" line="78"/>
<source></source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="82"/>
<source>Windows 7 32 </source>
<translation type="unfinished">Windows 7 X86(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="87"/>
<source>Windows 7 64 </source>
<translation type="unfinished">Windows 7 X64(Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="92"/>
<source> Windows </source>
<translation type="unfinished">Other Windows(Don&apos;t Support Auto Install)</translation>
</message>
<message>
<location filename="mainwindow.ui" line="117"/>
<source></source>
<translation type="unfinished">Install</translation>
</message>
<message>
<location filename="mainwindow.ui" line="126"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;使&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="141"/>
<source>/使</source>
<translation type="unfinished">Install/Using Help</translation>
</message>
<message>
<location filename="mainwindow.ui" line="150"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Ctrl&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:26pt; font-weight:600;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712191756.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;使&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712192850.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712193527.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Windows 7 Windows 7 Windows XPWindows 10DeepinUbuntu &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;1 Oracle VM VirtualBox &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;2Windows&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Manager_20220712223602.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox_20220712223705.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//__20220712224639.png&quot; /&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:26pt; font-weight:600;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1=&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture/_VirtualBox Machine_20220712142929.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2VirtualBox Guest AdditionsVBoxWindowsAdditions&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143006.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143018.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;4Next&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143029.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143037.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;5Install&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143044.png&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;6Reboot nowFinishReboot nowFinish&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;img src=&quot;:/picture//_VirtualBox Machine_20220712143103.png&quot; /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="224"/>
<location filename="mainwindow.ui" line="313"/>
<source></source>
<translation type="unfinished">About</translation>
</message>
<message>
<location filename="mainwindow.ui" line="281"/>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Noto Sans CJK SC&apos;; font-size:10.5pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; wine Wine Is Not An Emulator&amp;lt;Wine &amp;gt; Windows &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; C++ QtPython Virtualbox Windows Linux Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; GPL V3 &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitee&lt;a href=&quot;https://gitee.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitee.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Github&lt;a href=&quot;https://github.com/gfdgd-xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://github.com/gfdgd-xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Gitlink&lt;a href=&quot;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0082fa;&quot;&gt;https://gitlink.org.cn/gfdgd_xi/deep-wine-runner&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Wine Wine Windows Windows exe &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;gfdgd xi&lt;/p&gt;
&lt;hr /&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Droid Sans Mono&apos;,&apos;monospace&apos;,&apos;monospace&apos;; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="mainwindow.ui" line="308"/>
<source>退</source>
<translation type="unfinished">Exit</translation>
</message>
</context>
</TS>

Some files were not shown because too many files have changed in this diff Show More