diff --git a/Help/1-1-1.png b/Help/1-1-1.png new file mode 100644 index 0000000..c01a6e1 Binary files /dev/null and b/Help/1-1-1.png differ diff --git a/Help/1-1-2.png b/Help/1-1-2.png new file mode 100644 index 0000000..61bd1e4 Binary files /dev/null and b/Help/1-1-2.png differ diff --git a/Help/1-1-3.png b/Help/1-1-3.png new file mode 100644 index 0000000..a13db97 Binary files /dev/null and b/Help/1-1-3.png differ diff --git a/Help/1-1-4.png b/Help/1-1-4.png new file mode 100644 index 0000000..548e6d9 Binary files /dev/null and b/Help/1-1-4.png differ diff --git a/Help/1-1-5.png b/Help/1-1-5.png new file mode 100644 index 0000000..83b8f5e Binary files /dev/null and b/Help/1-1-5.png differ diff --git a/Help/1-2-1.png b/Help/1-2-1.png new file mode 100644 index 0000000..1d89dae Binary files /dev/null and b/Help/1-2-1.png differ diff --git a/Help/1-2-2.png b/Help/1-2-2.png new file mode 100644 index 0000000..a0ada6c Binary files /dev/null and b/Help/1-2-2.png differ diff --git a/Help/1-3-1.png b/Help/1-3-1.png new file mode 100644 index 0000000..46cbca5 Binary files /dev/null and b/Help/1-3-1.png differ diff --git a/Help/1-4-1.png b/Help/1-4-1.png new file mode 100644 index 0000000..de1edca Binary files /dev/null and b/Help/1-4-1.png differ diff --git a/Help/1-5-1.png b/Help/1-5-1.png new file mode 100644 index 0000000..14097ab Binary files /dev/null and b/Help/1-5-1.png differ diff --git a/Help/1-5-2.png b/Help/1-5-2.png new file mode 100644 index 0000000..caa608c Binary files /dev/null and b/Help/1-5-2.png differ diff --git a/Help/1-6-1.png b/Help/1-6-1.png new file mode 100644 index 0000000..52c8b2d Binary files /dev/null and b/Help/1-6-1.png differ diff --git a/Help/1-6-2.png b/Help/1-6-2.png new file mode 100644 index 0000000..de2c729 Binary files /dev/null and b/Help/1-6-2.png differ diff --git a/Help/1-6-3.png b/Help/1-6-3.png new file mode 100644 index 0000000..547a785 Binary files /dev/null and b/Help/1-6-3.png differ diff --git a/Help/1-7-1.png b/Help/1-7-1.png new file mode 100644 index 0000000..62b95f7 Binary files /dev/null and b/Help/1-7-1.png differ diff --git a/Help/1-8-1.png b/Help/1-8-1.png new file mode 100644 index 0000000..eee89ae Binary files /dev/null and b/Help/1-8-1.png differ diff --git a/Help/1-9-1.png b/Help/1-9-1.png new file mode 100644 index 0000000..8d74781 Binary files /dev/null and b/Help/1-9-1.png differ diff --git a/Help/1-9-2.png b/Help/1-9-2.png new file mode 100644 index 0000000..c3e6e97 Binary files /dev/null and b/Help/1-9-2.png differ diff --git a/Help/1-9-3.png b/Help/1-9-3.png new file mode 100644 index 0000000..94fac14 Binary files /dev/null and b/Help/1-9-3.png differ diff --git a/Help/1-9-4.png b/Help/1-9-4.png new file mode 100644 index 0000000..f889fcf Binary files /dev/null and b/Help/1-9-4.png differ diff --git a/Help/1-9-5.png b/Help/1-9-5.png new file mode 100644 index 0000000..cdaebb1 Binary files /dev/null and b/Help/1-9-5.png differ diff --git a/Help/1-9-6.png b/Help/1-9-6.png new file mode 100644 index 0000000..ed4ffe3 Binary files /dev/null and b/Help/1-9-6.png differ diff --git a/Help/1-9-7.png b/Help/1-9-7.png new file mode 100644 index 0000000..19b17ba Binary files /dev/null and b/Help/1-9-7.png differ diff --git a/Help/index.md b/Help/index.md new file mode 100644 index 0000000..89b094f --- /dev/null +++ b/Help/index.md @@ -0,0 +1,197 @@ +# UEngine 运行器帮助 +--- +## 帮助简述 +> 安装APK:点浏览按钮,选中需要安装的APK,然后点安装按钮 +> 卸载APK:在卸载APK下面的输入框内输入需要卸载的APK包名,点卸载按钮,如果无法获取包名,可以通过浏览APK文件程序自动获取包名进行卸载。 +> 保存APK图标:在安装APK下面的输入框浏览或输入APK的路径,然后点击“保存图标”按钮,选择保存位置即可 +> 重置(删除)UEngine数据:点击菜单栏的“UEngine”的“清空UEngine数据”,输入密码重启即可 +> 注意:如果任何安卓一遍打不开,多打开几遍应该就可以重新加载UEngine配置了 +> 打开UEngine应用列表:打开系统已安装的应用列表(安卓界面) +> **提示:** +> **※1、近期升级的 UEngine 安装时会自动把要安装的 apk 删除,如果这个 apk 文件非常重要请拷贝一个备份版并安装这个备份版** +> **2、需要你有使用 root 权限的能力;** +> **3、需要安装 UEngine 才能使用;** +> **4、提取 apk 图标的 apk 路径以“安装 apk”那栏为准;** +> **5、如果想要使用adb连接UEngine或其他手机,请使用 1.2.0 以前的版本。(如需连接UEngine请安装adb补丁)** + +--- +## 详细帮助 +### 如何安装自己的 Apk +*请保证您已经把要安装的Apk下载到电脑本地并保证Apk完整且有权限* +#### 方法一 +1. 打开 UEngine 运行器 +![](1-1-1.png) +2. 点击浏览按钮,找到想要安装的Apk +![](1-1-2.png) +3. 点击安装按钮,输入密码 +![](1-1-3.png) +4. 提示“操作完成”,在启动器找到新安装的图标启动即可 +![](1-1-4.png) +![](1-1-5.png) +#### 方法二 +1. 打开要安装的Apk所在目录,右击=>打开方式=>安装或卸载 APK(UEngine 运行器) +![](1-2-1.png) +2. 点击安装按钮,输入密码 +![](1-1-3.png) +3. 提示“操作完成”,在启动器找到新安装的图标启动即可 +![](1-1-4.png) +![](1-2-2.png) + +### 卸载Apk +#### 方法一 +1. 打开 UEngine 运行器 +![](1-1-1.png) +2. 点击浏览按钮,找到想要卸载的Apk +![](1-1-2.png) +3. 点击卸载按钮,输入密码 +![](1-1-3.png) +4. 提示“操作完成”,卸载完成 +![](1-1-4.png) +#### 方法二 +1. 打开要安装的Apk所在目录,右击=>打开方式=>安装或卸载 APK(UEngine 运行器) +![](1-2-1.png) +2. 点击卸载按钮,输入密码 +![](1-1-3.png) +3. 提示“操作完成”,卸载完成 +![](1-1-4.png) + +### 查询Apk信息 +1. 打开 UEngine 运行器 + ![](1-1-1.png) + +2. 点击“Apk 信息” 按钮即可查询Apk信息 + + ![](1-3-1.png) + + ### 查看程序评分 + + 1. 打开 UEngine 运行器 + ![](1-1-1.png) + + 2. 点击“Apk 信息” 按钮即可查询Apk信息 + + ![](1-3-1.png) + + 3. 点击“查看程序评分情况”即可查看其他用户对程序的评分 + + ![](1-4-1.png) + + ### 上传用户评分 + + 1. 打开 UEngine 运行器 + ![](1-1-1.png) + + 2. 点击“Apk 信息” 按钮即可查询Apk信息 + + ![](1-3-1.png) + + 3. 点击“上传程序评分情况”,按照要求进行评分 + + ![](1-5-1.png) + + 4. 如果提示“提交成功!感谢您的提交”就代表评分成功 + + ![](1-5-2.png) + + ### 更新程序 + + ### 更新程序 + + 1. 打开 UEngine 运行器 + ![](1-1-1.png) + + 2. 点击“关于”=>“检查更新”,打开更新窗口 + + ![](1-6-1.png) + + 3. **保证您的电脑没有运行其它Python应用以及本程序所有工作都已经完成**,再点击“更新(更新过程中会关闭所有Python应用,包括这个应用)”,输入密码以进行更新 + + ![](1-6-2.png) + + 4. 提示“更新完毕!”后重新启动 UEngine 运行器就更新完毕了 + + ![](1-6-3.png) + + ### 保存图标 + + 1. 打开 UEngine 运行器 + ![](1-1-1.png) + + 2. 选择要保存图标的Apk,点击“保存图标”按钮,选择要保存的位置即可 + + ![](1-7-1.png) + + ### 打开已安装的程序列表 + + #### 方法一 + + 打开启动器=>UEngine 程序菜单 即可 + + #### 方法二 + + 1. 打开 UEngine 运行器 + ![](1-1-1.png) + + 2. 点击“打开 UEngine 应用列表”即可 + + ![](1-8-1.png) + + + + ### 将 Apk 打包成可以无需本应用即可安装的 deb 包 + + #### 打开 UEngine 打包器的三种方法 + + ##### 方法一 + + 启动器=>UEngine 应用打包器 + + ##### 方法二 + + 打开要打包的 Apk 所在目录,右击=>“打开方式”=>“打包 deb(UEngine 运行器)”(接下来可以略过步骤一) + + ![](1-9-1.png) + + ##### 方式三 + + 打开 UEngine 运行器,点击菜单栏的“UEngine”=>“UEngine 应用打包” + + ![](1-9-2.png) + + #### 打包 deb + + 1. 打开“UEngine Apk 应用打包器”,点击“浏览按钮”选择apk + + ![](1-9-3.png) + + 2. 根据实际情况勾选选项,然后点击“打包”进行打包 + + ![](1-9-4.png) + + 3. 当提示“”时,打包完成,可以在桌面(一般是`/home/XXX/Desktop`)找到您打包的 deb 包,可以双击安装 + + ![](1-9-5.png) + + ![](1-9-6.png) + + ![](1-9-7.png) + + + + + + + + #### 方法二 + + + + + + + + + + + + ©2021-2022 \ No newline at end of file diff --git a/README.md b/README.md index be2cf48..81d4a86 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# uengine 运行器 1.5.3 +# uengine 运行器 1.6.0 ### 介绍         新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单。 @@ -15,12 +15,13 @@ ### 更新内容 #### V1.6.0(开学版,即将完成!!!) ##### 目前更新内容 -**※1、更换了新的图标(暂未全部更新完成!)** +**※1、更换了新的图标** **※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)** **※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化** **※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)** **※5、新增程序帮助** 6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了) +7、修复了“UEngine 打包器”前缀选项勾选设置不生效的问题 #### V1.5.3(2021-12-12,DDUC11版): ##### 更新内容 diff --git a/UengineAndroidProgramList.desktop b/UengineAndroidProgramList.desktop index 8ff8e7a..a127feb 100755 --- a/UengineAndroidProgramList.desktop +++ b/UengineAndroidProgramList.desktop @@ -3,7 +3,7 @@ Categories=System; Comment=UEngine 程序菜单 Encoding=UTF-8 Exec=/usr/bin/uengine launch.sh --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/menu.svg MimeType= Name=UEngine 程序菜单 StartupWMClass=UEngine 程序菜单 diff --git a/build/DEBIAN/control b/build/DEBIAN/control index 453b4cb..9d9a840 100644 --- a/build/DEBIAN/control +++ b/build/DEBIAN/control @@ -5,6 +5,6 @@ Homepage: [https://gitee.com/gfdgd-xi/uengine-runner, https://github.com/gfdgd-x Architecture: all Priority: optional Conflicts: com.gitee.uengine.runner.spark, spark-uengine-apk-builder -Depends: python3, python3-tk, python3-pip, aapt, uengine, python3-setuptools, deepin-terminal, curl, python3-pil, python3-pil.imagetk, python3-requests, adb, translate-shell, python3-xlib, python3-requests, fonts-noto-cjk, python3-numpy +Depends: python3, python3-tk, python3-pip, aapt, uengine, python3-setuptools, deepin-terminal, curl, python3-pil, python3-pil.imagetk, python3-requests, adb, translate-shell, python3-xlib, fonts-noto-cjk, python3-numpy Description: UEngine Runner for deepin and UOS diff --git a/build/DEBIAN/postinst b/build/DEBIAN/postinst index d5cc7a6..a2d80e1 100755 --- a/build/DEBIAN/postinst +++ b/build/DEBIAN/postinst @@ -4,7 +4,6 @@ python3 -m pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/si python3 -m pip install --upgrade ttkthemes -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com python3 -m pip install --upgrade pyautogui -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com python3 -m pip install --upgrade keyboard -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -#python3 -m pip install --upgrade requests -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com # 刷新图标缓存 gtk-update-icon-cache /usr/share/icons/bloom # 向服务器返回安装数加1(不显示内容且忽略错误) diff --git a/build/opt/apps/uengine-runner/Help/index.html b/build/opt/apps/uengine-runner/Help/index.html new file mode 100644 index 0000000..b422ce5 --- /dev/null +++ b/build/opt/apps/uengine-runner/Help/index.html @@ -0,0 +1,12 @@ + + UEngine 运行器 1.6.0 帮助 + + +

UEngine 运行器 1.6.0 帮助

+
+

安装自定义 APK 应用

+

方法1

+

方法2

