Compare commits

...

27 Commits

Author SHA1 Message Date
608467ba6e 更新README 2023-01-06 11:33:47 +08:00
3a6cb7ebd2 3.1.0 Complete 2023-01-06 11:28:58 +08:00
43f0cd2ad7 重新编译 2023-01-06 11:20:58 +08:00
7081bc6c0c 修改程序信息 2023-01-06 11:14:46 +08:00
20b19a885f 编译虚拟机模块 2023-01-06 11:03:57 +08:00
6b127dd3f8 支持强制启用所有被禁用的组件(不推荐) 2023-01-06 10:50:51 +08:00
cd46dbd4b2 修复打包器打包程序时无法禁用mono/gecko安装器的问题 2023-01-05 16:08:15 +08:00
8d48744bb0 修复 installfont 命令下载的字体目录错误问题 2023-01-04 21:13:14 +08:00
9cf0c16697 新增命令与帮助 2023-01-04 13:35:31 +08:00
d46c83f51b 修改自动配置脚本UI布局 2023-01-03 22:33:49 +08:00
2b2b9c9208 更改评论提示 2023-01-03 19:26:17 +08:00
fb0f9e1064 测试安装包构建 2023-01-03 19:21:32 +08:00
895e55d964 新增配置脚本评分功能 2023-01-03 13:40:59 +08:00
a25eb4a7db 新增命令:decompressionbottle 2022-12-31 18:45:56 +08:00
06ba2d3535 更新镜像 2022-12-31 16:52:15 +08:00
23ca7570ec 新增OEM工具+推荐安装 2022-12-31 10:43:08 +08:00
fef4f73037 新增组件 2022-12-30 22:30:50 +08:00
05c9332934 修改Virtualbox虚拟机安装功能信息 2022-12-30 16:49:53 +08:00
5db45ff3e5 修复pardus-chroot挂载时出现DNS错误的问题 2022-12-25 22:33:26 +08:00
e7b8127cd3 Mount.sh使用pardus-chroot挂载文件系统 2022-12-25 22:28:46 +08:00
e08b570db4 加入pardus-chroot 2022-12-25 22:24:20 +08:00
cf06a9681f 不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器 2022-12-25 22:20:53 +08:00
30fbbcbdb1 更新作者信息 2022-12-25 11:22:41 +08:00
c1923b4549 Merge branch 'main' of https://gitee.com/gfdgd-xi/deep-wine-runner 2022-12-21 14:20:17 +08:00
6d8dc95a4d 删除坏链 2022-12-21 14:19:04 +08:00
a82af3263b add default pipeline template yaml 2022-12-21 02:53:56 +00:00
b7c71130f5 wine-runner-linux 2022-12-18 13:04:24 +08:00
69 changed files with 1507 additions and 336 deletions

View File

@@ -0,0 +1,52 @@
version: '1.0'
name: branch-pipeline
displayName: BranchPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
- stage:
name: release
displayName: 发布
steps:
- step: publish@release_artifacts
name: publish_release_artifacts
displayName: '发布'
# 上游上传制品任务的产出
dependArtifact: output
# 发布制品版本号
version: '1.0.0.0'
# 是否开启版本号自增,默认开启
autoIncrement: true
triggers:
push:
branches:
exclude:
- master
include:
- .*

View File

@@ -0,0 +1,50 @@
version: '1.0'
name: master-pipeline
displayName: MasterPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
- stage:
name: release
displayName: 发布
steps:
- step: publish@release_artifacts
name: publish_release_artifacts
displayName: '发布'
# 上游上传制品任务的产出
dependArtifact: output
# 发布制品版本号
version: '1.0.0.0'
# 是否开启版本号自增,默认开启
autoIncrement: true
triggers:
push:
branches:
include:
- master

37
.workflow/pr-pipeline.yml Normal file
View File

@@ -0,0 +1,37 @@
version: '1.0'
name: pr-pipeline
displayName: PRPipeline
stages:
- stage:
name: compile
displayName: 编译
steps:
- step: build@python
name: build_python
displayName: Python 构建
pythonVersion: '3.9'
# 非必填字段开启后表示将构建产物暂存但不会上传到制品库中7天后自动清除
artifacts:
# 构建产物名字作为产物的唯一标识可向下传递支持自定义默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
- name: BUILD_ARTIFACT
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
path:
- ./
commands:
- python3 -m pip install --upgrade pip
- pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- pip3 install -r requirements.txt
- python3 ./main.py
- step: publish@general_artifacts
name: publish_general_artifacts
displayName: 上传制品
# 上游构建任务定义的产物名默认BUILD_ARTIFACT
dependArtifact: BUILD_ARTIFACT
# 上传到制品库时的制品命名默认output
artifactName: output
dependsOn: build_python
triggers:
pr:
branches:
include:
- master

View File

