-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathuengine-installer
executable file
·157 lines (156 loc) · 7.14 KB
/
uengine-installer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#/bin/bash
# 判断安装条件
CheckEnv(){
# 检测是不是 Deepin
lsb_release -i | grep -i deepin
if [[ $? == 0 ]]; then
zenity --error --no-wrap '--text=您的系统无法安装 UEngine,原因:此脚本不支持 Deepin'
exit
fi
# 检测是不是 UOS
lsb_release -i | grep -i uos
if [[ $? == 0 ]]; then
zenity --error --no-wrap '--text=您的系统无法安装 UEngine,原因:此脚本不支持 UOS'
exit
fi
# 检测架构
if [[ `arch` != "x86_64" ]]; then
zenity --error --no-wrap '--text=您的系统无法安装 UEngine,原因:暂不支持非 X86 架构'
exit
fi
# 检测内核
sudo modprobe binder_linux
lsmod | grep -e binder_linux
if [[ $? != 0 ]] && [[ -f /dev/binder ]] && [[ -f /dev/binderfs ]]; then
zenity --error --no-wrap '--text=您的系统无法安装 UEngine,原因:当前内核不支持 binder 模块,请安装支持 binder 模块的 Linux 内核'
exit
fi
# 检测 dtk 版本
aptDtkVersion=`apt show libdtkcore5 | grep Version`
newestDtkVersion=`echo ${aptDtkVersion##*Version: }`
echo 当前 apt 源最新的 dtk 版本:$newestDtkVersion
#kernel=`uname -r`
python3 "${programPath}/CompareVersion.py" "${newestDtkVersion}" "5.5"
if [[ $? != 0 ]]; then
zenity --error --no-wrap "--text=提示:您当前的 dtk 版本过老,请更新 dtk 版本后再试(版本需要大于等于 5.5),可以从 http://dtk.gfdgdxi.top 获取编译好的 dtk"
exit
fi
#exit
}
programPath=$(cd $(dirname $0); pwd)
# 先判断是否符合安装条件
CheckEnv
echo 1
#exit
# 在 Shenmo 制作的脚本的基础上进行了修改,修复在 Wayland 下运行错误和无法安装程序的问题
# 建议在 Ubuntu 22.04 及以上版本安装,最好在此之前先安装星火应用商店并将系统和星火应用商店更新到最新版本
#is_tar_checked="0"
rm -rf /tmp/uengine
# 不再从网盘下载,直接从 Gitlink 拉取安装包
#until [ "$is_tar_checked" = "1" ];do
#echo "请拖入uengine.tar.xz并回车确认,可在 https://cowtransfer.com/s/44656ada129e42 下载获取。"
#read tar_path
mkdir -p /tmp/uengine
# 区分是下载 Root 镜像还是普通镜像
if [[ $1 == "SuperSU" ]]; then
aria2c -x 16 -s 16 -d /tmp/uengine -o uenginetar.xz https://sourceforge.net/projects/uengine-runner/files/UEngine/uengine2.1.2.2007-supersu.tar.xz/download
else
aria2c -x 16 -s 16 -d /tmp/uengine -o uenginetar.xz https://sourceforge.net/projects/uengine-runner/files/UEngine/uengine2.1.2.2010.tar.xz/download
fi
tar_path="/tmp/uengine/uenginetar.xz"
tar_path=`echo "$tar_path" | sed $'s/\'//g'`
# 忽略md5校验
#echo "路径为 $tar_path"
#tar_md5sum=`md5sum $tar_path`
#tar_md5sum=`echo ${tar_md5sum%%/*}`
# 忽略 md5 校验
#if [ "$tar_md5sum" = "5668b6bb54d28406e527989348126982" ];then
#is_tar_checked="1"
#else
#echo $tar_md5sum
#echo "md5完整性检查失败,请检查是否是这个文件"
#sleep 3
#reset
#fi
#done
#echo "完整性检查通过,开始部署。部署过程会需要root权限,完成后会要求重启。请注意不要在安装过程中安装或卸载其他软件"
echo "开始部署。部署过程会需要root权限,完成后会要求重启。请注意不要在安装过程中安装或卸载其他软件"
cd /tmp
tar -xf "$tar_path"
if [[ $? != 0 ]]; then
echo 解压错误,无法继续
zenity --error --no-wrap '--text=安装错误,原因:资源解压失败!'
exit 1
fi
# 移除包内旧版的run_daemon.sh(如果有的话)
aria2c -x 16 -s 16 -d /tmp -o run_daemon.sh http://uengine-runner.gfdgdxi.top/shell/run_daemon.sh
if [[ $? == 0 ]]; then
# 如果下载成功,就使用下载好的 run_daemon.sh
if [[ -f /tmp/run_daemon.sh ]]; then
rm -rfv /tmp/uengine/run_daemon.sh
mv -v /tmp/run_daemon.sh /tmp/uengine/run_daemon.sh
fi
fi
# 拷贝到每个用户目录
for username in $(ls /home)
do
echo /home/$username
sudo mkdir -p /home/$username/uengine
sudo mkdir -p /home/$username/uengine-launch
sudo cp /tmp/uengine/run_daemon.sh /home/$username/uengine-launch
# 赋予可执行权限
sudo chmod +x /home/$username/uengine-launch/run_daemon.sh
#cp /tmp/uengine/launch_uengine.sh $username/uengine-launch
done
# 单独拷贝一份到 /usr/bin 下以做到每次开机自动化调用
sudo cp /tmp/uengine/run_daemon.sh /usr/bin/uengine-loading-ubuntu
sudo chmod 755 /usr/bin/uengine-loading-ubuntu
#mkdir -p $HOME/uengine
#mkdir -p $HOME/uengine-launch
#cp /tmp/uengine/run_daemon.sh $HOME/uengine-launch
#cp /tmp/uengine/launch_uengine.sh $HOME/uengine-launch
cd /tmp/uengine
# 刷新 APT 依赖防止出现问题
sudo apt update
/tmp/uengine/install.sh
# 安装所需依赖
sudo apt install -y libkf5globalaccel5 libqt5multimedia5 libqt5sensors5 libegl1-mesa-dev
# 启动内核 binder 模块
sudo modprobe binder_linux
sudo mkdir /dev/binderfs
sudo mount -t binder binder /dev/binderfs
# 用于修复 UEngine 在 Ubuntu 无法安装 APK 的问题
sudo mkdir -p /var/lib/uengine
sudo ln -s /data/uengine/data/data/ /var/lib/uengine/data
# 拷贝快捷方式
cd `dirname $0`
sudo cp uengine-loading-ubuntu.desktop /usr/share/applications
sudo cp uengine-loading-ubuntu.desktop /etc/xdg/autostart
sudo chmod 755 /etc/xdg/autostart/uengine-loading-ubuntu.desktop
# 检测最后安装是否成功
which uengine
if [[ $? != 0 ]]; then
# 安装失败
sudo rm /usr/share/applications/uengine-loading-ubuntu.desktop
sudo rm /etc/xdg/autostart/uengine-loading-ubuntu.desktop
sudo rm /usr/bin/uengine-loading-ubuntu
for username in $(ls /home)
do
echo /home/$username
sudo rm /home/$username/uengine-launch/run_daemon.sh
done
zenity --error --no-wrap '--text=抱歉,UEngine 安装失败,已移除安装时进行的修改'
exit
fi
# 拷贝 binder loader
sudo cp "${programPath}/LoadingBinder/load.sh" /usr/bin/uengine-loading-binder -v
sudo chmod 777 -Rv /usr/bin/uengine-loading-binder
sudo cp "${programPath}/pkexec/com.deepin.pkexec.binder.loader.policy" /usr/share/polkit-1/actions/ -v
# echo "重启后在$HOME/uengine-launch执行launch_uengine.sh即可打开uengine守护进程。随后即可安装和使用安卓应用"
# 这里直接运行 run_daemon.sh,运行 launch_uengine.sh 好像不行
echo "现在可以在$HOME/uengine-launch执行run_daemon.sh或在启动器手动运行或执行命令uengine-loading-ubuntu即可打开uengine守护进程。随后即可安装和使用安卓应用。"
echo "你需要在每次启动安卓应用之前打开这个脚本。打开后可安全关闭。"
echo "不过一般情况下会自动开启,无需手动启动。"
echo "推荐重启后再使用此 Android 环境。"
zenity --info --no-wrap "--text=安装完成!\n现在可以在$HOME/uengine-launch执行run_daemon.sh或在启动器手动运行\n或执行命令uengine-loading-ubuntu即可打开uengine守护进程。随后即可安装和使用安卓应用。\n你需要在每次启动安卓应用之前打开这个脚本。打开后可安全关闭。\n不过一般情况下会自动开启,无需手动启动。\n推荐重启后再使用此 Android 环境。"
read