#
#####################################
+MAJOR_VERSION="%REPLACE_MAJOR_VERSION%"
PGM_NAME="%REPLACE_PGM%"
PGM_VENDOR="%REPLACE_VENDOR%"
PGM_VERSION="%REPLACE_VERSION%"
-PGM_BUILD="%REPLACE_BUILD%"
+PGM_BUILDTYPE="%REPLACE_TYPE%"
INSTALL_DEST_BASE=/opt
+USER_BIN_DIR="/usr/local/bin"
+
+UNINSTALLER="$(readlink -f "$0")"
+
+USER_NAME=$(logname)
#### Derived Variables ####
-PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION}_${PGM_BUILD}
+if [ -z "${PGM_BUILDTYPE}" ]; then
+ PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION}
+ ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}" #no dash between name and version since dash seperates vendor from program
+ MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}.desktop" #no dash between name and version since dash seperates vendor from program
+ DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}.desktop"
+else
+ PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION}-${PGM_BUILDTYPE}
+ ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}" #no dash between name and version since dash seperates vendor from program
+ MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop" #no dash between name and version since dash seperates vendor from program
+ DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop"
+fi
-ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}" #no dash between name and version since seperates vendor from program
-MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}.desktop" #no dash between name and version since seperates vendor from program
-DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}.desktop"
MENU_FILE_PATH="${PGM_PATH}/share/${MENU_FILE}"
+#############################
+# Check for root privileges
+#############################
+
+SUPER=""
+
+if [ "$(id -u)" != "0" ]; then
+
+ if ! which sudo > /dev/null;
+ then
+ echo ""
+ echo "Attempting to uninstall using su"
+ echo "Please enter root password below"
+ echo ""
+
+ if ! su -c "${UNINSTALLER}";
+ then
+ echo ""
+ echo "!!! ERROR !!!"
+ echo ""
+ echo "This uninstaller requires root privileges. It is currently not"
+ echo "running as root AND an attempt to use su failed."
+ echo ""
+ echo "Please correct this by installing and configuring sudo or running"
+ echo "the uninstaller as root (su -c)."
+ echo ""
+ read -p "Press ENTER to exit uninstaller:" BLAH
+ exit 1
+ fi
+ exit
+ else
+ sudo -k # make sudo forget about cached credentials
+ fi
+
+ if ! sudo date;
+ then
+ echo ""
+ echo "Attempting to uninstall using su"
+ echo "Please enter root password below"
+ echo ""
+
+ if ! su -c "${UNINSTALLER}";
+ then
+ echo ""
+ echo "!!! ERROR !!!"
+ echo ""
+ echo "This uninstaller requires root privileges. It is currently not"
+ echo "running as root AND an attempt to use both sudo and su failed."
+ echo ""
+ echo "Please correct this by installing and configuring sudo or running"
+ echo "the uninstaller as root (su -c)."
+ echo ""
+ read -p "Press ENTER to exit uninstaller:" BLAH
+ exit 1
+ fi
+ exit
+ fi
+ SUPER="sudo"
+fi
+
#######################
# Check for xdg utils
#######################
HAS_XDG="T"
+#load the file that contains the translated names of the users directories
+if [ -e /home/${USER_NAME}/.config/user-dirs.dirs ]; then
+ . /home/${USER_NAME}/.config/user-dirs.dirs
+fi
+
+if [ "$(id -u)" != "0" ]; then
+ USER_DESKTOP_DIR=${XDG_DESKTOP_DIR:-$HOME/Desktop}
+else
+ #running as root with su makes this more difficult
+ DESKTOP_FOLDER=$(echo ${XDG_DESKTOP_DIR:-$HOME/Desktop} | awk -F/ '{print $NF}')
+ USER_DESKTOP_DIR="/home/${USER_NAME}/${DESKTOP_FOLDER}"
+fi
+
XDG_MENU_VER=$(xdg-desktop-menu --version 2> /dev/null)
if [ -z "$XDG_MENU_VER" ];
then
if [ "T" = ${HAS_XDG} ];
then
- sudo xdg-desktop-menu uninstall ${MENU_FILE_PATH}
- sudo xdg-icon-resource uninstall --size 16 ${ICON_NAME}
- sudo xdg-icon-resource uninstall --size 22 ${ICON_NAME}
- sudo xdg-icon-resource uninstall --size 32 ${ICON_NAME}
- sudo xdg-icon-resource uninstall --size 48 ${ICON_NAME}
+ ${SUPER} xdg-desktop-menu uninstall ${MENU_FILE_PATH}
+ ${SUPER} xdg-icon-resource uninstall --size 16 ${ICON_NAME}
+ ${SUPER} xdg-icon-resource uninstall --size 22 ${ICON_NAME}
+ ${SUPER} xdg-icon-resource uninstall --size 32 ${ICON_NAME}
+ ${SUPER} xdg-icon-resource uninstall --size 48 ${ICON_NAME}
if [ -e /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg ];
then
- sudo rm -f /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg
+ ${SUPER} rm -f /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg
fi
fi
- if [ -e ~/Desktop/${DESKTOP_LINK_FILE} ];
+ if [ -e ${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE} ];
+ then
+ ${SUPER} rm -f ${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE}
+ fi
+
+ # delete the bin link if it is linked to this version
+ if [ -e "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}" ];
then
- sudo rm -f ~/Desktop/${DESKTOP_LINK_FILE}
+ BIN_LINK_TARGET=$(readlink "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}")
+ BIN_LINK_TARGET_DIR=$(dirname "${BIN_LINK_TARGET}")
+
+ if [ "${BIN_LINK_TARGET_DIR}" = "${PGM_PATH}/bin" ];
+ then
+ ${SUPER} rm -f "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}"
+ fi
fi
+
# delete the old package
- sudo rm -rf ${PGM_PATH}
- sudo rm -f $0
+ ${SUPER} rm -rf ${PGM_PATH}
+ ${SUPER} rm -f $0
else
echo ""
echo "!!! FAILURE !!! - install path ${PGM_PATH} does not exist."