@@ -15,6 +15,7 @@ import sys
import base64
import json
import traceback
import urllib.request
import req as requests
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
@@ -31,12 +32,13 @@ 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 = []
class ProgramRunStatusUpload():
msgWindow = None
starLayout = None
@@ -136,7 +138,7 @@ class InformationWindow():
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()
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
@@ -207,10 +209,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("<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():
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 +252,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") + urllib.request.quote(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 +273,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 +290,135 @@ class ProgramRunStatusShow():
head = maxHead
for i in range(head, end):
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、字数至少 15 字,但不得超过 250 字,评论内容最多 5 行,且评论内容将会进行审核,意味着评论不会实时生效显示
※3、如果审核不通过将会被屏蔽并拉入黑名单以及公开发布 IP 地址,评论前请三思!""")
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')}{urllib.request.quote(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')}{urllib.request.quote(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/{urllib.request.quote(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 +549,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"))
@@ -422,7 +571,7 @@ if __name__ == "__main__":
#pass
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
ui.uploadFen.clicked.connect(UploadFen)
#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)

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

14
AutoShell/command/installmsi Executable file
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]))

14
AutoShell/command/programforum Executable file
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

@@ -38,5 +38,9 @@
"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"
"installvb": "安装指定的 VB 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6",
"installother": "安装未归类的运行库到指定容器\n参数数量1\n参数介绍在安装其它运行库工具的编号如 2 MFC运行库",
"decompressionbottle": "解压用 wine 打包的 deb 包内的容器到指定路径\n参数数量2\n参数介绍deb 包路径+要解压到的路径",
"programforum": "打开程序论坛\n参数数量0\n参数介绍无",
"installmsi": "安装 MSI 文件到指定容器\n参数数量1\n参数介绍msi 文件路径"
}

View File

@@ -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,10 @@ class Command():
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink",
"installvb",
"installother"
"installother",
"decompressionbottle",
"programforum",
"installmsi"
]
def __init__(self, commandString: str) -> None:
@@ -279,7 +297,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 +407,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 +433,13 @@ 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/")
def InstallMSI(self):
self.command = ["bat", "msiexec", "/i", self.command[1]]
return self.Bat()
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
commandList = {
@@ -443,7 +482,10 @@ class Command():
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB,
"installother": InstallOther
"installother": InstallOther,
"decompressionbottle": DecompressionBottle,
"programforum": ProgramForum,
"installmsi": InstallMSI
}
# 参数数列表
@@ -488,7 +530,10 @@ class Command():
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0],
"installvb": [1],
"installother": [1]
"installother": [1],
"decompressionbottle": [2],
"programforum": [0],
"installmsi": [1]
}
windowsUnrun = [
"createbotton",
@@ -502,7 +547,8 @@ class Command():
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont"
"installsparkcorefont",
"decompressionbottle"
]
# 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
@@ -554,7 +600,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 +620,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(">")

View File

@@ -32,7 +32,7 @@ except:
["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]}\"")
return os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/Fonts/' -o '{fontList[id][0]}' \"{fontList[id][1]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
<p width=100px align="center"><img src="https://storage.deepin.org/thread/202208031419283599_deepin-wine-runner.png"></p>
<h1 align="center">Wine 运行器 3.0.0</h1>
<h1 align="center">Wine 运行器 3.1.0</h1>
<hr>
## 介绍
@@ -102,6 +102,20 @@ desktop文件中StartupWMClass字段。用于让桌面组件将窗口类名与de
![image.png](https://storage.deepin.org/thread/202207190822204627_image.png)
## 更新日志
### 3.1.02023年01月06日
**※1、不基于生态适配脚本打包器支持禁用 Mono/Gecko 打包器;**
**※2、自动容器配置脚本新增命令 decompressionbottle、programforum、installmsi 以及上述命令的帮助;**
**※3、自动容器配置脚本新增评论功能**
**※4、自动容器配置脚本新增许多应用安装脚本**
**※5、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能;**
**※6、安装 Windows 虚拟机功能提供镜像下载的网盘链接;**
**※7、简易打包器支持自动添加宋体**
**8、修复 installfont 命令下载的字体目录错误问题;**
**9、修复提交日志功能在提交成功时依旧提示提交失败问题**
**10、支持强制启用所有被禁用的组件不推荐。**
![图片.png](https://storage.deepin.org/thread/202301061133232305_图片.png)
### 3.0.02022年12月10日
**※1、支持使用 Qemu + Chroot 跨运行 Wine 以及指定程序的功能;**
**※2、提供了简易打包器以用于打包简易 deb**

View File

@@ -41,9 +41,6 @@ class Ui_MainWindow(object):
self.getFen = QtWidgets.QPushButton(self.centralwidget)
self.getFen.setObjectName("getFen")
self.horizontalLayout_2.addWidget(self.getFen)
self.uploadFen = QtWidgets.QPushButton(self.centralwidget)
self.uploadFen.setObjectName("uploadFen")
self.horizontalLayout_2.addWidget(self.uploadFen)
self.runBotton = QtWidgets.QPushButton(self.centralwidget)
self.runBotton.setObjectName("runBotton")
self.horizontalLayout_2.addWidget(self.runBotton)
@@ -110,8 +107,7 @@ class Ui_MainWindow(object):
self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
self.saerchBotton.setText(_translate("MainWindow", "搜索"))
self.getInfoButton.setText(_translate("MainWindow", "获取选中项介绍"))
self.getFen.setText(_translate("MainWindow", "获取选中项的评分"))
self.uploadFen.setText(_translate("MainWindow", "提交选中项的评分"))
self.getFen.setText(_translate("MainWindow", "获取/提交选中项的评分和评论"))
self.runBotton.setText(_translate("MainWindow", "部署此方案"))
self.menu.setTitle(_translate("MainWindow", "程序"))
self.menu_2.setTitle(_translate("MainWindow", "切换源"))

View File

@@ -64,14 +64,7 @@
<item>
<widget class="QPushButton" name="getFen">
<property name="text">
<string>获取选中项的评分</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="uploadFen">
<property name="text">
<string>提交选中项的评分</string>
<string>获取/提交选中项的评分和评论</string>
</property>
</widget>
</item>

View File

@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: VirtualMachine
# Generated by qmake (3.1) (Qt 5.15.3)
# Generated by qmake (3.1) (Qt 5.15.6)
# Project: VirtualMachine.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile VirtualMachine.pro
@@ -68,8 +68,6 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
@@ -78,12 +76,7 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -94,12 +87,9 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
@@ -109,34 +99,19 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
@@ -183,8 +158,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
@@ -193,12 +166,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
@@ -209,12 +177,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
@@ -224,34 +189,19 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
@@ -288,8 +238,6 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KCodecs.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KSyntaxHighlighting.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
@@ -298,12 +246,7 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_designer.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
@@ -314,12 +257,9 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_help.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
@@ -329,34 +269,19 @@ Makefile: VirtualMachine.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qma
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_uitools.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xmlpatterns.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_NetworkManagerQt.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:

Binary file not shown.

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2022-08-22T21:48:17. -->
<!-- Written by QtCreator 4.8.2, 2022-12-28T17:03:37. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{e6fddbe7-fcb3-41be-bb11-3a30892600b9}</value>
<value type="QByteArray">{4ffd6df9-1365-4837-81b1-582e0e2d1f21}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -62,9 +62,9 @@
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b6becee2-04dc-4df3-9a41-75e9b60eccc8}</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.15.6 in PATH (qt5)</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ab20853c-9d79-473a-820e-8e95c145170e}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
@@ -181,20 +181,19 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>

View File

@@ -0,0 +1,214 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2022-12-28T17:03:29. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{e6fddbe7-fcb3-41be-bb11-3a30892600b9}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b6becee2-04dc-4df3-9a41-75e9b60eccc8}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">VirtualMachine</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source/VirtualMachine.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">VirtualMachine.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/deep-wine-runner/VM-source</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
</data>
</qtcreator>

BIN
VM-source/Windows7X64Auto.iso Executable file → Normal file

Binary file not shown.

Binary file not shown.

BIN
VM-source/Windows7X86Auto.iso Executable file → Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,41 @@
/*
* 归属 RacoonGX 团队开发者gfdgd xi、为什么您不喜欢熊出没和阿布呢
*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QDebug>
#include <QNetworkInterface>
#include <QProcess>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tabWidget->setTabPosition(QTabWidget::West); // 标签靠左
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_browser_clicked()
{
// 浏览镜像文件
QString filePath = QFileDialog::getOpenFileName(this, "选择 ISO 文件", QDir::homePath(), "ISO 镜像文件(*.iso);;所有文件(*.*)");
if(filePath != ""){
ui->isoPath->setText(filePath);
}
}
void MainWindow::on_install_clicked()
{
QProcess progress;
QStringList list;
list << ui->isoPath->text() << QString::number(ui->systemVersion->currentIndex());
qDebug() << QCoreApplication::applicationDirPath() + QString("/run.py");
progress.startDetached(QCoreApplication::applicationDirPath() + QString("/run.py"), list);
ui->tabWidget->setCurrentIndex(1);
}

BIN
VM-source/mainwindow.o Executable file → Normal file

Binary file not shown.

View File

@@ -128,6 +128,9 @@
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans CJK SC'; 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;123 网盘链接https://www.123pan.com/s/pDSKVv-oypWv&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;迅雷网盘https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5 提取码35e5&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;百度网盘https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y 提取码: me4y&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;</string>
@@ -290,7 +293,7 @@ p, li { white-space: pre-wrap; }
&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;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;该组件制作者:RacoonGX 团队By 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:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;&quot;&gt;https://juejin.cn/post/7080484519328874510&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>

View File

@@ -1,7 +1,7 @@
/****************************************************************************
** Meta object code from reading C++ file 'mainwindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.3)
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.6)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
@@ -13,7 +13,7 @@
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mainwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.3. It"
#error "This file was generated using the moc from 5.15.6. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif

BIN
VM-source/moc_mainwindow.o Executable file → Normal file

Binary file not shown.

View File

@@ -1,7 +1,7 @@
/****************************************************************************
** Resource object code
**
** Created by: The Resource Compiler for Qt version 5.15.3
** Created by: The Resource Compiler for Qt version 5.15.6
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
@@ -215683,10 +215683,10 @@ static const unsigned char qt_resource_struct[] = {
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/deepin-wine-runner.png
0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
0x0,0x0,0x1,0x82,0x16,0x7c,0xaa,0x8,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0x59,
// :/deepin-wine-runner.svg
0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x42,0x15,
0x0,0x0,0x1,0x82,0x16,0x74,0x25,0x6b,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0x59,
// :/picture
0x0,0x0,0x0,0x72,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x5,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
@@ -215695,49 +215695,49 @@ static const unsigned char qt_resource_struct[] = {
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/picture/截图_VirtualBox Machine_20220712142929.png
0x0,0x0,0x0,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6e,0x8c,
0x0,0x0,0x1,0x81,0xf1,0x1b,0x6f,0x60,
0x0,0x0,0x1,0x84,0x61,0x97,0xf5,0x5,
// :/picture/截图/截图_选择区域_20220712224639.png
0x0,0x0,0x2,0xea,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x17,0xa1,0x2b,
0x0,0x0,0x1,0x81,0xf2,0xe0,0xae,0xa0,
0x0,0x0,0x1,0x84,0x61,0x97,0xf5,0x5,
// :/picture/截图/截图_VirtualBox Manager_20220712223602.png
0x0,0x0,0x1,0xe8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xe,0x70,0x91,
0x0,0x0,0x1,0x81,0xf2,0xd8,0x55,0xe8,
0x0,0x0,0x1,0x84,0x61,0x97,0xf5,0x1,
// :/picture/截图/截图_VirtualBox Machine_20220712143103.png
0x0,0x0,0x2,0x3e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x1c,0xd0,
0x0,0x0,0x1,0x81,0xf1,0x1b,0x9e,0x40,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xfd,
// :/picture/截图/截图_VirtualBox Machine_20220712143006.png
0x0,0x0,0x4,0x16,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2e,0x76,0xc1,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xe8,0x78,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xf5,
// :/picture/截图/截图_VirtualBox Machine_20220712143018.png
0x0,0x0,0x0,0xe6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x1f,0x9,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xd4,0xf0,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xf5,
// :/picture/截图/截图_VirtualBox Machine_20220712143029.png
0x0,0x0,0x2,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x13,0xc8,0x43,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xc9,0x38,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xf9,
// :/picture/截图/截图_VirtualBox Machine_20220712143037.png
0x0,0x0,0x3,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2a,0xc4,0x82,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xb9,0x98,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xf9,
// :/picture/截图/截图_VirtualBox Machine_20220712143044.png
0x0,0x0,0x1,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0x77,0xc3,
0x0,0x0,0x1,0x81,0xf1,0x1b,0xad,0xe0,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xf9,
// :/picture/截图/截图_VirtualBox_20220712223705.png
0x0,0x0,0x3,0xd0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2d,0xb9,0x6d,
0x0,0x0,0x1,0x81,0xf2,0xd8,0x65,0x88,
0x0,0x0,0x1,0x84,0x61,0x97,0xf5,0x1,
// :/picture/截图/截图_VirtualBox Machine_20220712192850.png
0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x91,0x7a,
0x0,0x0,0x1,0x81,0xf2,0x2c,0x4,0xa0,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xfd,
// :/picture/截图/截图_VirtualBox Machine_20220712191756.png
0x0,0x0,0x4,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x31,0x8f,0xdb,
0x0,0x0,0x1,0x81,0xf2,0x21,0xd7,0x28,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0xfd,
// :/picture/截图/截图_VirtualBox Machine_20220712193527.png
0x0,0x0,0x3,0x24,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x27,0x59,0x2,
0x0,0x0,0x1,0x81,0xf2,0x32,0x2e,0xc0,
0x0,0x0,0x1,0x84,0x61,0x97,0xf5,0x1,
// :/LANG/virtualmachine-en_US.qm
0x0,0x0,0x4,0xf6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x34,0x96,0x28,
0x0,0x0,0x1,0x82,0xc5,0xe0,0x5a,0x58,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0x31,
// :/LANG/virtualmachine-en_US.ts
0x0,0x0,0x4,0xc2,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x34,0x88,0x1b,
0x0,0x0,0x1,0x82,0xc5,0xea,0xbd,0x5e,
0x0,0x0,0x1,0x84,0x61,0x97,0xf4,0x31,
};

BIN
VM-source/qrc_图标.o Executable file → Normal file

Binary file not shown.

View File

@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.15.3
** Created by: Qt User Interface Compiler version 5.15.6
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
@@ -232,15 +232,19 @@ public:
systemVersion->setItemText(2, QCoreApplication::translate("MainWindow", "\345\205\266\345\256\203 Windows \347\263\273\347\273\237\357\274\210\344\270\215\346\224\257\346\214\201\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
systemVersion->setCurrentText(QString());
systemVersion->setPlaceholderText(QCoreApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\347\261\273\345\236\213\357\274\210\345\246\202\346\236\234\350\257\206\345\210\253\344\270\215\344\272\206\350\257\267\350\207\252\350\241\214\351\200\211\346\213\251\357\274\214\345\246\202\346\236\234\351\200\211\346\213\251\351\224\231\350\257\257\346\210\226\344\270\215\346\224\257\346\214\201\345\260\206\346\227\240\346\263\225\350\277\233\350\241\214\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
// systemVersion->setPlaceholderText(QCoreApplication::translate("MainWindow", "\350\257\267\351\200\211\346\213\251\347\263\273\347\273\237\347\261\273\345\236\213\357\274\210\345\246\202\346\236\234\350\257\206\345\210\253\344\270\215\344\272\206\350\257\267\350\207\252\350\241\214\351\200\211\346\213\251\357\274\214\345\246\202\346\236\234\351\200\211\346\213\251\351\224\231\350\257\257\346\210\226\344\270\215\346\224\257\346\214\201\345\260\206\346\227\240\346\263\225\350\277\233\350\241\214\350\207\252\345\212\250\345\256\211\350\243\205\357\274\211", nullptr));
install->setText(QCoreApplication::translate("MainWindow", "\345\256\211\350\243\205", nullptr));
textBrowser_3->setHtml(QCoreApplication::translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Noto Sans CJK SC'; font-size:10.5pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\344\275\277\347\224\250\350\277\205\351\233\267\346\210\226\350\200\205\347\275\221\347\233\230\344\270\213\350\275\275\344\273\245\344\270\213\344\273\273\346\204\217\344\270\200\344\270\252\351\223\276\346\216\245\347\204\266\345\220\216\345\234\250\344\270\212\351\235\242\351\200\211\346\213\251\345\215\263\345\217\257\357\274\232</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\357\274\210\345"
"\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\270\200\351\241\271\357\274\214\344\270\200\350\210\254\346\216\250\350\215\220\350\277\231\344\270\252\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">123 \347\275\221"
"\347\233\230\351\223\276\346\216\245\357\274\232https://www.123pan.com/s/pDSKVv-oypWv</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\350\277\205\351\233\267\347\275\221\347\233\230\357\274\232https://pan.xunlei.com/s/VNKMz3wgbYHg6JIh50ZKIc7pA1?pwd=35e5 \346\217\220\345\217\226\347\240\201\357\274\23235e5</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\347\231\276\345\272\246\347\275\221\347\233\230\357\274\232https://pan.baidu.com/s/19WbvinITCQJFZpAdZutrjg?pwd=me4y \346\217\220\345\217\226\347\240\201: me4y</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\357\274\210\345\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274"
"\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\270\200\351\241\271\357\274\214\344\270\200\350\210\254\346\216\250\350\215\220\350\277\231\344\270\252\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.iso|2653276160|7503E4B9B8738DFCB95872445C72AEFB|/</span></p>\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:10pt;\">\357\274\210\345\246\202\346\236\234\344\270\213\350\275\275\350\277\231\344\270\252\357\274\214\347\263\273\347\273\237\347\211\210\346\234\254\351\200\211\347\254\254\344\272\214\351\241\271\357\274\211ed2k://|file|cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso|3420557312|B58548681854236C7939003B583A8078|/</span></p>\n"
"<hr /></body></html>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab), QCoreApplication::translate("MainWindow", "\350\256\276\347\275\256", nullptr));
@@ -343,11 +347,11 @@ public:
"></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\346\255\244\347\273\204\344\273\266\344\271\237\346\234\211\351\235\236\345\270\270\345\244\247\347\232\204\347\274\272\347\202\271\357\274\214\345\260\261\346\230\257\347\233\270\346\257\224\344\272\216 Wine\357\274\214\344\274\232\351\234\200\350\246\201\345\215\240\347\224\250\345\244\247\351\207\217\347\232\204\347\251\272\351\227\264\343\200\201\345\256\211\350\243\205\351\234\200\350\246\201\345\244\247\351\207\217\347\232\204\346\227\266\351\227\264\343\200\201\346\237\220\344\272\233\346\203\205\345\206\265\344\270\213\351\234\200\350\246\201\347\233\270\346\257\224\344\272\216 Wine \351\234\200\350\246\201\346\266\210\350\200\227\346\233\264\345\244\232\347\232\204\347\263\273\347\273\237\350\265\204\346\272\220\357\274\214\344\275\206\345\217\257\344\273\245\346\233\264\345\212\240\345\256\214\347\276\216\343\200\201\346\265\201\347\225\205\347\232\204\350\277\220\350\241"
"\214 Windows \345\272\224\347\224\250\357\274\214\344\274\232\345\260\275\351\207\217\345\207\217\345\260\221\345\233\240\344\270\272\347\274\272\345\260\221\346\210\226\346\234\252\345\256\236\347\216\260\345\257\274\350\207\264\347\232\204 Windows exe \347\250\213\345\272\217\350\277\220\350\241\214\345\274\202\345\270\270</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\350\257\245\347\273\204\344\273\266\345\210\266\344\275\234\350\200\205\357\274\232gfdgd xi\343\200\201\344\270\272\344\273\200\344\271\210\346\202\250\344\270\215\345\226\234\346\254\242\347\206\212\345\207\272\346\262\241\345\222\214\351\230\277\345\270\203\345\221\242</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\350\257\245\347\273\204\344\273\266\345\210\266\344\275\234\350\200\205\357\274\232gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品</p>\n"
"<hr />\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">\345\217\202\350\200\203\346\226\207\347\214\256\357\274\232</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-b"
"lock-indent:0; text-indent:0px;\"><span style=\" font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;\">https://juejin.cn/post/7080484519328874510</span></p></body></html>", nullptr));
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:'Droid Sans Mono','monospace','monospace'; font-size:11pt; color:#6a9955;\">https://juejin.cn/"
"post/7080484519328874510</span></p></body></html>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab_2), QCoreApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr));
} // retranslateUi

Binary file not shown.

BIN
VM/Windows7X64Auto.iso Executable file → Normal file

Binary file not shown.

BIN
VM/Windows7X86Auto.iso Executable file → Normal file

Binary file not shown.

View File

@@ -1,7 +1,7 @@
Package: spark-deepin-wine-runner
Version: 3.0.0.2
Version: 3.1.0
Maintainer: gfdgd xi <3025613752@qq.com>
Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
Homepage: https://gitee.com/gfdgd-xi-org/deep-wine-runner
Architecture: all
Severity: serious
Certainty: possible
@@ -11,30 +11,20 @@ Priority: optional
Depends: python3, python3-pil, libc6, python3-pil.imagetk, python3-pyquery, aria2, curl, unrar, unzip, python3-requests, python3-pyqt5, python3-psutil, deepin-terminal | mate-terminal | gnome-terminal | xfce4-terminal, python3-dbus, python3-pip, p7zip-full, sudo
Recommends: winbind, wimtools, python3-pyqt5.qtwebengine
Section: utils
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52, spark-deepin-wine-runner
Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52, spark-deepin-wine-runner
Installed-Size: 25856
Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器
3.0.0 更新内容:
※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。
更新时间2022年12月09日
作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
Description: gfdgd xi、为什么您不喜欢熊出没和阿布呢 制作的 wine 运行器RacoonGX 团队作品
3.1.0 更新内容:
※1、不基于生态适配脚本打包器支持Mono/Gecko 打包器
※2、自动容器配置脚本新增命令 decompressionbottle、programforum、installmsi 以及上述命令的帮助
※3、自动容器配置脚本新增评论功能
※4、自动容器配置脚本新增许多应用安装脚本
※5、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能
※6、安装 Windows 虚拟机功能提供镜像下载的网盘链接
※7、简易打包器支持自动添加宋体
8、修复 installfont 命令下载的字体目录错误问题
9、修复提交日志功能在提交成功时依旧提示提交失败问题
10、支持强制启用所有被禁用的组件(不推荐)。
更新时间2023年01月06日
作者gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品

View File

@@ -2,7 +2,7 @@
# 使用系统默认的 sh 运行
#################################################################################################################
# 作者gfdgd xi、为什么您不喜欢熊出没和阿布呢
# 版本:2.6.0
# 版本:3.0.0
# 更新时间2022年10月02日
# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
# 基于 sh
@@ -64,4 +64,4 @@ fi
# 设置目录权限,让用户可读可写,方便后续删除组件
chmod 777 -R /opt/apps/deepin-wine-runner
# 向服务器返回安装数加1不显示内容且忽略错误
python3 /opt/apps/deepin-wine-runner/Download.py 3.0.0 > /dev/null 2>&1 | true
python3 /opt/apps/deepin-wine-runner/Download.py 3.1.0 > /dev/null 2>&1 | true

View File

@@ -15,6 +15,7 @@ import sys
import base64
import json
import traceback
import urllib.request
import req as requests
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
@@ -31,12 +32,13 @@ 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 = []
class ProgramRunStatusUpload():
msgWindow = None
starLayout = None
@@ -136,7 +138,7 @@ class InformationWindow():
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()
fenlists = requests.get(base64.b64decode("aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci1kb3dubG9hZHMtb2YtcnVubmVyL3Jhdy9icmFuY2gvbWFzdGVyL0Jhc2hBcHBGZW4v").decode("utf-8") + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
@@ -207,10 +209,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("<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():
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 +252,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") + urllib.request.quote(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 +273,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 +290,135 @@ class ProgramRunStatusShow():
head = maxHead
for i in range(head, end):
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、字数至少 15 字,但不得超过 250 字,评论内容最多 5 行,且评论内容将会进行审核,意味着评论不会实时生效显示
※3、如果审核不通过将会被屏蔽并拉入黑名单以及公开发布 IP 地址,评论前请三思!""")
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')}{urllib.request.quote(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')}{urllib.request.quote(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/{urllib.request.quote(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 +549,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"))
@@ -422,7 +571,7 @@ if __name__ == "__main__":
#pass
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
ui.uploadFen.clicked.connect(UploadFen)
#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)

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

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

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

@@ -38,5 +38,9 @@
"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"
"installvb": "安装指定的 VB 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6",
"installother": "安装未归类的运行库到指定容器\n参数数量1\n参数介绍在安装其它运行库工具的编号如 2 MFC运行库",
"decompressionbottle": "解压用 wine 打包的 deb 包内的容器到指定路径\n参数数量2\n参数介绍deb 包路径+要解压到的路径",
"programforum": "打开程序论坛\n参数数量0\n参数介绍无",
"installmsi": "安装 MSI 文件到指定容器\n参数数量1\n参数介绍msi 文件路径"
}

View File

@@ -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,10 @@ class Command():
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink",
"installvb",
"installother"
"installother",
"decompressionbottle",
"programforum",
"installmsi"
]
def __init__(self, commandString: str) -> None:
@@ -279,7 +297,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 +407,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 +433,13 @@ 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/")
def InstallMSI(self):
self.command = ["bat", "msiexec", "/i", self.command[1]]
return self.Bat()
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
commandList = {
@@ -443,7 +482,10 @@ class Command():
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB,
"installother": InstallOther
"installother": InstallOther,
"decompressionbottle": DecompressionBottle,
"programforum": ProgramForum,
"installmsi": InstallMSI
}
# 参数数列表
@@ -488,7 +530,10 @@ class Command():
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0],
"installvb": [1],
"installother": [1]
"installother": [1],
"decompressionbottle": [2],
"programforum": [0],
"installmsi": [1]
}
windowsUnrun = [
"createbotton",
@@ -502,7 +547,8 @@ class Command():
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont"
"installsparkcorefont",
"decompressionbottle"
]
# 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
@@ -554,7 +600,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 +620,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(">")

