测试安装包构建

This commit is contained in:
gfdgd xi 2023-01-03 19:21:32 +08:00
parent 895e55d964
commit fb0f9e1064
20 changed files with 290 additions and 81 deletions

View File

@ -312,7 +312,7 @@ class ProgramRunStatusShow():
else: else:
# 显示最新的3条评论 # 显示最新的3条评论
try: try:
all = int(requests.get(f"https://code.gitlink.org.cn/gfdgd-xi-org/bashpinlun/raw/branch/master/{fileName}/data.txt").text) all = int(requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{fileName}/data.txt").text)
now = all - 3 now = all - 3
print(all) print(all)
if all < 3: if all < 3:
@ -323,7 +323,7 @@ class ProgramRunStatusShow():
uploadList = [] uploadList = []
for i in range(all - 1, start - 1, -1): for i in range(all - 1, start - 1, -1):
print(f"{i + 1} 条评论:") print(f"{i + 1} 条评论:")
info = requests.get(f"https://code.gitlink.org.cn/gfdgd-xi-org/bashpinlun/raw/branch/master/{fileName}/pf-{i}.txt").text.strip() info = requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{fileName}/pf-{i}.txt").text.strip()
print(info) print(info)
uploadList.append([f"用户{i + 1}", i + 1, info]) uploadList.append([f"用户{i + 1}", i + 1, info])
Add(uploadList) Add(uploadList)

Binary file not shown.

View File

@ -1,5 +1,5 @@
Package: wine-runner-linux Package: spark-deepin-wine-runner
Version: 3.0.0.2 Version: 3.0.1
Maintainer: gfdgd xi <3025613752@qq.com> Maintainer: gfdgd xi <3025613752@qq.com>
Homepage: https://gitee.com/gfdgd-xi-org/deep-wine-runner Homepage: https://gitee.com/gfdgd-xi-org/deep-wine-runner
Architecture: all Architecture: all

View File

@ -31,12 +31,15 @@ urlSourcesList = [
"https://gitee.com/gfdgd-xi/deep-wine-runner-auto-configuration-script/raw/master/", # Gitee 源 "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 源 "https://gfdgd-xi.github.io/deep-wine-runner-auto-configuration-script/", # Github 源
"http://gfdgdxi.msns.cn/wine-runner-list/auto/", # 备用源1纯 IPv6 源 "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/deep-wine-runner-auto-configuration-script/", # 备用源2
"http://gfdgdxi.free.idcfengye.com/wine-runner-list/auto/", # 备用源 3 "http://gfdgdxi.free.idcfengye.com/wine-runner-list/auto/", # 备用源 3
"http://127.0.0.1/wine-runner-list/auto/" # 本地测试源 "http://127.0.0.1/wine-runner-list/auto/" # 本地测试源
] ]
urlSources = urlSourcesList[0] urlSources = urlSourcesList[0]
lists = [] lists = []
#print(requests.post("http://120.25.153.144:30250/PingLun", {"PinLun": "测试文本", "Version": "purgeexepro.sh"}).text)
class ProgramRunStatusUpload(): class ProgramRunStatusUpload():
msgWindow = None msgWindow = None
starLayout = None starLayout = None
@ -136,7 +139,7 @@ class InformationWindow():
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>" about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
try: try:
import requests as r import requests as r
fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json() fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = "" tipsInfo = ""
except: except:
fenlists = [0, 0, 0, 0, 0] fenlists = [0, 0, 0, 0, 0]
@ -207,10 +210,36 @@ class InformationWindow():
message.show() message.show()
message.exec_() message.exec_()
def Add(lists: list):
global pinLunLayout
pinLunLayout1 = QtWidgets.QVBoxLayout()
pinLunLayout = QtWidgets.QWidget()
pinLunLayout.setLayout(pinLunLayout1)
for i in range(pinLunLayout1.count()):
pinLunLayout1.removeItem(pinLunLayout1.itemAt(i))
for i in lists:
widget = QtWidgets.QWidget()
inLayout = QtWidgets.QGridLayout()
inLayout.addWidget(QtWidgets.QLabel("<hr>"), 0, 0, 1, 3)
inLayout.addWidget(QtWidgets.QLabel(f"<b>{i[0]}</b>"), 1, 0)
inLayout.addWidget(QtWidgets.QLabel(f"<p align='right'><b>第{i[1]}层</b></p>"), 1, 2)
inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3)
widget.setLayout(inLayout)
pinLunLayout1.addWidget(widget)
#pinLunLayout.addWidget(QtWidgets.QLabel("<hr/>"))
# pinLunLayout = widget
all = 0
now = 0
class ProgramRunStatusShow(): class ProgramRunStatusShow():
msgWindow = None msgWindow = None
pingLunLayout = None
def ShowWindow(): def ShowWindow():
global lists global lists
global all
global now
global leftButton
global rightButton
# 获取选中项 # 获取选中项
try: try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data() choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
@ -224,15 +253,12 @@ class ProgramRunStatusShow():
fileName = i[1] fileName = i[1]
break break
try: try:
fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json() fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").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 = "" tipsInfo = ""
except: except:
#traceback.print_exc() #traceback.print_exc()
fenlists = [0, 0, 0, 0, 0] fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?" tipsInfo = "暂时无人提交此脚本评分,是否立即提交?"
maxHead = fenlists.index(max(fenlists)) maxHead = fenlists.index(max(fenlists))
allNumber = 0 allNumber = 0
@ -248,13 +274,13 @@ class ProgramRunStatusShow():
msgWidget = QtWidgets.QWidget() msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout() msgWidgetLayout = QtWidgets.QGridLayout()
starLayout = QtWidgets.QHBoxLayout() starLayout = QtWidgets.QHBoxLayout()
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此上传运行情况")) uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此提交评分"))
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose)) uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0) msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0, 2, 1)
msgWidgetLayout.addLayout(starLayout, 0, 1) msgWidgetLayout.addLayout(starLayout, 0, 1, 2, 1)
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 1, 0, 1, 2) msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 0, 2)
#msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2) #msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
msgWidgetLayout.addWidget(uploadButton, 3, 0, 1, 2) msgWidgetLayout.addWidget(uploadButton, 1, 2)
end = 5 end = 5
if maxHead > 5: if maxHead > 5:
for i in range(end): for i in range(end):
@ -265,12 +291,136 @@ class ProgramRunStatusShow():
head = maxHead head = maxHead
for i in range(head, end): for i in range(head, end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>")) starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>"))
pingLun = QtWidgets.QWidget()
msgWidgetLayout.addWidget(pingLun, 4, 0, 1, 3)
pingLunLayout = QtWidgets.QGridLayout()
pingLunInfo = QtWidgets.QTextEdit()
#pingLunInfo.document().setMaximumBlockCount(5)
uploadButton = QtWidgets.QPushButton("评论")
pingLunLayout.addWidget(pingLunInfo, 0, 0, 1, 3)
pingLunLayout.addWidget(uploadButton, 1, 2)
pingLunInfo.setPlaceholderText("""在此输入评论,须知:
1不得含有色情暴力侮辱等违法内容
2不得有广告推广等内容
3字数至少 15 但不得超过 250
4评论内容最多 5 且评论内容将会进行审核意味着评论不会实时生效显示""")
leftButton = QtWidgets.QPushButton("上一页")
rightButton = QtWidgets.QPushButton("下一页")
if maxHead == 0:
#pingLun.setDisabled(True)
pass
else:
# 显示最新的3条评论
try:
all = int(requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{fileName}/data.txt").text)
now = all - 3
print(all)
if all < 3:
start = 0
rightButton.setDisabled(True)
else:
start = all - 3
uploadList = []
for i in range(all - 1, start - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"{base64.b64decode('aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy9iYXNocGlubHVuL3Jhdy9icmFuY2gvbWFzdGVyLw==').decode('utf-8')}{fileName}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
Add(uploadList)
except:
traceback.print_exc()
try:
ProgramRunStatusShow.pingLunLayout = pingLunLayout
pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
except:
leftButton.setDisabled(True)
rightButton.setDisabled(True)
leftButton.clicked.connect(Left)
rightButton.clicked.connect(Right)
pingLunLayout.addWidget(leftButton, 3, 0)
pingLunLayout.addWidget(rightButton, 3, 2)
leftButton.setDisabled(True)
pingLun.setLayout(pingLunLayout)
msgWidget.setLayout(msgWidgetLayout) msgWidget.setLayout(msgWidgetLayout)
uploadButton.clicked.connect(lambda: ProgramRunStatusShow.Upload(pingLunInfo.toPlainText(), fileName))
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget) ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath)) ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况") ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况")
ProgramRunStatusShow.msgWindow.show() ProgramRunStatusShow.msgWindow.show()
def Upload(info, name):
print(f"脚本:{name}")
print(f"评论:{info}")
try:
#
res = requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL1BpbmdMdW4=").decode("utf-8"), {"PinLun": info, "Version": name}).json()
print(res)
if res["ExitCode"]:
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", res["Error"])
return
QtWidgets.QMessageBox.information(ProgramRunStatusShow.msgWindow, "提示", res["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", "提交失败")
def UpdateFen():
global now
fileName = ""
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
uploadList = []
for i in range(now + 2, now - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"https://code.gitlink.org.cn/gfdgd-xi-org/bashpinlun/raw/branch/master/{fileName}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
#ProgramRunStatusShow.pingLunLayout.removeItem(ProgramRunStatusShow.pingLunLayout.itemAt(2))
ProgramRunStatusShow.pingLunLayout.removeWidget(pinLunLayout)
pinLunLayout.hide()
#pinLunLayout.
Add(uploadList)
#l = QtWidgets.QGridLayout()
#l.removeWidget(pinLunLayout)
ProgramRunStatusShow.pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
def Left():
global now
global all
if now + 6 >= all:
now = all - 3
leftButton.setDisabled(True)
rightButton.setEnabled(True)
else:
now += 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
print(all)
print(now)
def Right():
global now
if now - 3 < 0:
now = 0
rightButton.setDisabled(True)
leftButton.setEnabled(True)
else:
now -= 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
def UploadFen(): def UploadFen():
global lists global lists
# 获取选中项 # 获取选中项
@ -401,6 +551,7 @@ if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow() window = QtWidgets.QMainWindow()
ui = Ui_MainWindow() ui = Ui_MainWindow()
pinLunLayout = QtWidgets.QHBoxLayout()
ui.setupUi(window) ui.setupUi(window)
window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本") window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本")
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg")) window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))

View File

@ -0,0 +1,14 @@
#!/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]))

View File

@ -2,7 +2,7 @@
# 使用系统默认的 python3 运行 # 使用系统默认的 python3 运行
########################################################################################### ###########################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢 # 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.1.0 # 版本:3.0.1
# 更新时间2022年10月05日 # 更新时间2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建 # 基于 Python3 构建
@ -11,8 +11,10 @@ import os
import sys import sys
import time import time
import json import json
import random
import platform import platform
import traceback import traceback
import webbrowser
import subprocess import subprocess
import PyQt5.QtWidgets as QtWidgets import PyQt5.QtWidgets as QtWidgets
# 读取文本文档 # 读取文本文档
@ -38,8 +40,8 @@ programEnv = [
["($PROGRAMPATH)", programPath], ["($PROGRAMPATH)", programPath],
["($VERSION)", version], ["($VERSION)", version],
["($THANK)", thankText], ["($THANK)", thankText],
["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"], ["($MAKER)", "RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"], ["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢"],
["($?)", "0"], ["($?)", "0"],
["($PLATFORM)", platform.system()], ["($PLATFORM)", platform.system()],
["($DEBUG)", "1"] ["($DEBUG)", "1"]
@ -57,6 +59,19 @@ readOnlyEnv = [
"($SYSTEM)", "($SYSTEM)",
"($DEBUG)" "($DEBUG)"
] ]
def FindFile(file, name):
for i in os.listdir(file):
path = f"{file}/{i}"
if os.path.isdir(path):
returnPath = FindFile(path, name)
if returnPath != None:
return returnPath.replace("//", "/")
if os.path.isfile(path):
if i == name:
return path
return None
def Debug(): def Debug():
if "--debug" in sys.argv: if "--debug" in sys.argv:
traceback.print_exc() traceback.print_exc()
@ -111,7 +126,9 @@ class Command():
"disbledWinebottlecreatelink", "disbledWinebottlecreatelink",
"enabledWinebottlecreatelink", "enabledWinebottlecreatelink",
"installvb", "installvb",
"installother" "installother",
"decompressionbottle",
"programforum"
] ]
def __init__(self, commandString: str) -> None: def __init__(self, commandString: str) -> None:
@ -279,7 +296,7 @@ class Command():
def Version(self): def Version(self):
print(f"版本:{version}") print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢") print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢")
return 0 return 0
def Pause(self) -> int: def Pause(self) -> int:
@ -389,6 +406,20 @@ class Command():
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"] self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"]
self.Bat() self.Bat()
def DecompressionBottle(self):
tempDebDir = f"/tmp/wine-runner-unpack-deb-{random.randint(0, 1000)}"
if os.system(f"dpkg -x '{self.command[1]}' '{tempDebDir}'"):
return 1
zippath = FindFile(tempDebDir, "files.7z")
if zippath == None:
return 2
# 解压文件
os.system(f"mkdir -p '{self.command[2]}'")
fi = os.system(f"7z x -y '{zippath}' -o'{self.command[2]}'")
os.system(f"rm -rfv '{tempDebDir}'")
return fi
def DisbledHttpProxy(self): 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.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
self.Bat() self.Bat()
@ -401,6 +432,9 @@ class Command():
import InstallOther import InstallOther
return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine) return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def ProgramForum(self):
webbrowser.open_new_tab("https://gfdgdxi.flarum.cloud/")
# 可以运行的命令的映射关系 # 可以运行的命令的映射关系
# 可以被使用的命令的映射 # 可以被使用的命令的映射
commandList = { commandList = {
@ -443,7 +477,9 @@ class Command():
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink, "disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink, "enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB, "installvb": InstallVB,
"installother": InstallOther "installother": InstallOther,
"decompressionbottle": DecompressionBottle,
"programforum": ProgramForum
} }
# 参数数列表 # 参数数列表
@ -488,7 +524,9 @@ class Command():
"disbledWinebottlecreatelink": [0], "disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0], "enabledWinebottlecreatelink": [0],
"installvb": [1], "installvb": [1],
"installother": [1] "installother": [1],
"decompressionbottle": [2],
"programforum": [0]
} }
windowsUnrun = [ windowsUnrun = [
"createbotton", "createbotton",
@ -502,7 +540,8 @@ class Command():
"disbledopengl", "disbledopengl",
"installdxvk", "installdxvk",
"installfont", "installfont",
"installsparkcorefont" "installsparkcorefont",
"decompressionbottle"
] ]
# 解析 # 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int: def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
@ -554,7 +593,7 @@ class Command():
i[a] = i[a].replace(b[0], b[1]) i[a] = i[a].replace(b[0], b[1])
commandReturn = self.commandList[i[0]](self) commandReturn = self.commandList[i[0]](self)
if commandReturn: if commandReturn:
print(f"运行命令{' '.join(self.command)}出现错误") print(f"运行命令{' '.join(self.command)}出现错误,返回值:", commandReturn)
programEnv[9][1] = str(commandReturn) programEnv[9][1] = str(commandReturn)
if self.close: if self.close:
break break
@ -574,7 +613,7 @@ if __name__ == "__main__":
if len(sys.argv) - optionAll < 2: if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境") print("Wine 运行器自动配置文件解析器交互环境")
print(f"版本:{version}") print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢") print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢")
print("--------------------------------------------------------------") print("--------------------------------------------------------------")
while True: while True:
commandLine = input(">") commandLine = input(">")

