From 60f838144d0ab7097747e818331439d9ff19a1c7 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Sat, 20 Jul 2024 22:24:39 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5termux=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Makefile                                      |  25 +++-
 ShellList/change-libc-path.py                 |   7 +-
 deb-termux/DEBIAN/control                     |  49 ++++++++
 deb-termux/DEBIAN/postinst                    | 111 ++++++++++++++++++
 deb-termux/DEBIAN/postrm                      |  54 +++++++++
 .../usr/lib/python3/dist-packages/WineRunner  |   1 +
 .../spark-deepin-wine-package-builder.desktop |  12 ++
 ...-deepin-wine-packager-easy-builder.desktop |  12 ++
 ...k-deepin-wine-packager-with-script.desktop |  10 ++
 ...park-deepin-wine-runner-control-vm.desktop |  10 ++
 .../spark-deepin-wine-runner-start-vm.desktop |   9 ++
 .../spark-deepin-wine-runner.desktop          |  11 ++
 ...n.pkexec.deepin-wine-venturi-setter.policy |  21 ++++
 .../actions/com.deepin.pkexec.mount.policy    |  21 ++++
 .../actions/com.deepin.pkexec.umount.policy   |  21 ++++
 key/key-add-gui.py                            |   9 +-
 key/keyboard-add-gui.py                       |   7 +-
 mainwindow.py                                 |  11 +-
 wine/installwine                              |   6 +
 19 files changed, 393 insertions(+), 14 deletions(-)
 create mode 100755 deb-termux/DEBIAN/control
 create mode 100755 deb-termux/DEBIAN/postinst
 create mode 100755 deb-termux/DEBIAN/postrm
 create mode 120000 deb-termux/usr/lib/python3/dist-packages/WineRunner
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-package-builder.desktop
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-packager-easy-builder.desktop
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-packager-with-script.desktop
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
 create mode 100644 deb-termux/usr/share/applications/spark-deepin-wine-runner.desktop
 create mode 100755 deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.deepin-wine-venturi-setter.policy
 create mode 100755 deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.mount.policy
 create mode 100755 deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.umount.policy

diff --git a/Makefile b/Makefile
index b9e9299..e1e9f4f 100755
--- a/Makefile
+++ b/Makefile
@@ -34,7 +34,7 @@ package-pkg:
 	sudo debtap -Q spark-deepin-wine-runner.deb
 	sudo debtap -Q spark-deepin-wine-runner-ace.deb
 
-package-deb:
+copy-files:
 	#cd VM-source && qmake
 	#cd VM-source && make
 	#cd wine && make
@@ -177,16 +177,33 @@ package-deb:
 	bash builddeb/ChangeDebVersion.sh
 	chmod -Rv 777 /tmp/spark-deepin-wine-runner-builder/opt
 	chmod -Rv 777 /tmp/spark-deepin-wine-runner-builder/usr
-	
-	dpkg-deb -Z xz -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
+
+remove-copy-files:
 	sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
+
+package-deb:
+	make copy-files -j$(nproc)
+	dpkg-deb -Z xz -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner.deb
+	make remove-copy-files -j$(nproc)
 	# 构建 ace 包
 	cp -rv deb-ace /tmp/spark-deepin-wine-runner-builder
 	cp -rv spark-deepin-wine-runner.deb /tmp/spark-deepin-wine-runner-builder/opt/apps/spark-deepin-wine-runner-ace
 	bash builddeb/ChangeDebVersion.sh
 	sudo chown -R root:root /tmp/spark-deepin-wine-runner-builder
 	dpkg-deb -Z xz -z 0 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner-ace.deb
