Browse Source

Update mac launcher and uninstaller to use mdfind to locate app.

Adam Ierymenko 11 years ago
parent
commit
69c993357d
2 changed files with 30 additions and 16 deletions
  1. 13 9
      ext/installfiles/mac/launch.sh
  2. 17 7
      ext/installfiles/mac/uninstall.sh

+ 13 - 9
ext/installfiles/mac/launch.sh

@@ -1,22 +1,26 @@
 #!/bin/bash
 
 zthome="/Library/Application Support/ZeroTier/One"
-ztapp="/Applications/ZeroTier One.app"
-
 export PATH="/bin:/usr/bin:/sbin:/usr/sbin:$zthome"
+ztapp=`mdfind kMDItemCFBundleIdentifier == 'com.zerotier.ZeroTierOne'`
 
-# Uninstall if the .app has been thrown away
-if [ ! -d "$ztapp" ]; then
-	if [ -e "$zthome/uninstall.sh" ]; then
-		cd "$zthome"
-		./uninstall.sh -q
-		exit
+# Clean all other stuff off the system if the user has trashed the .app
+if [ -z "$ztapp" -o ! -d "$ztapp" ]; then
+	# Double-check default location just in case there is some issue with mdfind
+	ztapp="/Applications/ZeroTier One.app"
+	if [ ! -d "$ztapp" ]; then
+		if [ -e "$zthome/uninstall.sh" ]; then
+			cd "$zthome"
+			./uninstall.sh -q
+			exit
+		fi
 	fi
 fi
 
 # Create the app deletion notification symlink if it does
 # not already exist.
-if [ ! -L "$zthome/shutdownIfUnreadable" ]; then
+shutdownIfUnreadablePointsTo=`readlink "$zthome/shutdownIfUnreadable"`
+if [ -z "$shutdownIfUnreadablePointsTo" -o "$shutdownIfUnreadablePointsTo" != "$ztapp/Contents/Info.plist" ]; then
 	rm -f "$zthome/shutdownIfUnreadable"
 	ln -sf "$ztapp/Contents/Info.plist" "$zthome/shutdownIfUnreadable"
 fi

+ 17 - 7
ext/installfiles/mac/uninstall.sh

@@ -2,14 +2,19 @@
 
 export PATH=/bin:/usr/bin:/sbin:/usr/sbin
 
-ztpath="/Library/Application Support/ZeroTier/One"
-ztapp="/Applications/ZeroTier One.app"
+zthome="/Library/Application Support/ZeroTier/One"
+ztapp=`mdfind kMDItemCFBundleIdentifier == 'com.zerotier.ZeroTierOne'`
 
 if [ "$UID" -ne 0 ]; then
 	echo "Must be run as root; try: sudo $0"
 	exit 1
 fi
 
+# Try default location if something's up with mdfind
+if [ ! -d "$ztapp" ]; then
+	ztapp="/Applications/ZeroTier One.app"
+fi
+
 # Run with -q to be quieter and run without delay
 quickAndQuiet=0
 if [ "$1" = "-q" ]; then
@@ -36,15 +41,20 @@ killall -KILL zerotier-one >>/dev/null 2>&1
 sleep 1
 
 echo "Unloading kernel extension..."
-kextunload "$ztpath/tap.kext" >>/dev/null 2>&1
+kextunload "$zthome/tap.kext" >>/dev/null 2>&1
+
+echo "Erasing GUI app (if installed)..."
+if [ -d "$ztapp" ]; then
+	rm -rfv "$ztapp"
+fi
 
-echo "Erasing UI app, binary, and support files..."
-cd "$ztpath"
-rm -rfv "$ztapp" zerotier-one *.persist authtoken.secret identity.public *.log *.pid *.kext *.sh networks.d updates.d shutdownIfUnreadable
+echo "Erasing service and support files..."
+cd "$zthome"
+rm -rfv zerotier-one *.persist authtoken.secret identity.public *.log *.pid *.kext *.sh networks.d updates.d shutdownIfUnreadable
 
 echo "Done."
 echo
-echo "Your ZeroTier One identity is still preserved in $ztpath"
+echo "Your ZeroTier One identity is still in: $zthome"
 echo "as identity.secret and can be manually deleted if you wish. Save it if"
 echo "you wish to re-use the address of this node, as it cannot be regenerated."