Uninstaller: improve system mode uninstallation

merge-requests/23/head
Christopher Roy Bratusek 6 years ago
parent 13e16068d3
commit 8f48a45090

@ -40,6 +40,36 @@ is_mounted() {
return $? return $?
} }
set_perm () {
chown ${2}:${3} ${1} || error "failed change owner for ${1}"
chmod ${4} ${1} || error "failed to change mode for ${1}"
if [ ! -z "${5}" ]; then
chcon ${5} ${1} 2>/dev/null
else chcon 'u:object_r:system_file:s0' ${1} 2>/dev/null
fi
}
set_perm_recursive() {
find ${1} -type d 2>/dev/null | while read dir; do
set_perm ${dir} ${2} ${3} ${4} ${6}
done
find ${1} -type f 2>/dev/null | while read file; do
set_perm ${file} ${2} ${3} ${5} ${6}
done
}
set_perm_data () {
if [ "${1}" = "-r" ]; then
echo " perm: data [recursive] {${2}}"
set_perm_recursive ${2} 0 0 0755 0644
else
echo " perm: data [single] {${1}}"
set_perm ${1} 0 0 0644
fi
}
setup_busybox () { setup_busybox () {
mkdir /dev/tmp mkdir /dev/tmp
@ -179,35 +209,36 @@ config_locations="/sdcard /external_sd /data $(dirname ${ZIP}))"
config_files=".nanodroid-setup .nanodroid-apps .nanodroid-overlay" config_files=".nanodroid-setup .nanodroid-apps .nanodroid-overlay"
restore_apps () { restore_apps () {
if [ -d /sdcard/nanodroid_backups/app/ ]; then backup_path="/sdcard/nanodroid_backups/$(grep_prop ro.build.flavor)_$(grep_prop ro.build.id)"
for app in /sdcard/nanodroid_backups/app/*; do
if [ -d ${backup_path}/app/ ]; then
for app in ${backup_path}/app/*; do
if [ -d /system/app/${app} ]; then if [ -d /system/app/${app} ]; then
ui_print " << removing backup: app:${app}" ui_print " << removing backup: app:${app}"
rm -rf /sdcard/nanodroid_backups/app/${app} rm -rf "${backup_path}/app/${app}"
else else
ui_print " << restoring: app:${app}" ui_print " << restoring: app:${app}"
mv /sdcard/nanodroid_backups/app/${app} /system/app/ mv "${backup_path}/app/${app}" /system/app/
chown -R root:root /system/app/${app} set_perm_data -r /system/app/${app}
fi fi
done done
rm -rf /sdcard/nanodroid_backups/app/
fi fi
if [ -d /sdcard/nanodroid_backups/priv-app/ ]; then if [ -d ${backup_path}/priv-app/ ]; then
for app in /sdcard/nanodroid_backups/priv-app/*; do for app in ${backup_path}/priv-app/*; do
if [ -d /system/priv-app/${app} ]; then if [ -d /system/priv-app/${app} ]; then
ui_print " << removing backup: priv-app:${app}" ui_print " << removing backup: priv-app:${app}"
rm -rf /sdcard/nanodroid_backups/priv-app/${app} rm -rf "${backup_path}/priv-app/${app}"
else else
ui_print " << restoring: priv-app:${app}" ui_print " << restoring: priv-app:${app}"
mv /sdcard/nanodroid_backups/priv-app/${app} /system/priv-app/ mv "${backup_path}/priv-app/${app}" /system/priv-app/
chown -R root:root /system/priv-app/${app} set_perm_data -r /system/priv-app/${app}
fi fi
done done
rm -rf /sdcard/nanodroid_backups/priv-app/
fi fi
rm -rf "${backup_path}"
} }
system_mode_uninstall () { system_mode_uninstall () {
@ -243,11 +274,11 @@ patcher_uninstall () {
if [ -f /sdcard/nanodroid_backups/${services_name} ]; then if [ -f /sdcard/nanodroid_backups/${services_name} ]; then
ui_print " << restoring: unpatched services.jar" ui_print " << restoring: unpatched services.jar"
mv "/sdcard/nanodroid_backups/${services_name}" /system/framework/services.jar mv "/sdcard/nanodroid_backups/${services_name}" /system/framework/services.jar
chown root:root /system/framework/services.jar set_perm_data /system/framework/services.jar
elif [ -f /sdcard/nanodroid_backups/services.jar ]; then elif [ -f /sdcard/nanodroid_backups/services.jar ]; then
ui_print " << restoring: unpatched services.jar" ui_print " << restoring: unpatched services.jar"
mv /sdcard/nanodroid_backups/services.jar /system/framework/services.jar mv /sdcard/nanodroid_backups/services.jar /system/framework/services.jar
chown root:root /system/framework/services.jar set_perm_data /system/framework/services.jar
else ui_print " << can't restore unpatched services.jar" else ui_print " << can't restore unpatched services.jar"
fi fi
fi fi

Loading…
Cancel
Save