View File

@@ -32,7 +32,7 @@ except:
["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]}\"")
return os.system(f"aria2c -x 16 -s 16 -d '{wineBotton}/drive_c/windows/Fonts/' -o '{fontList[id][0]}' \"{fontList[id][1]}\"")
if __name__ == "__main__":
if "--help" in sys.argv:

View File

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

View File

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

View File

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

View File

@@ -41,9 +41,6 @@ class Ui_MainWindow(object):
self.getFen = QtWidgets.QPushButton(self.centralwidget)
self.getFen.setObjectName("getFen")
self.horizontalLayout_2.addWidget(self.getFen)
self.uploadFen = QtWidgets.QPushButton(self.centralwidget)
self.uploadFen.setObjectName("uploadFen")
self.horizontalLayout_2.addWidget(self.uploadFen)
self.runBotton = QtWidgets.QPushButton(self.centralwidget)
self.runBotton.setObjectName("runBotton")
self.horizontalLayout_2.addWidget(self.runBotton)
@@ -110,8 +107,7 @@ class Ui_MainWindow(object):
self.searchTips.setText(_translate("MainWindow", "搜索内容(为空代表显示所有内容):"))
self.saerchBotton.setText(_translate("MainWindow", "搜索"))
self.getInfoButton.setText(_translate("MainWindow", "获取选中项介绍"))
self.getFen.setText(_translate("MainWindow", "获取选中项的评分"))
self.uploadFen.setText(_translate("MainWindow", "提交选中项的评分"))
self.getFen.setText(_translate("MainWindow", "获取/提交选中项的评分和评论"))
self.runBotton.setText(_translate("MainWindow", "部署此方案"))
self.menu.setTitle(_translate("MainWindow", "程序"))
self.menu_2.setTitle(_translate("MainWindow", "切换源"))

