即将完成1.6.0
This commit is contained in:
parent
9510660321
commit
35fc896aaa
|
@ -18,7 +18,8 @@
|
|||
"Name": "程序",
|
||||
"Menu": [
|
||||
"清空软件历史记录",
|
||||
"退出程序"
|
||||
"退出程序",
|
||||
"程序设置"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -112,7 +113,9 @@
|
|||
"Menu": [
|
||||
"程序官网",
|
||||
"关于",
|
||||
"反馈程序问题和建议"
|
||||
"反馈程序问题和建议",
|
||||
"检查更新",
|
||||
"更多帮助"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -152,7 +155,8 @@
|
|||
"Name": "Program",
|
||||
"Menu": [
|
||||
"Clean Program History",
|
||||
"Exit The Program"
|
||||
"Exit The Program",
|
||||
"Program Setting"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
@ -246,7 +250,9 @@
|
|||
"Menu": [
|
||||
"Program WebSize",
|
||||
"Program Help",
|
||||
"Upload Problem And Advice"
|
||||
"Upload Problem And Advice",
|
||||
"ABout This Program",
|
||||
"More Help"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
@ -18,6 +18,9 @@
|
|||
**※1、更换了新的图标(暂未全部更新完成!)**
|
||||
**※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)**
|
||||
**※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化**
|
||||
**※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)**
|
||||
**※5、新增程序帮助**
|
||||
6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)
|
||||
|
||||
#### V1.5.3(2021-12-12,DDUC11版):
|
||||
##### 更新内容
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"Package": "spark-uengine-runner",
|
||||
"Url": [
|
||||
"https://gitee.com/gfdgd-xi/uengine-runner",
|
||||
"https://github.com/gfdgd-xi/uengine-runner"
|
||||
|
@ -21,6 +22,13 @@
|
|||
"5、如果想要使用adb连接UEngine或其他手机,请使用 1.2.0 以前的版本。(如需连接UEngine请安装adb补丁)"
|
||||
],
|
||||
"Update": [
|
||||
"V1.6.0:",
|
||||
"※1、更换了新的图标(暂未全部更新完成!)",
|
||||
"※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)",
|
||||
"※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化",
|
||||
"※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)",
|
||||
"※5、新增程序帮助",
|
||||
"6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)",
|
||||
"V1.5.3:",
|
||||
"※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题",
|
||||
"※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录~/.local/share/icons/hicolor/256x256/apps不存在时点击无反应,参考报错",
|
||||
|
|
130
main.py
130
main.py
|
@ -38,6 +38,7 @@ import tkinter.filedialog as filedialog
|
|||
import tkinter.simpledialog as simpledialog
|
||||
from getxmlimg import getsavexml
|
||||
|
||||
win = tk.Tk() # 创建窗口
|
||||
|
||||
# 卸载程序
|
||||
def UninstallProgram(package: "apk 包名")->"卸载程序":
|
||||
|
@ -45,8 +46,8 @@ def UninstallProgram(package: "apk 包名")->"卸载程序":
|
|||
global fineUninstallApkHistory
|
||||
Return = GetCommandReturn("pkexec /usr/bin/uengine-session-launch-helper -- uengine uninstall --pkg='{}'".format(package))
|
||||
print(Return)
|
||||
if os.path.exists("{}/.local/share/applications/{}.desktop".format(get_home(), package)):
|
||||
os.remove("{}/.local/share/applications/{}.desktop".format(get_home(), package))
|
||||
if os.path.exists("{}/.local/share/applications/uengine/{}.desktop".format(get_home(), package)):
|
||||
os.remove("{}/.local/share/applications/uengine/{}.desktop".format(get_home(), package))
|
||||
if os.path.exists("{}/{}.desktop".format(get_desktop_path(), package)):
|
||||
os.remove("{}/{}.desktop".format(get_desktop_path(), package))
|
||||
findApkHistory.append(ComboInstallPath.get())
|
||||
|
@ -70,6 +71,7 @@ def ButtonClick8():
|
|||
path = GetApkPackageName(ComboInstallPath.get())
|
||||
else:
|
||||
path = ComboInstallPath.get()
|
||||
print(path)
|
||||
threading.Thread(target=UninstallProgram, args=[path]).start()
|
||||
|
||||
# 浏览窗口
|
||||
|
@ -97,9 +99,14 @@ def Button3Install():
|
|||
# 安装应用
|
||||
def InstallApk(path: "apk 路径", quit: "是否静默安装" = False):
|
||||
try:
|
||||
if not os.path.exists("/tmp/uengine-runner"):
|
||||
os.makedirs("/tmp/uengine-runner")
|
||||
if not os.path.exists("{}/.local/share/applications/uengine/".format(get_home())):
|
||||
print("Mkdir")
|
||||
os.makedirs("{}/.local/share/applications/uengine/".format(get_home()))
|
||||
# 读取设置
|
||||
setting = json.loads(readtxt(get_home() + "/.config/uengine-runner/setting.json"))
|
||||
# 安装应用
|
||||
print("start install apk")
|
||||
global findApkHistory
|
||||
print("start install apk12")
|
||||
|
@ -110,6 +117,14 @@ def InstallApk(path: "apk 路径", quit: "是否静默安装" = False):
|
|||
if not os.path.exists(iconSaveDir):
|
||||
os.makedirs(iconSaveDir,exist_ok=True)
|
||||
SaveApkIcon(path, iconSavePath)
|
||||
try:
|
||||
if setting["SaveApk"]:
|
||||
shutil.copy(path, "/tmp/uengine-runner/bak.apk")
|
||||
except:
|
||||
if not messagebox.askyesno(title="错误", message="无法备份安装包,是否不备份安装包继续安装?\n提示:新版UEngine安装后会自动删除安装包"):
|
||||
DisabledAndEnbled(False)
|
||||
return
|
||||
setting["SaveApk"] = False
|
||||
print("start install apk2")
|
||||
BuildUengineDesktop(GetApkPackageName(path), GetApkActivityName(path), GetApkChineseLabel(path), iconSavePath,
|
||||
"{}/{}.desktop".format(get_desktop_path(), GetApkPackageName(path)))
|
||||
|
@ -118,6 +133,11 @@ def InstallApk(path: "apk 路径", quit: "是否静默安装" = False):
|
|||
"{}/.local/share/applications/uengine/{}.desktop".format(get_home(), GetApkPackageName(path)))
|
||||
commandReturn = GetCommandReturn("pkexec /usr/bin/uengine-session-launch-helper -- uengine install --apk='{}'".format(path))
|
||||
print(commandReturn)
|
||||
try:
|
||||
if setting["SaveApk"]:
|
||||
shutil.copy("/tmp/uengine-runner/bak.apk", path)
|
||||
except:
|
||||
messagebox.showerror(title="错误", message="无法还原安装包\n提示:新版UEngine安装后会自动删除安装包,备份的Apk在/tmp/uengine-runner/bak.apk,电脑重启后就会丢失!")
|
||||
print("\nprint install complete")
|
||||
if quit:
|
||||
print(commandReturn)
|
||||
|
@ -349,6 +369,8 @@ def GetApkChineseLabel(apkFilePath)->"获取软件的中文名称":
|
|||
# 保存apk图标
|
||||
def SaveApkIcon(apkFilePath, iconSavePath)->"保存 apk 文件的图标":
|
||||
try:
|
||||
if os.path.exists(iconSavePath):
|
||||
os.remove(iconSavePath)
|
||||
info = GetApkInformation(apkFilePath)
|
||||
for line in info.split('\n'):
|
||||
if "application:" in line:
|
||||
|
@ -634,23 +656,60 @@ def GetApkVersion(apkFilePath):
|
|||
def VersionCheck(version1, version2):
|
||||
return version1 == version2
|
||||
|
||||
def ShowHelp():
|
||||
webbrowser.open_new_tab(programPath + "/Help/index.html")
|
||||
|
||||
class SettingWindow():
|
||||
saveApkOption = tk.IntVar()
|
||||
def ShowWindow():
|
||||
setting = tk.Toplevel()
|
||||
setting.resizable(0, 0)
|
||||
setting.iconphoto(False, tk.PhotoImage(file=iconPath))
|
||||
setting.title("设置 UEngine 运行器" + version)
|
||||
saveApkFrame = ttk.LabelFrame(setting, text="Apk 安装设置")
|
||||
try:
|
||||
data = json.loads(readtxt(get_home() + "/.config/uengine-runner/setting.json"))
|
||||
except:
|
||||
messagebox.showerror(title="错误", message="读取设置错误!无法打开设置窗口!")
|
||||
setting.destroy()
|
||||
SettingWindow.saveApkOption = tk.IntVar()
|
||||
SettingWindow.saveApkOption.set(int(data["SaveApk"]))
|
||||
ttk.Radiobutton(saveApkFrame, text="不备份Apk包直接安装", value=0, variable=SettingWindow.saveApkOption).pack(anchor=tk.W)
|
||||
ttk.Radiobutton(saveApkFrame, text="备份Apk包然后在安装后自动拷贝原先目录", value=1, variable=SettingWindow.saveApkOption).pack(anchor=tk.W)
|
||||
controlFrame = ttk.Frame(setting)
|
||||
ttk.Button(controlFrame, text="取消", command=setting.destroy).grid(row=0, column=0)
|
||||
ttk.Button(controlFrame, text="保存", command=SettingWindow.SaveSetting).grid(row=0, column=1)
|
||||
saveApkFrame.pack()
|
||||
controlFrame.pack(anchor=tk.E)
|
||||
def SaveSetting():
|
||||
try:
|
||||
write_txt(get_home() + "/.config/uengine-runner/setting.json", json.dumps({"SaveApk": bool(SettingWindow.saveApkOption.get())}))
|
||||
except:
|
||||
traceback.print_exc()
|
||||
messagebox.showerror(title="错误", message="保存设置错误!")
|
||||
return
|
||||
messagebox.showinfo(title="提示", message="设置保存完毕!")
|
||||
|
||||
class UpdateWindow():
|
||||
data = {}
|
||||
def ShowWindow():
|
||||
update = tk.Toplevel()
|
||||
update.title("检查更新")
|
||||
update.resizable(0, 0)
|
||||
update.iconphoto(False, tk.PhotoImage(file=iconPath))
|
||||
versionLabel = ttk.Label(update, text="当前版本:{}\n最新版本:未知\n更新内容:".format(version))
|
||||
updateText = tk.Text(update)
|
||||
controlFrame = ttk.Frame(update)
|
||||
ok = ttk.Button(controlFrame, text="更新", command=UpdateWindow.Update)
|
||||
ok = ttk.Button(controlFrame, text="更新(更新过程中会关闭所有Python应用,包括这个应用)", command=UpdateWindow.Update)
|
||||
cancel = ttk.Button(controlFrame, text="取消", command=update.destroy)
|
||||
try:
|
||||
data = json.loads(requests.get("http://120.25.153.144/uengine-runner/update.json").text)
|
||||
versionLabel = ttk.Label(update, text="当前版本:{}\n最新版本:{}\n更新内容:".format(version, data["Version"]))
|
||||
if data["Version"] == version:
|
||||
UpdateWindow.data = json.loads(requests.get("http://120.25.153.144/uengine-runner/update.json").text)
|
||||
versionLabel = ttk.Label(update, text="当前版本:{}\n最新版本:{}\n更新内容:".format(version, UpdateWindow.data["Version"]))
|
||||
if UpdateWindow.data["Version"] == version:
|
||||
updateText.insert("0.0", "此为最新版本,无需更新")
|
||||
ok.configure(state=tk.DISABLED)
|
||||
else:
|
||||
updateText.insert("0.0", data["New"])
|
||||
updateText.insert("0.0", UpdateWindow.data["New"].replace("\\n", "\n"))
|
||||
except:
|
||||
traceback.print_exc()
|
||||
messagebox.showerror(title="错误", message="无法连接服务器!")
|
||||
|
@ -663,9 +722,29 @@ class UpdateWindow():
|
|||
ok.grid(row=0, column=1)
|
||||
update.mainloop()
|
||||
def Update():
|
||||
os.system("")
|
||||
|
||||
if not os.path.exists("/tmp/uengine-runner/update"):
|
||||
os.makedirs("/tmp/uengine-runner/update")
|
||||
try:
|
||||
write_txt("/tmp/uengine-runner/update.sh", """#!/bin/bash
|
||||
echo 删除多余的安装包
|
||||
rm -rfv /tmp/uengine-runner/update/*
|
||||
echo 关闭“UEngine 运行器”以及其它“Python 应用”
|
||||
killall python3
|
||||
echo 下载安装包
|
||||
wget -P /tmp/uengine-runner/update {}
|
||||
echo 安装安装包
|
||||
dpkg -i /tmp/uengine-runner/update/*.deb
|
||||
echo 修复依赖关系
|
||||
apt install -f -y
|
||||
notify-send -i uengine "更新完毕!"
|
||||
zenity --info --text=\"更新完毕!\" --ellipsize
|
||||
""".format(UpdateWindow.data["Url"][int(information["Package"] == "com.gitee.uengine.runner.spark")], iconPath))
|
||||
except:
|
||||
traceback.print_exc()
|
||||
easygui.textbox(title="错误", msg="更新出现错误,无法继续更新!", text=traceback.format_exc())
|
||||
os.system("deepin-terminal -e pkexec bash /tmp/uengine-runner/update.sh")
|
||||
|
||||
image = None
|
||||
class ApkInformation():
|
||||
def ShowWindows():
|
||||
global fullInformation
|
||||
|
@ -677,6 +756,7 @@ class ApkInformation():
|
|||
messagebox.showerror(title="错误", message="该应用安装包异常,无法查询相关数据!")
|
||||
return
|
||||
message = tk.Toplevel()
|
||||
message.title("“{}“的Apk信息".format(GetApkChineseLabel(path)))
|
||||
message.iconphoto(False, tk.PhotoImage(file=iconPath))
|
||||
|
||||
tab = ttk.Notebook(message)
|
||||
|
@ -705,11 +785,13 @@ class ApkInformation():
|
|||
# 获取图标
|
||||
SaveApkIcon(path, "/tmp/uengine-runner-android-app-icon.png")
|
||||
# 读取图标
|
||||
global image
|
||||
image = Image.open("/tmp/uengine-runner-android-app-icon.png")
|
||||
if image.size[0] + image.size[1] <= 512:
|
||||
ttk.Label(tab1, image=ImageTk.PhotoImage(image)).pack()
|
||||
ttk.Label(tab1, image=ImageTk.PhotoImage(Image.open("/tmp/uengine-runner-android-app-icon.png"))).pack()
|
||||
else:
|
||||
ttk.Label(tab1, image=ImageTk.PhotoImage(image.resize((256, 256), Image.ANTIALIAS))).pack()
|
||||
ttk.Label(tab1, image=ImageTk.PhotoImage(Image.open("/tmp/uengine-runner-android-app-icon.png").resize((256, 256), Image.ANTIALIAS))).pack()
|
||||
image.close()
|
||||
info = '''包名:{}
|
||||
中文名:{}
|
||||
Activity:{}
|
||||
|
@ -1096,6 +1178,24 @@ if not os.path.exists(get_home() + "/.config/uengine-runner/SaveApkIcon.json"):
|
|||
write_txt(get_home() + "/.config/uengine-runner/SaveApkIcon.json", json.dumps({"path": "~"})) # 写入(创建)一个配置文件
|
||||
if not os.path.exists(get_home() + "/.config/uengine-runner/SaveApk.json"): # 如果没有配置文件
|
||||
write_txt(get_home() + "/.config/uengine-runner/SaveApk.json", json.dumps({"path": "~"})) # 写入(创建)一个配置文件
|
||||
if not os.path.exists(get_home() + "/.config/uengine-runner/setting.json"):
|
||||
choose = None
|
||||
choose = easygui.indexbox(msg="""在使用本程序前,请选择安装Apk包的设置以便更好的运行,下列选项的详细介绍:
|
||||
|
||||
不备份Apk包直接安装:适用于Deepin(旧版UEngine),安装较快,不受/tmp大小所限,但Deepin23和UOS(新版UEngine)不推荐此选项,因为安装后会自动删除Apk安装包;
|
||||
备份Apk包然后在安装后自动拷贝原先目录:适用于Deepin23和UOS(新版UEngine),安装较慢,受/tmp大小所限,安装后不会丢失Apk,Deepin(旧版UEngine)不推荐使用该选项;
|
||||
|
||||
|
||||
后期可以在程序主界面的菜单栏的“程序”=>“设置”里进行修改,
|
||||
如果不知道正在使用的系统是什么版本可以打开系统设置查看。
|
||||
""", title="设置", choices=["不备份Apk包直接安装", "备份Apk包然后在安装后自动拷贝原先目录"])
|
||||
if choose == None:
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
messagebox.showinfo(title="提示", message="必须选择一个选项!否则无法进入程序!")
|
||||
sys.exit()
|
||||
write_txt(get_home() + "/.config/uengine-runner/setting.json", json.dumps({"SaveApk": int(choose)}))
|
||||
|
||||
|
||||
###########################
|
||||
# 设置变量
|
||||
|
@ -1219,7 +1319,7 @@ def showhelp():
|
|||
###########################
|
||||
# 窗口创建
|
||||
###########################
|
||||
win = tk.Tk() # 创建窗口
|
||||
|
||||
|
||||
# 设置窗口
|
||||
style = ttkthemes.ThemedStyle(win)
|
||||
|
@ -1275,6 +1375,7 @@ menu.add_cascade(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Name"],
|
|||
menu.add_cascade(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Name"], menu=help)
|
||||
|
||||
programmenu.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][0]["Menu"][0], command=CleanProgramHistory)
|
||||
programmenu.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][0]["Menu"][2], command=SettingWindow.ShowWindow)
|
||||
programmenu.add_separator() # 设置分界线
|
||||
programmenu.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][0]["Menu"][1], command=window.quit) # 设置“退出程序”
|
||||
|
||||
|
@ -1308,8 +1409,9 @@ uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"
|
|||
uengine.add_cascade(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][11]["Name"], menu=uengineRoot)
|
||||
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][0], command=OpenProgramURL) # 设置“程序官网”项
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][2], command=UengineRunnerBugUpload) # 设置“程序官网”项
|
||||
help.add_command(label="检查更新", command=UpdateWindow.ShowWindow)
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][2], command=UengineRunnerBugUpload) # 设置“传bug”项
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][4], command=ShowHelp) # 设置“更多帮助”项
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][3], command=UpdateWindow.ShowWindow)
|
||||
help.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][3]["Menu"][1], command=showhelp) # 设置“关于这个程序”项
|
||||
|
||||
uengineService.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][2]["Menu"][0], command=StartUengine)
|
||||
|
|
Loading…
Reference in New Issue