-	sudo rm -rfv /tmp/spark-deepin-wine-runner-builder
+	make remove-copy-files -j$(nproc)
+
+package-termux-deb:
+	make copy-files -j$(nproc)
+	# 替换 DEBIAN
+	sudo rm -rf /tmp/spark-deepin-wine-runner-builder/DEBIAN
+	sudo mkdir -pv /tmp/spark-deepin-wine-runner-builder/data/data/com.termux/files/
+	sudo mv /tmp/spark-deepin-wine-runner-builder/usr/ /tmp/spark-deepin-wine-runner-builder/data/data/com.termux/files/ -v
+	sudo mv /tmp/spark-deepin-wine-runner-builder/opt /tmp/spark-deepin-wine-runner-builder/data/data/com.termux/files/usr/opt -v
+	sudo cp deb-termux/DEBIAN /tmp/spark-deepin-wine-runner-builder/DEBIAN -rv
+	sudo bash builddeb/ChangeDebVersion.sh
+	dpkg-deb -Z xz -z 9 -b /tmp/spark-deepin-wine-runner-builder spark-deepin-wine-runner-termux.deb
+	make remove-copy-files -j$(nproc)
 	
 install:
 	make build -j$(nproc)
diff --git a/ShellList/change-libc-path.py b/ShellList/change-libc-path.py
index 3cde517..9a54fea 100644
--- a/ShellList/change-libc-path.py
+++ b/ShellList/change-libc-path.py
@@ -5,9 +5,12 @@ import binascii
 def Replace(fileName: str):
     with open(f"{fileName}", "rb") as file:
         data = file.read()
