diff --git a/AutoConfig.py b/AutoConfig.py index 6e1910e..5168510 100755 --- a/AutoConfig.py +++ b/AutoConfig.py @@ -312,7 +312,7 @@ class ProgramRunStatusShow(): else: # 显示最新的3条评论 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 print(all) if all < 3: @@ -323,7 +323,7 @@ class ProgramRunStatusShow(): uploadList = [] for i in range(all - 1, start - 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() + 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) diff --git a/VM/VirtualMachine b/VM/VirtualMachine index bae4484..ed25358 100755 Binary files a/VM/VirtualMachine and b/VM/VirtualMachine differ diff --git a/deb/DEBIAN/control b/deb/DEBIAN/control index 5257407..9731feb 100755 --- a/deb/DEBIAN/control +++ b/deb/DEBIAN/control @@ -1,5 +1,5 @@ -Package: wine-runner-linux -Version: 3.0.0.2 +Package: spark-deepin-wine-runner +Version: 3.0.1 Maintainer: gfdgd xi <3025613752@qq.com> Homepage: https://gitee.com/gfdgd-xi-org/deep-wine-runner Architecture: all diff --git a/deb/opt/apps/deepin-wine-runner/AutoConfig.py b/deb/opt/apps/deepin-wine-runner/AutoConfig.py index b438e76..5168510 100755 --- a/deb/opt/apps/deepin-wine-runner/AutoConfig.py +++ b/deb/opt/apps/deepin-wine-runner/AutoConfig.py @@ -31,12 +31,15 @@ urlSourcesList = [ "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/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 = [] + +#print(requests.post("http://120.25.153.144:30250/PingLun", {"PinLun": "测试文本", "Version": "purgeexepro.sh"}).text) + class ProgramRunStatusUpload(): msgWindow = None starLayout = None @@ -136,7 +139,7 @@ class InformationWindow(): about = f"

关于“{choose}”的介绍

\n

暂无此程序的介绍

" try: 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 = "" except: fenlists = [0, 0, 0, 0, 0] @@ -207,10 +210,36 @@ class InformationWindow(): message.show() 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("
"), 0, 0, 1, 3) + inLayout.addWidget(QtWidgets.QLabel(f"{i[0]}"), 1, 0) + inLayout.addWidget(QtWidgets.QLabel(f"

第{i[1]}层

