diff --git a/META-INF/com/google/android/update-binary b/META-INF/com/google/android/update-binary index 08bd14f06..112eb2823 100644 --- a/META-INF/com/google/android/update-binary +++ b/META-INF/com/google/android/update-binary @@ -1,10 +1,151 @@ #!/sbin/sh -# This is a dummy file that should be replaced with a proper installer script -# If you are creating a module locally for personal usage or testing, -# download the script in the following URL: -# https://github.com/topjohnwu/Magisk/blob/master/scripts/module_installer.sh -# And replace this script with the downloaded script +TMPDIR=/dev/tmp +MOUNTPATH=/dev/magisk_img -# Error, this script should always be replaced -exit 1 +# Default permissions +umask 022 + +# Initial cleanup +rm -rf $TMPDIR 2>/dev/null +mkdir -p $TMPDIR + +# echo before loading util_functions +ui_print() { echo "$1"; } + +require_new_magisk() { + ui_print "***********************************" + ui_print " Please install the latest Magisk! " + ui_print "***********************************" + exit 1 +} + +imageless_magisk() { + [ $MAGISK_VER_CODE -gt 18100 ] + return $? +} + +########################################################################################## +# Environment +########################################################################################## + +OUTFD=$2 +ZIPFILE=$3 + +mount /data 2>/dev/null + +# Load utility functions +if [ -f /data/adb/magisk/util_functions.sh ]; then + . /data/adb/magisk/util_functions.sh + NVBASE=/data/adb +else + require_new_magisk +fi + +# Preperation for flashable zips +setup_flashable + +# Mount partitions +mount_partitions + +# Detect version and architecture +api_level_arch_detect + +# Setup busybox and binaries +$BOOTMODE && boot_actions || recovery_actions + +########################################################################################## +# Preparation +########################################################################################## + +# Extract common files +unzip -oj "$ZIPFILE" module.prop install.sh uninstall.sh 'common/*' -d $TMPDIR >&2 + +[ ! -f $TMPDIR/install.sh ] && abort "! Unable to extract zip file!" +# Load install script +. $TMPDIR/install.sh + +if imageless_magisk; then + $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules + MODULEROOT=$NVBASE/$MODDIRNAME +else + $BOOTMODE && IMGNAME=magisk_merge.img || IMGNAME=magisk.img + IMG=$NVBASE/$IMGNAME + request_zip_size_check "$ZIPFILE" + mount_magisk_img + MODULEROOT=$MOUNTPATH +fi + +MODID=`grep_prop id $TMPDIR/module.prop` +MODPATH=$MODULEROOT/$MODID + +print_modname + +ui_print "******************************" +ui_print "Powered by Magisk (@topjohnwu)" +ui_print "******************************" + +########################################################################################## +# Install +########################################################################################## + +# Create mod paths +rm -rf $MODPATH 2>/dev/null +mkdir -p $MODPATH + +on_install + +# Remove placeholder +rm -f $MODPATH/system/placeholder 2>/dev/null + +# Custom uninstaller +[ -f $TMPDIR/uninstall.sh ] && cp -af $TMPDIR/uninstall.sh $MODPATH/uninstall.sh + +# Auto Mount +if imageless_magisk; then + $SKIPMOUNT && touch $MODPATH/skip_mount +else + $SKIPMOUNT || touch $MODPATH/auto_mount +fi + +# prop files +$PROPFILE && cp -af $TMPDIR/system.prop $MODPATH/system.prop + +# Module info +cp -af $TMPDIR/module.prop $MODPATH/module.prop +if $BOOTMODE; then + # Update info for Magisk Manager + if imageless_magisk; then + mktouch $NVBASE/modules/$MODID/update + cp -af $TMPDIR/module.prop $NVBASE/modules/$MODID/module.prop + else + mktouch /sbin/.magisk/img/$MODID/update + cp -af $TMPDIR/module.prop /sbin/.magisk/img/$MODID/module.prop + fi +fi + +# post-fs-data mode scripts +$POSTFSDATA && cp -af $TMPDIR/post-fs-data.sh $MODPATH/post-fs-data.sh + +# service mode scripts +$LATESTARTSERVICE && cp -af $TMPDIR/service.sh $MODPATH/service.sh + +# Handle replace folders +for TARGET in $REPLACE; do + mktouch $MODPATH$TARGET/.replace +done + +ui_print "- Setting permissions" +set_permissions + +########################################################################################## +# Finalizing +########################################################################################## + +cd / +imageless_magisk || unmount_magisk_img +$BOOTMODE || recovery_cleanup +rm -rf $TMPDIR $MOUNTPATH + +ui_print "- Done" +exit 0