View File

@ -7,6 +7,7 @@ if [ ! -d "$1" ]; then
echo "路径不存在!" echo "路径不存在!"
exit 1 exit 1
fi fi
programPath=`dirname $0`
echo $0 echo $0
echo $1 echo $1
echo $2 echo $2
@ -16,13 +17,14 @@ cd "$1"
# 拷贝 Qemu Static # 拷贝 Qemu Static
cp -r /usr/bin/qemu-*-static ./usr/bin cp -r /usr/bin/qemu-*-static ./usr/bin
# 挂载目录 # 挂载目录
mount --bind /dev ./dev # 此部分将会由 pardus-chroot 来处理
#mount --bind /dev ./dev
#mount --bind /dev/pts ./dev/pts #mount --bind /dev/pts ./dev/pts
mount -t proc /proc ./proc #mount -t proc /proc ./proc
mount --bind /etc/resolv.conf ./etc/resolv.conf #mount --bind /etc/resolv.conf ./etc/resolv.conf
mount -t sysfs /sys ./sys #mount -t sysfs /sys ./sys
#mount --bind /dev/shm ./dev/shm #mount --bind /dev/shm ./dev/shm
chmod 777 -R root chmod 777 -R root tmp
xhost + xhost +
# 挂载 Wine 运行器目录 # 挂载 Wine 运行器目录
mount -o bind `dirname $0` ./opt/apps/deepin-wine-runner/ mount -o bind `dirname $0` ./opt/apps/deepin-wine-runner/
@ -31,7 +33,7 @@ mount -o bind /usr/share/fonts ./usr/share/fonts
# 配置用户 # 配置用户
if [ ! -d "home/$2" ]; then if [ ! -d "home/$2" ]; then
# 新建用户,且密码为 123456以便读写 # 新建用户,且密码为 123456以便读写
chroot . bash /opt/apps/deepin-wine-runner/ChangePassword.sh "$2" "$programPath/pardus-chroot" . bash /opt/apps/deepin-wine-runner/ChangePassword.sh "$2"
fi fi
# 挂载用户目录到 /root默认 $HOME 路径) # 挂载用户目录到 /root默认 $HOME 路径)
if [[ $2 == "root" ]]; then if [[ $2 == "root" ]]; then
@ -41,4 +43,4 @@ else
fi fi
# 如果参数 3 存在 # 如果参数 3 存在
chroot "--userspec=$2:$2" . env "HOME=/home/$2" ${@:3} "$programPath/pardus-chroot" "--userspec=$2:$2" . env "HOME=/home/$2" ${@:3}

