From http://www.jwz.org/xscreensaver/xscreensaver-5.30.tar.gz
[xscreensaver] / OSX / installer.sh
index 120dd9d9b8bed3aa76d89da48b0afe36103a0c9d..329a7c18574ae7425563053a7038d005920761a9 100755 (executable)
@@ -26,11 +26,20 @@ export PATH="/bin:/sbin:/usr/bin:/usr/sbin:$PATH"
 
 function error() {
   echo "XScreenSaver Installer: Error: $@" >&2
+
+  # Using "System Events" says "No user interaction allowed" on 10.9.
+  # But using "SystemUIServer" or "Automator Runner" still seems to work.
+  #
+  runner="System Events"
+  if [ -d "/System/Library/CoreServices/SystemUIServer.app" ]; then
+    runner="SystemUIServer"
+  elif [ -d "/System/Library/CoreServices/Automator Runner.app" ]; then
+    runner="Automator Runner"
+  fi
+
   (
-    # Using "System Events" says "No user interaction allowed" on 10.9.
-    # But using "Automator Runner" still seems to work.
     osascript <<__EOF__
-      tell app "Automator Runner" to \
+      tell app "$runner" to \
         display dialog "$@" \
         buttons "Bummer" \
         default button 1 \
@@ -41,6 +50,7 @@ __EOF__
   exit 1
 }
 
+
 #if[ x"$DSTVOLUME"    = x ]; then error "DSTVOLUME unset";    fi
 if [ x"$PACKAGE_PATH" = x ]; then error "PACKAGE_PATH unset"; fi
 if [ x"$HOME"         = x ]; then error "HOME unset";         fi
@@ -56,7 +66,13 @@ SRC=`dirname "$PACKAGE_PATH"`/"Screen Savers"
 DST1="$DSTVOLUME/Library/Screen Savers"
 DST2="$DSTVOLUME/Applications"
 PU="$DSTVOLUME/$HOME/Library/Screen Savers"
-UPDATER="XScreenSaverUpdater.app"
+
+# Because of Sparkle.framework weirdness, ".XScreenSaverUpdater.app"
+# is in the DMG, and we remove the leading dot when installing it.
+# Without this, auto-updates won't work right.
+#
+UPDATER=".XScreenSaverUpdater.app"
+
 
 cd "$SRC" || error "The 'Screen Savers' folder does not exist.
 
@@ -78,17 +94,20 @@ mkdir -p "$DST2" || error "Unable to create directory $DST2/"
 # Install the savers and the updater in /System/Library/Screen Savers/
 # Install the other apps in /Applications/
 #
-for f in *.{saver,app} ; do
+for f in *.{saver,app} "$UPDATER" ; do
   EXT=`echo "$f" | sed 's/^.*\.//'`
   if [ "$EXT" = "app" -a "$f" != "$UPDATER" ]; then
     DST="$DST2"
   else
     DST="$DST1"
   fi
-  DD="$DST/$f"
+
+  f2=`echo "$f" | sed 's/^\.//'`   # install ".foo" as "foo"
+  DD="$DST/$f2"
+
   echo "Installing $DD" >&2
   rm -rf "$DD" || error "Unable to delete $DD"
-  cp -pR "$f" "$DST/" || error "Unable to install $f in $DST/"
+  cp -pR "$f" "$DD/" || error "Unable to install $f in $DST/"
 
   # Eliminate the "this was downloaded from the interweb" warning.
   xattr -r -d com.apple.quarantine "$DD"