1
+ #! /sbin/sh
2
+
3
+ TMPDIR=/dev/tmp
4
+ MOUNTPATH=/dev/magisk_img
5
+
6
+ # Default permissions
7
+ umask 022
8
+
9
+ # Initial cleanup
10
+ rm -rf $TMPDIR 2> /dev/null
11
+ mkdir -p $TMPDIR
12
+
13
+ # echo before loading util_functions
14
+ ui_print () { echo " $1 " ; }
15
+
16
+ require_new_magisk () {
17
+ ui_print " ***********************************"
18
+ ui_print " Please install the latest Magisk! "
19
+ ui_print " ***********************************"
20
+ exit 1
21
+ }
22
+
23
+ imageless_magisk () {
24
+ [ $MAGISK_VER_CODE -gt 18100 ]
25
+ return $?
26
+ }
27
+
28
+ # #########################################################################################
29
+ # Environment
30
+ # #########################################################################################
31
+
32
+ OUTFD=$2
33
+ ZIPFILE=$3
34
+
35
+ mount /data 2> /dev/null
36
+
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
44
+
45
+ # Preperation for flashable zips
46
+ setup_flashable
47
+
48
+ # Mount partitions
49
+ mount_partitions
50
+
51
+ # Detect version and architecture
52
+ api_level_arch_detect
53
+
54
+ # Setup busybox and binaries
55
+ $BOOTMODE && boot_actions || recovery_actions
56
+
57
+ # #########################################################################################
58
+ # Preparation
59
+ # #########################################################################################
60
+
61
+ # Extract common files
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
78
+
79
+ MODID=` grep_prop id $TMPDIR /module.prop`
80
+ MODPATH=$MODULEROOT /$MODID
81
+
82
+ print_modname
83
+
84
+ ui_print " ******************************"
85
+ ui_print " Powered by Magisk (@topjohnwu)"
86
+ ui_print " ******************************"
87
+
88
+ # #########################################################################################
89
+ # Install
90
+ # #########################################################################################
91
+
92
+ # Create mod paths
93
+ rm -rf $MODPATH 2> /dev/null
94
+ mkdir -p $MODPATH
95
+
96
+ on_install
97
+
98
+ # Remove placeholder
99
+ rm -f $MODPATH /system/placeholder 2> /dev/null
100
+
101
+ # Custom uninstaller
102
+ [ -f $TMPDIR /uninstall.sh ] && cp -af $TMPDIR /uninstall.sh $MODPATH /uninstall.sh
103
+
104
+ # Auto Mount
105
+ if imageless_magisk; then
106
+ $SKIPMOUNT && touch $MODPATH /skip_mount
107
+ else
108
+ $SKIPMOUNT || touch $MODPATH /auto_mount
109
+ fi
110
+
111
+ # prop files
112
+ $PROPFILE && cp -af $TMPDIR /system.prop $MODPATH /system.prop
113
+
114
+ # Module info
115
+ cp -af $TMPDIR /module.prop $MODPATH /module.prop
116
+ if $BOOTMODE ; then
117
+ # Update info for Magisk Manager
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
125
+ fi
126
+
127
+ # post-fs-data mode scripts
128
+ $POSTFSDATA && cp -af $TMPDIR /post-fs-data.sh $MODPATH /post-fs-data.sh
129
+
130
+ # service mode scripts
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
137
+
138
+ ui_print " - Setting permissions"
139
+ set_permissions
140
+
141
+ # #########################################################################################
142
+ # Finalizing
143
+ # #########################################################################################
144
+
145
+ cd /
146
+ imageless_magisk || unmount_magisk_img
147
+ $BOOTMODE || recovery_cleanup
148
+ rm -rf $TMPDIR $MOUNTPATH
149
+
150
+ ui_print " - Done"
151
+ exit 0
0 commit comments