View File

@ -7,6 +7,7 @@ if [ ! -d "$1" ]; then
echo "路径不存在!" echo "路径不存在!"
exit 1 exit 1
fi fi
programPath=`dirname $0`
echo $0 echo $0
echo $1 echo $1
echo $2 echo $2
@ -16,14 +17,15 @@ cd "$1"
# 拷贝 Qemu Static # 拷贝 Qemu Static
cp -r /usr/bin/qemu-*-static ./usr/bin cp -r /usr/bin/qemu-*-static ./usr/bin
# 挂载目录 # 挂载目录
mount --bind /dev ./dev # 这里将由 pardus-chroot 处理
#mount --bind /dev ./dev
#mount --bind /dev/pts ./dev/pts #mount --bind /dev/pts ./dev/pts
mount -t proc /proc ./proc #mount -t proc /proc ./proc
mount --bind /etc/resolv.conf ./etc/resolv.conf #mount --bind /etc/resolv.conf ./etc/resolv.conf
mount -t sysfs /sys ./sys #mount -t sysfs /sys ./sys
#mount --bind /dev/shm ./dev/shm #mount --bind /dev/shm ./dev/shm
chmod 777 -R root chmod 777 -R root tmp
xhost + xhost +
# 如果参数 3 存在 # 如果参数 3 存在
chroot . ${@:3} "$programPath/pardus-chroot" . ${@:3}