-
-    data = data.replace(bytes("/lib64/ld-linux-x86-64.so.2".encode()), 
+    if (sys.argv[2] == "x86_64"):
+        data = data.replace(bytes("/lib64/ld-linux-x86-64.so.2".encode()), 
              bytes("/data/data/com.termux/gfdgd".encode()))  # 替换与被替换需要保证字符数量相同
+    if (sys.argv[2] == "aarch64"):
+        data = data.replace(bytes("/lib/ld-linux-aarch64.so.1".encode()), 
+             bytes("/data/data/com.termux/gfdg".encode()))  # 替换与被替换需要保证字符数量相同
     with open(f"{fileName}", "wb") as file:
         file.write(data)
 
diff --git a/deb-termux/DEBIAN/control b/deb-termux/DEBIAN/control
new file mode 100755
index 0000000..d496912
--- /dev/null
+++ b/deb-termux/DEBIAN/control
@@ -0,0 +1,49 @@
+Package: spark-deepin-wine-runner-termux
+Version: @@VERSION@@
+Maintainer: gfdgd xi <3025613752@qq.com>
+Homepage: https://gitee.com/gfdgd-xi/deep-wine-runner
+Architecture: all
+Severity: serious
+Certainty: possible
+Check: binaries
+Type: binary, udeb
+Priority: optional
+Depends: python3, 
+ python3-pil | pillow | python-pillow, 
+ python3-pil.imagetk | pillow | python-tkinter, 
+ aria2, 
+ curl, 
+ unrar | unrar-free , 
+ unzip, 
+ python3-pyqt5 | pyqt5, 
+ xfce4-terminal | deepin-terminal-gtk | deepin-terminal | mate-terminal | gnome-terminal, 
+ p7zip-full | p7zip-legacy | p7zip, 
+ zenity, 
+ tree, 
+ dpkg, 
+ fakeroot,
+ which
+Recommends: winbind, 
+ wimtools | wimlib, 
+ python3-pyquery, 
+ python3-pyqt5.qtwebengine | pyqtwebengine, 
+ binfmt-support, 
+ libc6:i386, 
+ libc6:armhf, 
+ libwine, 
+ qemu-system, 
+ qemu-full, 
+ qemu,
+ alien, 
+ spark-deepin-wine-runner-qemu-system-extra, 
+ deepin-wine8-stable | spark-wine | spark-wine9 | spark-wine9-wow | spark-wine8 | spark-wine8-wow | spark-wine7-devel | deepin-wine6-stable | deepin-wine5-stable | deepin-wine5 | deepin-wine | wine, 
+ spark-dwine-helper | store.spark-app.spark-dwine-helper | deepin-wine-helper | com.wine-helper.deepin
+Section: utils
+Conflicts: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
+Replaces: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
+Provides: spark.deepin-venturi-setter, spark-deepin-wine5-application-packer, spark-deepin-wine-runner-52
+Installed-Size: @@SIZE@@
+Description: Wine运行器是一个能让Linux用户更加方便地运行Windows应用的程序。原版的 Wine 只能使用命令操作,且安装过程较为繁琐,对小白不友好。于是该运行器为了解决该痛点,内置了对Wine图形化的支持、Wine 安装器、微型应用商店、各种Wine工具、自制的Wine程序打包器、运行库安装工具等。
+ 它同时还内置了基于Qemu/VirtualBox制作的、专供小白使用的Windows虚拟机安装工具,可以做到只需下载系统镜像并点击安装即可,无需考虑虚拟机的安装、创建、分区等操作,也能在非 X86 架构安装 X86 架构的 Windows 操作系统(但是效率较低,可以运行些老系统)。
+ 而且对于部分 Wine 应用适配者来说,提供了图形化的打包工具,以及提供了一些常用工具以及运行库的安装方式,以及能安装多种不同的 Wine 以测试效果,能极大提升适配效率。
+ 且对于 Deepin23 用户做了特别优化,以便能在缺少 i386 运行库的情况下运行 Wine32。同时也为非 X86 架构用户提供了 Box86/64、Qemu User 的安装方式
diff --git a/deb-termux/DEBIAN/postinst b/deb-termux/DEBIAN/postinst
new file mode 100755
index 0000000..d987787
--- /dev/null
+++ b/deb-termux/DEBIAN/postinst
@@ -0,0 +1,111 @@
+#!/bin/bash
+# 使用系统默认的 sh 运行
+#################################################################################################################
+# 作者:gfdgd xi
+# 版本:3.0.0
+# 更新时间:2022年10月02日
+# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
+# 基于 sh
+#################################################################################################################
+# 非强制性的必应组件,所以成功不成功都行
+# 程序版本号
+version=3.4.1
+echo 安装组件
+#python3 -m pip install --upgrade pyqt5 --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+#python3 -m pip install --upgrade PyQtWebEngine --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+python3 -m pip install --upgrade requests --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
+python3 -m pip install --upgrade psutil --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
+# termux 在使用 pip 安装 dbus-python 时会卡住
+# python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true  
+python3 -m pip install --upgrade pyperclip --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
+python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
+python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages > /dev/null 2>&1 | true
+# 用于解决老版本 pip 没 --break-system-packages 参数的问题
+python3 -m pip install --upgrade pynput --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+python3 -m pip install --upgrade xpinyin --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+python3 -m pip install --upgrade requests --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+python3 -m pip install --upgrade psutil --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+# termux 在使用 pip 安装 dbus-python 时会卡住
+# python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+python3 -m pip install --upgrade pyperclip --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple > /dev/null 2>&1 | true
+# 修改 box86/64 国内源错误数据
+if [ -f /etc/apt/sources.list.d/box64.list ]; then
+	sed -i 's/http:\/\/seafile.jyx2048.com:2345/http:\/\/gfdgdxi.v5.idcfengye.com/g' /etc/apt/sources.list.d/box64.list
+fi
+if [ -f /etc/apt/sources.list.d/box86.list ]; then
+	sed -i 's/http:\/\/seafile.jyx2048.com:2345/http:\/\/gfdgdxi.v5.idcfengye.com/g' /etc/apt/sources.list.d/box86.list
+fi
+echo 执行完成
+echo 移除旧组件
+if [ -d /opt/apps/deepin-wine-runner/arm-package ]; then
+	rm -rf /opt/apps/deepin-wine-runner/arm-package
+fi
+if [ -d /opt/apps/deepin-wine-runner/dlls-arm ]; then
+	rm -rf /opt/apps/deepin-wine-runner/dlls-arm
+fi
+if [ -d /opt/apps/deepin-wine-runner/exa ]; then
+	rm -rf /opt/apps/deepin-wine-runner/exa
+fi
+if [ -d /opt/apps/deepin-wine-runner/dxvk ]; then
+	rm -rf /opt/apps/deepin-wine-runner/dxvk
+fi
+echo 移除完成
+# 如果为非 X86 PC,可以删除掉一些无用组件(主要是用不了)
+if [[ `arch` != "x86_64" ]]; then
+	echo 非X86架构,删除对非X86架构无用的组件
+	# 删除虚拟机功能
+	#rm -rf /opt/apps/deepin-wine-runner/StartVM.sh
+	#rm -rf /opt/apps/deepin-wine-runner/RunVM.sh
+	#rm -rf /opt/apps/deepin-wine-runner/VM
+	#rm -rf /usr/share/applications/spark-deepin-wine-runner-control-vm.desktop
+	#rm -rf /usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
+	# 删除安装 wine 功能
+	rm -rf "/opt/apps/deepin-wine-runner/wine install"
+	# 这个注释掉的理论可用,不移除
+	#rm -rf "/opt/apps/deepin-wine-runner/wine"
+	rm -rf /usr/bin/deepin-wine-runner-wine-installer
+	rm -rf /usr/bin/deepin-wine-runner-wine-install-deepin23
+	rm -rf /usr/bin/deepin-wine-runner-wine-install
+	rm -rf /usr/bin/deepin-wine-runner-winehq-install
+	rm -rf /opt/apps/deepin-wine-runner/InstallWineOnDeepin23.py
+	rm -rf /opt/apps/deepin-wine-runner/sparkstore.list
+	rm -rf /opt/apps/deepin-wine-runner/AllInstall.py
+	rm -rf /opt/apps/deepin-wine-runner/InstallNewWineHQ.sh
+fi
+# 处理 VM 工具
+vmPath=/opt/apps/deepin-wine-runner/VM/VirtualMachine-`dpkg --print-architecture`
+echo 当前架构为:`dpkg --print-architecture`
+if [ -f $vmPath ]; then
+	echo 虚拟机工具有该架构的预编译文件
+	# 移除辅助文件
+	rm -f /opt/apps/deepin-wine-runner/VM/VirtualMachine
+	# 移动
+	mv $vmPath /opt/apps/deepin-wine-runner/VM/VirtualMachine
+	rm -f /opt/apps/deepin-wine-runner/VM/VirtualMachine-*
+else
+	echo 虚拟机工具无该架构的预编译文件
+	rm -f /opt/apps/deepin-wine-runner/VM/VirtualMachine-*
+fi
+echo 处理完成!
+# 修复 3.3.0.1 Box86 源挂了的问题
+if [ -f /etc/apt/sources.list.d/box86.list ]; then
+	bash -c "echo deb http://seafile.jyx2048.com:2345/spark-deepin-wine-runner/data/box86-debs/debian ./ > /etc/apt/sources.list.d/box86.list"
+fi
+# Gitlink 源挂了
+# 到时候切换 gpg 源会方便很多
+#if [ -r /etc/apt/sources.list.d/better-dde.list ]; then
+#	if [ -d /usr/share/deepin-installer ]; then
+#		# 用于修复 Deepin Community Live CD Install 版签名过期的问题
+#		wget -P /tmp/gfdgd-xi-sources https://code.gitlink.org.cn/gfdgd_xi/gfdgd-xi-apt-mirrors/raw/branch/master/gpg.asc
+#		rm -rfv /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg | true
+#		cp -v /tmp/gfdgd-xi-sources/gpg.asc.gpg /etc/apt/trusted.gpg.d/gfdgdxi-list.gpg
+#   	# 用于修复 2022.11.25 Better DDE 导致的 Deepin Community Live CD Install 版问题
+#		# 移除 Better DDE 源
+#    	rm -rfv /etc/apt/sources.list.d/better-dde.list
+#		apt update > /dev/null 2>&1 | true
+#	fi
+#fi
+# 设置目录权限,让用户可读可写,方便后续删除组件
+chmod 777 -R /opt/apps/deepin-wine-runner > /dev/null 2>&1 | true
+# 向服务器返回安装数加1(不显示内容且忽略错误)
+python3 /opt/apps/deepin-wine-runner/Download.py $version > /dev/null 2>&1 | true
diff --git a/deb-termux/DEBIAN/postrm b/deb-termux/DEBIAN/postrm
new file mode 100755
index 0000000..6261d1c
--- /dev/null
+++ b/deb-termux/DEBIAN/postrm
@@ -0,0 +1,54 @@
+#!/bin/bash
+# 使用系统默认的 sh 运行
+#################################################################################################################
+# 作者:gfdgd xi
+# 版本:2.2.0
+# 更新时间:2022年09月24日
+# 感谢:感谢 wine、deepin-wine 以及星火团队,提供了 wine、deepin-wine、spark-wine-devel 给大家使用,让我能做这个程序
+# 基于 sh
+#################################################################################################################
+# 删除软件残留,简单粗暴一点直接全部删掉,防止出现警告
+# 加判断是为了怕 reinstall 后程序就再也打不开了(除非卸载后重新安装)
+if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
+	rm -rf /opt/apps/deepin-wine-runner/
+fi
+# 删除软件缓存(留着也没什么用了)
+# 缓存目录:~/.cache/deepin-wine-runner
+if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
+
+	echo "清理程序缓存"
+
+	for username in $(ls /home); do
+		echo /home/$username
+		if [ -d "/home/$username/.cache/deepin-wine-runner/" ]; then
+			rm -rf "/home/$username/.cache/deepin-wine-runner/"
+		fi
+	done
+	# 清理 root 用户的缓存文件
+	echo /root
+	if [ -d "/root/.cache/deepin-wine-runner/" ]; then
+		rm -rf "/root/.cache/deepin-wine-runner/"
+	fi
+else
+	echo "非卸载,跳过清理"
+fi
+# 删除软件配置文件(只限“purge”)
+# 配置目录:~/.config/deepin-wine-runner
+if [ "$1" = "purge" ]; then
+
+	echo "清理程序配置文件"
+
+	for username in $(ls /home); do
+		echo /home/$username
+		if [ -d "/home/$username/.config/deepin-wine-runner/" ]; then
+			rm -rf "/home/$username/.config/deepin-wine-runner/"
+		fi
+	done
+	# 清理 root 用户的配置文件
+	echo /root
+	if [ -d "/root/.config/deepin-wine-runner/" ]; then
+		rm -rf "/root/.config/deepin-wine-runner/"
+	fi
+else
+	echo "非 purge,跳过清理"
+fi
diff --git a/deb-termux/usr/lib/python3/dist-packages/WineRunner b/deb-termux/usr/lib/python3/dist-packages/WineRunner
new file mode 120000
index 0000000..de01466
--- /dev/null
+++ b/deb-termux/usr/lib/python3/dist-packages/WineRunner
@@ -0,0 +1 @@
+/opt/apps/deepin-wine-runner/API/Python/
\ No newline at end of file
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-package-builder.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-package-builder.desktop
new file mode 100644
index 0000000..cb4fe1a
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-package-builder.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=/usr/bin/deepin-wine-package-builder "~/.wine" %F
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Wine Package Builder
+Name[zh]=Wine 打包器
+Terminal=false
+StartupNotify=true
+NoDisplay=true
+Keywords=exe;scr;
+MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-packager-easy-builder.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-packager-easy-builder.desktop
new file mode 100644
index 0000000..4d5909b
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-packager-easy-builder.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=/usr/bin/deepin-wine-packager-easy-builder %F
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Wine Package Builder
+Name[zh]=Wine 简易打包器
+Terminal=false
+StartupNotify=true
+NoDisplay=true
+Keywords=exe;scr;
+MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-packager-with-script.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-packager-with-script.desktop
new file mode 100644
index 0000000..e67f51c
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-packager-with-script.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=/usr/bin/deepin-wine-packager-with-script
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Wine Package Builder For UOS
+NoDisplay=true
+Name[zh]=Wine 打包器(基于活动脚本)
+Terminal=false
+StartupNotify=true
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop
new file mode 100644
index 0000000..35eacdc
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-runner-control-vm.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=/opt/apps/deepin-wine-runner/RunVM.sh %F
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Setting VirtualMachine
+Name[zh]=设置 Windows 虚拟机
+NoDisplay=true
+Terminal=false
+StartupNotify=true
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
new file mode 100644
index 0000000..1271f09
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-runner-start-vm.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;
+Exec=/opt/apps/deepin-wine-runner/StartVM.sh %F
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Start Windows VirtualMachine
+Name[zh]=开启 Windows 虚拟机
+Terminal=false
+StartupNotify=true
diff --git a/deb-termux/usr/share/applications/spark-deepin-wine-runner.desktop b/deb-termux/usr/share/applications/spark-deepin-wine-runner.desktop
new file mode 100644
index 0000000..af220ee
--- /dev/null
+++ b/deb-termux/usr/share/applications/spark-deepin-wine-runner.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Application
+X-Categories=System;Wine;
+Exec=/usr/bin/deepin-wine-runner %F
+Icon=/opt/apps/deepin-wine-runner/deepin-wine-runner.svg
+Name=Wine Runner
+Name[zh]=Wine 运行器
+Terminal=false
+StartupNotify=true
+Keywords=exe;scr;
+MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;
diff --git a/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.deepin-wine-venturi-setter.policy b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.deepin-wine-venturi-setter.policy
new file mode 100755
index 0000000..88fdac0
--- /dev/null
+++ b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.deepin-wine-venturi-setter.policy
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+  <vendor>gfdgd xi</vendor>
+  <vendor_url>https://gitee.com/gfdgd-xi/deep-wine-runner/</vendor_url>
+  <action id="com.deepin.pkexec.deepin-wine-venturi-setter">
+    <message>Authentication is required to change run_v3 file manager</message>
+    <message xml:lang="zh_CN">修改 run_v3 文管需要输入密码</message>
+    <icon_name>preferences-system</icon_name>
+    <defaults>
+      <allow_any>no</allow_any>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
+    </defaults>
+    <annotate key="org.freedesktop.policykit.exec.path">/opt/apps/deepin-wine-runner/deepin-wine-venturi-setter.py</annotate>
+    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
+  </action>
+
+</policyconfig>
\ No newline at end of file
diff --git a/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.mount.policy b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.mount.policy
new file mode 100755
index 0000000..781bb5b
--- /dev/null
+++ b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.mount.policy
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+  <vendor>gfdgd xi</vendor>
+  <vendor_url>https://gitee.com/gfdgd-xi/deep-wine-runner/</vendor_url>
+  <action id="com.deepin.pkexec.mount">
+    <message>Authentication is required to mount file</message>
+    <message xml:lang="zh_CN">挂载文件需要输入密码</message>
+    <icon_name>preferences-system</icon_name>
+    <defaults>
+      <allow_any>no</allow_any>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
+    </defaults>
+    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/mount</annotate>
+    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
+  </action>
+
+</policyconfig>
\ No newline at end of file
diff --git a/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.umount.policy b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.umount.policy
new file mode 100755
index 0000000..3112069
--- /dev/null
+++ b/deb-termux/usr/share/polkit-1/actions/com.deepin.pkexec.umount.policy
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
+<policyconfig>
+  <vendor>gfdgd xi</vendor>
+  <vendor_url>https://gitee.com/gfdgd-xi/deep-wine-runner/</vendor_url>
+  <action id="com.deepin.pkexec.umount">
+    <message>Authentication is required to unmount file</message>
+    <message xml:lang="zh_CN">卸载文件需要输入密码</message>
+    <icon_name>preferences-system</icon_name>
+    <defaults>
+      <allow_any>no</allow_any>
+      <allow_inactive>no</allow_inactive>
+      <allow_active>auth_admin_keep</allow_active>
+    </defaults>
+    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/umount</annotate>
+    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
+  </action>
+
+</policyconfig>
\ No newline at end of file
diff --git a/key/key-add-gui.py b/key/key-add-gui.py
index 13fe039..1054bae 100755
--- a/key/key-add-gui.py
+++ b/key/key-add-gui.py
@@ -8,7 +8,12 @@ sys.path.append(f"{programPath}/..")
 import os
 import sys
 import json
-import dbus
+try:
+    import dbus
+except:
+    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages")
+    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple")
+    import dbus
 import threading
 from UI.KeyAddGui import *
 import PyQt5.QtWidgets as QtWidgets
@@ -106,4 +111,4 @@ if __name__ == "__main__":
     window.show()
     threading.Thread(target=Check.CheckThreading).start()
     Clear()
-    sys.exit(app.exec_())
\ No newline at end of file
+    sys.exit(app.exec_())
diff --git a/key/keyboard-add-gui.py b/key/keyboard-add-gui.py
index a530cf0..e137d43 100755
--- a/key/keyboard-add-gui.py
+++ b/key/keyboard-add-gui.py
@@ -6,7 +6,12 @@ sys.path.append(f"{programPath}/..")
 
 import os
 import sys
-import dbus
+try:
+    import dbus
+except:
+    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple --break-system-packages")
+    os.system("python3 -m pip install --upgrade dbus-python --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple")
+    import dbus
 import json
 import threading
 import traceback
diff --git a/mainwindow.py b/mainwindow.py
index a54ccf2..0000f39 100755
--- a/mainwindow.py
+++ b/mainwindow.py
@@ -2395,11 +2395,12 @@ def CheckWine():
         except:
             traceback.print_exc()
         try:
-            for i in os.listdir(f"{get_home()}/.deepinwine/"):
-                for j in wine7zUse:
-                    if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/{j}"):
-                        wine[f"{get_home()}/.deepinwine/{i}/bin/{j}"] = f"{get_home()}/.deepinwine/{i}/bin/{j}"
-                        canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/{j}")
+            if os.path.exists(f"{get_home()}/.deepinwine/"):
+                for i in os.listdir(f"{get_home()}/.deepinwine/"):
+                    for j in wine7zUse:
+                        if os.path.exists(f"{get_home()}/.deepinwine/{i}/bin/{j}"):
+                            wine[f"{get_home()}/.deepinwine/{i}/bin/{j}"] = f"{get_home()}/.deepinwine/{i}/bin/{j}"
+                            canUseWine.append(f"{get_home()}/.deepinwine/{i}/bin/{j}")
                 
         except:
             traceback.print_exc()
diff --git a/wine/installwine b/wine/installwine
index d0bcb58..705f05d 100755
--- a/wine/installwine
+++ b/wine/installwine
@@ -208,6 +208,8 @@ class GetInfo():
     is32kPageSize = (pageSize == "32384")
     is64kPageSize = (pageSize == "64768")
     isLoongarch = (arch == "loong64") or (arch == "loongarch64")
+    isProot = os.path.exists("/storage")
+    isAndroid = os.path.exists("/data")
     glibcVersion = "2.28"
 
     def __init__(self):
@@ -315,6 +317,10 @@ class GetInfo():
             result = True
         if (data == "loong64-kernel-64k-pagesize" and self.isLoongarch and self.is64kPageSize):
             result = True
+        if (data == "proot" and self.isProot):
+            result = True
+        if (data == "android" and self.isAndroid):
+            result = True
         if (self.compareVersion(self.glibcVersion, data) == 1):
             result = True
         if (os.path.exists(data)):