"), 1, 2) + inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3) + widget.setLayout(inLayout) + pinLunLayout1.addWidget(widget) + #pinLunLayout.addWidget(QtWidgets.QLabel("
")) +# pinLunLayout = widget + +all = 0 +now = 0 class ProgramRunStatusShow(): msgWindow = None + pingLunLayout = None def ShowWindow(): global lists + global all + global now + global leftButton + global rightButton # 获取选中项 try: choose = ui.searchList.selectionModel().selectedIndexes()[0].data() @@ -224,15 +253,12 @@ class ProgramRunStatusShow(): 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 + fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json() tipsInfo = "" except: #traceback.print_exc() fenlists = [0, 0, 0, 0, 0] - tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?" + tipsInfo = "暂时无人提交此脚本评分,是否立即提交?" maxHead = fenlists.index(max(fenlists)) allNumber = 0 @@ -248,13 +274,13 @@ class ProgramRunStatusShow(): msgWidget = QtWidgets.QWidget() msgWidgetLayout = QtWidgets.QGridLayout() 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)) - 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(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0, 2, 1) + msgWidgetLayout.addLayout(starLayout, 0, 1, 2, 1) + msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 0, 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 if maxHead > 5: for i in range(end): @@ -265,12 +291,136 @@ class ProgramRunStatusShow(): head = maxHead for i in range(head, end): starLayout.addWidget(QtWidgets.QLabel(f"")) + 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) + uploadButton.clicked.connect(lambda: ProgramRunStatusShow.Upload(pingLunInfo.toPlainText(), fileName)) ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget) ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath)) ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况") 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(): global lists # 获取选中项 @@ -401,6 +551,7 @@ if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QMainWindow() ui = Ui_MainWindow() + pinLunLayout = QtWidgets.QHBoxLayout() ui.setupUi(window) window.setWindowTitle(f"Wine 运行器 {version}——容器自动配置部署脚本") window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg")) diff --git a/deb/opt/apps/deepin-wine-runner/AutoShell/command/decompressionbottle b/deb/opt/apps/deepin-wine-runner/AutoShell/command/decompressionbottle new file mode 100755 index 0000000..b766ea2 --- /dev/null +++ b/deb/opt/apps/deepin-wine-runner/AutoShell/command/decompressionbottle @@ -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])) \ No newline at end of file diff --git a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py index e9fffd4..c505a74 100755 --- a/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py +++ b/deb/opt/apps/deepin-wine-runner/ConfigLanguareRunner.py @@ -2,7 +2,7 @@ # 使用系统默认的 python3 运行 ########################################################################################### # 作者:gfdgd xi、为什么您不喜欢熊出没和阿布呢 -# 版本:2.1.0 +# 版本:3.0.1 # 更新时间:2022年10月05日 # 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序 # 基于 Python3 构建 @@ -11,8 +11,10 @@ import os import sys import time import json +import random import platform import traceback +import webbrowser import subprocess import PyQt5.QtWidgets as QtWidgets # 读取文本文档 @@ -38,8 +40,8 @@ programEnv = [ ["($PROGRAMPATH)", programPath], ["($VERSION)", version], ["($THANK)", thankText], - ["($MAKER)", "gfdgd xi、为什么您不喜欢熊出没和阿布呢"], - ["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢"], + ["($MAKER)", "RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢"], + ["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢"], ["($?)", "0"], ["($PLATFORM)", platform.system()], ["($DEBUG)", "1"] @@ -57,6 +59,19 @@ readOnlyEnv = [ "($SYSTEM)", "($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(): if "--debug" in sys.argv: traceback.print_exc() @@ -111,7 +126,9 @@ class Command(): "disbledWinebottlecreatelink", "enabledWinebottlecreatelink", "installvb", - "installother" + "installother", + "decompressionbottle", + "programforum" ] def __init__(self, commandString: str) -> None: @@ -279,7 +296,7 @@ class Command(): def Version(self): print(f"版本:{version}") - print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢") + print(f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢") return 0 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.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): self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"] self.Bat() @@ -401,6 +432,9 @@ class Command(): import InstallOther return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine) + def ProgramForum(self): + webbrowser.open_new_tab("https://gfdgdxi.flarum.cloud/") + # 可以运行的命令的映射关系 # 可以被使用的命令的映射 commandList = { @@ -443,7 +477,9 @@ class Command(): "disbledWinebottlecreatelink": DisbledWineBottleCreateLink, "enabledWinebottlecreatelink": EnabledWineBottleCreateLink, "installvb": InstallVB, - "installother": InstallOther + "installother": InstallOther, + "decompressionbottle": DecompressionBottle, + "programforum": ProgramForum } # 参数数列表 @@ -488,7 +524,9 @@ class Command(): "disbledWinebottlecreatelink": [0], "enabledWinebottlecreatelink": [0], "installvb": [1], - "installother": [1] + "installother": [1], + "decompressionbottle": [2], + "programforum": [0] } windowsUnrun = [ "createbotton", @@ -502,7 +540,8 @@ class Command(): "disbledopengl", "installdxvk", "installfont", - "installsparkcorefont" + "installsparkcorefont", + "decompressionbottle" ] # 解析 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]) commandReturn = self.commandList[i[0]](self) if commandReturn: - print(f"运行命令{' '.join(self.command)}出现错误") + print(f"运行命令{' '.join(self.command)}出现错误,返回值:", commandReturn) programEnv[9][1] = str(commandReturn) if self.close: break @@ -574,7 +613,7 @@ if __name__ == "__main__": if len(sys.argv) - optionAll < 2: print("Wine 运行器自动配置文件解析器交互环境") print(f"版本:{version}") - print(f"©2020~{time.strftime('%Y')} gfdgd xi、为什么您不喜欢熊出没和阿布呢") + print(f"©2020~{time.strftime('%Y')} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢") print("--------------------------------------------------------------") while True: commandLine = input(">") diff --git a/deb/opt/apps/deepin-wine-runner/Mount.sh b/deb/opt/apps/deepin-wine-runner/Mount.sh index 6fd5b6f..4ef5f0e 100755 --- a/deb/opt/apps/deepin-wine-runner/Mount.sh +++ b/deb/opt/apps/deepin-wine-runner/Mount.sh @@ -7,6 +7,7 @@ if [ ! -d "$1" ]; then echo "路径不存在!" exit 1 fi +programPath=`dirname $0` echo $0 echo $1 echo $2 @@ -16,13 +17,14 @@ cd "$1" # 拷贝 Qemu Static 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 -t proc /proc ./proc -mount --bind /etc/resolv.conf ./etc/resolv.conf -mount -t sysfs /sys ./sys +#mount -t proc /proc ./proc +#mount --bind /etc/resolv.conf ./etc/resolv.conf +#mount -t sysfs /sys ./sys #mount --bind /dev/shm ./dev/shm -chmod 777 -R root +chmod 777 -R root tmp xhost + # 挂载 Wine 运行器目录 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 # 新建用户,且密码为 123456,以便读写 - chroot . bash /opt/apps/deepin-wine-runner/ChangePassword.sh "$2" + "$programPath/pardus-chroot" . bash /opt/apps/deepin-wine-runner/ChangePassword.sh "$2" fi # 挂载用户目录到 /root(默认 $HOME 路径) if [[ $2 == "root" ]]; then @@ -41,4 +43,4 @@ else fi # 如果参数 3 存在 -chroot "--userspec=$2:$2" . env "HOME=/home/$2" ${@:3} +"$programPath/pardus-chroot" "--userspec=$2:$2" . env "HOME=/home/$2" ${@:3} diff --git a/deb/opt/apps/deepin-wine-runner/MountWithoutHome.sh b/deb/opt/apps/deepin-wine-runner/MountWithoutHome.sh index 724f16e..af91d24 100755 --- a/deb/opt/apps/deepin-wine-runner/MountWithoutHome.sh +++ b/deb/opt/apps/deepin-wine-runner/MountWithoutHome.sh @@ -7,6 +7,7 @@ if [ ! -d "$1" ]; then echo "路径不存在!" exit 1 fi +programPath=`dirname $0` echo $0 echo $1 echo $2 @@ -16,14 +17,15 @@ cd "$1" # 拷贝 Qemu Static 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 -t proc /proc ./proc -mount --bind /etc/resolv.conf ./etc/resolv.conf -mount -t sysfs /sys ./sys +#mount -t proc /proc ./proc +#mount --bind /etc/resolv.conf ./etc/resolv.conf +#mount -t sysfs /sys ./sys #mount --bind /dev/shm ./dev/shm -chmod 777 -R root +chmod 777 -R root tmp xhost + # 如果参数 3 存在 -chroot . ${@:3} +"$programPath/pardus-chroot" . ${@:3} diff --git a/deb/opt/apps/deepin-wine-runner/ProgramFen.py b/deb/opt/apps/deepin-wine-runner/ProgramFen.py index 7e6f4a2..0c432c9 100644 --- a/deb/opt/apps/deepin-wine-runner/ProgramFen.py +++ b/deb/opt/apps/deepin-wine-runner/ProgramFen.py @@ -12,10 +12,9 @@ class ProgramRunStatusShow(): msgWindow = None def ShowWindow(): try: - #fenlists = requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9iYXNoYXBwLw==").decode("utf-8") + fileName + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json() fenlists = [] 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 = "" except: traceback.print_exc() diff --git a/deb/opt/apps/deepin-wine-runner/VM/VirtualMachine b/deb/opt/apps/deepin-wine-runner/VM/VirtualMachine index bae4484..ed25358 100755 Binary files a/deb/opt/apps/deepin-wine-runner/VM/VirtualMachine and b/deb/opt/apps/deepin-wine-runner/VM/VirtualMachine differ diff --git a/deb/opt/apps/deepin-wine-runner/VM/Windows7X64Auto.iso b/deb/opt/apps/deepin-wine-runner/VM/Windows7X64Auto.iso index 680068f..ea63347 100755 Binary files a/deb/opt/apps/deepin-wine-runner/VM/Windows7X64Auto.iso and b/deb/opt/apps/deepin-wine-runner/VM/Windows7X64Auto.iso differ diff --git a/deb/opt/apps/deepin-wine-runner/VM/Windows7X86Auto.iso b/deb/opt/apps/deepin-wine-runner/VM/Windows7X86Auto.iso index 34ff06a..79108c9 100755 Binary files a/deb/opt/apps/deepin-wine-runner/VM/Windows7X86Auto.iso and b/deb/opt/apps/deepin-wine-runner/VM/Windows7X86Auto.iso differ diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py b/deb/opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py index b9cfd20..342691d 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-easy-packager.py @@ -433,6 +433,8 @@ class RunThread(QtCore.QThread): self.RunCommand(f"chmod 777 -Rv '{bottlePath}'") # 禁止生成 .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}' '{programPath}/AutoShell/command/installfont' 1") # 安装包 self.info.emit("请在运行完安装程序后按下打包器主界面的“安装程序执行完成按钮”以进行下一步操作") global pressCompleteDownload diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py index 03e62b1..4596cc4 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-packager.py @@ -526,12 +526,17 @@ fi ##############<<<<<<<<<屏蔽mono和gecko安装器开始 ##默认屏蔽mono和gecko安装器 -#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then +{['''#if [ "$APPRUN_CMD" = "spark-wine7-devel" ];then #export WINEDLLOVERRIDES="mscoree,mshtml=" #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安装器结束 #########################执行段 @@ -1888,6 +1893,7 @@ debControlFrame.addWidget(button5) debControlFrame.addWidget(installDeb) rmBash = QtWidgets.QCheckBox(transla.transe("U", "设置卸载该 deb 后自动删除该容器")) cleanBottonByUOS = QtWidgets.QCheckBox(transla.transe("U", "使用统信 Wine 生态适配活动容器清理脚本")) +disabledMono = QtWidgets.QCheckBox(transla.transe("U", "禁用 Mono 和 Gecko 安装器")) debArch = QtWidgets.QComboBox() debArch.addItems(["i386", "arm64(box86+exagear)"]) 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) iconTab1.setLayout(desktopIconTabLayout) #desktopIconTab.setTabPosition(QtWidgets.QTabWidget.East) -desktopIconTab.addTab(iconTab1, "Defult") +desktopIconTab.addTab(iconTab1, "默认图标") desktopIconTab.setCornerWidget(controlWidget) widgetLayout.addWidget(desktopIconTab, 8, 0, 6, 3) 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(cleanBottonByUOS) moreSettingLayout.addWidget(chooseWineHelperValue) +moreSettingLayout.addWidget(disabledMono) moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的依赖(强制,如无特殊需求默认即可):"))) moreSettingLayout.addWidget(debDepends) moreSettingLayout.addWidget(QtWidgets.QLabel(transla.transe("U", "deb 的推荐依赖(非强制,一般默认即可):"))) @@ -2042,6 +2049,7 @@ try: except: pass rmBash.setChecked(True) +disabledMono.setChecked(True) cleanBottonByUOS.setChecked(True) chooseWineHelperValue.setChecked(True) e12_text.setText(f"{get_desktop_path()}/demo_1.0.0_i386.deb") diff --git a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner index 5237485..563ecf7 100755 --- a/deb/opt/apps/deepin-wine-runner/deepin-wine-runner +++ b/deb/opt/apps/deepin-wine-runner/deepin-wine-runner @@ -1104,11 +1104,11 @@ class UpdateWindow(): url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGVuZXcuanNvbg==" else: if "deepin/UOS 应用商店版本<带签名>" == programVersionType: - url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtdW9zLmpzb24=" + url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXVvcy5qc29u" elif "星火应用商店版本" == programVersionType: - url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtc3BhcmsuanNvbg==" + url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXNwYXJrLmpzb24=" else: - url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg==" + url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLmpzb24=" try: UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text) @@ -2340,29 +2340,14 @@ exe路径\' 参数 \' 千万不要中断后不删除源的情况下 apt upgrade !!!中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可 以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示; N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。''') -updateThingsString = transla.transe("U", '''※1、支持使用 Qemu + Chroot 跨运行 Wine 以及指定程序的功能; -※2、提供了简易打包器以用于打包简易 deb; -※3、支持下载配置过的 Qemu + Chroot 容器; -※4、支持在隔离的 Chroot 容器内运行 Wine; -※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。''') +updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器; +※2、自动容器配置脚本新增命令 decompressionbottle、programforum,新增评论功能; +※3、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能; +※4、安装 Windows 虚拟机功能提供镜像下载的网盘链接。 +''') for i in information["Thank"]: thankText += f"{i}\n" -updateTime = "2022年12月10日" +updateTime = "2023年01月03日" aboutProgram = transla.transe("U", """

Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。