View File

@ -12,10 +12,9 @@ class ProgramRunStatusShow():
msgWindow = None msgWindow = None
def ShowWindow(): def ShowWindow():
try: try:
#fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
fenlists = [] fenlists = []
for i in range(6): for i in range(6):
fenlists.append(int(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9GZW4=").decode("utf-8") + f"{i}/data.txt").text)) fenlists.append(int(requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Zlbi9GZW4=").decode("utf-8") + f"{i}.txt").text))
tipsInfo = "" tipsInfo = ""
except: except:
traceback.print_exc() traceback.print_exc()

View File

@ -433,6 +433,8 @@ class RunThread(QtCore.QThread):
self.RunCommand(f"chmod 777 -Rv '{bottlePath}'") self.RunCommand(f"chmod 777 -Rv '{bottlePath}'")
# 禁止生成 .desktop 文件 # 禁止生成 .desktop 文件
self.RunCommand(f"WINEPREFIX='{bottlePath}' deepin-wine6-stable 'reg' 'add' 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v winemenubuilder.exe '/f'") self.RunCommand(f"WINEPREFIX='{bottlePath}' deepin-wine6-stable 'reg' 'add' 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v winemenubuilder.exe '/f'")
# 写入字体
self.RunCommand(f"WINEPREFIX='{bottlePath}' '{programPath}/AutoShell/command/installfont' 1")
# 安装包 # 安装包
self.info.emit("请在运行完安装程序后按下打包器主界面的“安装程序执行完成按钮”以进行下一步操作") self.info.emit("请在运行完安装程序后按下打包器主界面的“安装程序执行完成按钮”以进行下一步操作")
global pressCompleteDownload global pressCompleteDownload

