diff --git a/microsoft-apps.sh b/microsoft-apps.sh index c2a661f..bdc1855 100644 --- a/microsoft-apps.sh +++ b/microsoft-apps.sh @@ -23,6 +23,7 @@ # 2021-07-01 Martyn Watts Added Dock Icon creation using dockutil (Prerequisite install) # 2021-07-09 Martyn Watts Added DEPNotify Progress Output # 2021-09-24 Martyn Watts Added Check to see if dockutil is installed to make the script more resilient +# 2021-09-28 Martyn Watts Added Check for full-oc (Full Install with Open Console for TeamViewer Installs) also added better logging ### ### @@ -31,75 +32,83 @@ function install_software () { SOFTWARE_ID=$1 SOFTWARE_NAME=$2 SOFTWARE_LOCATION=$3 + OPEN_CONSOLE=$4 VERSION=$(echo "${LATEST_XML}" | xmllint --xpath '//latest/package[id="'${SOFTWARE_ID}'"]/cfbundleversion/text()' -) deplog="/var/tmp/depnotify.log" + logfile="/tmp/OfficeInstallScript-${SOFTWARE_NAME}.log" + +if [[ ${OPEN_CONSOLE} == "openconsole" ]]; then + open ${logfile} + open ${deplog} +fi + if [[ ${SOFTWARE_LOCATION} != "SUITE" ]]; then # Get the version number of the currently-installed App, if any. if [[ -e "${SOFTWARE_LOCATION}" ]]; then - echo "Checking Installed Version of ${SOFTWARE_NAME}" + echo "Checking Installed Version of ${SOFTWARE_NAME}" >> ${logfile} echo "Status: Checking Installed Version of ${SOFTWARE_NAME}" >> ${deplog} CURRENTINSTALLEDVER=`/usr/bin/defaults read "${SOFTWARE_LOCATION}/Contents/Info" CFBundleVersion` - echo "Current installed version is: $CURRENTINSTALLEDVER" + echo "Current installed version is: $CURRENTINSTALLEDVER" >> ${logfile} echo "Status: Current installed version is: $CURRENTINSTALLEDVER" >> ${deplog} if [[ ${VERSION} = ${CURRENTINSTALLEDVER} ]]; then - echo "${SOFTWARE_NAME} is current. Exiting" + echo "${SOFTWARE_NAME} is current. Exiting" >> ${logfile} echo "Status: ${SOFTWARE_NAME} is current. Exiting" >> ${deplog} exit 0 fi fi fi echo "Status: Installing ${SOFTWARE_NAME}" >> ${deplog} - echo "Installing ${SOFTWARE_NAME}" + echo "Installing ${SOFTWARE_NAME}" >> ${logfile} URL=$(echo "${LATEST_XML}" | xmllint --xpath '//latest/package[id="'${SOFTWARE_ID}'"]/download/text()' -) SHA256=$(echo "${LATEST_XML}" | xmllint --xpath '//latest/package[id="'${SOFTWARE_ID}'"]/sha256/text()' -) - echo "URL : ${URL}" - echo "Version : ${VERSION}" - echo "SHA256 : ${SHA256}" + echo "URL : ${URL}" >> ${logfile} + echo "Version : ${VERSION}" >> ${logfile} + echo "SHA256 : ${SHA256}" >> ${logfile} cd ${TEMP_PATH} - echo "Downloading ${SOFTWARE_NAME}" + echo "Downloading ${SOFTWARE_NAME}" >> ${logfile} echo "Status: Downloading ${SOFTWARE_NAME}" >> ${deplog} curl -s -L -o "${SOFTWARE_NAME}.pkg" ${URL} if [[ $? == 0 ]]; then - echo ">> Done" + echo ">> Done" >> ${logfile} else - echo "[ERROR] Curl command failed with: $curlResult" + echo "[ERROR] Curl command failed with: $curlResult" >> ${logfile} echo "Status: [ERROR] Curl command failed with: $curlResult" >> ${deplog} exit 1 fi - echo "Verifying Checksum" + echo "Verifying Checksum" >> ${logfile} echo "Status: Verifying Checksum" >> ${deplog} CHECKSUM=$(shasum -a 256 ${SOFTWARE_NAME}.pkg | awk -F" " '{print $1}') if [[ $CHECKSUM == $SHA256 ]]; then - echo ">> Checksum OK" + echo ">> Checksum OK" >> ${logfile} echo "Status: Checksum OK" >> ${deplog} else - echo "[ERROR] Invalid checksum detected. Exiting..." + echo "[ERROR] Invalid checksum detected. Exiting..." >> ${logfile} echo "Status: [ERROR] Invalid checksum detected. Exiting..." >> ${deplog} exit 1 fi - echo "Installing ${SOFTWARE_NAME}" + echo "Installing ${SOFTWARE_NAME}" >> ${logfile} echo "Status: Installing ${SOFTWARE_NAME}" >> ${deplog} /usr/sbin/installer -pkg "${SOFTWARE_NAME}.pkg" -target / if [[ $? == 0 ]]; then if [[ -e "/usr/local/bin/dockutil" ]]; then APPSHORTNAME=$(echo ${SOFTWARE_LOCATION} | cut -f3 -d'/' | sed -e 's/\.[^.]*$//') - echo "Adding Dock Icon for ${APPSHORTNAME}" + echo "Adding Dock Icon for ${APPSHORTNAME}" >> ${logfile} echo "Status: Adding Dock Icon for ${APPSHORTNAME}" >> ${deplog} dockutil --remove "${APPSHORTNAME}" --allhomes sleep 5 dockutil --add "${SOFTWARE_LOCATION}" --position 1 --allhomes fi - echo ">> Done" + echo ">> Done" >> ${logfile} else - echo "[ERROR] Unable to install ${SOFTWARE_NAME}" + echo "[ERROR] Unable to install ${SOFTWARE_NAME}" >> ${logfile} echo "Status: [ERROR] Unable to install ${SOFTWARE_NAME}" >> ${deplog} exit 1 fi @@ -118,12 +127,12 @@ fi echo "Creating ${TEMP_PATH}" mkdir ${TEMP_PATH} -echo "Downloading XML file" +echo "Downloading XML file" >> ${logfile} LATEST_XML=$(curl -H "Accept: text/xml" -sfk ${MACADMINS_URL}) -echo ">> Done" -echo "Collecting latest version" +echo ">> Done" >> ${logfile} +echo "Collecting latest version" >> ${logfile} LATEST_VERSION=$(echo "${LATEST_XML}" | xmllint --xpath "//latest/o365/text()" -) -echo "Latest version : ${LATEST_VERSION}" +echo "Latest version : ${LATEST_VERSION}" >> ${logfile} for param in "$@"; do case $param in @@ -145,21 +154,24 @@ for param in "$@"; do outlook) install_software "com.microsoft.outlook.standalone.365" "Outlook" "/Applications/Microsoft Outlook.app" ;; - teams) - install_software "com.microsoft.teams.standalone" "Teams" "/Applications/Microsoft Teams.app" - ;; + teams) + install_software "com.microsoft.teams.standalone" "Teams" "/Applications/Microsoft Teams.app" + ;; full) install_software "com.microsoft.office.suite.365" "Office365" "SUITE" ;; + full-oc) + install_software "com.microsoft.office.suite.365" "Office365" "SUITE" "openconsole" + ;; *) echo "unknown parameter" esac done -echo "Cleaning up ${TEMP_PATH}" +echo "Cleaning up ${TEMP_PATH}" >> ${logfile} rm -rf ${TEMP_PATH} -echo ">> Done" +echo ">> Done" >> ${logfile} /bin/sleep 5 echo "Command: DeterminateManualStep: 1" >> ${deplog} exit 0