新增dll检测功能

This commit is contained in:
2022-11-18 17:18:24 +08:00
parent 386022ea36
commit 50cdbd13f4
8 changed files with 334 additions and 71 deletions

View File

@@ -1804,80 +1804,94 @@ def AddDockerMenu():
openFileManager = QtWidgets.QAction("打开默认文件管理器")
openTerminal = QtWidgets.QAction("打开默认终端")
openFileManager.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"xdg-open '{get_home()}'"]).start())
openTerminal.triggered.connect(lambda: threading.Thread(target=os.system, args=[f"x-terminal-emulator"]).start())
dockers.addAction(openFileManager)
dockers.addAction(openTerminal)
def GetVersion():
global about
global programVersionType
# 目前分为几个版本(在 control 文件区分):
# 星火版本:~spark
# 商店版本:~uos
# 编译版本:无版本号
# Gitee/Github……正常版本
# Docker 版本
programVersionTypeLnk = {
"spark": "星火应用商店版本",
"uos": "deepin/UOS 应用商店版本<带签名>"
}
# 直接判断是不是 Docker 版本
if os.path.exists(f"{programPath}/docker.txt"):
programVersionType = "Docker 内置版本"
window.setWindowTitle(f"{title} Docker 内置版本")
AddDockerMenu()
else:
programVersionType = "从源码运行的版本"
try:
if not os.path.exists("/var/lib/dpkg/status"):
print("无 dpkg结束")
file = open("/var/lib/dpkg/status", "r")
fileName = file.read().splitlines()
package = False
for i in range(0, len(fileName)):
if fileName[i] == "Package: spark-deepin-wine-runner-docker":
programVersionType = "Docker 内置版本"
window.setWindowTitle(f"{title} Docker 内置版本)")
AddDockerMenu()
break
if fileName[i] == "Package: spark-deepin-wine-runner-52":
programVersionType = "吾爱专版"
window.setWindowTitle(f"{title}(吾爱专版)")
break
if fileName[i] == "Package: spark-deepin-wine-runner":
package = True
continue
if not package:
continue
if fileName[i].replace(" ", "").replace("\n", "") == "":
# 空行,不再考虑
break
# 搜索版本号
try:
if fileName[i][:fileName[i].index(":")] == "Version":
version = fileName[i][fileName[i].index(":") + 1:].strip()
print(f"版本号为:{version}")
if not "-" in version:
programVersionType = "从Gitee/Github/Gitlink等平台获取的版本"
break
programVersionType = version[version.index("-") + 1:]
print(programVersionType)
if "-" in programVersionType:
# 考虑到如 2.1.0-2-spark 的情况
programVersionType = programVersionType[programVersionType.index("-") + 1:]
try:
programVersionType = programVersionTypeLnk[programVersionType]
except:
programVersionType = "从Gitee/Github/Gitlink等平台获取的版本"
class GetVersionThread(QtCore.QThread):
signal = QtCore.pyqtSignal(str)
def __init__(self) -> None:
super().__init__()
def run(self):
global about
global window
global programVersionType
# 目前分为几个版本(在 control 文件区分):
# 星火版本:~spark
# 商店版本:~uos
# 编译版本:无版本号
# Gitee/Github……正常版本
# Docker 版本
programVersionTypeLnk = {
"spark": "星火应用商店版本",
"uos": "deepin/UOS 应用商店版本<带签名>"
}
# 直接判断是不是 Docker 版本
if os.path.exists(f"{programPath}/docker.txt") or os.path.exists("/.dockerenv"):
programVersionType = "Docker 内置版本"
window.setWindowTitle(f"{title} Docker 内置版本)")
self.signal.emit("")
else:
programVersionType = "从源码运行的版本"
try:
if not os.path.exists("/var/lib/dpkg/status"):
print("无 dpkg结束")
file = open("/var/lib/dpkg/status", "r")
fileName = file.read().splitlines()
package = False
for i in range(0, len(fileName)):
if fileName[i] == "Package: spark-deepin-wine-runner-docker":
programVersionType = "Docker 内置版本"
window.setWindowTitle(f"{title} Docker 内置版本)")
#AddDockerMenu()
self.signal.emit("")
break
except:
traceback.print_exc()
continue
except:
print("无法读取,当没有处理")
print(programVersionType)
about = about.replace("@VersionForType@", programVersionType)
# 获取程序体积
about = about.replace("@programSize@", str(int(getFileFolderSize(programPath) / 1024 / 1024)))
if fileName[i] == "Package: spark-deepin-wine-runner-52":
programVersionType = "吾爱专版"
window.setWindowTitle(f"{title}(吾爱专版)")
break
if fileName[i] == "Package: spark-deepin-wine-runner":
package = True
continue
if not package:
continue
if fileName[i].replace(" ", "").replace("\n", "") == "":
# 空行,不再考虑
break
# 搜索版本号
try:
if fileName[i][:fileName[i].index(":")] == "Version":
version = fileName[i][fileName[i].index(":") + 1:].strip()
print(f"版本号为:{version}")
if not "-" in version:
programVersionType = "从Gitee/Github/Gitlink等平台获取的版本"
break
programVersionType = version[version.index("-") + 1:]
print(programVersionType)
if "-" in programVersionType:
# 考虑到如 2.1.0-2-spark 的情况
programVersionType = programVersionType[programVersionType.index("-") + 1:]
try:
programVersionType = programVersionTypeLnk[programVersionType]
except:
programVersionType = "从Gitee/Github/Gitlink等平台获取的版本"
break
except:
traceback.print_exc()
continue
except:
print("无法读取,当没有处理")
print(programVersionType)
about = about.replace("@VersionForType@", programVersionType)
# 获取程序体积
about = about.replace("@programSize@", str(int(getFileFolderSize(programPath) / 1024 / 1024)))
def GetVersion():
global runVersion
runVersion = GetVersionThread()
runVersion.signal.connect(AddDockerMenu)
runVersion.start()
programVersionType = ""
print(wine)
@@ -2439,7 +2453,8 @@ h7.triggered.connect(about_this_program)
h8.triggered.connect(lambda: QtWidgets.QMessageBox.aboutQt(widget))
hm1_1.triggered.connect(lambda: webbrowser.open_new_tab("https://gitee.com/gfdgd-xi/uengine-runner"))
# 异同步获取信息
threading.Thread(target=GetVersion).start()
#threading.Thread(target=GetVersion).start()
GetVersion()
# 窗口设置
window.resize(widget.frameGeometry().width() * 2, widget.frameGeometry().height())
widget.setLayout(mainLayout)