View File

@ -526,12 +526,17 @@ fi
##############<<<<<<<<<屏蔽mono和gecko安装器开始 ##############<<<<<<<<<屏蔽mono和gecko安装器开始
##默认屏蔽mono和gecko安装器 ##默认屏蔽mono和gecko安装器
#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then {['''#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
#export WINEDLLOVERRIDES="mscoree,mshtml=" #export WINEDLLOVERRIDES="mscoree,mshtml="
#echo "为了降低打包体积默认关闭gecko和momo如有需要注释此行仅对spark-wine7-devel有效" #echo "为了降低打包体积默认关闭gecko和momo如有需要注释此行仅对spark-wine7-devel有效"
#fi #fi''', '''if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then
export WINEDLLOVERRIDES="mscoree,mshtml="
echo "为了降低打包体积默认关闭gecko和momo如有需要注释此行仅对spark-wine7-devel有效"
fi'''][int(disabledMono.isChecked())]}
##############>>>>>>>>>屏蔽mono和gecko安装器结束 ##############>>>>>>>>>屏蔽mono和gecko安装器结束
#########################执行段 #########################执行段
@ -1888,6 +1893,7 @@ debControlFrame.addWidget(button5)
debControlFrame.addWidget(installDeb) debControlFrame.addWidget(installDeb)
rmBash = QtWidgets.QCheckBox(transla.transe("U", "设置卸载该 deb 后自动删除该容器")) rmBash = QtWidgets.QCheckBox(transla.transe("U", "设置卸载该 deb 后自动删除该容器"))
cleanBottonByUOS = QtWidgets.QCheckBox(transla.transe("U", "使用统信 Wine 生态适配活动容器清理脚本")) cleanBottonByUOS = QtWidgets.QCheckBox(transla.transe("U", "使用统信 Wine 生态适配活动容器清理脚本"))
disabledMono = QtWidgets.QCheckBox(transla.transe("U", "禁用 Mono 和 Gecko 安装器"))
debArch = QtWidgets.QComboBox() debArch = QtWidgets.QComboBox()
debArch.addItems(["i386", "arm64(box86+exagear)"]) debArch.addItems(["i386", "arm64(box86+exagear)"])
textbox1 = QtWidgets.QTextBrowser() textbox1 = QtWidgets.QTextBrowser()
@ -1935,7 +1941,7 @@ desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示
desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1) desktopIconTabLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "要显示的 .desktop 文件的图标:")), 10, 0, 1, 1)
iconTab1.setLayout(desktopIconTabLayout) iconTab1.setLayout(desktopIconTabLayout)
#desktopIconTab.setTabPosition(QtWidgets.QTabWidget.East) #desktopIconTab.setTabPosition(QtWidgets.QTabWidget.East)
desktopIconTab.addTab(iconTab1, "Defult") desktopIconTab.addTab(iconTab1, "默认图标")
desktopIconTab.setCornerWidget(controlWidget) desktopIconTab.setCornerWidget(controlWidget)
widgetLayout.addWidget(desktopIconTab, 8, 0, 6, 3) widgetLayout.addWidget(desktopIconTab, 8, 0, 6, 3)
widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "选择打包的 wine 版本(※必选):")), 6, 0, 1, 1) widgetLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "选择打包的 wine 版本(※必选):")), 6, 0, 1, 1)
@ -1979,6 +1985,7 @@ moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 包选项
moreSettingLayout.addWidget(rmBash) moreSettingLayout.addWidget(rmBash)
moreSettingLayout.addWidget(cleanBottonByUOS) moreSettingLayout.addWidget(cleanBottonByUOS)
moreSettingLayout.addWidget(chooseWineHelperValue) moreSettingLayout.addWidget(chooseWineHelperValue)
moreSettingLayout.addWidget(disabledMono)
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的依赖(强制,如无特殊需求默认即可)"))) moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的依赖(强制,如无特殊需求默认即可)")))
moreSettingLayout.addWidget(debDepends) moreSettingLayout.addWidget(debDepends)
moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的推荐依赖(非强制,一般默认即可)"))) moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的推荐依赖(非强制,一般默认即可)")))
@ -2042,6 +2049,7 @@ try:
except: except:
pass pass
rmBash.setChecked(True) rmBash.setChecked(True)
disabledMono.setChecked(True)
cleanBottonByUOS.setChecked(True) cleanBottonByUOS.setChecked(True)
chooseWineHelperValue.setChecked(True) chooseWineHelperValue.setChecked(True)
e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_i386.deb") e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_i386.deb")

View File

@ -1104,11 +1104,11 @@ class UpdateWindow():
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGVuZXcuanNvbg==" url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGVuZXcuanNvbg=="
else: else:
if "deepin/UOS 应用商店版本<带签名>" == programVersionType: if "deepin/UOS 应用商店版本<带签名>" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtdW9zLmpzb24=" url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXVvcy5qc29u"
elif "星火应用商店版本" == programVersionType: elif "星火应用商店版本" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtc3BhcmsuanNvbg==" url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXNwYXJrLmpzb24="
else: else:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg==" url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLmpzb24="
try: try:
UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text) UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text)
@ -2340,29 +2340,14 @@ exe路径\' 参数 \'
<b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可 <b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示; 以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''') <code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
updateThingsString = transla.transe("U", '''※1、支持使用 Qemu + Chroot 跨运行 Wine 以及指定程序的功能; updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器;
※2、提供了简易打包器以用于打包简易 deb ※2、自动容器配置脚本新增命令 decompressionbottle、programforum新增评论功能
※3、支持下载配置过的 Qemu + Chroot 容器; ※3、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能;
※4、支持在隔离的 Chroot 容器内运行 Wine ※4、安装 Windows 虚拟机功能提供镜像下载的网盘链接。
※5、支持解压指定 deb 的内打包好的容器; ''')
※6、优化 Wine 列表显示;
※7、新增程序论坛和教程入口
※8、程序公告功能
※9、新增程序评分功能
※10、新增解包 deb 内 Wine 容器功能;
※11、新增 Vkd3d Proton 安装功能,更新 dxvk 版本至 2.0.0
※12、新增程序菜单栏部分栏目图标
※13、打包器支持按下 Shift + F1 查看指定选项提示;
14、优化非基于生态适配脚本的打包器内容自动填充功能
15、优化程序文案
16、新增日志翻译功能
17、程序进一步完善英语翻译机翻
18、优化程序更新策略
19、优化日志分析功能
20、优化程序 UI。''')
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年12月10日" updateTime = "2023年01月03日"
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p> aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作。</p> <p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作。</p>
<pre> <pre>
@ -2396,15 +2381,18 @@ Qt 版本:{QtCore.qVersion()}
<pre>{tips} <pre>{tips}
</pre> </pre>
<hr> <hr>
<h1>关于 RacoonGX 项目组</h1>
<p>是由 @gfdgd xi 带头的团队gfdgd xi开发了UEngine运行器等好用的开源软件。</p>
<hr>
<h1>友谊链接</h1> <h1>友谊链接</h1>
<pre>星火应用商店https://spark-app.store/ <pre>星火应用商店https://spark-app.store/
Deepin 官网https://www.deepin.org Deepin 官网https://www.deepin.org
Deepin 论坛https://bbs.deepin.org Deepin 论坛https://bbs.deepin.org
论坛https://gfdgdxi.flarum.cloud/</pre> 论坛https://gfdgdxi.flarum.cloud/</pre>
<hr> <hr>
<h1>©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>''' <h1>©2020~{time.strftime("%Y")} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>'''
title = "Wine 运行器 {}".format(version) title = "Wine 运行器 {}".format(version)
#<h1>©2020~{time.strftime("%Y")} <a href="https://gitee.com/gfdgd-xi">gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>''' #<h1>©2020~{time.strftime("%Y")} <a href="https://gitee.com/gfdgd-xi">RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>'''
updateThings = "{} 更新内容:\n{}\n更新时间{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) updateThings = "{} 更新内容:\n{}\n更新时间{}".format(version, updateThingsString, updateTime, time.strftime("%Y"))
try: try:
threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9vcGVuL0luc3RhbGwucGhw").decode("utf-8")) + "?Version=" + version]).start() threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9vcGVuL0luc3RhbGwucGhw").decode("utf-8")) + "?Version=" + version]).start()
@ -2568,7 +2556,7 @@ mainLayout.addWidget(returnText, 0, 1, 2, 1)
# 版权 # 版权
copy = QtWidgets.QLabel(f"""\n程序版本{version}<b>提示Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统</b><br> copy = QtWidgets.QLabel(f"""\n程序版本{version}<b>提示Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统</b><br>
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""") ©2020~{time.strftime("%Y")} RacoonGX 团队By gfdgd xi、为什么您不喜欢熊出没和阿布呢""")
mainLayout.addWidget(copy, 2, 0, 1, 1) mainLayout.addWidget(copy, 2, 0, 1, 1)
# 程序运行 # 程序运行
@ -2629,8 +2617,8 @@ p4.triggered.connect(window.close)
wineOption = menu.addMenu(transla.transe("U", "Wine(&W)")) wineOption = menu.addMenu(transla.transe("U", "Wine(&W)"))
w1 = QtWidgets.QAction(transla.transe("U", "打开 Wine 容器目录")) w1 = QtWidgets.QAction(transla.transe("U", "打开 Wine 容器目录"))
w2 = QtWidgets.QAction(transla.transe("U", "安装常见字体")) w2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("font"), transla.transe("U", "安装常见字体"))
w3 = QtWidgets.QAction(transla.transe("U", "安装自定义字体")) w3 = QtWidgets.QAction(QtGui.QIcon.fromTheme("font"), transla.transe("U", "安装自定义字体"))
w4 = QtWidgets.QAction(transla.transe("U", "删除选择的 Wine 容器")) w4 = QtWidgets.QAction(transla.transe("U", "删除选择的 Wine 容器"))
cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基于 Wine 适配活动脚本)")) cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基于 Wine 适配活动脚本)"))
wineKeyboardLnk = QtWidgets.QAction(transla.transe("U", "Wine 快捷键映射")) wineKeyboardLnk = QtWidgets.QAction(transla.transe("U", "Wine 快捷键映射"))
@ -2665,7 +2653,7 @@ wm1_1 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安
wm1_2 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Studio C++")) wm1_2 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Studio C++"))
wm1_3 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 MSXML")) wm1_3 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 MSXML"))
wm1_4 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 gecko")) wm1_4 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 gecko"))
wm1_5 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 mono")) wm1_5 = QtWidgets.QAction(QtGui.QIcon.fromTheme("mono"), transla.transe("U", "在指定wine、指定容器安装 mono"))
wm1_7 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Basic Runtime")) wm1_7 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 Visual Basic Runtime"))
wm1_6 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装其它运行库")) wm1_6 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装其它运行库"))
wm1.addAction(wm1_1) wm1.addAction(wm1_1)
@ -2676,9 +2664,9 @@ wm1.addAction(wm1_5)
wm1.addAction(wm1_7) wm1.addAction(wm1_7)
wm1.addAction(wm1_6) wm1.addAction(wm1_6)
wm2 = wineOption.addMenu(transla.transe("U", "在指定 Wine、容器运行基础应用")) wm2 = wineOption.addMenu(transla.transe("U", "在指定 Wine、容器运行基础应用"))
wm2_1 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的控制面板")) wm2_1 = QtWidgets.QAction(QtGui.QIcon.fromTheme("control-center2"), transla.transe("U", "打开指定wine、指定容器的控制面板"))
wm2_2 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的浏览器")) wm2_2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("web-browser"), transla.transe("U", "打开指定wine、指定容器的浏览器"))
wm2_3 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的注册表")) wm2_3 = QtWidgets.QAction(QtGui.QIcon.fromTheme("regedit"), transla.transe("U", "打开指定wine、指定容器的注册表"))
wm2_4 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的任务管理器")) wm2_4 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的任务管理器"))
wm2_5 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的资源管理器")) wm2_5 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的资源管理器"))
wm2_6 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的关于 wine")) wm2_6 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的关于 wine"))