View File

@@ -64,14 +64,7 @@
<item>
<widget class="QPushButton" name="getFen">
<property name="text">
<string>获取选中项的评分</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="uploadFen">
<property name="text">
<string>提交选中项的评分</string>
<string>获取/提交选中项的评分和评论</string>
</property>
</widget>
</item>

View File

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

View File

@@ -46,6 +46,7 @@ def button4_cl():
def disabled_or_NORMAL_all(choose):
choose = not choose
disabledMono.setDisabled(choose)
e1_text.setDisabled(choose)
e2_text.setDisabled(choose)
e3_text.setDisabled(choose)
@@ -526,12 +527,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 +1894,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 +1942,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 +1986,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 +2050,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")

View File

@@ -1100,12 +1100,16 @@ class UpdateWindow():
updateText.setText("从源码运行不提供更新")
ok.setDisabled(True)
else:
if "deepin/UOS 应用商店版本<带签名>" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtdW9zLmpzb24="
elif "星火应用商店版本" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtc3BhcmsuanNvbg=="
else:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg=="
if newPackage:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGVuZXcuanNvbg=="
else:
if "deepin/UOS 应用商店版本<带签名>" == programVersionType:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXVvcy5qc29u"
elif "星火应用商店版本" == programVersionType:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXNwYXJrLmpzb24="
else:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLmpzb24="
try:
UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text)
versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本{UpdateWindow.data['Version']}\n更新内容")
@@ -1848,7 +1852,7 @@ def UploadLog():
"Log": returnText.toPlainText(),
"Wine": wine[o1.currentText()],
"Tips": text
}).json
}).json()
if returnList["ExitCode"] == 0:
QtWidgets.QMessageBox.information(window, "提示", "上传成功!")
else:
@@ -1934,7 +1938,7 @@ def AddDockerMenu():
openTerminal.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"x-terminal-emulator"]).start())
dockers.addAction(openFileManager)
dockers.addAction(openTerminal)
newPackage = False
class GetVersionThread(QtCore.QThread):
signal = QtCore.pyqtSignal(str)
def __init__(self) -> None:
@@ -1943,6 +1947,7 @@ class GetVersionThread(QtCore.QThread):
def run(self):
global about
global window
global newPackage
global programVersionType
# 目前分为几个版本(在 control 文件区分):
# 星火版本:~spark
@@ -1977,8 +1982,13 @@ class GetVersionThread(QtCore.QThread):
if fileName[i] == "Package: spark-deepin-wine-runner-52":
programVersionType = "吾爱专版"
window.setWindowTitle(f"{title}(吾爱专版)")
newPackage = False
break
if fileName[i] == "Package: spark-deepin-wine-runner":
package = True
newPackage = True
continue
if fileName[i] == "Package: wine-runner-linux":
package = True
continue
if not package:
@@ -2330,29 +2340,20 @@ exe路径\' 参数 \'
<b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
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、installmsi 以及上述命令的帮助
※3、自动容器配置脚本新增评论功能
※4、自动容器配置脚本新增许多应用安装脚本
※5、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能
※6、安装 Windows 虚拟机功能提供镜像下载的网盘链接
※7、简易打包器支持自动添加宋体
8、修复 installfont 命令下载的字体目录错误问题
9、修复提交日志功能在提交成功时依旧提示提交失败问题
10、支持强制启用所有被禁用的组件(不推荐)。
''')
for i in information["Thank"]:
thankText += f"{i}\n"
updateTime = "2022年12月10日"
updateTime = "2023年01月06日"
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作。</p>
<pre>
@@ -2386,15 +2387,18 @@ Qt 版本:{QtCore.qVersion()}
<pre>{tips}
</pre>
<hr>
<h1>关于 RacoonGX 项目组</h1>
<p>是由 @gfdgd xi 带头的团队gfdgd xi开发了UEngine运行器等好用的开源软件。</p>
<hr>
<h1>友谊链接</h1>
<pre>星火应用商店https://spark-app.store/
Deepin 官网https://www.deepin.org
Deepin 论坛https://bbs.deepin.org
论坛https://gfdgdxi.flarum.cloud/</pre>
<hr>
<h1>©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>'''
<h1>©2020~{time.strftime("%Y")} By gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品</h1>'''
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"))
try:
threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9vcGVuL0luc3RhbGwucGhw").decode("utf-8")) + "?Version=" + version]).start()
@@ -2558,7 +2562,7 @@ mainLayout.addWidget(returnText, 0, 1, 2, 1)
# 版权
copy = QtWidgets.QLabel(f"""\n程序版本{version}<b>提示Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统</b><br>
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""")
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品""")
mainLayout.addWidget(copy, 2, 0, 1, 1)
# 程序运行
@@ -2587,6 +2591,7 @@ installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine"))
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
p2 = QtWidgets.QAction(transla.transe("U", "设置程序(&S)"))
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件缓存"))
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "删除程序组件"))
@@ -2599,6 +2604,7 @@ programmenu.addAction(installMoreWine)
programmenu.addAction(downloadChrootBottle)
programmenu.addSeparator()
programmenu.addAction(p2)
programmenu.addAction(enabledAll)
programmenu.addSeparator()
programmenu.addAction(p3)
programmenu.addAction(cleanCache)
@@ -2612,6 +2618,7 @@ installWineHQ.triggered.connect(InstallWineHQ)
installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/installwine'"]).start())
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
p2.triggered.connect(ProgramSetting.ShowWindow)
enabledAll.triggered.connect(lambda: DisableButton(False))
p3.triggered.connect(CleanProgramHistory)
cleanCache.triggered.connect(CleanProgramCache)
cleanProgramUnuse.triggered.connect(CleanProgram)
@@ -2619,8 +2626,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 快捷键映射"))
@@ -2655,7 +2662,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)
@@ -2666,9 +2673,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"))

View File

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

View File

@@ -1 +0,0 @@
/media/gfdgd_xi/bebdaa29-d8c3-4b34-9fa8-5c31a779bb6a/wine6.0/usr/local

View File

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

View File

@@ -46,6 +46,7 @@ def button4_cl():
def disabled_or_NORMAL_all(choose):
choose = not choose
disabledMono.setDisabled(choose)
e1_text.setDisabled(choose)
e2_text.setDisabled(choose)
e3_text.setDisabled(choose)
@@ -526,12 +527,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 +1894,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 +1942,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 +1986,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 +2050,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")

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,306 @@
/*
归属 RacoonGX 团队开发者gfdgd xi、为什么您不喜欢熊出没和阿布呢
*/
#include <iostream>
#include <vector>
#include <filesystem>
#include <shlobj.h>
#include <fstream>
using namespace std;
string mainlist[] = {"Visual C++ 运行库", ".net framework 运行库"};
string vcppName[] = {
"2005 Service Pack 1 Redistributable Package MFC 安全更新",
"2008 (VC++ 9.0) SP1 (不再支持) X86",
"2008 (VC++ 9.0) SP1 (不再支持) X64",
"2010 (VC++ 10.0) SP1 (不再支持) X86",
"2010 (VC++ 10.0) SP1 (不再支持) X64",
"2012 (VC++ 11.0) Update 4 X86",
"2012 (VC++ 11.0) Update 4 X64",
"2013 (VC++ 12.0) X86",
"2013 (VC++ 12.0) X64",
"2015、2017、2019 和 2022 X86",
"2015、2017、2019 和 2022 X64",
"2015、2017、2019 和 2022 ARM64",
"VC6 运行库"
};
string vcppUrl[] = {
"http://download.microsoft.com/download/4/A/2/4A22001F-FA3B-4C13-BF4E-42EC249D51C4/vcredist_x86.EXE",
"http://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe",
"http://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe",
"http://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe",
"http://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe",
"http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe",
"http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe",
"http://aka.ms/highdpimfc2013x86enu",
"http://aka.ms/highdpimfc2013x64enu",
"http://aka.ms/vs/17/release/vc_redist.x86.exe",
"http://aka.ms/vs/17/release/vc_redist.x64.exe",
"http://aka.ms/vs/17/release/vc_redist.arm64.exe",
"http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/vscpp/VC6RedistSetup_deu.exe"
};
string netName[] = {
"3.5 SP1 Offline Installer",
"4.0 Offline Installer",
"4.5 Web Installer",
"4.5.1 Offline Installer",
"4.5.2 Offline Installer",
"4.6 Offline Installer",
"4.6.1 Offline Installer",
"4.6.2 Offline Installer",
"4.7 Offline Installer",
"4.7.1 Offline Installer",
"4.7.2 Offline Installer",
"4.8 Offline Installer",
"4.8.1 Offline Installer",
".NET 5.0 Desktop Runtime (v5.0.17) - Windows x86 Installer",
".NET 5.0 Desktop Runtime (v5.0.17) - Windows x64 Installer",
".NET 5.0 Desktop Runtime (v5.0.17) - Windows Arm64 Installer",
".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x86 Installer",
".NET Core 3.0 Desktop Runtime (v3.0.3) - Windows x64 Installer",
".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x86 Installer",
".NET Core 3.1 Desktop Runtime (v3.1.28) - Windows x64 Installer",
".NET 6.0 Desktop Runtime (v6.0.8) - Windows x86 Installer",
".NET 6.0 Desktop Runtime (v6.0.8) - Windows x64 Installer",
".NET 6.0 Desktop Runtime (v6.0.8) - Windows Arm64 Installer",
"Microsoft .NET Framework 1.1 版可转散发套件",
"Microsoft .NET Framework 2.0 Service Pack 1 (x86)",
"Microsoft .NET Framework 集合包",
"Microsoft .NET Framework 3.5 便携版"
};
string netUrl[] = {
"http://download.visualstudio.microsoft.com/download/pr/b635098a-2d1d-4142-bef6-d237545123cb/2651b87007440a15209cac29634a4e45/dotnetfx35.exe",
"http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe",
"http://download.microsoft.com/download/B/A/4/BA4A7E71-2906-4B2D-A0E1-80CF16844F5F/dotNetFx45_Full_setup.exe",
"http://download.microsoft.com/download/1/6/7/167F0D79-9317-48AE-AEDB-17120579F8E2/NDP451-KB2858728-x86-x64-AllOS-ENU.exe",
"http://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe",
"http://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",
"http://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe",
"http://download.visualstudio.microsoft.com/download/pr/8e396c75-4d0d-41d3-aea8-848babc2736a/80b431456d8866ebe053eb8b81a168b3/ndp462-kb3151800-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/2dfcc711-bb60-421a-a17b-76c63f8d1907/e5c0231bd5d51fffe65f8ed7516de46a/ndp47-kb3186497-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/4312fa21-59b0-4451-9482-a1376f7f3ba4/9947fce13c11105b48cba170494e787f/ndp471-kb4033342-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/1f5af042-d0e4-4002-9c59-9ba66bcf15f6/089f837de42708daacaae7c04b7494db/ndp472-kb4054530-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/6f083c7e-bd40-44d4-9e3f-ffba71ec8b09/3951fd5af6098f2c7e8ff5c331a0679c/ndp481-x86-x64-allos-enu.exe",
"http://download.visualstudio.microsoft.com/download/pr/b6fe5f2a-95f4-46f1-9824-f5994f10bc69/db5ec9b47ec877b5276f83a185fdb6a0/windowsdesktop-runtime-5.0.17-win-x86.exe",
"http://download.visualstudio.microsoft.com/download/pr/3aa4e942-42cd-4bf5-afe7-fc23bd9c69c5/64da54c8864e473c19a7d3de15790418/windowsdesktop-runtime-5.0.17-win-x64.exe",
"http://download.visualstudio.microsoft.com/download/pr/be25784a-4231-4c53-ba6e-869166ef523f/9602c6c0d358d31dc710fd0573fc39e0/windowsdesktop-runtime-5.0.17-win-arm64.exe",
"http://download.visualstudio.microsoft.com/download/pr/e312618d-85c4-4cad-b660-569b5522eca9/e951e76ebe011b5d3ea1289ef68e8281/windowsdesktop-runtime-3.0.3-win-x86.exe",
"http://download.visualstudio.microsoft.com/download/pr/c525a2bb-6e98-4e6e-849e-45241d0db71c/d21612f02b9cae52fa50eb54de905986/windowsdesktop-runtime-3.0.3-win-x64.exe",
"http://download.visualstudio.microsoft.com/download/pr/d2ec7ca2-017d-4d06-a6da-3707daa3c3b1/1f2e108653e3d8316e1657105ef24b93/windowsdesktop-runtime-3.1.28-win-x86.exe",
"http://download.visualstudio.microsoft.com/download/pr/5c74593e-f156-44c8-9957-f11996de72bc/d3e0e26c64a5a2d860c5c0deca975d78/windowsdesktop-runtime-3.1.28-win-x64.exe",
"http://download.visualstudio.microsoft.com/download/pr/61747fc6-7236-4d5e-85e5-a5df5f480f3a/02203594bf1331f0875aa6491419ffa1/windowsdesktop-runtime-6.0.8-win-x86.exe",
"http://download.visualstudio.microsoft.com/download/pr/b4a17a47-2fe8-498d-b817-30ad2e23f413/00020402af25ba40990c6cc3db5cb270/windowsdesktop-runtime-6.0.8-win-x64.exe",
"http://download.visualstudio.microsoft.com/download/pr/17737b16-dbb0-45f8-9684-16cce46f0835/14475e8380422840249513d58c70d8da/windowsdesktop-runtime-6.0.8-win-arm64.exe",
"http://download.microsoft.com/download/8/2/7/827bb1ef-f5e1-4464-9788-40ef682930fd/dotnetfx.exe",
"http://download.microsoft.com/download/0/8/c/08c19fa4-4c4f-4ffb-9d6c-150906578c9e/NetFx20SP1_x86.exe",
"http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/%e5%be%ae%e8%bd%af.NET%e7%a6%bb%e7%ba%bf%e8%bf%90%e8%a1%8c%e5%ba%93%e5%90%88%e9%9b%86%202022.07.22@%e4%b8%80%e4%b8%aa%e8%b7%af%e4%ba%ba.exe",
"http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/net/Dotnet3.5.exe"
};
int vcppMax = 0;
int netMax = 0;
string *mainlistM[] = {vcppName, netName};
int *mainlistMaxM[] = {&vcppMax, &netMax};
string *vcppAdviceInstallI386[] = {&vcppUrl[0], &vcppUrl[1], &vcppUrl[3], &vcppUrl[5], &vcppUrl[7], &vcppUrl[9], &vcppUrl[12]};
string *vcppAdviceInstallAmd64[] = {&vcppUrl[0], &vcppUrl[2], &vcppUrl[4], &vcppUrl[6], &vcppUrl[8], &vcppUrl[10], &vcppUrl[12]};
string *netAdviceInstallWin7[] = {&netUrl[25]};
string *mainlistUrlM[] = {vcppUrl, netUrl};
string tempPath = "C:\\Windows\\Temp";
bool GetSystemArch(){
string windowsPath = getenv("SYSTEMROOT");
if(filesystem::exists(windowsPath + "\\SysWOW64")){
return true;
}
return false;
}
int Download(string url, string savePath, string filename){
if(filesystem::exists(savePath + "\\" + filename)){
cout << "文件" << savePath << "\\" << filename << "已存在,移除" << endl;
filesystem::remove_all(savePath + "\\" + filename);
}
cout << "下载链接:" << url << endl;
string command = "aria2c -x 16 -s 16 \"" + url + "\" -d \"" + savePath + "\" -o \"" + filename + "\"";
return system(command.c_str());
}
void InstallAdviceVcpp(){
if(GetSystemArch()){
int listLen = sizeof(vcppAdviceInstallAmd64) / sizeof(vcppAdviceInstallAmd64[0]);
for(int i=0;i<=listLen;i++){
Download(*vcppAdviceInstallAmd64[i], tempPath, to_string(i) + ".exe");
}
for(int i=0;i<=listLen;i++){
string command = "\"" + tempPath + "\\" + to_string(i) + "\"";
system(command.c_str());
}
return;
}
int listLen = sizeof(vcppAdviceInstallI386) / sizeof(vcppAdviceInstallI386[0]);
for(int i=0;i<=listLen;i++){
Download(*vcppAdviceInstallI386[i], tempPath, to_string(i) + ".exe");
}
for(int i=0;i<=listLen;i++){
string command = "\"" + tempPath + "\\" + to_string(i) + "\"";
system(command.c_str());
}
}
void InstallAdviceNet(){
int listLen = sizeof(netAdviceInstallWin7) / sizeof(netAdviceInstallWin7[0]);
for(int i=0;i<=listLen;i++){
Download(*netAdviceInstallWin7[i], tempPath, to_string(i) + ".exe");
}
for(int i=0;i<=listLen;i++){
string command = "\"" + tempPath + "\\" + to_string(i) + "\"";
system(command.c_str());
}
}
void ShowNextList(string title, int id){
string *list = mainlistM[id];
while(1){
system("cls");
cout << "项目https://gitee.com/gfdgd-xi-org/deep-wine-runner" << endl;
cout << "By RacoonGX Team" << endl;
cout << "------------------------------------------------------" << endl;
cout << "安装" << title << endl;
int max = *mainlistMaxM[id];
for(int i=0;i<=max - 1;i++){
cout << i << ". " << *(list + i) << endl;
}
cout << max << ". 安装推荐组件" << endl;
cout << max + 1 << ". 退出此级" << endl;
int choose = 0;
cin >> choose;
if(choose == max){
cout << "下载文件" << endl;
if(!id){
InstallAdviceVcpp();
}
else if(id == 1){
InstallAdviceNet();
}
continue;
}
if(choose == max + 1){
break;
}
if(0 <= choose && choose < max){
cout << "下载安装程序" << endl;
Download(*(mainlistUrlM[id] + choose), tempPath, "vcpp.exe");
cout << "运行安装程序" << endl;
system((tempPath + "\\vcpp.exe").c_str());
system("pause");
continue;
}
cout << "超出范围,请重新输入" << endl;
system("pause");
}
}
/*void GetInternetList(){
Download("", tempPath, "list.txt");
ifstream file(tempPath + "\\list.txt");
if(file){
string line;
vector<string> netUrlList;
while(getline(file, line)){
netUrlList.push_back(line);
}
// 加入数组
string neturlStringlist[netUrlList.size()];
for(int i=0;i<=(int)netUrlList.size();i++){
neturlStringlist[i] = netUrlList[i];
}
}
file.close();
Download("", tempPath, "list.txt");
ifstream netnamefile(tempPath + "\\list.txt");
if(file){
string line;
vector<string> netUrlList;
while(getline(netnamefile, line)){
netUrlList.push_back(line);
}
file.close();
// 加入数组
string neturlStringlist[netUrlList.size()];
for(int i=0;i<=(int)netUrlList.size();i++){
neturlStringlist[i] = netUrlList[i];
}
}
}*/
int main(){
// 获取临时文件路径
tempPath = getenv("TMP");
tempPath += "\\wine-runner";
cout << "程序临时目录:" << tempPath << endl;
if(!filesystem::exists(tempPath)){
cout << "临时目录不存在,创建。" << endl;
filesystem::create_directories(tempPath);
}
// 从互联网获取数据
//GetInternetList();
// 设置窗口标题和主题
system("title 安装常用组件");
//system("color 2F"); // 设置主题颜色
system("cls");
// 获取数组长度(动态)
vcppMax = sizeof(vcppName) / sizeof(vcppName[0]);
netMax = sizeof(netName) / sizeof(netName[0]);
// 主要逻辑
while(1){
cout << "项目https://gitee.com/gfdgd-xi-org/deep-wine-runner" << endl;
cout << "By RacoonGX Team" << endl;
cout << "------------------------------------------------------" << endl;
int number = 0;
int mainlistLen = sizeof(mainlist) / sizeof(mainlist[0]);
for(string i: mainlist){
cout << number << ". " << i << endl;
number++;
}
cout << mainlistLen << ". 设置系统 OEM 信息(需要先安装 .net framework 4.0 或以上版本)" << endl;
cout << mainlistLen + 1 << ". 设置默认 OEM 信息(预设)" << endl;
cout << mainlistLen + 2 << ". 退出程序" << endl;
cout << "请输入选项编号:";
int choose = 0;
cin >> choose;
if(choose == mainlistLen){
system("Depends\\OEM.exe");
system("cls");
continue;
}
if(choose == mainlistLen + 1){
bool runInAdmin = IsUserAnAdmin();
if(runInAdmin){
system("regedit /s Depends/OEM.reg");
Download("http://code.gitlink.org.cn/gfdgd_xi/wine-runner-list/raw/branch/master/OEM.bmp", getenv("SYSTEMROOT"), "OEM.bmp");
cout << "完成!" << endl;
system("pause");
system("cls");
continue;
}
cout << "使用该功能需要使用管理员权限运行该程序。" << endl;
system("pause");
system("cls");
continue;
}
if(choose == mainlistLen + 2){
// 退出程序逻辑
break;
}
if(choose >= 0 && choose < mainlistLen){
ShowNextList(mainlist[choose], choose);
system("cls");
continue;
}
cout << "数值超出范围,请重新输入" << endl;
system("pause");
system("cls");
}
return 0;
}

View File

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

View File

@@ -1100,12 +1100,16 @@ class UpdateWindow():
updateText.setText("从源码运行不提供更新")
ok.setDisabled(True)
else:
if "deepin/UOS 应用商店版本<带签名>" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtdW9zLmpzb24="
elif "星火应用商店版本" == programVersionType:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUtc3BhcmsuanNvbg=="
else:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGUuanNvbg=="
if newPackage:
url = "aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci91cGRhdGVuZXcuanNvbg=="
else:
if "deepin/UOS 应用商店版本<带签名>" == programVersionType:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXVvcy5qc29u"
elif "星火应用商店版本" == programVersionType:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLXNwYXJrLmpzb24="
else:
url = "aHR0cHM6Ly9jb2RlLmdpdGxpbmsub3JnLmNuL2dmZGdkLXhpLW9yZy93aW5lLXJ1bm5lci11cGRhdGUtaW5mb3JtYXRpb24vcmF3L2JyYW5jaC9tYXN0ZXIvdXBkYXRlLmpzb24="
try:
UpdateWindow.data = json.loads(requests.get(base64.b64decode(url).decode("utf-8")).text)
versionLabel = QtWidgets.QLabel(f"当前版本:{version}\n最新版本:{UpdateWindow.data['Version']}\n更新内容:")
@@ -1848,7 +1852,7 @@ def UploadLog():
"Log": returnText.toPlainText(),
"Wine": wine[o1.currentText()],
"Tips": text
}).json
}).json()
if returnList["ExitCode"] == 0:
QtWidgets.QMessageBox.information(window, "提示", "上传成功!")
else:
@@ -1934,7 +1938,7 @@ def AddDockerMenu():
openTerminal.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"x-terminal-emulator"]).start())
dockers.addAction(openFileManager)
dockers.addAction(openTerminal)
newPackage = False
class GetVersionThread(QtCore.QThread):
signal = QtCore.pyqtSignal(str)
def __init__(self) -> None:
@@ -1943,6 +1947,7 @@ class GetVersionThread(QtCore.QThread):
def run(self):
global about
global window
global newPackage
global programVersionType
# 目前分为几个版本(在 control 文件区分):
# 星火版本:~spark
@@ -1977,8 +1982,13 @@ class GetVersionThread(QtCore.QThread):
if fileName[i] == "Package: spark-deepin-wine-runner-52":
programVersionType = "吾爱专版"
window.setWindowTitle(f"{title}(吾爱专版)")
newPackage = False
break
if fileName[i] == "Package: spark-deepin-wine-runner":
package = True
newPackage = True
continue
if fileName[i] == "Package: wine-runner-linux":
package = True
continue
if not package:
@@ -2330,29 +2340,20 @@ exe路径\' 参数 \'
<b>千万不要中断后不删除源的情况下 apt upgrade </b>中断后只需重新打开脚本输入 repair 或者随意安装一个 Wine会自动执行恢复操作即可
以及此脚本安装的 Wine 无法保证 100% 能使用,以及副作用是会提示;
<code>N: 鉴于仓库 'https://community-packages.deepin.com/beige beige InRelease' 不支持 'i386' 体系结构,跳过配置文件 'main/binary-i386/Packages' 的获取。</code>''')
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、installmsi 以及上述命令的帮助
※3、自动容器配置脚本新增评论功能
※4、自动容器配置脚本新增许多应用安装脚本
※5、安装 Windows 虚拟机功能更换应答镜像图标并添加常用 Windows 组件安装功能
※6、安装 Windows 虚拟机功能提供镜像下载的网盘链接
※7、简易打包器支持自动添加宋体
8、修复 installfont 命令下载的字体目录错误问题
9、修复提交日志功能在提交成功时依旧提示提交失败问题
10、支持强制启用所有被禁用的组件(不推荐)。
''')
for i in information["Thank"]:
thankText += f"{i}\n"
updateTime = "2022年12月10"
updateTime = "2023年01月06"
aboutProgram = transla.transe("U", """<p>Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序内置了对Wine图形化的支持、各种Wine工具、自制的Wine程序打包器和运行库安装工具等。</p>
<p>它同时还内置了基于VirtualBox制作的、专供小白使用的Windows虚拟机安装工具可以做到只需下载系统镜像并点击安装即可无需考虑虚拟机的安装、创建、分区等操作。</p>
<pre>
@@ -2386,15 +2387,18 @@ Qt 版本:{QtCore.qVersion()}
<pre>{tips}
</pre>
<hr>
<h1>关于 RacoonGX 项目组</h1>
<p>是由 @gfdgd xi 带头的团队gfdgd xi开发了UEngine运行器等好用的开源软件。</p>
<hr>
<h1>友谊链接</h1>
<pre>星火应用商店https://spark-app.store/
Deepin 官网https://www.deepin.org
Deepin 论坛https://bbs.deepin.org
论坛https://gfdgdxi.flarum.cloud/</pre>
<hr>
<h1>©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢</h1>'''
<h1>©2020~{time.strftime("%Y")} By gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品</h1>'''
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"))
try:
threading.Thread(target=requests.get, args=[parse.unquote(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3NwYXJrLWRlZXBpbi13aW5lLXJ1bm5lci9vcGVuL0luc3RhbGwucGhw").decode("utf-8")) + "?Version=" + version]).start()
@@ -2558,7 +2562,7 @@ mainLayout.addWidget(returnText, 0, 1, 2, 1)
# 版权
copy = QtWidgets.QLabel(f"""\n程序版本:{version}<b>提示Wine 无法运行所有的 Windows 程序,如果想要运行更多可执行程序,可以考虑虚拟机和双系统</b><br>
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢""")
©2020~{time.strftime("%Y")} gfdgd xi、为什么您不喜欢熊出没和阿布呢RacoonGX 团队作品""")
mainLayout.addWidget(copy, 2, 0, 1, 1)
# 程序运行
@@ -2587,6 +2591,7 @@ installWineHQ = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/wine
installMoreWine = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/more-wine.png"), transla.transe("U", "安装更多 Wine"))
downloadChrootBottle = QtWidgets.QAction(QtGui.QIcon(f"{programPath}/Icon/Function/CHROOT.png"), transla.transe("U", "下载 Chroot 容器"))
p2 = QtWidgets.QAction(transla.transe("U", "设置程序(&S)"))
enabledAll = QtWidgets.QAction(transla.transe("U", "强制启用所有被禁用的组件(不推荐)"))
p3 = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件历史记录(&C)"))
cleanCache = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "清空软件缓存"))
cleanProgramUnuse = QtWidgets.QAction(QtWidgets.QApplication.style().standardIcon(47), transla.transe("U", "删除程序组件"))
@@ -2599,6 +2604,7 @@ programmenu.addAction(installMoreWine)
programmenu.addAction(downloadChrootBottle)
programmenu.addSeparator()
programmenu.addAction(p2)
programmenu.addAction(enabledAll)
programmenu.addSeparator()
programmenu.addAction(p3)
programmenu.addAction(cleanCache)
@@ -2612,6 +2618,7 @@ installWineHQ.triggered.connect(InstallWineHQ)
installMoreWine.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/wine/installwine'"]).start())
downloadChrootBottle.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"'{programPath}/QemuDownload.py'"]).start())
p2.triggered.connect(ProgramSetting.ShowWindow)
enabledAll.triggered.connect(lambda: DisableButton(False))
p3.triggered.connect(CleanProgramHistory)
cleanCache.triggered.connect(CleanProgramCache)
cleanProgramUnuse.triggered.connect(CleanProgram)
@@ -2619,8 +2626,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 快捷键映射"))
@@ -2655,7 +2662,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)
@@ -2666,9 +2673,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"))

Binary file not shown.

35
pardus-chroot Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/bash
set +e
DESTDIR="$1"
if [[ $UID -ne 0 ]] ; then
echo "You must be root!"
exit 1
fi
if [[ -b "$1" ]] ; then
DESTDIR=$(mktemp -d)
mount "$1" "$DESTDIR"
fi
shift
if [[ "$DESTDIR" == "" || ! -f "$DESTDIR/etc/os-release" ]] ; then
echo "Target filesystem is invalid: $DESTDIR"
exit 1
fi
mount --bind /dev "$DESTDIR/dev"
mount --bind /run "$DESTDIR/run"
mount --bind /media "$DESTDIR/media"
mount -t devpts devpts "$DESTDIR/dev/pts"
mount -t sysfs sysfs "$DESTDIR/sys"
mount -t proc proc "$DESTDIR/proc"
mount -t tmpfs tmpfs "$DESTDIR/dev/shm"
if [[ -d /sys/firmware/efi/ ]] ; then
mount -t efivarfs efivarfs "$DESTDIR/sys/firmware/efi/efivars"
fi
cat /etc/resolv.conf > $DESTDIR/etc/resolv.conf
SHELL=/bin/bash unshare --fork --pid chroot "$DESTDIR" "$@"
if [[ -d /sys/firmware/efi/ ]] ; then
while umount "$DESTDIR/sys/firmware/efi/efivars" 2>/dev/null ; do : ;done
fi
for dir in dev/pts dev/shm dev sys proc run media ; do
while umount "$DESTDIR/$dir" 2>/dev/null; do : ;done
done
umount -lf "$DESTDIR" 2>/dev/null