X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=OSX%2Finstaller.sh;h=329a7c18574ae7425563053a7038d005920761a9;hp=120dd9d9b8bed3aa76d89da48b0afe36103a0c9d;hb=6afd6db0ae9396cd7ff897ade597cd5483f49b0e;hpb=dba664f31aa87285db4d76cf8c5e66335299703a diff --git a/OSX/installer.sh b/OSX/installer.sh index 120dd9d9..329a7c18 100755 --- a/OSX/installer.sh +++ b/OSX/installer.sh @@ -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"