View File

@ -1,5 +1,5 @@
{ {
"Version": "3.0.0", "Version": "3.0.1",
"Thank": [ "Thank": [
"感谢 @豪 提供程序图标", "感谢 @豪 提供程序图标",
"感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程小白专用 》", "感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程小白专用 》",

View File

@ -1,5 +1,5 @@
{ {
"Version": "3.0.0", "Version": "3.0.1",
"Thank": [ "Thank": [
"感谢 @豪 提供程序图标", "感谢 @豪 提供程序图标",
"感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程小白专用 》", "感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程小白专用 》",

View File

@ -2340,10 +2340,14 @@ exe路径\' 参数 \'
<b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可 <b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可
以及此脚本安装的 Wine 无法保证 100% 能使用以及副作用是会提示 以及此脚本安装的 Wine 无法保证 100% 能使用以及副作用是会提示
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构跳过配置文件 'main/binary-i386/Packages' 的获取</code>''') <code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构跳过配置文件 'main/binary-i386/Packages' 的获取</code>''')
updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器''') updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器;
2自动容器配置脚本新增命令 decompressionbottleprogramforum新增评论功能
3安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能
4安装 Windows 虚拟机功能提供镜像下载的网盘链接
''')
for i in information["Thank"]: for i in information["Thank"]:
thankText += f"{i}\n" thankText += f"{i}\n"
updateTime = "2022年12月26日" updateTime = "2023年01月03"
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p> aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
<p>它同时还内置了基于VirtualBox制作的专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装创建分区等操作</p> <p>它同时还内置了基于VirtualBox制作的专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装创建分区等操作</p>
<pre> <pre>

Binary file not shown.