+
+

高级功能

+ \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/Language.json b/build/opt/apps/uengine-runner/Language.json index 16129a4..6cbff77 100644 --- a/build/opt/apps/uengine-runner/Language.json +++ b/build/opt/apps/uengine-runner/Language.json @@ -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" ] } ] diff --git a/build/opt/apps/uengine-runner/README.md b/build/opt/apps/uengine-runner/README.md new file mode 100755 index 0000000..be2cf48 --- /dev/null +++ b/build/opt/apps/uengine-runner/README.md @@ -0,0 +1,273 @@ +# uengine 运行器 1.5.3 + +### 介绍 +        新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单。 +![1.5.3](https://storage.deepin.org/thread/202112121231595786_截图_选择区域_20211212123106.png) +(测试平台:UOS 家庭版 21.1,deepin 20.3,UOS 专业版 1040) +(自己美术功底太差,图标直接用 anbox 的了) + +## 安装前必读 ++ releases 里有两个 deb 包,**是一样的除了包名和打包标准不同**,**只能选择其中一个安装**,**两个都安装会产生冲突**,两个deb包的作用如下: + - 包名为`spark-uengine-runner`的,是旧包,按照**正常标准打包**,适用于从**星火应用商店安装**以及**从低版本(即1.3.2即以下版本升级上来的用户)升级**或者**之前就安装该版本的用户**甚至**想跨平台的用户**等等 + - 包名为`com.gitee.uengine.runner.spark`的,是按照**deepin/UOS的标准打包的**,适用于**之前就安装该版本并升级上来的用户**以及**希望按照该方法打包的用户**等等 ++ **近期升级的 UEngine 安装时会自动把要安装的 apk 删除**,如果这个 apk 文件非常重要请**拷贝一个备份版并安装这个备份版** + +### 更新内容 +#### V1.6.0(开学版,即将完成!!!) +##### 目前更新内容 +**※1、更换了新的图标(暂未全部更新完成!)** +**※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)** +**※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化** +**※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)** +**※5、新增程序帮助** +6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了) + +#### V1.5.3(2021-12-12,DDUC11版): +##### 更新内容 +**※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题** +**※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录**`~/.local/share/icons/hicolor/256x256/apps`**不存在时点击无反应,参考报错1.5.3-1** +**※3、修复了“UEngine APK 应用打包器”打包的deb包的.desktop文件的**`Icon`**和**`Exec`**字段有误的问题以及使用“使用前缀‘uengine-dc’”前缀的问题** +4、“UEngine APK 应用打包器”支持打包完后自动删除临时目录 +5、“UEngine APK 应用打包器”以及“添加/删除 UEngine 图标”支持在运行出现错误时显示报错 +##### 报错: +*1.5.3-1* +```bash +Exception in Tkinter callback +Traceback (most recent call last): + File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__ + return self.func(*args) + File "/home/gfdgd_xi/Desktop/uengine-runner/main.py", line 865, in SaveDesktopLink + shutil.copy(programPath + "/defult.png", iconSavePath) + File "/usr/lib/python3.7/shutil.py", line 245, in copy + copyfile(src, dst, follow_symlinks=follow_symlinks) + File "/usr/lib/python3.7/shutil.py", line 121, in copyfile + with open(dst, 'wb') as fdst: +FileNotFoundError: [Errno 2] No such file or directory: '/home/gfdgd_xi/.local/share/icons/hicolor/256x256/apps/com.miHoYo.cloudgames.ys.png' +``` +##### 截图 +![1.5.3](https://storage.deepin.org/thread/202112121231595786_截图_选择区域_20211212123106.png) + +#### V1.5.2(2021-11-28): +**※1、支持安装和构建带 Root 的 UEngine 的镜像** +2、更新了反馈链接 +![](https://storage.deepin.org/thread/202111281607295590_截图_选择区域_20211128160706.png) + +#### V1.5.1(2021-10-05,国庆节版): +**※1、精简用户界面,合并安装和卸载输入框和浏览按钮等** +**※2、修复安装以其的程序图标无法点击进入的问题(deepin 社区版不存在此问题)** +**※3、支持在程序本体反馈问题** +4、修复了菜单栏的部分显示问题 +5、支持显示 apk 的部分信息 +6、支持删除 UEngine 程序运行检查以及重新安装 UEngine 的功能 +7、自带有跳过家庭版必须有指定包名才能运行程序限制的脚本 +8、补回依赖包“adb” +![1.5.1](https://storage.deepin.org/thread/202110051821076836_截图_dde-desktop_20211005182021.png) + +#### V1.5.0(2021-09-21,中秋节版): +**没有什么实质性的功能,只是开始有多语言支持** +**※1、部分窗口支持英语** +2、修复在英语状态下启动器图标名称异常的问题 +![1.5.0](https://storage.deepin.org/thread/202109202157289430_截图_选择区域_20210920215550.png) + +#### V1.4.3(2021-09-11,开学第一版): +**※1、支持打包器打包的包名带前缀“uengine-dc”** +**※2、修复了两种情况可能导致程序卡住/出错无法继续运行的情况(配置文件夹不齐全和获取版本信息卡住两种情况)** +**※3、修改了 UEngine 打包器打包的应用包名可能有大写的情况** +4、支持一键使用 Scrcpy 连接 UEngine(①先安装 adb 破解补丁;②请确保是使用snap安装的 Scrcpy【目前只支持 snap 安装的 Scrcpy 进行连接】) +5、支持右键打包 apk +![1.4.3](https://storage.deepin.org/thread/202109111635389828_截图_选择区域_20210911163449.png) + +#### V1.4.2(2021-08-30,快开学了): +**※1、添加adb破解补丁(用于可以让adb连接UEngine)并支持adb的部分操作;** +2、菜单栏的项目添加以及外观优化; +3、修复键盘映射无法添加新映射的问题并修改键盘映射启动方式; +4、把 uengine 改为 UEngine; +5、修改 pkexec 获取密码时显示的图标和文本; +6、添加了 UEngine 系统设置的快捷方式; +![1.4.2](https://storage.deepin.org/thread/202108301750554993_截图_选择区域_20210830134502.png) + +#### V1.4.1(2021-08-26): +**※1、初步支持键盘映射** +2、修复新版包在发送uengine列表快捷方式时会提示找不到文件 +![1.4.1](https://storage.deepin.org/thread/20210826151947783_截图_选择区域_20210826151312.png) + +#### V1.4.0(2021-08-19): +**※1、添加新版打包方式(deepin打包方式);** +**※2、支持测试运行/创建/删除uengine图标;** +**※3、支持提取安装的apk;** +**※4、支持打包deb包;** +5、修改菜单栏布局; +6、支持打开uengine数据目录和用户数据目录; +7、程序信息保存到json,非直接写入程序本体; +8、更多命令操作; +![1.4.0](https://storage.deepin.org/thread/202108191410327464_截图_选择区域_20210819140938.png) + +#### V1.3.2(2021-08-16): +**※1、支持uengine数据重置;** +**※2、支持修改uengine网络桥接的启动状态;** +**※3、支持右键安装/卸载;** +**※4、支持启用或禁用uengine;** +**※5、修复打包问题,不会出现“dpkg:警告:卸载spark-uengine-runner时,目录/opt/apps/uengine-runner非空,因而不会删除该目录”的错误;** +![1.3.2](https://storage.deepin.org/thread/202108152141139401_截图_选择区域_20210815213948.png) + +#### V1.3.1(2021-08-12): +**※1、修复打包问题,防止部分用户安装出错的问题;** +**※2、修复了程序无法提取图标时可以提取默认图标使用;** +![1.3.1](https://storage.deepin.org/thread/202108121509217807_截图_选择区域_20210812150849.png) + +#### V1.3.0(2021-08-08): +**※1、修改了界面布局;** +**※2、修复大多数新安装普通用户的路图标及启动菜单文件路径不存在导致安装APK报错的bugs;** +3、删除少量冗余代码,调整代码顺序; +4、支持提取 apk 图标。 +![1.3.0](https://storage.deepin.org/thread/202108082100582804_截图_tk_20210808210047.png) + +#### V1.2.3(2021-08-02): +1、调整部分控件名称; +2、调整界面布局及界面风格; +![1.2.3](https://images.gitee.com/uploads/images/2021/0802/080620_1dd289ca_7896131.png) + +#### V1.2.2(2021-07-11): +1、对程序错误的显示更加人性化; +2、对 icon 的获取方式进行了升级; +3、增加了注释、删除部分冗余代码。 +![1.2.2](https://images.gitee.com/uploads/images/2021/0711/145140_b04e51b7_7896131.png) + +#### V1.2.1(2021-07-02): +**※1、进行了安装方式的修改(不使用 adb),修复原无法安装和卸载的问题;** +2、进行了部分优化; +3、进行了功能缩水; +4、修复 deb 打包错误。 +![1.2.1](https://images.gitee.com/uploads/images/2021/0702/204040_6abb6f3f_7896131.png) + +#### V1.2.0(2021-06-06): +1、支持安装自动添加快捷方式、卸载删除快捷方式; +2、支持使用包名或 APK 文件卸载程序; +3、支持查看安装的所有包名; +4、进行了部分优化 +![1.2.0](https://images.gitee.com/uploads/images/2021/0606/115536_0c0ddf38_7896131.png) + +#### V1.1.0(2021-05-30): +1、修改了因编写时出现的中、英文混用的情况 +2、支持一键连接默认 IP +3、修复在不连接设备直接选择 apk 安装时会卡住的问题 +4、修复在把“uengine 程序菜单”发送到桌面或启动器如果询问覆盖时点击取消会卡住的问题 +5、修改了程序界面为白色调,不和标题栏冲突矛盾 +![1.1.0](https://images.gitee.com/uploads/images/2021/0530/133429_7e6bf629_7896131.png) + +#### V1.0.0(2021-05-29): +![1.0.0](https://images.gitee.com/uploads/images/2021/0529/173756_2e333c86_7896131.png) + +### 源码安装教程 +按下 Ctrl+Alt+T 打开终端,按以下内容操作: +1. 安装所需依赖 + +```bash +sudo apt install deepin-elf-verify python3 python3-tk python3-pip +sudo apt install aapt uengine python3-setuptools deepin-terminal curl +sudo apt install python3-pil python3-pil.imagetk python3-requests adb +sudo apt install translate-shell python3-xlib python3-requests fonts-noto-cjk python3-numpy +python3 -m pip install pip -U +python3 -m pip install --upgrade ttkthemes -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +python3 -m pip install --upgrade pyautogui -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +python3 -m pip install --upgrade keyboard -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +``` + +2. 下载本程序 + +```bash +git clone https://gitee.com/gfdgd-xi/uengine-runner.git +``` + +3. 运行本程序 + +```bash +sudo mkdir /opt/apps/uengine-runner +sudo cp uengine-runner /opt/apps/uengine-runner -rv +sudo cp getxmlimg.py /opt/apps/uengine-runner -rv +sudo cp icon.png /opt/apps/uengine-runner -rv +chmod 777 /opt/apps/uengine-runner/main.py +sudo cp /opt/apps/uengine-runner/main.py /usr/bin/uengine-runner +./main.py +``` + +4. 卸载本程序 +```bash +sudo rm /usr/bin/uengine-runner -v +sudo rm /opt/apps/uengine-runner/ -rfv +pip3 uninstall ttkthemes +``` + +### 使用说明 +1、需要你有使用 root 权限的能力; +2、需要安装 UEngine 才能使用,UOS建议在商店安装一个安卓应用,让系统自动安装 UEngine 及相关的依赖包; +3、提取 apk 图标的 apk 路径以“安装 apk”那栏为准; +4、如果报错是有关产生 .deksotp 文件有关,一般可以打开程序列表运行。如果想要连接其他手机,请使用 1.2.0 以前的版本,可以使用 adb 连接。 + +### 故障排除 +提 issue 最好,当然有些问题自己无法解决,请大佬 push 一下 +如果出现故障,尝试终端运行,如果是可以自行解决的问题,就**自行解决**,如果可以就**提 issues 并提供解决方案**,不行就**提 isscue 并提供程序和终端报错以及程序版本** + +### 下载量 +这里只统计蓝奏云的下载量,链接(懒得更了): +[https://kdocs.cn/l/smrvazWGuKcY](https://kdocs.cn/l/smrvazWGuKcY) + +### 已知问题 +