它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。

@@ -2396,15 +2381,18 @@ Qt 版本:{QtCore.qVersion()}
 
{tips}
 

+

关于 RacoonGX 项目组

+

是由 @gfdgd xi 带头的团队,gfdgd xi开发了UEngine运行器等好用的开源软件。

+

友谊链接

星火应用商店:https://spark-app.store/
 Deepin 官网:https://www.deepin.org
 Deepin 论坛:https://bbs.deepin.org
 论坛:https://gfdgdxi.flarum.cloud/

-

©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢

''' +

©2020~{time.strftime("%Y")} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢

''' title = "Wine 运行器 {}".format(version) -#

©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢

''' +#

©2020~{time.strftime("%Y")} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢

''' updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) try: 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},提示:Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统
-©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""") +©2020~{time.strftime("%Y")} RacoonGX 团队,By gfdgd xi、为什么您不喜欢熊出没和阿布呢""") mainLayout.addWidget(copy, 2, 0, 1, 1) # 程序运行 @@ -2629,8 +2617,8 @@ p4.triggered.connect(window.close) wineOption = menu.addMenu(transla.transe("U", "Wine(&W)")) w1 = QtWidgets.QAction(transla.transe("U", "打开 Wine 容器目录")) -w2 = QtWidgets.QAction(transla.transe("U", "安装常见字体")) -w3 = QtWidgets.QAction(transla.transe("U", "安装自定义字体")) +w2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("font"), transla.transe("U", "安装常见字体")) +w3 = QtWidgets.QAction(QtGui.QIcon.fromTheme("font"), transla.transe("U", "安装自定义字体")) w4 = QtWidgets.QAction(transla.transe("U", "删除选择的 Wine 容器")) cleanBottonUOS = QtWidgets.QAction(transla.transe("U", "清理 Wine 容器(基于 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_3 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装 MSXML")) 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_6 = QtWidgets.QAction(transla.transe("U", "在指定wine、指定容器安装其它运行库")) wm1.addAction(wm1_1) @@ -2676,9 +2664,9 @@ wm1.addAction(wm1_5) wm1.addAction(wm1_7) wm1.addAction(wm1_6) wm2 = wineOption.addMenu(transla.transe("U", "在指定 Wine、容器运行基础应用")) -wm2_1 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的控制面板")) -wm2_2 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的浏览器")) -wm2_3 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的注册表")) +wm2_1 = QtWidgets.QAction(QtGui.QIcon.fromTheme("control-center2"), transla.transe("U", "打开指定wine、指定容器的控制面板")) +wm2_2 = QtWidgets.QAction(QtGui.QIcon.fromTheme("web-browser"), 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_5 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的资源管理器")) wm2_6 = QtWidgets.QAction(transla.transe("U", "打开指定wine、指定容器的关于 wine")) diff --git a/deb/opt/apps/deepin-wine-runner/information.json b/deb/opt/apps/deepin-wine-runner/information.json index 5b9dcd3..1b4b497 100755 --- a/deb/opt/apps/deepin-wine-runner/information.json +++ b/deb/opt/apps/deepin-wine-runner/information.json @@ -1,5 +1,5 @@ { - "Version": "3.0.0", + "Version": "3.0.1", "Thank": [ "感谢 @豪 提供程序图标", "感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程(小白专用) 》", diff --git a/deb/opt/apps/deepin-wine-runner/package-script.zip b/deb/opt/apps/deepin-wine-runner/package-script.zip index af614f6..289971c 100755 Binary files a/deb/opt/apps/deepin-wine-runner/package-script.zip and b/deb/opt/apps/deepin-wine-runner/package-script.zip differ diff --git a/information.json b/information.json index 5b9dcd3..1b4b497 100644 --- a/information.json +++ b/information.json @@ -1,5 +1,5 @@ { - "Version": "3.0.0", + "Version": "3.0.1", "Thank": [ "感谢 @豪 提供程序图标", "感谢 @鹤舞白沙 对程序文案进行优化以及编写《Wine运行器和Wine打包器傻瓜式使用教程(小白专用) 》", diff --git a/mainwindow.py b/mainwindow.py index 576fd9f..563ecf7 100755 --- a/mainwindow.py +++ b/mainwindow.py @@ -2340,10 +2340,14 @@ exe路径\' 参数 \' 千万不要中断后不删除源的情况下 apt upgrade !!!中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine(会自动执行恢复操作)即可 以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示; N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。''') -updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器''') +updateThingsString = transla.transe("U", '''※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器; +※2、自动容器配置脚本新增命令 decompressionbottle、programforum,新增评论功能; +※3、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能; +※4、安装 Windows 虚拟机功能提供镜像下载的网盘链接。 +''') for i in information["Thank"]: thankText += f"{i}\n" -updateTime = "2022年12月26日" +updateTime = "2023年01月03日" aboutProgram = transla.transe("U", """

Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序,内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。

它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作。

diff --git a/package-script.zip b/package-script.zip
index af614f6..289971c 100755
Binary files a/package-script.zip and b/package-script.zip differ