+#!/bin/sh
+
+can_ask=y
+
+finish()
+{
+ if [ "$can_ask" = "y" ]; then
+ echo ""
+ echo -n "Press enter to continue..."
+ read foo
+ fi
+ exit $1
+}
+
+#
+# Make sure we have a terminal to talk to
+#
+
+if tty -s; then
+ :
+else
+ case "$DISPLAY" in
+ "")
+ echo 'No user input available'
+ can_ask=n
+ ;;
+ *)
+ GUESS_XTERMS="x-terminal-emulator xterm rxvt roxterm gnome-terminal dtterm eterm Eterm kvt konsole aterm"
+ for a in $GUESS_XTERMS; do
+ if type $a >/dev/null 2>&1; then
+ XTERM=$a
+ break
+ fi
+ done
+ case "$XTERM" in
+ "")
+ echo 'No terminal emulator available'
+ can_ask=n
+ ;;
+ *)
+ exec "$XTERM" -e "sh '$0'"
+ ;;
+ esac
+ ;;
+ esac
+fi
+
+#
+# Make sure we can run java
+#
+
+echo -n "Checking for java..."
+
+if java -version > /dev/null 2>&1; then
+ echo " found it."
+else
+ echo " java isn't working."
+ echo ""
+ echo "You'll need to install a java runtime system"
+ echo "on this computer before AltOS will work properly."
+ finish 1
+fi
+
+#
+# Pick an installation target
+#
+
+if [ '(' -d /opt -a -w /opt ')' -o '(' -d /opt/AltOS -a -w /opt/AltOS ')' ]; then
+ target_default=/opt
+else
+ target_default="$HOME"
+fi
+
+case "$#" in
+0)
+ echo -n "Installation location [default: $target_default] "
+ if [ "$can_ask" = "y" ]; then
+ read target
+ else
+ echo ""
+ target=""
+ fi
+ case "$target" in
+ "")
+ target="$target_default"
+ ;;
+ esac
+ ;;
+*)
+ target="$1"
+ ;;
+esac
+
+target_altos="$target"/AltOS
+
+echo -n "Installing to $target..."
+
+#
+# Make sure the target exists
+#
+mkdir -p "$target_altos"
+
+if [ ! -d "$target_altos" ]; then
+ echo "$target_altos does not exist and cannot be created"
+ finish 1
+fi
+
+if [ ! -w "$target_altos" ]; then
+ echo "$target_altos cannot be written"
+ finish 1
+fi
+
+#
+# Unpack the tar archive appended to the end of this script
+#
+archive_line=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "$0"`
+
+tail -n+$archive_line "$0" | tar xjf - -C "$target"
+
+case $? in
+0)
+ echo " done."
+ ;;
+*)
+ echo "Install failed."
+ finish 1
+ ;;
+esac
+
+#
+# Create the .desktop file by editing the paths
+#
+case "$target" in
+/*)
+ target_abs="$target"
+ ;;
+*)
+ target_abs=`pwd`/$target
+ ;;
+esac
+
+BIN="$target_abs"/AltOS
+
+desktop="$target"/AltOS/altos.desktop
+
+rm -f "$desktop"
+sed "s;%BIN%;$BIN;" "$target"/AltOS/altos.desktop.in > "$desktop"
+
+#
+# Figure out where to install the .desktop file. If we can, write it
+# to the public /usr/share/applications, otherwise, write it to the
+# per-user ~/.local/share/applications
+#
+
+public=/usr/share/applications
+private=$HOME/.local/share/applications
+apps=""
+
+if [ -d "$public" -a -w "$public" ]; then
+ apps="$public"
+else
+ mkdir -p "$private" >/dev/null 2>&1
+ if [ -d "$private" -a -w "$private" ]; then
+ apps="$private"
+ fi
+fi
+
+case "$apps" in
+"")
+ echo "Cannot install application icon"
+ finish 1
+ ;;
+esac
+
+echo -n "Installing .desktop file to $apps..."
+
+cp "$desktop" "$apps"
+
+case "$?" in
+0)
+ echo " done."
+ ;;
+*)
+ echo " failed."
+ ;;
+esac
+
+finish 0
+
+__ARCHIVE_BELOW__