+ +![Error](https://storage.deepin.org/thread/202108101105396531_截图___tk__messagebox_20210810110449.png) +部分 app 无法读取出图片,已知: +| 程序 | 下载链接 | +| :-: | :-: | +| Firefox For Android | https://www.firefox.com.cn/download/ | +| 网易云音乐 For Android | https://music.163.com/#/download | +| 抖音 | https://www.wandoujia.com/apps/7461948 | +| 360 手机浏览器 | https://mse.360.cn/ | +| E-Go | 忘了 | +| 其他待测试…… | 其他待测试…… | +**注意:提取不出图标不代表未安装成功!** + + +### 贡献 +

+ +非常欢迎大家的贡献 +贡献的开发者列表: +| 开发者 | 邮箱 | +| :-: | :-: | +| gfdgd xi | 3025613752@qq.com | +| actionchen | 917981399@qq.com | +| 柚子 | https://gitee.com/Limexb | + +### 相关项目 +| 项目名称 | 项目地址 | +| :-: | :-:| +| uengine-installer | https://gitee.com/Maicss/uengine-installer | +| uengine APK 打包器 | https://gitee.com/gfdgd-xi/uengine-apk-builder | +| Root UEngine | https://gitee.com/Limexb/root-uengine | + +### 附测试生成图标无问题列表: +**至于能不能用就不测试了,这暂时不是重点** +**现在新加了评分功能,就看大家的评分了!** +| 程序 | 下载链接 | +|:-:|:-:| +| QQ 全家桶(完整版、极速版、Android Pad 版) | https://im.qq.com | +| TIM | 忘了 | +| 微信 | https://weixin.qq.com | +| 百度翻译 | 忘了 | +| 百度网盘 | https://pan.baidu.com | +| 腾讯课堂 | 忘了 | +| 抖音极速版 | 忘了 | +| 豌豆荚 | 忘了 | +| 小猿口算 | 忘了 | +| Hyperbowl | 忘了 | +| bilibili | https://d.bilibili.com/download_app.html?bsource=app_bili | +| 蓝奏云 | https://up.woozooo.com/lanzouh5.apk | +| QQ 音乐(完整版、Android Pad 版、TV 版、车载版) | https://y.qq.com/download/index.html | +| 360 手机卫士(完整版、极速版) | https://shouji.360.cn/v6/index.html | +| 360 清理大师(稳定版、尝鲜版) | http://shouji.360.cn/360cleandroid/ | +| 360 手机助手 | http://sj.360.cn/index.html | +| WPS Office For Android | https://www.wps.cn/ | +| 钉钉 for android | https://page.dingtalk.com/wow/dingtalk/act/download?spm=a3140.8196062.0.0.6f4c5c3dWBhYUM | + +### ©2021-2022 \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/UengineAndroidProgramList.desktop b/build/opt/apps/uengine-runner/UengineAndroidProgramList.desktop deleted file mode 100755 index 8ff8e7a..0000000 --- a/build/opt/apps/uengine-runner/UengineAndroidProgramList.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Categories=System; -Comment=UEngine 程序菜单 -Encoding=UTF-8 -Exec=/usr/bin/uengine launch.sh --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity -Icon=/opt/apps/uengine-runner/icon.png -MimeType= -Name=UEngine 程序菜单 -StartupWMClass=UEngine 程序菜单 -Terminal=false -Type=Application diff --git a/build/opt/apps/uengine-runner/UpdateApkProgram.py b/build/opt/apps/uengine-runner/UpdateApkProgram.py new file mode 100644 index 0000000..27fb600 --- /dev/null +++ b/build/opt/apps/uengine-runner/UpdateApkProgram.py @@ -0,0 +1,14 @@ +import ttkthemes +import tkinter as tk +import tkinter.ttk as ttk +window = tk.Tk() +win = tk.Frame(window) + +chooseFrame = ttk.Frame(win) +fiveStar = ttk.Radiobutton(chooseFrame, text="五星(正常安装、运行、卸载且无任何问题)") +fourStar = ttk.Radiobutton(chooseFrame, text="四星(正常安装、运行、卸载,但在运行时有小问题)") +threeStar = ttk.Radiobutton(chooseFrame, text="三星(正常安装、运行、卸载,但运行时体验不佳,很多功能有问题)") +twoStar = ttk.Radiobutton(chooseFrame, text="二星(正常安装、卸载,但运行难以使用甚至完全无法运行)") +oneStar = ttk.Radiobutton(chooseFrame, text="一星(无法正常安装、运行、卸载)") + +window.mainloop() \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/builer.png b/build/opt/apps/uengine-runner/builer.png new file mode 100644 index 0000000..407865f Binary files /dev/null and b/build/opt/apps/uengine-runner/builer.png differ diff --git a/build/opt/apps/uengine-runner/builer.svg b/build/opt/apps/uengine-runner/builer.svg new file mode 100755 index 0000000..2cfd070 --- /dev/null +++ b/build/opt/apps/uengine-runner/builer.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/defult-old.png b/build/opt/apps/uengine-runner/defult-old.png new file mode 100755 index 0000000..4cff476 Binary files /dev/null and b/build/opt/apps/uengine-runner/defult-old.png differ diff --git a/build/opt/apps/uengine-runner/defult.png b/build/opt/apps/uengine-runner/defult.png old mode 100755 new mode 100644 index 4cff476..c836b68 Binary files a/build/opt/apps/uengine-runner/defult.png and b/build/opt/apps/uengine-runner/defult.png differ diff --git a/build/opt/apps/uengine-runner/icon.svg b/build/opt/apps/uengine-runner/icon.svg new file mode 100755 index 0000000..baaa994 --- /dev/null +++ b/build/opt/apps/uengine-runner/icon.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/information.json b/build/opt/apps/uengine-runner/information.json index edcfdf3..383fa29 100755 --- a/build/opt/apps/uengine-runner/information.json +++ b/build/opt/apps/uengine-runner/information.json @@ -1,9 +1,10 @@ { + "Package": "spark-uengine-runner", "Url": [ "https://gitee.com/gfdgd-xi/uengine-runner", "https://github.com/gfdgd-xi/uengine-runner" ], - "Version": "1.5.3", + "Version": "1.6.0", "System": "Linux(deepin/UOS)", "Tips": [ "更多可见:https://gitee.com/gfdgd-xi/uengine-runner/wikis", @@ -21,6 +22,15 @@ "5、如果想要使用adb连接UEngine或其他手机,请使用 1.2.0 以前的版本。(如需连接UEngine请安装adb补丁)" ], "Update": [ + "V1.6.0:", + "※1、更换了新的图标", + "※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)", + "※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化", + "※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)", + "※5、新增程序帮助", + "6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)", + "7、修复了“UEngine 打包器”前缀选项勾选设置不生效的问题", + "", "V1.5.3:", "※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题", "※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录~/.local/share/icons/hicolor/256x256/apps不存在时点击无反应,参考报错", diff --git a/build/opt/apps/uengine-runner/menu.png b/build/opt/apps/uengine-runner/menu.png new file mode 100644 index 0000000..7142895 Binary files /dev/null and b/build/opt/apps/uengine-runner/menu.png differ diff --git a/build/opt/apps/uengine-runner/menu.svg b/build/opt/apps/uengine-runner/menu.svg new file mode 100755 index 0000000..28561dd --- /dev/null +++ b/build/opt/apps/uengine-runner/menu.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/icon.png b/build/opt/apps/uengine-runner/old-icon.png similarity index 100% rename from build/opt/apps/uengine-runner/icon.png rename to build/opt/apps/uengine-runner/old-icon.png diff --git a/build/opt/apps/uengine-runner/runner.png b/build/opt/apps/uengine-runner/runner.png new file mode 100644 index 0000000..0b0f47a Binary files /dev/null and b/build/opt/apps/uengine-runner/runner.png differ diff --git a/build/opt/apps/uengine-runner/runner.svg b/build/opt/apps/uengine-runner/runner.svg new file mode 100755 index 0000000..e27c0f4 --- /dev/null +++ b/build/opt/apps/uengine-runner/runner.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/opt/apps/uengine-runner/uengine-apk-builder b/build/opt/apps/uengine-runner/uengine-apk-builder index 2b5fe8d..912707f 100755 --- a/build/opt/apps/uengine-runner/uengine-apk-builder +++ b/build/opt/apps/uengine-runner/uengine-apk-builder @@ -3,7 +3,7 @@ ########################################################################################### # 作者:gfdgd xi # 版本:1.5.3 -# 更新时间:2021年12月12日(DDUC11了) +# 更新时间:2022年02月07日(要开学了) # 感谢:anbox、deepin 和 统信 # 基于 Python3 的 tkinter 构建 ########################################################################################### @@ -67,7 +67,10 @@ def BuildApkDeb(apkPath): RunCommandShow("mkdir -pv '{}/usr/share/uengine/icons'".format(tempPath)) RunCommandShow("echo '写入文件,因为写入过程过于复杂,不显示写入命令……'") apkPackageName = GetApkPackageName(apkPath, False) - apkPackageNameNew = GetApkPackageName(apkPath, True) + if qianZhui.get(): + apkPackageNameNew = GetApkPackageName(apkPath, True) + else: + apkPackageNameNew = GetApkPackageName(apkPath, False) apkPackageVersion = GetApkVersion(apkPath) apkChineseLabel = GetApkChineseLabel(apkPath) apkActivityName = GetApkActivityName(apkPath) @@ -285,6 +288,8 @@ def GetApkVersion(apkFilePath): return line def BuildUengineDesktop(packageName, activityName, showName, iconPath, savePath): + if showName == "" or showName == None: + showName = "未知应用" things = ''' [Desktop Entry] Categories=app; @@ -308,17 +313,6 @@ def GetApkChineseLabel(apkFilePath): line = line.replace("'", "") return line -#def GetApkIconInApk(apkFilePath): -# info = GetApkInformation(apkFilePath) -# for line in info.split('\n'): -# if "application:" in line: -# line = line[line.index("icon='"): -1] -# line = line.replace("icon='", "") -# if "'" in line: -# line = line[0: line.index("'")] -# return line -# return line - #合并两个函数到一起 def SaveApkIcon(apkFilePath, iconSavePath)->"获取 apk 文件的图标": try: @@ -335,18 +329,14 @@ def SaveApkIcon(apkFilePath, iconSavePath)->"获取 apk 文件的图标": iconData = zip.read(xmlpath) with open(iconSavePath, 'w+b') as saveIconFile: saveIconFile.write(iconData) + return + print("Show defult icon") + shutil.copy(programPath + "/defult.png", iconSavePath) except: traceback.print_exc() print("Error, show defult icon") shutil.copy(programPath + "/defult.png", iconSavePath) - -#def SaveApkIcon(apkFilePath, iconSavePath): -# zip = zipfile.ZipFile(apkFilePath) -# iconData = zip.read(GetApkIconInApk(apkFilePath)) -# with open(iconSavePath, 'w+b') as saveIconFile: -# saveIconFile.write(iconData) - def TextboxAddText1(message): global textbox1 textbox1.configure(state=tk.NORMAL) @@ -383,7 +373,7 @@ if not lang in langFile.keys(): information = json.loads(readtxt(programPath + "/information.json")) version = information["Version"] title = "{} {}".format(langFile[lang]["Uengine Apk Builder"]["Title"], version) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/builer.png".format(os.path.split(os.path.realpath(__file__))[0]) ########################### # 加载配置 diff --git a/build/opt/apps/uengine-runner/uengine-install (1).desktop b/build/opt/apps/uengine-runner/uengine-install (1).desktop deleted file mode 100755 index e386dfa..0000000 --- a/build/opt/apps/uengine-runner/uengine-install (1).desktop +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -Categories=system;Utility; -Encoding=UTF-8 -Exec=uengine-runner -ci %F -GenericName=APK Install(UEngine) -GenericName[zh_CN]=APK 安装(UEngine) -Icon=/opt/apps/uengine-runner/icon.png -MimeType=application/apk; -Name=APK Install(UEngine) -Name[zh_CN]=APK 安装(UEngine) -NoDisplay=true -OnlyShowIn=Unity; -StartupNotify=false -StartupWMClass=APK 安装(UEngine) -Terminal=false -Type=Application diff --git a/build/opt/apps/uengine-runner/uengine-runner b/build/opt/apps/uengine-runner/uengine-runner index 36db364..da2ea10 100755 --- a/build/opt/apps/uengine-runner/uengine-runner +++ b/build/opt/apps/uengine-runner/uengine-runner @@ -2,8 +2,8 @@ # 使用系统默认的 python3 运行 ########################################################################################### # 作者:gfdgd xi<3025613752@qq.com> -# 版本:1.5.3 -# 更新时间:2021年12月12日(DDUC11了) +# 版本:1.6.1 +# 更新时间:2022年2月6日(要开学了) # 感谢:anbox、deepin 和 UOS # 基于 Python3 的 tkinter 构建 # 更新:gfdgd xi<3025613752@qq.com>、actionchen<917981399@qq.com> @@ -19,9 +19,16 @@ import shutil import zipfile import traceback import threading +import easygui import ttkthemes import webbrowser import subprocess +import matplotlib +import requests +import numpy +import matplotlib.figure +import matplotlib.pylab +import matplotlib.font_manager import PIL.Image as Image import PIL.ImageTk as ImageTk import tkinter as tk @@ -31,6 +38,7 @@ import tkinter.filedialog as filedialog import tkinter.simpledialog as simpledialog from getxmlimg import getsavexml +win = tk.Tk() # 创建窗口 # 卸载程序 def UninstallProgram(package: "apk 包名")->"卸载程序": @@ -38,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()) @@ -53,16 +61,6 @@ def UninstallProgram(package: "apk 包名")->"卸载程序": messagebox.showerror(title="错误", message=traceback.format_exc()) DisabledAndEnbled(False) -# 卸载文本框的浏览按钮事件 -#def BtnFindUninstallApkClk(): -# path = filedialog.askopenfilename(title="选择 Apk", filetypes=[("APK 文件", "*.apk"), ("所有文件", "*.*")], initialdir=json.loads(readtxt(get_home() + "/.config/uengine-runner/FindUninstallApk.json"))["path"]) -# if path != "" and path != "()": -# try: -# ComboUninstallPath.set(path) -# write_txt(get_home() + "/.config/uengine-runner/FindUninstallApk.json", json.dumps({"path": os.path.dirname(path)})) # 写入配置文件 -# except: -# pass - # 卸载按钮事件 def ButtonClick8(): if ComboInstallPath.get() is "": @@ -73,6 +71,7 @@ def ButtonClick8(): path = GetApkPackageName(ComboInstallPath.get()) else: path = ComboInstallPath.get() + print(path) threading.Thread(target=UninstallProgram, args=[path]).start() # 浏览窗口 @@ -100,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") @@ -113,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))) @@ -121,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) @@ -324,6 +341,8 @@ def ReinstallUengineImage(): # 生成 uengine 启动文件到桌面 def BuildUengineDesktop(packageName: "软件包名", activityName: "activity", showName: "显示名称", iconPath: "程序图标所在目录", savePath:".desktop 文件保存路径")->"生成 uengine 启动文件到桌面": + if showName == "" or showName == None: + showName = "未知应用" things = '''[Desktop Entry] Categories=app; Encoding=UTF-8 @@ -350,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: @@ -358,11 +379,15 @@ def SaveApkIcon(apkFilePath, iconSavePath)->"保存 apk 文件的图标": xmlsave = getsavexml() print(xmlpath) xmlsave.savexml(apkFilePath,xmlpath,iconSavePath) + return else: zip = zipfile.ZipFile(apkFilePath) iconData = zip.read(xmlpath) with open(iconSavePath, 'w+b') as saveIconFile: saveIconFile.write(iconData) + return + print("None Icon! Show defult icon") + shutil.copy(programPath + "/defult.png", iconSavePath) except: traceback.print_exc() print("Error, show defult icon") @@ -628,14 +653,111 @@ def GetApkVersion(apkFilePath): line = line.replace(" ", "") return line +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="更新(更新过程中会关闭所有Python应用,包括这个应用)", command=UpdateWindow.Update) + cancel = ttk.Button(controlFrame, text="取消", command=update.destroy) + try: + 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", UpdateWindow.data["New"].replace("\\n", "\n")) + except: + traceback.print_exc() + messagebox.showerror(title="错误", message="无法连接服务器!") + + updateText.configure(state=tk.DISABLED) + versionLabel.pack(anchor=tk.W) + updateText.pack() + controlFrame.pack(anchor=tk.E) + cancel.grid(row=0, column=0) + ok.grid(row=0, column=1) + update.mainloop() + def Update(): + 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 global path global tab1 path = ComboInstallPath.get() - + package = GetApkPackageName(path) + if package == None or package == "": + 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) @@ -663,16 +785,64 @@ 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:{} 版本:{}'''.format(GetApkPackageName(path), GetApkChineseLabel(path), GetApkActivityName(path), GetApkVersion(path)) ttk.Label(tab1, text=info).pack() + ttk.Button(tab1, text="查看程序评分情况", command=ApkInformation.ShowMap).pack() + ttk.Button(tab1, text="上传程序评分情况", command=ApkInformation.UpdateMark).pack() + + def UpdateMark(): + #message = tk.Toplevel() + #message.iconphoto(False, tk.PhotoImage(file=iconPath)) + choose = easygui.indexbox(title="选择评分", choices=["含有不良信息", "0分", "1分", "2分", "3分", "4分", "5分", "取消"], msg="""选择应用“{}”的使用评分。建议参考如下规范进行评分: +含有不良信息(-1分):含有违法违规信息(如果有就不要选择其它选项了) +0星:完全无法使用,连安装都有问题 +1星:完全无法使用,但是能正常安装 +2星:可以打开,但只能使用一点点功能 +3星:勉强能使用,运行也不大流畅 +4星:大部分功能正常,运行流畅(可能会有点小卡) +5星:完全正常且非常流畅,没有任何功能和性能问题,就和直接在手机上用一样 +""".format(GetApkChineseLabel(path))) + print(choose) + if choose == None or choose == 7: + return + try: + messagebox.showinfo(title="提示", message=requests.post("http://120.25.153.144/uengine-runner/app/check/add.php", {"Package": GetApkPackageName(path), "Type": choose}).text) + except: + messagebox.showerror(title="错误", message="无法连接服务器!无法进行评分!") + + def ShowMap(): + package = GetApkPackageName(path) + if package == None or package == "": + messagebox.showerror(title="错误", message="该应用安装包异常,无法查询相关数据!") + return + try: + data = json.loads(requests.get("http://120.25.153.144/uengine-runner/app/check/" + package +"/data.json").text) + print(data) + except: + messagebox.showinfo(title="错误", message="此程序暂时没有评分,欢迎您贡献第一个评分!") + return + index = numpy.arange(len(data)) + print(index) + chinese = GetApkChineseLabel(path) + fig = matplotlib.pylab.figure() + fig.canvas.set_window_title("“" + chinese + "”的用户评分(数据只供参考)") + fonts = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 用于支持中文显示,需要依赖fonts-noto-cjk + matplotlib.pylab.barh(index, data) + matplotlib.pylab.yticks(index, ["不良信息", "0分", "1分", "2分", "3分", "4分", "5分"], fontproperties=fonts) + matplotlib.pylab.xlabel("用户评分数", fontproperties=fonts) + matplotlib.pylab.ylabel("等级", fontproperties=fonts) + matplotlib.pylab.title("“" + chinese + "”的用户评分(数据只供参考)", fontproperties=fonts) + matplotlib.pylab.show() class AdbChangeUengineDisplaySize(): @@ -681,6 +851,7 @@ class AdbChangeUengineDisplaySize(): global displayY global displaySize message = tk.Toplevel() + message.iconphoto(False, tk.PhotoImage(file=iconPath)) messageFrame = ttk.Frame(message) displaySize = tk.StringVar() @@ -819,6 +990,7 @@ class AddNewUengineDesktopLink(): global activityName global packageName message = tk.Toplevel() + message.iconphoto(False, tk.PhotoImage(file=iconPath)) tipsLabel = ttk.Label(message, text=AddNewUengineDesktopLink.addTips) packageName = ttk.Combobox(message, width=30) @@ -974,7 +1146,7 @@ updateThingsString = "\n".join(information["Update"]) title = "{} {}".format(langFile[lang]["Main"]["MainWindow"]["Title"], version) updateTime = information["Time"] updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) desktop = programPath + "/UengineAndroidProgramList.desktop" desktopName = "UengineAndroidProgramList.desktop" contribute = "\n".join(information["Contribute"]) @@ -1006,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)})) + ########################### # 设置变量 @@ -1079,12 +1269,32 @@ def showhelp(): def ChgTips(): HelpStr.set(tips) LabText.config(wraplength=350) + def Egg(event): + try: + lists = json.loads(requests.get("http://120.25.153.144/uengine-runner/VersionList.json").text) + data = [] + for i in lists: + data.append(int(requests.get("http://120.25.153.144/uengine-runner/{}/data.txt".format(i)).text)) + except: + messagebox.showerror(title="错误", message="服务器出错!数据获取失败!") + return + fig = matplotlib.pylab.figure() + fig.canvas.set_window_title("“UEngine 运行器”安装数(数据只供参考)") + matplotlib.pylab.plot(lists, data) + index = numpy.arange(len(lists)) + fonts = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 用于支持中文显示,需要依赖fonts-noto-cjk + matplotlib.pylab.xlabel("版本号", fontproperties=fonts) + matplotlib.pylab.ylabel("安装数", fontproperties=fonts) + + matplotlib.pylab.title("“UEngine 运行器”安装数(数据只供参考)", fontproperties=fonts) + matplotlib.pylab.show() BtnReadme = ttk.Button(FrmMenu, text="使用说明",width=14,command=ChgTips) BtnLog = ttk.Button(FrmMenu, text="更新内容",width=14,command=ChgLog) BtnZujian = ttk.Button(FrmMenu, text="程序依赖的组件",width=14,command=ChgDep) BtnGongxian = ttk.Button(FrmMenu, text="有贡献的开发者",width=14,command=ChgCon) BtnAbout = ttk.Button(FrmMenu, text="关于",width=14,command=ChgAbout) + BtnAbout.bind("", Egg) #layout @@ -1109,7 +1319,7 @@ def showhelp(): ########################### # 窗口创建 ########################### -win = tk.Tk() # 创建窗口 + # 设置窗口 style = ttkthemes.ThemedStyle(win) @@ -1134,13 +1344,10 @@ win.geometry(""+"+{:.0f}+{:.0f}".format(x, y)) FrmInstall = ttk.Frame(window) #FrmUninstall = ttk.Frame(window) LabApkPath = ttk.Label(window, text=langFile[lang]["Main"]["MainWindow"]["LabApkPath"]) -#LabUninstallPath = ttk.Label(window, text=langFile[lang]["Main"]["MainWindow"]["LabUninstallPath"]) ComboInstallPath = ttk.Combobox(window, width=50) -#ComboUninstallPath = ttk.Combobox(window, width=50) BtnFindApk = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnFindApk"], command=FindApk) BtnInstall = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnInstall"], command=Button3Install) BtnShowUengineApp = ttk.Button(window, text=langFile[lang]["Main"]["MainWindow"]["BtnShowUengineApp"], command=Button5Click) -#BtnUninstallApkBrowser = ttk.Button(FrmUninstall, text=langFile[lang]["Main"]["MainWindow"]["BtnUninstallApkBrowser"], command=BtnFindUninstallApkClk) BtnUninstall = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnUninstall"], command=ButtonClick8) Btngeticon = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["Btngeticon"], command=SaveIconToOtherPath) BtnSaveApk = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnSaveApk"], command=SaveInstallUengineApp) @@ -1168,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) # 设置“退出程序” @@ -1188,7 +1396,6 @@ adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Men adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Menu"][1]["Menu"][1], command=AdbStopServer) adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Menu"][1]["Menu"][2], command=AdbKillAdbProgress) -#uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][0], command=UengineSettingShow) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][1], command=OpenUengineDebBuilder) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][7], command=KeyboardToMouse) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][8], command=UengineCheckCpu) @@ -1202,7 +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=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) @@ -1249,7 +1458,6 @@ uengineUseAdb.configure(activebackground="dodgerblue") uengineData.configure(activebackground="dodgerblue") # 设置控件 -#ComboUninstallPath['value'] = fineUninstallApkHistory ComboInstallPath['value'] = findApkHistory try: if sys.argv[1] == "-i": diff --git a/build/opt/apps/uengine-runner/uengine-runner-about b/build/opt/apps/uengine-runner/uengine-runner-about index 440f333..ea82964 100755 --- a/build/opt/apps/uengine-runner/uengine-runner-about +++ b/build/opt/apps/uengine-runner/uengine-runner-about @@ -49,7 +49,7 @@ updateThingsString = "\n".join(information["Update"]) title = "UEngine 运行器 {}".format(version) updateTime = information["Time"] updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) desktop = "/opt/apps/uengine-runner/UengineAndroidProgramList.desktop" desktopName = "UengineAndroidProgramList.desktop" contribute = "\n".join(information["Contribute"]) diff --git a/build/opt/apps/uengine-runner/uengine-runner-update-bug b/build/opt/apps/uengine-runner/uengine-runner-update-bug index 857c28e..84b7de7 100755 --- a/build/opt/apps/uengine-runner/uengine-runner-update-bug +++ b/build/opt/apps/uengine-runner/uengine-runner-update-bug @@ -49,7 +49,7 @@ def OpenGithubIssues(): ########################### # 程序信息 ########################### -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string information = json.loads(readtxt(programPath + "/information.json")) version = information["Version"] diff --git a/build/opt/apps/uengine-runner/uengine-useadb b/build/opt/apps/uengine-runner/uengine-useadb index 09b078d..4b23435 100755 --- a/build/opt/apps/uengine-runner/uengine-useadb +++ b/build/opt/apps/uengine-runner/uengine-useadb @@ -4,7 +4,6 @@ # 更新时间:2021年08月30日 ######################################### import os -import shutil import sys import traceback import ttkthemes diff --git a/build/usr/share/applications/UengineAndroidProgramList.desktop b/build/usr/share/applications/UengineAndroidProgramList.desktop index 79d71dc..fa3c750 100644 --- a/build/usr/share/applications/UengineAndroidProgramList.desktop +++ b/build/usr/share/applications/UengineAndroidProgramList.desktop @@ -4,7 +4,7 @@ Comment=UEngine App List Comment[zh]=UEngine 程序菜单 Encoding=UTF-8 Exec=/usr/bin/uengine launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/menu.svg MimeType= Name=UEngine App List Name[zh]=UEngine 程序菜单 diff --git a/build/usr/share/applications/spark-uengine-apk-build.desktop b/build/usr/share/applications/spark-uengine-apk-build.desktop index 4681581..32a1cc2 100755 --- a/build/usr/share/applications/spark-uengine-apk-build.desktop +++ b/build/usr/share/applications/spark-uengine-apk-build.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-apk-builder %F -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/builer.svg Name=Build Apk To Deb(UEngine Runner) Comment=Build Apk To Deb(UEngine Runner) Comment[zh]=打包 deb(UEngine 运行器) diff --git a/build/usr/share/applications/spark-uengine-install.desktop b/build/usr/share/applications/spark-uengine-install.desktop index a854ea8..0c8af8b 100644 --- a/build/usr/share/applications/spark-uengine-install.desktop +++ b/build/usr/share/applications/spark-uengine-install.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-runner -i %F -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/runner.svg Name=Install Or Uninstall APK(UEngine runner) Comment=Install Or Uninstall APK(UEngine runner) Comment[zh]=安装/卸载 APK(UEngine 运行器) diff --git a/build/usr/share/applications/uengine-apk-builder.desktop b/build/usr/share/applications/uengine-apk-builder.desktop index 662a41c..04068b7 100755 --- a/build/usr/share/applications/uengine-apk-builder.desktop +++ b/build/usr/share/applications/uengine-apk-builder.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-apk-builder %F -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/builer.svg Name=uengine Apk Builder Comment=UEngine Apk Builder Comment[zh]=UEngine 应用打包器 diff --git a/build/usr/share/applications/uengine-runner.desktop b/build/usr/share/applications/uengine-runner.desktop index be22912..c887fda 100755 --- a/build/usr/share/applications/uengine-runner.desktop +++ b/build/usr/share/applications/uengine-runner.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-runner -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/runner.svg Name=UEngine Runner Comment=UEngine Runner Comment[zh]=UEngine 运行器 diff --git a/build/usr/share/icons/apps/256/uengine-runner.svg b/build/usr/share/icons/apps/256/uengine-runner.svg new file mode 100755 index 0000000..e27c0f4 --- /dev/null +++ b/build/usr/share/icons/apps/256/uengine-runner.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/usr/share/icons/uengine-runner.svg b/build/usr/share/icons/uengine-runner.svg new file mode 100755 index 0000000..e27c0f4 --- /dev/null +++ b/build/usr/share/icons/uengine-runner.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/com.gitee.uengine.runner.spark.deb b/com.gitee.uengine.runner.spark.deb index 09f0dd1..f84fe1d 100755 Binary files a/com.gitee.uengine.runner.spark.deb and b/com.gitee.uengine.runner.spark.deb differ diff --git a/information-new.json b/information-new.json new file mode 100755 index 0000000..0edbe3a --- /dev/null +++ b/information-new.json @@ -0,0 +1,152 @@ +{ + "Package": "com.gitee.uengine.runner.spark", + "Url": [ + "https://gitee.com/gfdgd-xi/uengine-runner", + "https://github.com/gfdgd-xi/uengine-runner" + ], + "Version": "1.6.0", + "System": "Linux(deepin/UOS)", + "Tips": [ + "更多可见:https://gitee.com/gfdgd-xi/uengine-runner/wikis", + "安装APK:点浏览按钮,选中需要安装的APK,然后点安装按钮", + "卸载APK:在卸载APK下面的输入框内输入需要卸载的APK包名,点卸载按钮,如果无法获取包名,可以通过浏览APK文件程序自动获取包名进行卸载。", + "保存APK图标:在安装APK下面的输入框浏览或输入APK的路径,然后点击“保存图标”按钮,选择保存位置即可", + "重置(删除)UEngine数据:点击菜单栏的“UEngine”的“清空UEngine数据”,输入密码重启即可", + " 注意:如果任何安卓一遍打不开,多打开几遍应该就可以重新加载UEngine配置了", + "打开UEngine应用列表:打开系统已安装的应用列表(安卓界面)", + "提示:", + "※1、近期升级的 UEngine 安装时会自动把要安装的 apk 删除,如果这个 apk 文件非常重要请拷贝一个备份版并安装这个备份版", + "2、需要你有使用 root 权限的能力;", + "3、需要安装 UEngine 才能使用;", + "4、提取 apk 图标的 apk 路径以“安装 apk”那栏为准;", + "5、如果想要使用adb连接UEngine或其他手机,请使用 1.2.0 以前的版本。(如需连接UEngine请安装adb补丁)" + ], + "Update": [ + "V1.6.0:", + "※1、更换了新的图标", + "※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)", + "※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化", + "※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)", + "※5、新增程序帮助", + "6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)", + "7、修复了“UEngine 打包器”前缀选项勾选设置不生效的问题", + "", + "V1.5.3:", + "※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题", + "※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录~/.local/share/icons/hicolor/256x256/apps不存在时点击无反应,参考报错", + "※3、修复了“UEngine APK应用打包器”打包的deb包的.desktop文件的Icon和Exec字段有误的问题以及使用“使用前缀‘uengine-dc’”前缀的问题", + "4、“UEngine APK应用打包器”支持打包完后自动删除临时目录", + "5、“UEngine APK应用打包器”以及“添加/删除UEngine图标”支持在运行出现错误时显示报错", + "", + "V1.5.2:", + "※1、支持安装和构建带Root的UEngine的镜像", + "2、更新了反馈链接", + "", + "V1.5.1:", + "※1、精简用户界面,合并安装和卸载输入框和浏览按钮等", + "※2、修复安装以其的程序图标无法点击进入的问题(deepin 社区版不存在此问题)", + "※3、支持在程序本体反馈问题", + "4、修复了菜单栏的部分显示问题", + "5、支持显示 apk 的部分信息", + "6、支持删除 UEngine 程序运行检查以及重新安装 UEngine 的功能", + "7、自带有跳过家庭版必须有指定包名才能运行程序限制的脚本", + "8、补回依赖包“adb”", + "", + "V1.5.0:", + "※1、部分窗口支持英语", + "2、修复在英语状态下启动器图标名称异常的问题", + "", + "V1.4.3:", + "※1、支持打包器打包的包名带前缀“uengine-dc”", + "※2、修复了两种情况可能导致程序卡住/出错无法继续运行的情况(配置文件夹不齐全和获取版本信息卡住两种情况)", + "※3、修改了 UEngine 打包器打包的应用包名可能有大写的情况", + "4、支持一键使用 Scrcpy 连接 UEngine(①先安装 adb 破解补丁;②请确保是使用snap安装的 Scrcpy【目前只支持 snap 安装的 Scrcpy 进行连接】)", + "5、支持右键打包 apk", + "", + "V1.4.2:", + "※1、添加adb破解补丁(用于可以让adb连接UEngine)并支持adb的部分操作;", + "2、菜单栏的项目添加以及外观优化;", + "3、修复键盘映射无法添加新映射的问题并修改键盘映射启动方式;", + "4、把 uengine 改为 UEngine;", + "5、修改 pkexec 获取密码时显示的图标和文本;", + "6、添加了 UEngine 系统设置的快捷方式;", + "", + "V1.4.1:", + "※1、初步支持键盘映射", + "2、修复新版包在发送uengine列表快捷方式时会提示找不到文件", + "", + "V1.4.0:", + "※1、添加新版打包方式(deepin打包方式);", + "※2、支持测试运行/创建/删除uengine图标;", + "※3、支持提取安装的apk;", + "※4、支持打包deb包;", + "5、修改菜单栏布局;", + "6、支持打开uengine数据目录和用户数据目录;", + "7、程序信息保存到json,非直接写入程序本体;", + "8、更多命令操作;", + "", + "V.1.3.2:", + "※1、支持uengine数据重置;", + "※2、支持修改uengine网络桥接的启动状态;", + "※3、支持右键安装/卸载;", + "※4、支持启用或禁用uengine;", + "※5、修复打包问题,不会出现“dpkg:警告:卸载spark-uengine-runner时,目录/opt/apps/uengine-runner非空,因而不会删除该目录”的错误;", + "", + "V1.3.1:", + "※1、修复打包问题,防止部分用户安装出错的问题;", + "※2、修复了程序无法提取图标时可以提取默认图标使用;", + "", + "V1.3.0:", + "※1、修改了界面布局;", + "※2、修复大多数新安装普通用户的路图标及启动菜单文件路径不存在导致安装APK报错的bugs;", + "3、删除少量冗余代码,调整代码顺序;", + "4、支持提取apk图标。", + "", + "V1.2.3", + "1、调整部分控件名称;", + "2、调整界面布局及界面风格;", + "", + "V1.2.2", + "1、对程序错误的显示更加人性化;", + "2、对 icon 的获取方式进行了升级;", + "3、增加了注释、删除部分冗余代码。", + "", + "V1.2.1", + "※1、进行了安装方式的修改(不使用 adb),修复原无法安装和卸载的问题;", + "2、进行了部分优化;", + "3、进行了功能缩水;", + "4、修复 deb 打包错误。", + "", + "V1.2.0", + "1、支持安装自动添加快捷方式、卸载删除快捷方式;", + "2、支持使用包名或 APK 文件卸载程序;", + "3、支持查看安装的所有包名;", + "4、进行了部分优化", + "", + "V1.1.0", + "暂无数据", + "", + "V1.0.0", + "暂无数据" + ], + "Use": [ + "1、UEngine相关软件包(基于anbox开发)", + "2、Python3", + "3、tkinter(tkinter.tk、ttkthemes、tkinter.messagebox、tkinter.simpledialog、tkinter.filedialog 和 tkinter.ttk)", + "4、aapt", + "5、dpkg", + "6、tree", + "7、mkdir", + "8、echo", + "9、chmod", + "10、adb", + "11、deepin 终端", + "……" + ], + "Time": "2021年08月30日", + "Contribute": [ + "gfdgd xi<3025613752@qq.com>", + "actionchen<917981399@qq.com>", + "柚子" + ] +} \ No newline at end of file diff --git a/information.json b/information.json index 7cad6cb..383fa29 100755 --- a/information.json +++ b/information.json @@ -23,12 +23,14 @@ ], "Update": [ "V1.6.0:", - "※1、更换了新的图标(暂未全部更新完成!)", + "※1、更换了新的图标", "※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)", "※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化", "※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)", "※5、新增程序帮助", "6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)", + "7、修复了“UEngine 打包器”前缀选项勾选设置不生效的问题", + "", "V1.5.3:", "※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题", "※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录~/.local/share/icons/hicolor/256x256/apps不存在时点击无反应,参考报错", diff --git a/new-deb-build/DEBIAN/control b/new-deb-build/DEBIAN/control index 200a051..23684ee 100644 --- a/new-deb-build/DEBIAN/control +++ b/new-deb-build/DEBIAN/control @@ -3,7 +3,7 @@ Source: com.gitee.uengine.runner.spark Version: 1.6.0 Architecture: all Maintainer: gfdgd xi <3025613752@qq.com>, actionchen<917981399@qq.com> -Depends: deepin-elf-verify (>= 0.0.16.7-1), python3, python3-tk, python3-pip, aapt, uengine, python3-setuptools, deepin-terminal, curl, python3-pil, python3-pil.imagetk, python3-requests, adb, translate-shell, python3-xlib, python3-requests, fonts-noto-cjk, python3-numpy +Depends: deepin-elf-verify (>= 0.0.16.7-1), python3, python3-tk, python3-pip, aapt, uengine, python3-setuptools, deepin-terminal, curl, python3-pil, python3-pil.imagetk, python3-requests, adb, translate-shell, python3-xlib, fonts-noto-cjk, python3-numpy Section: utils Priority: optional Conflicts: spark-uengine-runner, spark-uengine-apk-builder diff --git a/new-deb-build/DEBIAN/postinst b/new-deb-build/DEBIAN/postinst index a53be39..a0807ac 100755 --- a/new-deb-build/DEBIAN/postinst +++ b/new-deb-build/DEBIAN/postinst @@ -2,7 +2,6 @@ # 使用 pip 安装所需库 python3 -m pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com python3 -m pip install --upgrade ttkthemes -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -#python3 -m pip install --upgrade requests -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com python3 -m pip install --upgrade pyautogui -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com python3 -m pip install --upgrade keyboard -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com # 建立软链接 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/UengineAndroidProgramList.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/UengineAndroidProgramList.desktop index a19b595..3145ad7 100644 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/UengineAndroidProgramList.desktop +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/UengineAndroidProgramList.desktop @@ -3,7 +3,7 @@ Categories=System; Comment=UEngine 程序菜单 Encoding=UTF-8 Exec=/usr/bin/uengine launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity -Icon=/opt/apps/com.gitee.uengine.runner.spark/files/icon.png +Icon=/opt/apps/com.gitee.uengine.runner.spark/files/menu.svg MimeType= Name=UEngine App List Name[zh]=UEngine 程序菜单 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-apk-build.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-apk-build.desktop index 3477368..f26a89f 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-apk-build.desktop +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-apk-build.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-apk-builder %F -Icon=/opt/apps/com.gitee.uengine.runner.spark/files/icon.png +Icon=/opt/apps/com.gitee.uengine.runner.spark/files/builer.svg Name=Build Apk To Deb(UEngine Runner) Comment=Build Apk To Deb(UEngine Runner) Comment[zh]=打包 deb(UEngine 运行器) diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-install.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-install.desktop index 90f8f1f..9d21f37 100644 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-install.desktop +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/spark-uengine-install.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-runner -i %F -Icon=/opt/apps/com.gitee.uengine.runner.spark/files/icon.png +Icon=/opt/apps/com.gitee.uengine.runner.spark/files/runner.svg Name=Install Or Uninstall APK(uengine runner) Comment=Install Or Uninstall APK(UEngine runner) Comment[zh]=安装/卸载 APK(UEngine 运行器) diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-apk-builder.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-apk-builder.desktop index 3a0536d..6cb0b0c 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-apk-builder.desktop +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-apk-builder.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-apk-builder %F -Icon=/opt/apps/com.gitee.uengine.runner.spark/files/icon.png +Icon=/opt/apps/com.gitee.uengine.runner.spark/files/builer.svg Name=uengine Apk Builder Comment=UEngine Apk Builder Comment[zh]=UEngine 应用打包器 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-runner.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-runner.desktop index fb8b5fd..c60a7df 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-runner.desktop +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/entries/applications/uengine-runner.desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Categories=System; Terminal=false Exec=/usr/bin/uengine-runner -Icon=/opt/apps/com.gitee.uengine.runner.spark/files/icon.png +Icon=/opt/apps/com.gitee.uengine.runner.spark/files/runner.svg Name=uengine Runner Comment=UEngine Runner Comment[zh]=UEngine 运行器 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Help/index.html b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Help/index.html new file mode 100644 index 0000000..b422ce5 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Help/index.html @@ -0,0 +1,12 @@ + + UEngine 运行器 1.6.0 帮助 + + +

UEngine 运行器 1.6.0 帮助

+
+

安装自定义 APK 应用

+

方法1

+

方法2

+
+

高级功能

+ \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Language.json b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Language.json index 16129a4..6cbff77 100644 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Language.json +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/Language.json @@ -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" ] } ] diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/README.md b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/README.md new file mode 100755 index 0000000..be2cf48 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/README.md @@ -0,0 +1,273 @@ +# uengine 运行器 1.5.3 + +### 介绍 +        新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包启动菜单到桌面或系统菜单。 +![1.5.3](https://storage.deepin.org/thread/202112121231595786_截图_选择区域_20211212123106.png) +(测试平台:UOS 家庭版 21.1,deepin 20.3,UOS 专业版 1040) +(自己美术功底太差,图标直接用 anbox 的了) + +## 安装前必读 ++ releases 里有两个 deb 包,**是一样的除了包名和打包标准不同**,**只能选择其中一个安装**,**两个都安装会产生冲突**,两个deb包的作用如下: + - 包名为`spark-uengine-runner`的,是旧包,按照**正常标准打包**,适用于从**星火应用商店安装**以及**从低版本(即1.3.2即以下版本升级上来的用户)升级**或者**之前就安装该版本的用户**甚至**想跨平台的用户**等等 + - 包名为`com.gitee.uengine.runner.spark`的,是按照**deepin/UOS的标准打包的**,适用于**之前就安装该版本并升级上来的用户**以及**希望按照该方法打包的用户**等等 ++ **近期升级的 UEngine 安装时会自动把要安装的 apk 删除**,如果这个 apk 文件非常重要请**拷贝一个备份版并安装这个备份版** + +### 更新内容 +#### V1.6.0(开学版,即将完成!!!) +##### 目前更新内容 +**※1、更换了新的图标(暂未全部更新完成!)** +**※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)** +**※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化** +**※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)** +**※5、新增程序帮助** +6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了) + +#### V1.5.3(2021-12-12,DDUC11版): +##### 更新内容 +**※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题** +**※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录**`~/.local/share/icons/hicolor/256x256/apps`**不存在时点击无反应,参考报错1.5.3-1** +**※3、修复了“UEngine APK 应用打包器”打包的deb包的.desktop文件的**`Icon`**和**`Exec`**字段有误的问题以及使用“使用前缀‘uengine-dc’”前缀的问题** +4、“UEngine APK 应用打包器”支持打包完后自动删除临时目录 +5、“UEngine APK 应用打包器”以及“添加/删除 UEngine 图标”支持在运行出现错误时显示报错 +##### 报错: +*1.5.3-1* +```bash +Exception in Tkinter callback +Traceback (most recent call last): + File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__ + return self.func(*args) + File "/home/gfdgd_xi/Desktop/uengine-runner/main.py", line 865, in SaveDesktopLink + shutil.copy(programPath + "/defult.png", iconSavePath) + File "/usr/lib/python3.7/shutil.py", line 245, in copy + copyfile(src, dst, follow_symlinks=follow_symlinks) + File "/usr/lib/python3.7/shutil.py", line 121, in copyfile + with open(dst, 'wb') as fdst: +FileNotFoundError: [Errno 2] No such file or directory: '/home/gfdgd_xi/.local/share/icons/hicolor/256x256/apps/com.miHoYo.cloudgames.ys.png' +``` +##### 截图 +![1.5.3](https://storage.deepin.org/thread/202112121231595786_截图_选择区域_20211212123106.png) + +#### V1.5.2(2021-11-28): +**※1、支持安装和构建带 Root 的 UEngine 的镜像** +2、更新了反馈链接 +![](https://storage.deepin.org/thread/202111281607295590_截图_选择区域_20211128160706.png) + +#### V1.5.1(2021-10-05,国庆节版): +**※1、精简用户界面,合并安装和卸载输入框和浏览按钮等** +**※2、修复安装以其的程序图标无法点击进入的问题(deepin 社区版不存在此问题)** +**※3、支持在程序本体反馈问题** +4、修复了菜单栏的部分显示问题 +5、支持显示 apk 的部分信息 +6、支持删除 UEngine 程序运行检查以及重新安装 UEngine 的功能 +7、自带有跳过家庭版必须有指定包名才能运行程序限制的脚本 +8、补回依赖包“adb” +![1.5.1](https://storage.deepin.org/thread/202110051821076836_截图_dde-desktop_20211005182021.png) + +#### V1.5.0(2021-09-21,中秋节版): +**没有什么实质性的功能,只是开始有多语言支持** +**※1、部分窗口支持英语** +2、修复在英语状态下启动器图标名称异常的问题 +![1.5.0](https://storage.deepin.org/thread/202109202157289430_截图_选择区域_20210920215550.png) + +#### V1.4.3(2021-09-11,开学第一版): +**※1、支持打包器打包的包名带前缀“uengine-dc”** +**※2、修复了两种情况可能导致程序卡住/出错无法继续运行的情况(配置文件夹不齐全和获取版本信息卡住两种情况)** +**※3、修改了 UEngine 打包器打包的应用包名可能有大写的情况** +4、支持一键使用 Scrcpy 连接 UEngine(①先安装 adb 破解补丁;②请确保是使用snap安装的 Scrcpy【目前只支持 snap 安装的 Scrcpy 进行连接】) +5、支持右键打包 apk +![1.4.3](https://storage.deepin.org/thread/202109111635389828_截图_选择区域_20210911163449.png) + +#### V1.4.2(2021-08-30,快开学了): +**※1、添加adb破解补丁(用于可以让adb连接UEngine)并支持adb的部分操作;** +2、菜单栏的项目添加以及外观优化; +3、修复键盘映射无法添加新映射的问题并修改键盘映射启动方式; +4、把 uengine 改为 UEngine; +5、修改 pkexec 获取密码时显示的图标和文本; +6、添加了 UEngine 系统设置的快捷方式; +![1.4.2](https://storage.deepin.org/thread/202108301750554993_截图_选择区域_20210830134502.png) + +#### V1.4.1(2021-08-26): +**※1、初步支持键盘映射** +2、修复新版包在发送uengine列表快捷方式时会提示找不到文件 +![1.4.1](https://storage.deepin.org/thread/20210826151947783_截图_选择区域_20210826151312.png) + +#### V1.4.0(2021-08-19): +**※1、添加新版打包方式(deepin打包方式);** +**※2、支持测试运行/创建/删除uengine图标;** +**※3、支持提取安装的apk;** +**※4、支持打包deb包;** +5、修改菜单栏布局; +6、支持打开uengine数据目录和用户数据目录; +7、程序信息保存到json,非直接写入程序本体; +8、更多命令操作; +![1.4.0](https://storage.deepin.org/thread/202108191410327464_截图_选择区域_20210819140938.png) + +#### V1.3.2(2021-08-16): +**※1、支持uengine数据重置;** +**※2、支持修改uengine网络桥接的启动状态;** +**※3、支持右键安装/卸载;** +**※4、支持启用或禁用uengine;** +**※5、修复打包问题,不会出现“dpkg:警告:卸载spark-uengine-runner时,目录/opt/apps/uengine-runner非空,因而不会删除该目录”的错误;** +![1.3.2](https://storage.deepin.org/thread/202108152141139401_截图_选择区域_20210815213948.png) + +#### V1.3.1(2021-08-12): +**※1、修复打包问题,防止部分用户安装出错的问题;** +**※2、修复了程序无法提取图标时可以提取默认图标使用;** +![1.3.1](https://storage.deepin.org/thread/202108121509217807_截图_选择区域_20210812150849.png) + +#### V1.3.0(2021-08-08): +**※1、修改了界面布局;** +**※2、修复大多数新安装普通用户的路图标及启动菜单文件路径不存在导致安装APK报错的bugs;** +3、删除少量冗余代码,调整代码顺序; +4、支持提取 apk 图标。 +![1.3.0](https://storage.deepin.org/thread/202108082100582804_截图_tk_20210808210047.png) + +#### V1.2.3(2021-08-02): +1、调整部分控件名称; +2、调整界面布局及界面风格; +![1.2.3](https://images.gitee.com/uploads/images/2021/0802/080620_1dd289ca_7896131.png) + +#### V1.2.2(2021-07-11): +1、对程序错误的显示更加人性化; +2、对 icon 的获取方式进行了升级; +3、增加了注释、删除部分冗余代码。 +![1.2.2](https://images.gitee.com/uploads/images/2021/0711/145140_b04e51b7_7896131.png) + +#### V1.2.1(2021-07-02): +**※1、进行了安装方式的修改(不使用 adb),修复原无法安装和卸载的问题;** +2、进行了部分优化; +3、进行了功能缩水; +4、修复 deb 打包错误。 +![1.2.1](https://images.gitee.com/uploads/images/2021/0702/204040_6abb6f3f_7896131.png) + +#### V1.2.0(2021-06-06): +1、支持安装自动添加快捷方式、卸载删除快捷方式; +2、支持使用包名或 APK 文件卸载程序; +3、支持查看安装的所有包名; +4、进行了部分优化 +![1.2.0](https://images.gitee.com/uploads/images/2021/0606/115536_0c0ddf38_7896131.png) + +#### V1.1.0(2021-05-30): +1、修改了因编写时出现的中、英文混用的情况 +2、支持一键连接默认 IP +3、修复在不连接设备直接选择 apk 安装时会卡住的问题 +4、修复在把“uengine 程序菜单”发送到桌面或启动器如果询问覆盖时点击取消会卡住的问题 +5、修改了程序界面为白色调,不和标题栏冲突矛盾 +![1.1.0](https://images.gitee.com/uploads/images/2021/0530/133429_7e6bf629_7896131.png) + +#### V1.0.0(2021-05-29): +![1.0.0](https://images.gitee.com/uploads/images/2021/0529/173756_2e333c86_7896131.png) + +### 源码安装教程 +按下 Ctrl+Alt+T 打开终端,按以下内容操作: +1. 安装所需依赖 + +```bash +sudo apt install deepin-elf-verify python3 python3-tk python3-pip +sudo apt install aapt uengine python3-setuptools deepin-terminal curl +sudo apt install python3-pil python3-pil.imagetk python3-requests adb +sudo apt install translate-shell python3-xlib python3-requests fonts-noto-cjk python3-numpy +python3 -m pip install pip -U +python3 -m pip install --upgrade ttkthemes -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +python3 -m pip install --upgrade pyautogui -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +python3 -m pip install --upgrade keyboard -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com +``` + +2. 下载本程序 + +```bash +git clone https://gitee.com/gfdgd-xi/uengine-runner.git +``` + +3. 运行本程序 + +```bash +sudo mkdir /opt/apps/uengine-runner +sudo cp uengine-runner /opt/apps/uengine-runner -rv +sudo cp getxmlimg.py /opt/apps/uengine-runner -rv +sudo cp icon.png /opt/apps/uengine-runner -rv +chmod 777 /opt/apps/uengine-runner/main.py +sudo cp /opt/apps/uengine-runner/main.py /usr/bin/uengine-runner +./main.py +``` + +4. 卸载本程序 +```bash +sudo rm /usr/bin/uengine-runner -v +sudo rm /opt/apps/uengine-runner/ -rfv +pip3 uninstall ttkthemes +``` + +### 使用说明 +1、需要你有使用 root 权限的能力; +2、需要安装 UEngine 才能使用,UOS建议在商店安装一个安卓应用,让系统自动安装 UEngine 及相关的依赖包; +3、提取 apk 图标的 apk 路径以“安装 apk”那栏为准; +4、如果报错是有关产生 .deksotp 文件有关,一般可以打开程序列表运行。如果想要连接其他手机,请使用 1.2.0 以前的版本,可以使用 adb 连接。 + +### 故障排除 +提 issue 最好,当然有些问题自己无法解决,请大佬 push 一下 +如果出现故障,尝试终端运行,如果是可以自行解决的问题,就**自行解决**,如果可以就**提 issues 并提供解决方案**,不行就**提 isscue 并提供程序和终端报错以及程序版本** + +### 下载量 +这里只统计蓝奏云的下载量,链接(懒得更了): +[https://kdocs.cn/l/smrvazWGuKcY](https://kdocs.cn/l/smrvazWGuKcY) + +### 已知问题 +

+ +![Error](https://storage.deepin.org/thread/202108101105396531_截图___tk__messagebox_20210810110449.png) +部分 app 无法读取出图片,已知: +| 程序 | 下载链接 | +| :-: | :-: | +| Firefox For Android | https://www.firefox.com.cn/download/ | +| 网易云音乐 For Android | https://music.163.com/#/download | +| 抖音 | https://www.wandoujia.com/apps/7461948 | +| 360 手机浏览器 | https://mse.360.cn/ | +| E-Go | 忘了 | +| 其他待测试…… | 其他待测试…… | +**注意:提取不出图标不代表未安装成功!** + + +### 贡献 +

+ +非常欢迎大家的贡献 +贡献的开发者列表: +| 开发者 | 邮箱 | +| :-: | :-: | +| gfdgd xi | 3025613752@qq.com | +| actionchen | 917981399@qq.com | +| 柚子 | https://gitee.com/Limexb | + +### 相关项目 +| 项目名称 | 项目地址 | +| :-: | :-:| +| uengine-installer | https://gitee.com/Maicss/uengine-installer | +| uengine APK 打包器 | https://gitee.com/gfdgd-xi/uengine-apk-builder | +| Root UEngine | https://gitee.com/Limexb/root-uengine | + +### 附测试生成图标无问题列表: +**至于能不能用就不测试了,这暂时不是重点** +**现在新加了评分功能,就看大家的评分了!** +| 程序 | 下载链接 | +|:-:|:-:| +| QQ 全家桶(完整版、极速版、Android Pad 版) | https://im.qq.com | +| TIM | 忘了 | +| 微信 | https://weixin.qq.com | +| 百度翻译 | 忘了 | +| 百度网盘 | https://pan.baidu.com | +| 腾讯课堂 | 忘了 | +| 抖音极速版 | 忘了 | +| 豌豆荚 | 忘了 | +| 小猿口算 | 忘了 | +| Hyperbowl | 忘了 | +| bilibili | https://d.bilibili.com/download_app.html?bsource=app_bili | +| 蓝奏云 | https://up.woozooo.com/lanzouh5.apk | +| QQ 音乐(完整版、Android Pad 版、TV 版、车载版) | https://y.qq.com/download/index.html | +| 360 手机卫士(完整版、极速版) | https://shouji.360.cn/v6/index.html | +| 360 清理大师(稳定版、尝鲜版) | http://shouji.360.cn/360cleandroid/ | +| 360 手机助手 | http://sj.360.cn/index.html | +| WPS Office For Android | https://www.wps.cn/ | +| 钉钉 for android | https://page.dingtalk.com/wow/dingtalk/act/download?spm=a3140.8196062.0.0.6f4c5c3dWBhYUM | + +### ©2021-2022 \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/UengineAndroidProgramList.desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/UengineAndroidProgramList.desktop deleted file mode 100755 index 8ff8e7a..0000000 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/UengineAndroidProgramList.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Categories=System; -Comment=UEngine 程序菜单 -Encoding=UTF-8 -Exec=/usr/bin/uengine launch.sh --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity -Icon=/opt/apps/uengine-runner/icon.png -MimeType= -Name=UEngine 程序菜单 -StartupWMClass=UEngine 程序菜单 -Terminal=false -Type=Application diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.png new file mode 100644 index 0000000..407865f Binary files /dev/null and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.svg b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.svg new file mode 100755 index 0000000..2cfd070 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/builer.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/defult-old.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/defult-old.png new file mode 100755 index 0000000..4cff476 Binary files /dev/null and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/defult-old.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.png old mode 100755 new mode 100644 index 0ec7233..c836b68 Binary files a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.png and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.svg b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.svg new file mode 100755 index 0000000..baaa994 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/icon.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/information.json b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/information.json index edcfdf3..0edbe3a 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/information.json +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/information.json @@ -1,9 +1,10 @@ { + "Package": "com.gitee.uengine.runner.spark", "Url": [ "https://gitee.com/gfdgd-xi/uengine-runner", "https://github.com/gfdgd-xi/uengine-runner" ], - "Version": "1.5.3", + "Version": "1.6.0", "System": "Linux(deepin/UOS)", "Tips": [ "更多可见:https://gitee.com/gfdgd-xi/uengine-runner/wikis", @@ -21,6 +22,15 @@ "5、如果想要使用adb连接UEngine或其他手机,请使用 1.2.0 以前的版本。(如需连接UEngine请安装adb补丁)" ], "Update": [ + "V1.6.0:", + "※1、更换了新的图标", + "※2、支持程序的评分和查看分数详情的功能(如果炸了我的服务器,这个就作废了)", + "※3、修复了在安装奇奇怪怪的安装包(如格式、标识不正确的)时的快捷方式图标为空以及快捷方式文本的变化", + "※4、添加更新功能,可以自行升级到最新版本(如果炸了我的服务器,这个就作废了)", + "※5、新增程序帮助", + "6、新填彩蛋(在“关于”=>“关于”显示的窗口双击“关于”开启)(如果炸了我的服务器,这个就作废了)", + "7、修复了“UEngine 打包器”前缀选项勾选设置不生效的问题", + "", "V1.5.3:", "※1、修复了在 UOS 家庭版安装 apk 文件安装包信息为 None 的问题", "※2、“添加/删除 UEngine 图标”窗口的写入按钮在目录~/.local/share/icons/hicolor/256x256/apps不存在时点击无反应,参考报错", diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.png new file mode 100644 index 0000000..7142895 Binary files /dev/null and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.svg b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.svg new file mode 100755 index 0000000..28561dd --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/menu.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/old-icon.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/old-icon.png new file mode 100755 index 0000000..0ec7233 Binary files /dev/null and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/old-icon.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.png b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.png new file mode 100644 index 0000000..0b0f47a Binary files /dev/null and b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.png differ diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.svg b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.svg new file mode 100755 index 0000000..e27c0f4 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/runner.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder index 2b5fe8d..912707f 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-apk-builder @@ -3,7 +3,7 @@ ########################################################################################### # 作者:gfdgd xi # 版本:1.5.3 -# 更新时间:2021年12月12日(DDUC11了) +# 更新时间:2022年02月07日(要开学了) # 感谢:anbox、deepin 和 统信 # 基于 Python3 的 tkinter 构建 ########################################################################################### @@ -67,7 +67,10 @@ def BuildApkDeb(apkPath): RunCommandShow("mkdir -pv '{}/usr/share/uengine/icons'".format(tempPath)) RunCommandShow("echo '写入文件,因为写入过程过于复杂,不显示写入命令……'") apkPackageName = GetApkPackageName(apkPath, False) - apkPackageNameNew = GetApkPackageName(apkPath, True) + if qianZhui.get(): + apkPackageNameNew = GetApkPackageName(apkPath, True) + else: + apkPackageNameNew = GetApkPackageName(apkPath, False) apkPackageVersion = GetApkVersion(apkPath) apkChineseLabel = GetApkChineseLabel(apkPath) apkActivityName = GetApkActivityName(apkPath) @@ -285,6 +288,8 @@ def GetApkVersion(apkFilePath): return line def BuildUengineDesktop(packageName, activityName, showName, iconPath, savePath): + if showName == "" or showName == None: + showName = "未知应用" things = ''' [Desktop Entry] Categories=app; @@ -308,17 +313,6 @@ def GetApkChineseLabel(apkFilePath): line = line.replace("'", "") return line -#def GetApkIconInApk(apkFilePath): -# info = GetApkInformation(apkFilePath) -# for line in info.split('\n'): -# if "application:" in line: -# line = line[line.index("icon='"): -1] -# line = line.replace("icon='", "") -# if "'" in line: -# line = line[0: line.index("'")] -# return line -# return line - #合并两个函数到一起 def SaveApkIcon(apkFilePath, iconSavePath)->"获取 apk 文件的图标": try: @@ -335,18 +329,14 @@ def SaveApkIcon(apkFilePath, iconSavePath)->"获取 apk 文件的图标": iconData = zip.read(xmlpath) with open(iconSavePath, 'w+b') as saveIconFile: saveIconFile.write(iconData) + return + print("Show defult icon") + shutil.copy(programPath + "/defult.png", iconSavePath) except: traceback.print_exc() print("Error, show defult icon") shutil.copy(programPath + "/defult.png", iconSavePath) - -#def SaveApkIcon(apkFilePath, iconSavePath): -# zip = zipfile.ZipFile(apkFilePath) -# iconData = zip.read(GetApkIconInApk(apkFilePath)) -# with open(iconSavePath, 'w+b') as saveIconFile: -# saveIconFile.write(iconData) - def TextboxAddText1(message): global textbox1 textbox1.configure(state=tk.NORMAL) @@ -383,7 +373,7 @@ if not lang in langFile.keys(): information = json.loads(readtxt(programPath + "/information.json")) version = information["Version"] title = "{} {}".format(langFile[lang]["Uengine Apk Builder"]["Title"], version) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/builer.png".format(os.path.split(os.path.realpath(__file__))[0]) ########################### # 加载配置 diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-install (1).desktop b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-install (1).desktop deleted file mode 100755 index e386dfa..0000000 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-install (1).desktop +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -Categories=system;Utility; -Encoding=UTF-8 -Exec=uengine-runner -ci %F -GenericName=APK Install(UEngine) -GenericName[zh_CN]=APK 安装(UEngine) -Icon=/opt/apps/uengine-runner/icon.png -MimeType=application/apk; -Name=APK Install(UEngine) -Name[zh_CN]=APK 安装(UEngine) -NoDisplay=true -OnlyShowIn=Unity; -StartupNotify=false -StartupWMClass=APK 安装(UEngine) -Terminal=false -Type=Application diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner index 36db364..da2ea10 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner @@ -2,8 +2,8 @@ # 使用系统默认的 python3 运行 ########################################################################################### # 作者:gfdgd xi<3025613752@qq.com> -# 版本:1.5.3 -# 更新时间:2021年12月12日(DDUC11了) +# 版本:1.6.1 +# 更新时间:2022年2月6日(要开学了) # 感谢:anbox、deepin 和 UOS # 基于 Python3 的 tkinter 构建 # 更新:gfdgd xi<3025613752@qq.com>、actionchen<917981399@qq.com> @@ -19,9 +19,16 @@ import shutil import zipfile import traceback import threading +import easygui import ttkthemes import webbrowser import subprocess +import matplotlib +import requests +import numpy +import matplotlib.figure +import matplotlib.pylab +import matplotlib.font_manager import PIL.Image as Image import PIL.ImageTk as ImageTk import tkinter as tk @@ -31,6 +38,7 @@ import tkinter.filedialog as filedialog import tkinter.simpledialog as simpledialog from getxmlimg import getsavexml +win = tk.Tk() # 创建窗口 # 卸载程序 def UninstallProgram(package: "apk 包名")->"卸载程序": @@ -38,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()) @@ -53,16 +61,6 @@ def UninstallProgram(package: "apk 包名")->"卸载程序": messagebox.showerror(title="错误", message=traceback.format_exc()) DisabledAndEnbled(False) -# 卸载文本框的浏览按钮事件 -#def BtnFindUninstallApkClk(): -# path = filedialog.askopenfilename(title="选择 Apk", filetypes=[("APK 文件", "*.apk"), ("所有文件", "*.*")], initialdir=json.loads(readtxt(get_home() + "/.config/uengine-runner/FindUninstallApk.json"))["path"]) -# if path != "" and path != "()": -# try: -# ComboUninstallPath.set(path) -# write_txt(get_home() + "/.config/uengine-runner/FindUninstallApk.json", json.dumps({"path": os.path.dirname(path)})) # 写入配置文件 -# except: -# pass - # 卸载按钮事件 def ButtonClick8(): if ComboInstallPath.get() is "": @@ -73,6 +71,7 @@ def ButtonClick8(): path = GetApkPackageName(ComboInstallPath.get()) else: path = ComboInstallPath.get() + print(path) threading.Thread(target=UninstallProgram, args=[path]).start() # 浏览窗口 @@ -100,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") @@ -113,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))) @@ -121,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) @@ -324,6 +341,8 @@ def ReinstallUengineImage(): # 生成 uengine 启动文件到桌面 def BuildUengineDesktop(packageName: "软件包名", activityName: "activity", showName: "显示名称", iconPath: "程序图标所在目录", savePath:".desktop 文件保存路径")->"生成 uengine 启动文件到桌面": + if showName == "" or showName == None: + showName = "未知应用" things = '''[Desktop Entry] Categories=app; Encoding=UTF-8 @@ -350,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: @@ -358,11 +379,15 @@ def SaveApkIcon(apkFilePath, iconSavePath)->"保存 apk 文件的图标": xmlsave = getsavexml() print(xmlpath) xmlsave.savexml(apkFilePath,xmlpath,iconSavePath) + return else: zip = zipfile.ZipFile(apkFilePath) iconData = zip.read(xmlpath) with open(iconSavePath, 'w+b') as saveIconFile: saveIconFile.write(iconData) + return + print("None Icon! Show defult icon") + shutil.copy(programPath + "/defult.png", iconSavePath) except: traceback.print_exc() print("Error, show defult icon") @@ -628,14 +653,111 @@ def GetApkVersion(apkFilePath): line = line.replace(" ", "") return line +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="更新(更新过程中会关闭所有Python应用,包括这个应用)", command=UpdateWindow.Update) + cancel = ttk.Button(controlFrame, text="取消", command=update.destroy) + try: + 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", UpdateWindow.data["New"].replace("\\n", "\n")) + except: + traceback.print_exc() + messagebox.showerror(title="错误", message="无法连接服务器!") + + updateText.configure(state=tk.DISABLED) + versionLabel.pack(anchor=tk.W) + updateText.pack() + controlFrame.pack(anchor=tk.E) + cancel.grid(row=0, column=0) + ok.grid(row=0, column=1) + update.mainloop() + def Update(): + 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 global path global tab1 path = ComboInstallPath.get() - + package = GetApkPackageName(path) + if package == None or package == "": + 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) @@ -663,16 +785,64 @@ 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:{} 版本:{}'''.format(GetApkPackageName(path), GetApkChineseLabel(path), GetApkActivityName(path), GetApkVersion(path)) ttk.Label(tab1, text=info).pack() + ttk.Button(tab1, text="查看程序评分情况", command=ApkInformation.ShowMap).pack() + ttk.Button(tab1, text="上传程序评分情况", command=ApkInformation.UpdateMark).pack() + + def UpdateMark(): + #message = tk.Toplevel() + #message.iconphoto(False, tk.PhotoImage(file=iconPath)) + choose = easygui.indexbox(title="选择评分", choices=["含有不良信息", "0分", "1分", "2分", "3分", "4分", "5分", "取消"], msg="""选择应用“{}”的使用评分。建议参考如下规范进行评分: +含有不良信息(-1分):含有违法违规信息(如果有就不要选择其它选项了) +0星:完全无法使用,连安装都有问题 +1星:完全无法使用,但是能正常安装 +2星:可以打开,但只能使用一点点功能 +3星:勉强能使用,运行也不大流畅 +4星:大部分功能正常,运行流畅(可能会有点小卡) +5星:完全正常且非常流畅,没有任何功能和性能问题,就和直接在手机上用一样 +""".format(GetApkChineseLabel(path))) + print(choose) + if choose == None or choose == 7: + return + try: + messagebox.showinfo(title="提示", message=requests.post("http://120.25.153.144/uengine-runner/app/check/add.php", {"Package": GetApkPackageName(path), "Type": choose}).text) + except: + messagebox.showerror(title="错误", message="无法连接服务器!无法进行评分!") + + def ShowMap(): + package = GetApkPackageName(path) + if package == None or package == "": + messagebox.showerror(title="错误", message="该应用安装包异常,无法查询相关数据!") + return + try: + data = json.loads(requests.get("http://120.25.153.144/uengine-runner/app/check/" + package +"/data.json").text) + print(data) + except: + messagebox.showinfo(title="错误", message="此程序暂时没有评分,欢迎您贡献第一个评分!") + return + index = numpy.arange(len(data)) + print(index) + chinese = GetApkChineseLabel(path) + fig = matplotlib.pylab.figure() + fig.canvas.set_window_title("“" + chinese + "”的用户评分(数据只供参考)") + fonts = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 用于支持中文显示,需要依赖fonts-noto-cjk + matplotlib.pylab.barh(index, data) + matplotlib.pylab.yticks(index, ["不良信息", "0分", "1分", "2分", "3分", "4分", "5分"], fontproperties=fonts) + matplotlib.pylab.xlabel("用户评分数", fontproperties=fonts) + matplotlib.pylab.ylabel("等级", fontproperties=fonts) + matplotlib.pylab.title("“" + chinese + "”的用户评分(数据只供参考)", fontproperties=fonts) + matplotlib.pylab.show() class AdbChangeUengineDisplaySize(): @@ -681,6 +851,7 @@ class AdbChangeUengineDisplaySize(): global displayY global displaySize message = tk.Toplevel() + message.iconphoto(False, tk.PhotoImage(file=iconPath)) messageFrame = ttk.Frame(message) displaySize = tk.StringVar() @@ -819,6 +990,7 @@ class AddNewUengineDesktopLink(): global activityName global packageName message = tk.Toplevel() + message.iconphoto(False, tk.PhotoImage(file=iconPath)) tipsLabel = ttk.Label(message, text=AddNewUengineDesktopLink.addTips) packageName = ttk.Combobox(message, width=30) @@ -974,7 +1146,7 @@ updateThingsString = "\n".join(information["Update"]) title = "{} {}".format(langFile[lang]["Main"]["MainWindow"]["Title"], version) updateTime = information["Time"] updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) desktop = programPath + "/UengineAndroidProgramList.desktop" desktopName = "UengineAndroidProgramList.desktop" contribute = "\n".join(information["Contribute"]) @@ -1006,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)})) + ########################### # 设置变量 @@ -1079,12 +1269,32 @@ def showhelp(): def ChgTips(): HelpStr.set(tips) LabText.config(wraplength=350) + def Egg(event): + try: + lists = json.loads(requests.get("http://120.25.153.144/uengine-runner/VersionList.json").text) + data = [] + for i in lists: + data.append(int(requests.get("http://120.25.153.144/uengine-runner/{}/data.txt".format(i)).text)) + except: + messagebox.showerror(title="错误", message="服务器出错!数据获取失败!") + return + fig = matplotlib.pylab.figure() + fig.canvas.set_window_title("“UEngine 运行器”安装数(数据只供参考)") + matplotlib.pylab.plot(lists, data) + index = numpy.arange(len(lists)) + fonts = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc') # 用于支持中文显示,需要依赖fonts-noto-cjk + matplotlib.pylab.xlabel("版本号", fontproperties=fonts) + matplotlib.pylab.ylabel("安装数", fontproperties=fonts) + + matplotlib.pylab.title("“UEngine 运行器”安装数(数据只供参考)", fontproperties=fonts) + matplotlib.pylab.show() BtnReadme = ttk.Button(FrmMenu, text="使用说明",width=14,command=ChgTips) BtnLog = ttk.Button(FrmMenu, text="更新内容",width=14,command=ChgLog) BtnZujian = ttk.Button(FrmMenu, text="程序依赖的组件",width=14,command=ChgDep) BtnGongxian = ttk.Button(FrmMenu, text="有贡献的开发者",width=14,command=ChgCon) BtnAbout = ttk.Button(FrmMenu, text="关于",width=14,command=ChgAbout) + BtnAbout.bind("", Egg) #layout @@ -1109,7 +1319,7 @@ def showhelp(): ########################### # 窗口创建 ########################### -win = tk.Tk() # 创建窗口 + # 设置窗口 style = ttkthemes.ThemedStyle(win) @@ -1134,13 +1344,10 @@ win.geometry(""+"+{:.0f}+{:.0f}".format(x, y)) FrmInstall = ttk.Frame(window) #FrmUninstall = ttk.Frame(window) LabApkPath = ttk.Label(window, text=langFile[lang]["Main"]["MainWindow"]["LabApkPath"]) -#LabUninstallPath = ttk.Label(window, text=langFile[lang]["Main"]["MainWindow"]["LabUninstallPath"]) ComboInstallPath = ttk.Combobox(window, width=50) -#ComboUninstallPath = ttk.Combobox(window, width=50) BtnFindApk = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnFindApk"], command=FindApk) BtnInstall = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnInstall"], command=Button3Install) BtnShowUengineApp = ttk.Button(window, text=langFile[lang]["Main"]["MainWindow"]["BtnShowUengineApp"], command=Button5Click) -#BtnUninstallApkBrowser = ttk.Button(FrmUninstall, text=langFile[lang]["Main"]["MainWindow"]["BtnUninstallApkBrowser"], command=BtnFindUninstallApkClk) BtnUninstall = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnUninstall"], command=ButtonClick8) Btngeticon = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["Btngeticon"], command=SaveIconToOtherPath) BtnSaveApk = ttk.Button(FrmInstall, text=langFile[lang]["Main"]["MainWindow"]["BtnSaveApk"], command=SaveInstallUengineApp) @@ -1168,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) # 设置“退出程序” @@ -1188,7 +1396,6 @@ adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Men adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Menu"][1]["Menu"][1], command=AdbStopServer) adbServer.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][1]["Menu"][1]["Menu"][2], command=AdbKillAdbProgress) -#uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][0], command=UengineSettingShow) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][1], command=OpenUengineDebBuilder) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][7], command=KeyboardToMouse) uengine.add_command(label=langFile[lang]["Main"]["MainWindow"]["Menu"][2]["Menu"][8], command=UengineCheckCpu) @@ -1202,7 +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=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) @@ -1249,7 +1458,6 @@ uengineUseAdb.configure(activebackground="dodgerblue") uengineData.configure(activebackground="dodgerblue") # 设置控件 -#ComboUninstallPath['value'] = fineUninstallApkHistory ComboInstallPath['value'] = findApkHistory try: if sys.argv[1] == "-i": diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-about b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-about index 440f333..ea82964 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-about +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-about @@ -49,7 +49,7 @@ updateThingsString = "\n".join(information["Update"]) title = "UEngine 运行器 {}".format(version) updateTime = information["Time"] updateThings = "{} 更新内容:\n{}\n更新时间:{}".format(version, updateThingsString, updateTime, time.strftime("%Y")) -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) desktop = "/opt/apps/uengine-runner/UengineAndroidProgramList.desktop" desktopName = "UengineAndroidProgramList.desktop" contribute = "\n".join(information["Contribute"]) diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug index 857c28e..84b7de7 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-runner-update-bug @@ -49,7 +49,7 @@ def OpenGithubIssues(): ########################### # 程序信息 ########################### -iconPath = "{}/icon.png".format(os.path.split(os.path.realpath(__file__))[0]) +iconPath = "{}/runner.png".format(os.path.split(os.path.realpath(__file__))[0]) programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string information = json.loads(readtxt(programPath + "/information.json")) version = information["Version"] diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb index 09b078d..4b23435 100755 --- a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/uengine-useadb @@ -4,7 +4,6 @@ # 更新时间:2021年08月30日 ######################################### import os -import shutil import sys import traceback import ttkthemes diff --git a/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/update-console.py b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/update-console.py new file mode 100755 index 0000000..a22ed64 --- /dev/null +++ b/new-deb-build/opt/apps/com.gitee.uengine.runner.spark/files/update-console.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +import os +import sys +import json +import shutil +import requests +import traceback + +# 读取文本文档 +def read_txt(path): + f = open(path,"r") # 设置文件对象 + str = f.read() # 获取内容 + f.close() # 关闭文本对象 + return str # 返回结果 + +def GetPackageUpdateInformation(): + global setting + global package + for i in allJson['Program']: + if i['Package'] == package: + return i + +try: + setting = json.loads(read_txt("{}/setting.json".format(os.path.split(os.path.realpath(__file__))[0]))) +except: + traceback.print_exc() + print("配置文件无法访问!") +package = setting['Package'] +nowVersion = setting['Version'] +try: + jsons = requests.get(setting["Url"]) +except: + traceback.print_exc() + print("服务器出现错误!") + sys.exit(1) +allJson = json.loads(jsons.text) +updateInformation = GetPackageUpdateInformation() +name = updateInformation['Name'] +newVersion = updateInformation['Version'] +print("更新程序:{}".format(name)) +print("最新版本:{}".format(newVersion)) +print("目前版本:{}".format(nowVersion)) +if nowVersion == newVersion: + print("目前是最新版本,无需更新!") + quit() +print("更新内容:") +print(updateInformation['New Things']) +choose = input("更新?[Y/N]") +if choose.upper() == "N": + quit() +if os.path.exists("/tmp/update-console-{}".format(package)): + shutil.rmtree("/tmp/update-console-{}".format(package)) +os.mkdir("/tmp/update-console-{}".format(package)) +if updateInformation["Linux App Url"][0] == None: + print("没有可用包源") + quit() +os.system("wget '{}' -P '/tmp/update-console-{}'".format(updateInformation["Linux App Url"][0], package)) +os.system("sudo dpkg -i /tmp/update-console-{}/*".format(package)) +os.system("sudo apt install -f -y") \ No newline at end of file diff --git a/new-deb-build/usr/share/icons/apps/256/runner.svg b/new-deb-build/usr/share/icons/apps/256/runner.svg new file mode 100755 index 0000000..e27c0f4 --- /dev/null +++ b/new-deb-build/usr/share/icons/apps/256/runner.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/setting-new.json b/setting-new.json deleted file mode 100755 index 8810d76..0000000 --- a/setting-new.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "Package": "com.gitee.uengine.runner.spark", - "Update": true, - "Version": "1.5.3", - "Url": "https://gfdgd-xi.github.io/update-program/data/UpdateInformation.json" -} \ No newline at end of file diff --git a/setting.json b/setting.json deleted file mode 100755 index 0df3de9..0000000 --- a/setting.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "Package": "spark-uengine-runner", - "Update": true, - "Version": "1.5.3", - "Url": "https://gfdgd-xi.github.io/update-program/data/UpdateInformation.json" - -} \ No newline at end of file diff --git a/simhei.ttf b/simhei.ttf deleted file mode 100755 index 659f47f..0000000 Binary files a/simhei.ttf and /dev/null differ diff --git a/spark-uengine-runner.deb b/spark-uengine-runner.deb index 77a06f3..f6c71ab 100755 Binary files a/spark-uengine-runner.deb and b/spark-uengine-runner.deb differ diff --git a/uengine-apk-builder b/uengine-apk-builder index 4d54ea5..912707f 100755 --- a/uengine-apk-builder +++ b/uengine-apk-builder @@ -67,7 +67,10 @@ def BuildApkDeb(apkPath): RunCommandShow("mkdir -pv '{}/usr/share/uengine/icons'".format(tempPath)) RunCommandShow("echo '写入文件,因为写入过程过于复杂,不显示写入命令……'") apkPackageName = GetApkPackageName(apkPath, False) - apkPackageNameNew = GetApkPackageName(apkPath, True) + if qianZhui.get(): + apkPackageNameNew = GetApkPackageName(apkPath, True) + else: + apkPackageNameNew = GetApkPackageName(apkPath, False) apkPackageVersion = GetApkVersion(apkPath) apkChineseLabel = GetApkChineseLabel(apkPath) apkActivityName = GetApkActivityName(apkPath) @@ -334,13 +337,6 @@ def SaveApkIcon(apkFilePath, iconSavePath)->"获取 apk 文件的图标": print("Error, show defult icon") shutil.copy(programPath + "/defult.png", iconSavePath) - -#def SaveApkIcon(apkFilePath, iconSavePath): -# zip = zipfile.ZipFile(apkFilePath) -# iconData = zip.read(GetApkIconInApk(apkFilePath)) -# with open(iconSavePath, 'w+b') as saveIconFile: -# saveIconFile.write(iconData) - def TextboxAddText1(message): global textbox1 textbox1.configure(state=tk.NORMAL) diff --git a/uengine-install (1).desktop b/uengine-install (1).desktop index e386dfa..057f2de 100755 --- a/uengine-install (1).desktop +++ b/uengine-install (1).desktop @@ -4,7 +4,7 @@ Encoding=UTF-8 Exec=uengine-runner -ci %F GenericName=APK Install(UEngine) GenericName[zh_CN]=APK 安装(UEngine) -Icon=/opt/apps/uengine-runner/icon.png +Icon=/opt/apps/uengine-runner/runner.svg MimeType=application/apk; Name=APK Install(UEngine) Name[zh_CN]=APK 安装(UEngine)