11#! /sbin/sh
2- # #########################################################################################
3- #
4- # Magisk Module Template Install Script
5- # by topjohnwu
6- #
7- # #########################################################################################
8-
9- # Detect whether in boot mode
10- ps | grep zygote | grep -v grep > /dev/null && BOOTMODE=true || BOOTMODE=false
11- $BOOTMODE || ps -A 2> /dev/null | grep zygote | grep -v grep > /dev/null && BOOTMODE=true
122
133TMPDIR=/dev/tmp
14- INSTALLER=$TMPDIR /install
15- MAGISKBIN=/data/adb/magisk
4+ MOUNTPATH=/dev/magisk_img
165
176# Default permissions
187umask 022
198
209# Initial cleanup
2110rm -rf $TMPDIR 2> /dev/null
22- mkdir -p $INSTALLER
11+ mkdir -p $TMPDIR
2312
2413# echo before loading util_functions
2514ui_print () { echo " $1 " ; }
2615
2716require_new_magisk () {
28- ui_print " *******************************"
29- ui_print " Please install Magisk v15.0+ ! "
30- ui_print " *******************************"
17+ ui_print " *********************************** "
18+ ui_print " Please install the latest Magisk ! "
19+ ui_print " *********************************** "
3120 exit 1
3221}
3322
23+ imageless_magisk () {
24+ [ $MAGISK_VER_CODE -gt 18100 ]
25+ return $?
26+ }
27+
3428# #########################################################################################
3529# Environment
3630# #########################################################################################
3731
3832OUTFD=$2
39- ZIP =$3
33+ ZIPFILE =$3
4034
4135mount /data 2> /dev/null
4236
43- # Utility functions must exist
44- [ -f $MAGISKBIN /util_functions.sh ] || require_new_magisk
45- # Load utility fuctions
46- . $MAGISKBIN /util_functions.sh
47-
48- # We can't alter magisk image live, use alternative image if required
49- $BOOTMODE && IMG=/data/adb/magisk_merge.img
50- # Always mount under tmp
51- MOUNTPATH=$TMPDIR /magisk_img
37+ # Load utility functions
38+ if [ -f /data/adb/magisk/util_functions.sh ]; then
39+ . /data/adb/magisk/util_functions.sh
40+ NVBASE=/data/adb
41+ else
42+ require_new_magisk
43+ fi
5244
5345# Preperation for flashable zips
54- get_outfd
46+ setup_flashable
5547
5648# Mount partitions
5749mount_partitions
5850
5951# Detect version and architecture
6052api_level_arch_detect
6153
62- # You can get the Android API version from $API, the CPU architecture from $ARCH
63- # Useful if you are creating Android version / platform dependent mods
64-
6554# Setup busybox and binaries
6655$BOOTMODE && boot_actions || recovery_actions
6756
@@ -70,22 +59,28 @@ $BOOTMODE && boot_actions || recovery_actions
7059# #########################################################################################
7160
7261# Extract common files
73- unzip -o " $ZIP " module.prop config.sh ' common/*' -d $INSTALLER >&2
74-
75- [ ! -f $INSTALLER /config.sh ] && abort " ! Unable to extract zip file!"
76- # Load configurations
77- . $INSTALLER /config.sh
62+ unzip -oj " $ZIPFILE " module.prop install.sh uninstall.sh ' common/*' -d $TMPDIR >&2
63+
64+ [ ! -f $TMPDIR /install.sh ] && abort " ! Unable to extract zip file!"
65+ # Load install script
66+ . $TMPDIR /install.sh
67+
68+ if imageless_magisk; then
69+ $BOOTMODE && MODDIRNAME=modules_update || MODDIRNAME=modules
70+ MODULEROOT=$NVBASE /$MODDIRNAME
71+ else
72+ $BOOTMODE && IMGNAME=magisk_merge.img || IMGNAME=magisk.img
73+ IMG=$NVBASE /$IMGNAME
74+ request_zip_size_check " $ZIPFILE "
75+ mount_magisk_img
76+ MODULEROOT=$MOUNTPATH
77+ fi
7878
79- # Check the installed magisk version
80- MIN_VER=` grep_prop minMagisk $INSTALLER /module.prop`
81- [ ! -z $MAGISK_VER_CODE -a $MAGISK_VER_CODE -ge $MIN_VER ] || require_new_magisk
82- MODID=` grep_prop id $INSTALLER /module.prop`
83- MODPATH=$MOUNTPATH /$MODID
79+ MODID=` grep_prop id $TMPDIR /module.prop`
80+ MODPATH=$MODULEROOT /$MODID
8481
85- # Print mod name
8682print_modname
8783
88- # Please leave this message in your flashable zip for credits :)
8984ui_print " ******************************"
9085ui_print " Powered by Magisk (@topjohnwu)"
9186ui_print " ******************************"
@@ -94,47 +89,51 @@ ui_print "******************************"
9489# Install
9590# #########################################################################################
9691
97- # Get the variable reqSizeM. Use your own method to determine reqSizeM if needed
98- request_zip_size_check " $ZIP "
99-
100- # This function will mount $IMG to $MOUNTPATH, and resize the image based on $reqSizeM
101- mount_magisk_img
102-
10392# Create mod paths
10493rm -rf $MODPATH 2> /dev/null
10594mkdir -p $MODPATH
10695
107- # Extract files to system. Use your own method if needed
108- ui_print " - Extracting module files"
109- unzip -o " $ZIP " ' system/*' -d $MODPATH >&2
96+ on_install
11097
11198# Remove placeholder
11299rm -f $MODPATH /system/placeholder 2> /dev/null
113100
114- # Handle replace folders
115- for TARGET in $REPLACE ; do
116- mktouch $MODPATH$TARGET /.replace
117- done
101+ # Custom uninstaller
102+ [ -f $TMPDIR /uninstall.sh ] && cp -af $TMPDIR /uninstall.sh $MODPATH /uninstall.sh
118103
119104# Auto Mount
120- $AUTOMOUNT && touch $MODPATH /auto_mount
105+ if imageless_magisk; then
106+ $SKIPMOUNT && touch $MODPATH /skip_mount
107+ else
108+ $SKIPMOUNT || touch $MODPATH /auto_mount
109+ fi
121110
122111# prop files
123- $PROPFILE && cp -af $INSTALLER /common /system.prop $MODPATH /system.prop
112+ $PROPFILE && cp -af $TMPDIR /system.prop $MODPATH /system.prop
124113
125114# Module info
126- cp -af $INSTALLER /module.prop $MODPATH /module.prop
115+ cp -af $TMPDIR /module.prop $MODPATH /module.prop
127116if $BOOTMODE ; then
128117 # Update info for Magisk Manager
129- mktouch /sbin/.core/img/$MODID /update
130- cp -af $INSTALLER /module.prop /sbin/.core/img/$MODID /module.prop
118+ if imageless_magisk; then
119+ mktouch $NVBASE /modules/$MODID /update
120+ cp -af $TMPDIR /module.prop $NVBASE /modules/$MODID /module.prop
121+ else
122+ mktouch /sbin/.magisk/img/$MODID /update
123+ cp -af $TMPDIR /module.prop /sbin/.magisk/img/$MODID /module.prop
124+ fi
131125fi
132126
133127# post-fs-data mode scripts
134- $POSTFSDATA && cp -af $INSTALLER /common /post-fs-data.sh $MODPATH /post-fs-data.sh
128+ $POSTFSDATA && cp -af $TMPDIR /post-fs-data.sh $MODPATH /post-fs-data.sh
135129
136130# service mode scripts
137- $LATESTARTSERVICE && cp -af $INSTALLER /common/service.sh $MODPATH /service.sh
131+ $LATESTARTSERVICE && cp -af $TMPDIR /service.sh $MODPATH /service.sh
132+
133+ # Handle replace folders
134+ for TARGET in $REPLACE ; do
135+ mktouch $MODPATH$TARGET /.replace
136+ done
138137
139138ui_print " - Setting permissions"
140139set_permissions
@@ -143,11 +142,10 @@ set_permissions
143142# Finalizing
144143# #########################################################################################
145144
146- # Unmount magisk image and shrink if possible
147- unmount_magisk_img
148-
145+ cd /
146+ imageless_magisk || unmount_magisk_img
149147$BOOTMODE || recovery_cleanup
150- rm -rf $TMPDIR
148+ rm -rf $TMPDIR $MOUNTPATH
151149
152150ui_print " - Done"
153151exit 0
0 commit comments