From e66ec5798551c8437d920c7e88e828cf850aa486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=88=9A=28noham=29=C2=B2?= <100566912+NohamR@users.noreply.github.com> Date: Tue, 3 Mar 2026 22:46:48 +0100 Subject: [PATCH] Add Office Reset scripts and README --- README.md | 80 +++++++ scripts/Office_AutoUpdate_Reset.sh | 211 ++++++++++++++++++ scripts/Office_Credentials_Reset.sh | 190 +++++++++++++++++ scripts/Office_Defender_Remove.sh | 62 ++++++ scripts/Office_Excel_Reset.sh | 190 +++++++++++++++++ scripts/Office_Factory_Reset.sh | 51 +++++ scripts/Office_OneDrive_Reset.sh | 202 ++++++++++++++++++ scripts/Office_OneNote_Remove_Data.sh | 35 +++ scripts/Office_OneNote_Reset.sh | 180 ++++++++++++++++ scripts/Office_Outlook_Remove_Data.sh | 38 ++++ scripts/Office_Outlook_Reset.sh | 249 ++++++++++++++++++++++ scripts/Office_PowerPoint_Reset.sh | 195 +++++++++++++++++ scripts/Office_Remove.sh | 170 +++++++++++++++ scripts/Office_Remove_2.sh | 80 +++++++ scripts/Office_SkypeForBusiness_Remove.sh | 56 +++++ scripts/Office_Teams_Reset.sh | 208 ++++++++++++++++++ scripts/Office_Word_Reset.sh | 190 +++++++++++++++++ scripts/WebExPT_Remove.sh | 58 +++++ scripts/ZoomPlugin_Remove.sh | 57 +++++ 19 files changed, 2502 insertions(+) create mode 100644 README.md create mode 100755 scripts/Office_AutoUpdate_Reset.sh create mode 100755 scripts/Office_Credentials_Reset.sh create mode 100755 scripts/Office_Defender_Remove.sh create mode 100755 scripts/Office_Excel_Reset.sh create mode 100755 scripts/Office_Factory_Reset.sh create mode 100755 scripts/Office_OneDrive_Reset.sh create mode 100755 scripts/Office_OneNote_Remove_Data.sh create mode 100755 scripts/Office_OneNote_Reset.sh create mode 100755 scripts/Office_Outlook_Remove_Data.sh create mode 100755 scripts/Office_Outlook_Reset.sh create mode 100755 scripts/Office_PowerPoint_Reset.sh create mode 100755 scripts/Office_Remove.sh create mode 100755 scripts/Office_Remove_2.sh create mode 100755 scripts/Office_SkypeForBusiness_Remove.sh create mode 100755 scripts/Office_Teams_Reset.sh create mode 100755 scripts/Office_Word_Reset.sh create mode 100755 scripts/WebExPT_Remove.sh create mode 100755 scripts/ZoomPlugin_Remove.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..95009e4 --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +# Office Reset + +A transparent backup of scripts from [office-reset.com](https://office-reset.com/) for resetting and removing Microsoft Office applications on macOS. + +## About + +This repository contains shell scripts extracted from the .pkg installer provided by [office-reset.com](https://office-reset.com/). Instead of running an opaque package installer, these scripts are provided in plain text so you can review exactly what will be executed on your system before running them. + +## Why This Repository? + +Running `.pkg` files without knowing their contents can be risky. This repository allows you to: +- Review the script contents before execution +- Understand exactly what changes will be made to your system +- Run only the specific scripts you need +- Maintain transparency and security + +## Available Scripts + +The following scripts are available in the `scripts/` directory: + +### Office Applications +- **Office_Excel_Reset.sh** - Reset Microsoft Excel to default settings +- **Office_Word_Reset.sh** - Reset Microsoft Word to default settings +- **Office_PowerPoint_Reset.sh** - Reset Microsoft PowerPoint to default settings +- **Office_Outlook_Reset.sh** - Reset Microsoft Outlook to default settings +- **Office_Outlook_Remove_Data.sh** - Remove Microsoft Outlook data +- **Office_OneNote_Reset.sh** - Reset Microsoft OneNote to default settings +- **Office_OneNote_Remove_Data.sh** - Remove Microsoft OneNote data + +### Office Services & Add-ons +- **Office_AutoUpdate_Reset.sh** - Reset Microsoft AutoUpdate +- **Office_Credentials_Reset.sh** - Reset Office credentials +- **Office_OneDrive_Reset.sh** - Reset OneDrive +- **Office_Teams_Reset.sh** - Reset Microsoft Teams + +### Removal Scripts +- **Office_Remove.sh** - Remove Microsoft Office +- **Office_Remove_2.sh** - Alternative Office removal script +- **Office_Factory_Reset.sh** - Complete factory reset of Office +- **Office_Defender_Remove.sh** - Remove Microsoft Defender +- **Office_SkypeForBusiness_Remove.sh** - Remove Skype for Business + +### Third-Party Tools +- **WebExPT_Remove.sh** - Remove Cisco WebEx Productivity Tools +- **ZoomPlugin_Remove.sh** - Remove Zoom plugin + +## Usage + +1. **Review the script** you want to run before executing it +2. **Make the script executable**: + ```bash + chmod +x scripts/[script-name].sh + ``` +3. **Run the script**: + ```bash + sudo scripts/[script-name].sh + ``` + +## Important Notes + +⚠️ **Warning**: These scripts will modify or remove application data and settings. Some operations are irreversible. + +- **Backup your data** before running any reset or removal scripts +- Most scripts require **administrator privileges** (sudo) +- Review each script carefully to understand what it does +- Test on a non-production system first if possible + +## Credits + +All credit goes to **Paul Bowden** ([pbowden-msft](https://github.com/pbowden-msft)) for creating and maintaining these scripts. + +Original source: [office-reset.com](https://office-reset.com/) + +## License + +These scripts are provided as-is from the original source. Please refer to the original author's repository for licensing information. + +## Disclaimer + +This repository is an independent backup for transparency purposes. It is not affiliated with or endorsed by Microsoft Corporation or Paul Bowden. Use these scripts at your own risk. diff --git a/scripts/Office_AutoUpdate_Reset.sh b/scripts/Office_AutoUpdate_Reset.sh new file mode 100755 index 0000000..86823ba --- /dev/null +++ b/scripts/Office_AutoUpdate_Reset.sh @@ -0,0 +1,211 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_AutoUpdate" +autoload is-at-least +APP_NAME="Microsoft AutoUpdate" +DOWNLOAD_URL="https://go.microsoft.com/fwlink/?linkid=830196" + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +RepairApp() { + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $DOWNLOAD_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Stopping update services" +/usr/bin/pkill -9 'Microsoft AutoUpdate' +/usr/bin/pkill -9 'Microsoft Update Assistant' +/usr/bin/pkill -9 'Microsoft AU Daemon' +/usr/bin/pkill -9 'Microsoft AU Bootstrapper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helpertool' +/usr/bin/pkill -9 'com.microsoft.autoupdate.bootstrapper.helper' + +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.update.agent.plist +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.autoupdate.helper.plist +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.autoupdate.helper +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist + +/bin/launchctl unload /Library/LaunchAgents/com.microsoft.update.agent.plist +/bin/launchctl unload /Library/LaunchAgents/com.microsoft.autoupdate.helper.plist +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.autoupdate.helper +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f $HOME/Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.autoupdate.fba.plist + +/bin/rm -f /Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f /Library/Preferences/com.microsoft.autoupdate.fba.plist + +/bin/rm -f /var/root/Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f /var/root/Library/Preferences/com.microsoft.autoupdate.fba.plist + +/bin/rm -rf $HOME/Library/Caches/com.microsoft.autoupdate2 +/bin/rm -rf $HOME/Library/Caches/com.microsoft.autoupdate.fba + +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.autoupdate2 +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.autoupdate.fba + +/bin/rm -rf $HOME/Library/Application\ Support/Microsoft\ AU\ Daemon + +/bin/rm -rf /Library/Application\ Support/Microsoft/MERP2.0 + +/bin/rm -rf $TMPDIR/MSauClones +/bin/rm -rf /Library/Caches/com.microsoft.autoupdate.helper/ +/bin/rm -rf /Library/Caches/com.microsoft.autoupdate.fba/ +/bin/rm -f $TMPDIR/TelemetryUploadFilecom.microsoft.autoupdate.fba.txt +/bin/rm -f $TMPDIR/TelemetryUploadFilecom.microsoft.autoupdate2.txt + +/bin/rm -rf /Applications/.Microsoft\ Word.app.installBackup +/bin/rm -rf /Applications/.Microsoft\ Excel.app.installBackup +/bin/rm -rf /Applications/.Microsoft\ PowerPoint.app.installBackup +/bin/rm -rf /Applications/.Microsoft\ Outlook.app.installBackup +/bin/rm -rf /Applications/.Microsoft\ OneNote.app.installBackup + +/bin/rm -rf /Library/Logs/Microsoft/autoupdate.log + +/usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 AcknowledgedDataCollectionPolicy -string 'RequiredDataOnly' + +if [ -d "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app" ]; then + echo "Office-Reset: Installing the latest version of ${APP_NAME}" + RepairApp +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Creating new preferences" +/usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Library/Application Support/Microsoft/MAU2.0/Microsoft AutoUpdate.app" "{ 'Application ID' = 'MSau04'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + +WORD_VERSION=$(defaults read /Applications/Microsoft\ Word.app/Contents/Info.plist CFBundleVersion) +if [[ "${WORD_VERSION}" != "" ]]; then + if is-at-least 16.17 $WORD_VERSION; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Word.app" "{ 'Application ID' = 'MSWD2019'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + else + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Word.app" "{ 'Application ID' = 'MSWD15'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + fi +fi + +EXCEL_VERSION=$(defaults read /Applications/Microsoft\ Excel.app/Contents/Info.plist CFBundleVersion) +if [[ "${EXCEL_VERSION}" != "" ]]; then + if is-at-least 16.17 $EXCEL_VERSION; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Excel.app" "{ 'Application ID' = 'XCEL2019'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + else + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Excel.app" "{ 'Application ID' = 'XCEL15'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + fi +fi + +POWERPOINT_VERSION=$(defaults read /Applications/Microsoft\ PowerPoint.app/Contents/Info.plist CFBundleVersion) +if [[ "${POWERPOINT_VERSION}" != "" ]]; then + if is-at-least 16.17 $POWERPOINT_VERSION; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft PowerPoint.app" "{ 'Application ID' = 'PPT32019'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + else + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft PowerPoint.app" "{ 'Application ID' = 'PPT315'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + fi +fi + +OUTLOOK_VERSION=$(defaults read /Applications/Microsoft\ Outlook.app/Contents/Info.plist CFBundleVersion) +if [[ "${OUTLOOK_VERSION}" != "" ]]; then + if is-at-least 16.17 $OUTLOOK_VERSION; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Outlook.app" "{ 'Application ID' = 'OPIM2019'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + else + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Outlook.app" "{ 'Application ID' = 'OPIM15'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + fi +fi + +ONENOTE_VERSION=$(defaults read /Applications/Microsoft\ OneNote.app/Contents/Info.plist CFBundleVersion) +if [[ "${ONENOTE_VERSION}" != "" ]]; then + if is-at-least 16.17 $ONENOTE_VERSION; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft OneNote.app" "{ 'Application ID' = 'ONMC2019'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + else + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft OneNote.app" "{ 'Application ID' = 'ONMC15'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" + fi +fi + +if [ -d "/Applications/OneDrive.app" ]; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/OneDrive.app" "{ 'Application ID' = 'ONDR18'; LCID = 1033 ; 'App Domain' = 'com.microsoft.office' ; }" +fi + +if [ -d "/Applications/Microsoft Teams classic.app" ]; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Teams classic.app" "{ 'Application ID' = 'TEAMS10'; LCID = 1033 ; }" +fi + +if [ -d "/Applications/Microsoft Remote Desktop.app" ]; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Microsoft Remote Desktop.app" "{ 'Application ID' = 'MSRD10'; LCID = 1033 ; }" +fi + +if [ -d "/Applications/Skype For Business.app" ]; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Skype For Business.app" "{ 'Application ID' = 'MSFB16'; LCID = 1033 ; }" +fi + +if [ -d "/Applications/Company Portal.app" ]; then + /usr/bin/defaults write /Library/Preferences/com.microsoft.autoupdate2 ApplicationsSystem -dict-add "/Applications/Company Portal.app" "{ 'Application ID' = 'IMCP01'; LCID = 1033 ; }" +fi + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Credentials_Reset.sh b/scripts/Office_Credentials_Reset.sh new file mode 100755 index 0000000..a2fbb60 --- /dev/null +++ b/scripts/Office_Credentials_Reset.sh @@ -0,0 +1,190 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Credentials" +autoload is-at-least + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +FindEntryOpenTech() { + /usr/bin/security find-generic-password -G 'MSOpenTech.ADAL.1' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryOfficeData() { + /usr/bin/security find-generic-password -G 'Microsoft Office Data' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryHelpShift() { + /usr/bin/security find-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryRMSCredential() { + /usr/bin/security find-generic-password -l 'MicrosoftOfficeRMSCredential' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryProtectionService() { + /usr/bin/security find-generic-password -l 'MSProtection.framework.service' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryExchange() { + /usr/bin/security find-generic-password -l 'Exchange' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryTeamsIdentity() { + /usr/bin/security find-generic-password -l 'Microsoft Teams Identities Cache' 2> /dev/null 1> /dev/null + echo $? +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Quitting all apps gracefully" +/usr/bin/pkill -HUP 'Microsoft Word' +/usr/bin/pkill -HUP 'Microsoft Excel' +/usr/bin/pkill -HUP 'Microsoft PowerPoint' +/usr/bin/pkill -HUP 'Microsoft Outlook' +/usr/bin/pkill -HUP 'Microsoft OneNote' + +KeychainHasLogin=$(/usr/bin/security list-keychains | grep 'login.keychain') +if [ "$KeychainHasLogin" = "" ]; then + echo "Office-Reset: Adding user login keychain to list" + /usr/bin/security list-keychains -s "$HOME/Library/Keychains/login.keychain-db" +fi + +echo "Display list-keychains for logged-in user" +/usr/bin/security list-keychains + +echo "Office-Reset: Removing keychain entries" +/usr/bin/security delete-generic-password -s 'OneAuthAccount' + +/usr/bin/security delete-internet-password -s 'msoCredentialSchemeADAL' +/usr/bin/security delete-internet-password -s 'msoCredentialSchemeLiveId' +while [[ $(FindEntryOpenTech) -eq 0 ]]; do + /usr/bin/security delete-generic-password -G 'MSOpenTech.ADAL.1' +done +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 2' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 3' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Settings 2' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Settings 3' +/usr/bin/security delete-generic-password -l 'Microsoft Office Ticket Cache' +/usr/bin/security delete-generic-password -l 'Microsoft Office Ticket Cache 2' +/usr/bin/security delete-generic-password -l 'com.microsoft.adalcache' +while [[ $(FindEntryOfficeData) -eq 0 ]]; do + /usr/bin/security delete-generic-password -G 'Microsoft Office Data' +done +/usr/bin/security delete-generic-password -l 'com.microsoft.OutlookCore.Secret' + +while [[ $(FindEntryHelpShift) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' +done +while [[ $(FindEntryRMSCredential) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'MicrosoftOfficeRMSCredential' +done +while [[ $(FindEntryProtectionService) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'MSProtection.framework.service' +done + +while [[ $(FindEntryExchange) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'Exchange' +done + +while [[ $(FindEntryTeamsIdentity) -eq 0 ]]; do + /usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Microsoft Teams Identities Cache' +done +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Teams Safe Storage' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Microsoft Teams (work or school) Safe Storage' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'teamsIv' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'teamsKey' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'com.microsoft.teams.HockeySDK' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'com.microsoft.teams.helper.HockeySDK' + +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDrive.FinderSync.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDrive.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDriveUpdater.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDriveStandaloneUpdater.HockeySDK' +/usr/bin/security delete-generic-password -l 'OneDrive Standalone Cached Credential Business - Business1' +/usr/bin/security delete-generic-password -l 'OneDrive Standalone Cached Credential' +/usr/bin/security delete-generic-password -s 'com.microsoft.onedrive.cookies' +/usr/bin/security delete-generic-password -s 'OneAuthAccount' + +echo "Office-Reset: Removing credential and license files" +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/mip_policy +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/DRM_Evo.plist +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.com.microsoft.oneauth + +/bin/rm -f /Library/Preferences/com.microsoft.office.licensingV2.plist.bak +/bin/mv /Library/Preferences/com.microsoft.office.licensingV2.plist /Library/Preferences/com.microsoft.office.licensingV2.backup + +/bin/rm -f /Library/Application\ Support/Microsoft/Office365/com.microsoft.Office365.plist +/bin/rm -f /Library/Application\ Support/Microsoft/Office365/com.microsoft.Office365V2.plist +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/com.microsoft.Office365.plist +/bin/mv $HOME/Library/Group\ Containers/UBF8T346G9.Office/com.microsoft.Office365V2.plist $HOME/Library/Group\ Containers/UBF8T346G9.Office/com.microsoft.Office365V2.backup +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/com.microsoft.e0E2OUQxNUY1LTAxOUQtNDQwNS04QkJELTAxQTI5M0JBOTk4O.plist +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/e0E2OUQxNUY1LTAxOUQtNDQwNS04QkJELTAxQTI5M0JBOTk4O +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/com.microsoft.O4kTOBJ0M5ITQxATLEJkQ40SNwQDNtQUOxATL1YUNxQUO2E0e.plist +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/O4kTOBJ0M5ITQxATLEJkQ40SNwQDNtQUOxATL1YUNxQUO2E0e + +/bin/rm -rf /Library/Microsoft/Office/Licenses +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/Licenses +/bin/rm -rf $HOME/Library/Containers/com.microsoft.RMS-XPCService +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Office365ServiceV2 + +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Word/Data/Library/Application\ Support/Microsoft +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Excel/Data/Library/Application\ Support/Microsoft +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Powerpoint/Data/Library/Application\ Support/Microsoft +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Outlook/Data/Library/Application\ Support/Microsoft +/bin/rm -rf $HOME/Library/Containers/com.microsoft.onenote.mac/Data/Library/Application\ Support/Microsoft + +/bin/rm -f $HOME/Library/Preferences/com.microsoft.msa-login-hint.plist + +echo "Office-Reset: Changing preferences" +if [ -e "$HOME/Library/Preferences/com.microsoft.office.plist" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults delete $HOME/Library/Preferences/com.microsoft.office OfficeActivationEmailAddress + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Preferences/com.microsoft.office OfficeAutoSignIn -bool TRUE + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Preferences/com.microsoft.office HasUserSeenFREDialog -bool TRUE + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Preferences/com.microsoft.office HasUserSeenEnterpriseFREDialog -bool TRUE +fi +if [ -d "$HOME/Library/Containers/com.microsoft.Word/Data/Library/Preferences" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Containers/com.microsoft.Word/Data/Library/Preferences/com.microsoft.Word kSubUIAppCompletedFirstRunSetup1507 -bool FALSE +fi +if [ -d "$HOME/Library/Containers/com.microsoft.Excel/Data/Library/Preferences" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Containers/com.microsoft.Excel/Data/Library/Preferences/com.microsoft.Excel kSubUIAppCompletedFirstRunSetup1507 -bool FALSE +fi +if [ -d "$HOME/Library/Containers/com.microsoft.Powerpoint/Data/Library/Preferences" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Containers/com.microsoft.Powerpoint/Data/Library/Preferences/com.microsoft.Powerpoint kSubUIAppCompletedFirstRunSetup1507 -bool FALSE +fi +if [ -d "$HOME/Library/Containers/com.microsoft.Outlook/Data/Library/Preferences" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Containers/com.microsoft.Outlook/Data/Library/Preferences/com.microsoft.Outlook kSubUIAppCompletedFirstRunSetup1507 -bool FALSE +fi +if [ -d "$HOME/Library/Containers/com.microsoft.onenote.mac/Data/Library/Preferences" ]; then + /usr/bin/sudo -u $LoggedInUser /usr/bin/defaults write $HOME/Library/Containers/com.microsoft.onenote.mac/Data/Library/Preferences/com.microsoft.onenote.mac kSubUIAppCompletedFirstRunSetup1507 -bool FALSE +fi + +KEYCHAIN_2_PATH=$(find $HOME/Library/Keychains/**/keychain-2.db) +/usr/bin/sqlite3 $KEYCHAIN_2_PATH "DELETE FROM genp WHERE agrp='UBF8T346G9.com.microsoft.identity.universalstorage';" + +/bin/rm -f $HOME/Library/Keychains/Microsoft_Entity_Certificates-db +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg + +/usr/bin/killall cfprefsd + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Defender_Remove.sh b/scripts/Office_Defender_Remove.sh new file mode 100755 index 0000000..0671c2c --- /dev/null +++ b/scripts/Office_Defender_Remove.sh @@ -0,0 +1,62 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_Defender" +autoload is-at-least +SCRIPT_FOLDER=$(/usr/bin/dirname "$0") + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft Defender*' + +if [ -e "/Applications/Microsoft Defender.app/Contents/Resources/Tools/uninstall/uninstall" ]; then + $(/Applications/Microsoft\ Defender.app/Contents/Resources/Tools/uninstall/uninstall) +else + /bin/rm -rf /Applications/Microsoft\ Defender.app +fi + +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.com.microsoft.wdav +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.wdav.tray +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.wdav.mainux +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.wdav.shim +/bin/rm -rf $HOME/Library/Application\ Support/Microsoft\ Defender\ Helper + +/bin/rm -rf $HOME/Library/Caches/com.microsoft.wdav.tray +/bin/rm -rf $HOME/Library/Caches/com.microsoft.wdav.mainux +/bin/rm -rf $HOME/Library/Caches/com.microsoft.wdav.shim + +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.wdav.tray +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.wdav.mainux +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.wdav.shim + +/bin/rm -rf $HOME/Library/Logs/Microsoft/Defender + +/bin/rm -f $HOME/Library/Preferences/UBF8T346G9.com.microsoft.wdav.plist + +/usr/sbin/pkgutil --forget com.microsoft.dlp.ux +/usr/sbin/pkgutil --forget com.microsoft.dlp.daemon +/usr/sbin/pkgutil --forget com.microsoft.dlp.agent + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Excel_Reset.sh b/scripts/Office_Excel_Reset.sh new file mode 100755 index 0000000..d25d9cf --- /dev/null +++ b/scripts/Office_Excel_Reset.sh @@ -0,0 +1,190 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Excel" +autoload is-at-least +APP_NAME="Microsoft Excel" +APP_GENERATION="2019" +DOWNLOAD_2019="https://go.microsoft.com/fwlink/?linkid=525135" +DOWNLOAD_2016="https://go.microsoft.com/fwlink/?linkid=871750" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +GetPrefValue() { # $1: domain, $2: key + osascript -l JavaScript << EndOfScript + ObjC.import('Foundation'); + ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('$1').objectForKey('$2')) +EndOfScript +} + +GetCustomManifestVersion() { + CHANNEL_NAME=$(GetPrefValue "com.microsoft.autoupdate2" "ChannelName") + if [ "${CHANNEL_NAME}" = "Custom" ]; then + MANIFEST_SERVER=$(GetPrefValue "com.microsoft.autoupdate2" "ManifestServer") + echo "Office-Reset: Found custom ManifestServer ${MANIFEST_SERVER}" + FULL_UPDATER=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409XCEL2019.xml | grep -A1 -m1 'FullUpdaterLocation' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom FullUpdaterLocation ${FULL_UPDATER}" + if [[ "${FULL_UPDATER}" = "https://"* ]]; then + CUSTOM_VERSION=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409XCEL2019-chk.xml | grep -A1 -m1 'Update Version' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom update version ${CUSTOM_VERSION}" + fi + fi +} + +RepairApp() { + if [[ "${APP_GENERATION}" == "2016" ]]; then + DOWNLOAD_URL="${DOWNLOAD_2016}" + else + DOWNLOAD_URL="${DOWNLOAD_2019}" + fi + + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + GetCustomManifestVersion + if [[ -z "${CUSTOM_VERSION}" ]]; then + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + else + CDN_PKG_URL="${FULL_UPDATER}" + fi + + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $CDN_PKG_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $CDN_PKG_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + echo "Office-Reset: Exiting without removing configuration data" + exit 0 +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft Excel' + +if [ -d "/Applications/Microsoft Excel.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Excel.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 16.17 $APP_VERSION; then + APP_GENERATION="2016" + fi + if [[ "${APP_GENERATION}" == "2019" ]]; then + if ! is-at-least 16.73 $APP_VERSION && is-at-least 11.0.0 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2019 generation) is ancient. Updating it now" + RepairApp + fi + GetCustomManifestVersion + if [[ "${CUSTOM_VERSION}" ]] && [[ "${APP_VERSION}" != "${CUSTOM_VERSION}" ]]; then + echo "Office-Reset: ${APP_NAME} is ${APP_VERSION} on-disk, but the pinned version has been set to ${CUSTOM_VERSION}. Removing and reinstalling" + /bin/rm -rf /Applications/Microsoft\ Excel.app + RepairApp + fi + fi + if [[ "${APP_GENERATION}" == "2016" ]]; then + if ! is-at-least 16.16 $APP_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2016 generation) is ancient. Updating it now" + RepairApp + fi + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ Excel.app + if [ $? -gt 0 ]; then + CODESIGN_ERROR=$(/usr/bin/codesign -vv --deep /Applications/Microsoft\ Excel.app) + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and reporting error ${CODESIGN_ERROR}" + if [[ "${CODESIGN_ERROR}" = *"OLE.framework"* ]]; then + echo "Office-Reset: Only OLE.framework has been modified. Ignoring the repair" + else + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ Excel.app + RepairApp + fi + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f /Library/Preferences/com.microsoft.Excel.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Excel.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Excel.plist +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Excel +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Excel + +/bin/rm -rf /Applications/.Microsoft\ Excel.app.installBackup + +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Startup.localized/Excel +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.xlt +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.xltx +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.xltm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Startup.localized/Excel +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.xlt +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.xltx +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.xltm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/mip_policy +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/ComRPC32 +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/TemporaryItems +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg + +/usr/bin/security delete-certificate -c 'Microsoft.Office.Excel.ProtectedDataServices' + +/bin/rm -rf $TMPDIR/com.microsoft.Excel + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Factory_Reset.sh b/scripts/Office_Factory_Reset.sh new file mode 100755 index 0000000..0cb8d48 --- /dev/null +++ b/scripts/Office_Factory_Reset.sh @@ -0,0 +1,51 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Factory" +autoload is-at-least + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Stopping apps and services" +/usr/bin/pkill -9 'Microsoft Word' +/usr/bin/pkill -9 'Microsoft Excel' +/usr/bin/pkill -9 'Microsoft PowerPoint' +/usr/bin/pkill -9 'Microsoft Outlook' +/usr/bin/pkill -9 'Microsoft OneNote' +/usr/bin/pkill -9 'OneDrive' +/usr/bin/pkill -9 'FinderSync' +/usr/bin/pkill -9 'OneDriveStandaloneUpdater' +/usr/bin/pkill -9 'OneDriveUpdater' +/usr/bin/pkill -9 'Microsoft Teams*' +/usr/bin/pkill -9 'Microsoft AutoUpdate' +/usr/bin/pkill -9 'Microsoft Update Assistant' +/usr/bin/pkill -9 'Microsoft AU Daemon' +/usr/bin/pkill -9 'Microsoft AU Bootstrapper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helpertool' +/usr/bin/pkill -9 'com.microsoft.autoupdate.bootstrapper.helper' +/usr/bin/pkill -9 'com.microsoft.teams2.launcher' + +exit 0 \ No newline at end of file diff --git a/scripts/Office_OneDrive_Reset.sh b/scripts/Office_OneDrive_Reset.sh new file mode 100755 index 0000000..26ab5d8 --- /dev/null +++ b/scripts/Office_OneDrive_Reset.sh @@ -0,0 +1,202 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_OneDrive" +autoload is-at-least +APP_NAME="Microsoft OneDrive" +DOWNLOAD_URL="https://go.microsoft.com/fwlink/?linkid=861011" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +RepairApp() { + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $DOWNLOAD_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'OneDrive' +/usr/bin/pkill -9 'FinderSync' +/usr/bin/pkill -9 'OneDriveStandaloneUpdater' +/usr/bin/pkill -9 'OneDriveUpdater' + +if [ -d "/Applications/OneDrive.app" ]; then + APP_VERSION=$(defaults read /Applications/OneDrive.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 23154.0 $APP_VERSION && is-at-least 10.15 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} is ancient. Updating it now" + RepairApp + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/OneDrive.app + if [ $? -gt 0 ]; then + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/OneDrive.app + RepairApp + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -rf $HOME/Library/Caches/OneDrive +/bin/rm -rf $HOME/Library/Caches/com.microsoft.OneDrive +/bin/rm -rf $HOME/Library/Caches/com.microsoft.OneDriveUpdater +/bin/rm -rf $HOME/Library/Caches/com.microsoft.OneDriveStandaloneUpdater +/bin/rm -rf $HOME/Library/Caches/com.microsoft.SyncReporter +/bin/rm -rf $HOME/Library/Caches/com.microsoft.SharePoint-mac + +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDrive.binarycookies +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDriveUpdater.binarycookies +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDriveStandaloneUpdater.binarycookies + +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.OneDrive +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.OneDrive.binarycookies +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.OneDriveUpdater +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.OneDriveUpdater.binarycookies +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.SharePoint-mac +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.SharePoint-mac.binarycookies +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.SyncReporter +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.SyncReporter.binarycookies +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.OneDriveStandaloneUpdater +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.OneDriveStandaloneUpdater.binarycookies + +/bin/rm -rf $HOME/Library/WebKit/com.microsoft.OneDrive + +/bin/rm -rf $HOME/Library/Containers/com.microsoft.OneDrive-mac +/bin/rm -rf $HOME/Library/Containers/com.microsoft.OneDrive.FinderSync +/bin/rm -rf $HOME/Library/Containers/com.microsoft.OneDrive-mac.FinderSync +/bin/rm -rf $HOME/Library/Containers/com.microsoft.OneDriveLauncher +/bin/rm -rf $HOME/Library/Containers/com.microsoft.OneDrive.FileProvider + +/bin/rm -rf $HOME/Library/Logs/OneDrive +/bin/rm -rf /Library/Logs/Microsoft/OneDrive + +/bin/rm -rf $HOME/Library/Application\ Support/OneDrive +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.OneDrive +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.OneDriveUpdater +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.OneDriveStandaloneUpdater +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.SharePoint-mac +/bin/rm -rf $HOME/Library/Application\ Support/OneDriveUpdater +/bin/rm -rf $HOME/Library/Application\ Support/OneDriveStandaloneUpdater + +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.OneDrive.FinderSync +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.OneDrive.FileProvider +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.OneDriveStandaloneSuite +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.OfficeOneDriveSyncIntegration +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.OneDriveSyncClientSuite +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.Kfm + +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.OfficeOneDriveSyncIntegration +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.OneDriveStandaloneSuite +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.OneDriveSyncClientSuite +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Kfm + +/bin/rm -f $HOME/Library/Preferences/com.microsoft.OneDrive.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.SharePoint-mac.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.OneDriveUpdater.plist +/bin/rm -f $HOME/Library/Preferences/UBF8T346G9.OneDriveStandaloneSuite.plist +/bin/rm -f $HOME/Library/Preferences/UBF8T346G9.OfficeOneDriveSyncIntegration.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDrive.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDriveUpdater.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDrive.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.OneDriveUpdater.plist + +/bin/rm -rf $TMPDIR/com.microsoft.OneDrive +/bin/rm -rf $TMPDIR/com.microsoft.OneDrive.FinderSync +/bin/rm -f $TMPDIR/OneDriveVersion.xml + +KeychainHasLogin=$(/usr/bin/security list-keychains | grep 'login.keychain') +if [ "$KeychainHasLogin" = "" ]; then + echo "Office-Reset: Adding user login keychain to list" + /usr/bin/security list-keychains -s "$HOME/Library/Keychains/login.keychain-db" +fi + +echo "Display list-keychains for logged-in user" +/usr/bin/security list-keychains + +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDrive.FinderSync.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDrive.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDriveUpdater.HockeySDK' +/usr/bin/security delete-generic-password -l 'com.microsoft.OneDriveStandaloneUpdater.HockeySDK' +/usr/bin/security delete-generic-password -l 'OneDrive Standalone Cached Credential Business - Business1' +/usr/bin/security delete-generic-password -l 'OneDrive Standalone Cached Credential' +/usr/bin/security delete-generic-password -s 'com.microsoft.onedrive.cookies' +/usr/bin/security delete-generic-password -s 'OneAuthAccount' +/usr/bin/security delete-generic-password -l 'com.microsoft.adalcache' +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.com.microsoft.oneauth + +KEYCHAIN_2_PATH=$(find $HOME/Library/Keychains/**/keychain-2.db) +/usr/bin/sqlite3 $KEYCHAIN_2_PATH "DELETE FROM genp WHERE agrp='UBF8T346G9.com.microsoft.identity.universalstorage';" + +exit 0 \ No newline at end of file diff --git a/scripts/Office_OneNote_Remove_Data.sh b/scripts/Office_OneNote_Remove_Data.sh new file mode 100755 index 0000000..6f10572 --- /dev/null +++ b/scripts/Office_OneNote_Remove_Data.sh @@ -0,0 +1,35 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_OneNote_Data" +autoload is-at-least + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft OneNote' + +/bin/rm -rf $HOME/Library/Containers/com.microsoft.onenote.mac + +exit 0 \ No newline at end of file diff --git a/scripts/Office_OneNote_Reset.sh b/scripts/Office_OneNote_Reset.sh new file mode 100755 index 0000000..4f2e595 --- /dev/null +++ b/scripts/Office_OneNote_Reset.sh @@ -0,0 +1,180 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_OneNote" +autoload is-at-least +APP_NAME="Microsoft OneNote" +APP_GENERATION="2019" +DOWNLOAD_2019="https://go.microsoft.com/fwlink/?linkid=820886" +DOWNLOAD_2016="https://go.microsoft.com/fwlink/?linkid=871755" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +GetPrefValue() { # $1: domain, $2: key + osascript -l JavaScript << EndOfScript + ObjC.import('Foundation'); + ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('$1').objectForKey('$2')) +EndOfScript +} + +GetCustomManifestVersion() { + CHANNEL_NAME=$(GetPrefValue "com.microsoft.autoupdate2" "ChannelName") + if [ "${CHANNEL_NAME}" = "Custom" ]; then + MANIFEST_SERVER=$(GetPrefValue "com.microsoft.autoupdate2" "ManifestServer") + echo "Office-Reset: Found custom ManifestServer ${MANIFEST_SERVER}" + FULL_UPDATER=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409ONMC2019.xml | grep -A1 -m1 'FullUpdaterLocation' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom FullUpdaterLocation ${FULL_UPDATER}" + if [[ "${FULL_UPDATER}" = "https://"* ]]; then + CUSTOM_VERSION=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409ONMC2019-chk.xml | grep -A1 -m1 'Update Version' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom update version ${CUSTOM_VERSION}" + fi + fi +} + +RepairApp() { + if [[ "${APP_GENERATION}" == "2016" ]]; then + DOWNLOAD_URL="${DOWNLOAD_2016}" + else + DOWNLOAD_URL="${DOWNLOAD_2019}" + fi + + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + GetCustomManifestVersion + if [[ -z "${CUSTOM_VERSION}" ]]; then + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + else + CDN_PKG_URL="${FULL_UPDATER}" + fi + + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $CDN_PKG_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $CDN_PKG_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + echo "Office-Reset: Exiting without removing configuration data" + exit 0 +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft OneNote' + +if [ -d "/Applications/Microsoft OneNote.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ OneNote.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 16.17 $APP_VERSION; then + APP_GENERATION="2016" + fi + if [[ "${APP_GENERATION}" == "2019" ]]; then + if ! is-at-least 16.73 $APP_VERSION && is-at-least 11.0.0 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2019 generation) is ancient. Updating it now" + RepairApp + fi + GetCustomManifestVersion + if [[ "${CUSTOM_VERSION}" ]] && [[ "${APP_VERSION}" != "${CUSTOM_VERSION}" ]]; then + echo "Office-Reset: ${APP_NAME} is ${APP_VERSION} on-disk, but the pinned version has been set to ${CUSTOM_VERSION}. Removing and reinstalling" + /bin/rm -rf /Applications/Microsoft\ OneNote.app + RepairApp + fi + fi + if [[ "${APP_GENERATION}" == "2016" ]]; then + if ! is-at-least 16.16 $APP_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2016 generation) is ancient. Updating it now" + RepairApp + fi + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ OneNote.app + if [ $? -gt 0 ]; then + CODESIGN_ERROR=$(/usr/bin/codesign -vv --deep /Applications/Microsoft\ OneNote.app) + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and reporting error ${CODESIGN_ERROR}" + if [[ "${CODESIGN_ERROR}" = *"OLE.framework"* ]]; then + echo "Office-Reset: Only OLE.framework has been modified. Ignoring the repair" + else + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ OneNote.app + RepairApp + fi + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f /Library/Preferences/com.microsoft.onenote.mac.plist +/bin/rm -f /Library/Managed Preferences/com.microsoft.onenote.mac.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.onenote.mac.plist +## /bin/rm -rf $HOME/Library/Containers/com.microsoft.onenote.mac +## OneNote Sync Cache is under $HOME/Library/Containers/com.microsoft.onenote.mac/Data/Library/Application\ Support/Microsoft\ User\ Data/ +/bin/rm -rf $HOME/Library/Containers/com.microsoft.onenote.mac.shareextension +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.onenote.mac +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.onenote.mac.shareextension + +/bin/rm -rf /Applications/.Microsoft\ OneNote.app.installBackup + +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T369G9.Office/OneNote +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T369G9.Office/FontCache +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T369G9.Office/TemporaryItems + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Outlook_Remove_Data.sh b/scripts/Office_Outlook_Remove_Data.sh new file mode 100755 index 0000000..0e63cbd --- /dev/null +++ b/scripts/Office_Outlook_Remove_Data.sh @@ -0,0 +1,38 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_Outlook_Data" +autoload is-at-least + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft Outlook' + +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Outlook.plist + +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/Outlook +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/OutlookProfile.plist + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Outlook_Reset.sh b/scripts/Office_Outlook_Reset.sh new file mode 100755 index 0000000..c17b59e --- /dev/null +++ b/scripts/Office_Outlook_Reset.sh @@ -0,0 +1,249 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Outlook" +autoload is-at-least +APP_NAME="Microsoft Outlook" +APP_GENERATION="2019" +DOWNLOAD_2019="https://go.microsoft.com/fwlink/?linkid=525137" +DOWNLOAD_2016="https://go.microsoft.com/fwlink/?linkid=871753" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +GetPrefValue() { # $1: domain, $2: key + osascript -l JavaScript << EndOfScript + ObjC.import('Foundation'); + ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('$1').objectForKey('$2')) +EndOfScript +} + +GetCustomManifestVersion() { + CHANNEL_NAME=$(GetPrefValue "com.microsoft.autoupdate2" "ChannelName") + if [ "${CHANNEL_NAME}" = "Custom" ]; then + MANIFEST_SERVER=$(GetPrefValue "com.microsoft.autoupdate2" "ManifestServer") + echo "Office-Reset: Found custom ManifestServer ${MANIFEST_SERVER}" + FULL_UPDATER=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409OPIM2019.xml | grep -A1 -m1 'FullUpdaterLocation' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom FullUpdaterLocation ${FULL_UPDATER}" + if [[ "${FULL_UPDATER}" = "https://"* ]]; then + CUSTOM_VERSION=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409OPIM2019-chk.xml | grep -A1 -m1 'Update Version' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom update version ${CUSTOM_VERSION}" + fi + fi +} + +RepairApp() { + if [[ "${APP_GENERATION}" == "2016" ]]; then + DOWNLOAD_URL="${DOWNLOAD_2016}" + else + DOWNLOAD_URL="${DOWNLOAD_2019}" + fi + + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + GetCustomManifestVersion + if [[ -z "${CUSTOM_VERSION}" ]]; then + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + else + CDN_PKG_URL="${FULL_UPDATER}" + fi + + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $CDN_PKG_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $CDN_PKG_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + echo "Office-Reset: Exiting without removing configuration data" + exit 0 +} + +FindEntryOpenTech() { + /usr/bin/security find-generic-password -G 'MSOpenTech.ADAL.1' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryHelpShift() { + /usr/bin/security find-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryRMSCredential() { + /usr/bin/security find-generic-password -l 'MicrosoftOfficeRMSCredential' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryProtectionService() { + /usr/bin/security find-generic-password -l 'MSProtection.framework.service' 2> /dev/null 1> /dev/null + echo $? +} +FindEntryExchange() { + /usr/bin/security find-generic-password -l 'Exchange' 2> /dev/null 1> /dev/null + echo $? +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft Outlook' + +if [ -d "/Applications/Microsoft Outlook.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Outlook.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 16.17 $APP_VERSION; then + APP_GENERATION="2016" + fi + if [[ "${APP_GENERATION}" == "2019" ]]; then + if ! is-at-least 16.73 $APP_VERSION && is-at-least 11.0.0 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2019 generation) is ancient. Updating it now" + RepairApp + fi + GetCustomManifestVersion + if [[ "${CUSTOM_VERSION}" ]] && [[ "${APP_VERSION}" != "${CUSTOM_VERSION}" ]]; then + echo "Office-Reset: ${APP_NAME} is ${APP_VERSION} on-disk, but the pinned version has been set to ${CUSTOM_VERSION}. Removing and reinstalling" + /bin/rm -rf /Applications/Microsoft\ Outlook.app + RepairApp + fi + fi + if [[ "${APP_GENERATION}" == "2016" ]]; then + if ! is-at-least 16.16 $APP_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2016 generation) is ancient. Updating it now" + RepairApp + fi + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ Outlook.app + if [ $? -gt 0 ]; then + CODESIGN_ERROR=$(/usr/bin/codesign -vv --deep /Applications/Microsoft\ Outlook.app) + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and reporting error ${CODESIGN_ERROR}" + if [[ "${CODESIGN_ERROR}" = *"OLE.framework"* ]]; then + echo "Office-Reset: Only OLE.framework has been modified. Ignoring the repair" + else + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ Outlook.app + RepairApp + fi + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f /Library/Preferences/com.microsoft.Outlook.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Outlook.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Outlook.plist +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Outlook +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Outlook.CalendarWidget +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Outlook +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Outlook.CalendarWidget + +/bin/rm -rf /Library/Application\ Support/Microsoft/WebExPlugin +/bin/rm -rf /Library/Application\ Support/Microsoft/ZoomOutlookPlugin +/bin/rm -rf /Users/Shared/ZoomOutlookPlugin + +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Startup.localized/Word/NormalEmail.dotm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Startup.localized/Word/NormalEmail.dotm + +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/DRM_Evo.plist +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/mip_policy +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/FontCache +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/ComRPC32 +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/TemporaryItems +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/Microsoft\ Office\ ACL* +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg + +/bin/rm -rf $TMPDIR/com.microsoft.Outlook + +/bin/rm -rf /Applications/.Microsoft\ Outlook.app.installBackup + +KeychainHasLogin=$(/usr/bin/security list-keychains | grep 'login.keychain') +if [ "$KeychainHasLogin" = "" ]; then + echo "Office-Reset: Adding user login keychain to list" + /usr/bin/security list-keychains -s "$HOME/Library/Keychains/login.keychain-db" +fi + +echo "Display list-keychains for logged-in user" +/usr/bin/security list-keychains + +/usr/bin/security delete-internet-password -s 'msoCredentialSchemeADAL' +/usr/bin/security delete-internet-password -s 'msoCredentialSchemeLiveId' +while [[ $(FindEntryOpenTech) -eq 0 ]]; do + /usr/bin/security delete-generic-password -G 'MSOpenTech.ADAL.1' +done +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 2' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Cache 3' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Settings 2' +/usr/bin/security delete-generic-password -l 'Microsoft Office Identities Settings 3' +/usr/bin/security delete-generic-password -l 'Microsoft Office Ticket Cache' +/usr/bin/security delete-generic-password -l 'Microsoft Office Ticket Cache 2' +/usr/bin/security delete-generic-password -l 'com.microsoft.adalcache' +/usr/bin/security delete-generic-password -l 'com.microsoft.OutlookCore.Secret' +while [[ $(FindEntryHelpShift) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'com.helpshift.data_com.microsoft.Outlook' +done +while [[ $(FindEntryRMSCredential) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'MicrosoftOfficeRMSCredential' +done +while [[ $(FindEntryProtectionService) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'MSProtection.framework.service' +done + +while [[ $(FindEntryExchange) -eq 0 ]]; do + /usr/bin/security delete-generic-password -l 'Exchange' +done + +exit 0 \ No newline at end of file diff --git a/scripts/Office_PowerPoint_Reset.sh b/scripts/Office_PowerPoint_Reset.sh new file mode 100755 index 0000000..7b2b892 --- /dev/null +++ b/scripts/Office_PowerPoint_Reset.sh @@ -0,0 +1,195 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_PowerPoint" +autoload is-at-least +APP_NAME="Microsoft PowerPoint" +APP_GENERATION="2019" +DOWNLOAD_2019="https://go.microsoft.com/fwlink/?linkid=525136" +DOWNLOAD_2016="https://go.microsoft.com/fwlink/?linkid=871751" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +GetPrefValue() { # $1: domain, $2: key + osascript -l JavaScript << EndOfScript + ObjC.import('Foundation'); + ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('$1').objectForKey('$2')) +EndOfScript +} + +GetCustomManifestVersion() { + CHANNEL_NAME=$(GetPrefValue "com.microsoft.autoupdate2" "ChannelName") + if [ "${CHANNEL_NAME}" = "Custom" ]; then + MANIFEST_SERVER=$(GetPrefValue "com.microsoft.autoupdate2" "ManifestServer") + echo "Office-Reset: Found custom ManifestServer ${MANIFEST_SERVER}" + FULL_UPDATER=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409PPT32019.xml | grep -A1 -m1 'FullUpdaterLocation' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom FullUpdaterLocation ${FULL_UPDATER}" + if [[ "${FULL_UPDATER}" = "https://"* ]]; then + CUSTOM_VERSION=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409PPT32019-chk.xml | grep -A1 -m1 'Update Version' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom update version ${CUSTOM_VERSION}" + fi + fi +} + +RepairApp() { + if [[ "${APP_GENERATION}" == "2016" ]]; then + DOWNLOAD_URL="${DOWNLOAD_2016}" + else + DOWNLOAD_URL="${DOWNLOAD_2019}" + fi + + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + GetCustomManifestVersion + if [[ -z "${CUSTOM_VERSION}" ]]; then + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + else + CDN_PKG_URL="${FULL_UPDATER}" + fi + + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $CDN_PKG_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $CDN_PKG_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + echo "Office-Reset: Exiting without removing configuration data" + exit 0 +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft PowerPoint' + +if [ -d "/Applications/Microsoft PowerPoint.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ PowerPoint.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 16.17 $APP_VERSION; then + APP_GENERATION="2016" + fi + if [[ "${APP_GENERATION}" == "2019" ]]; then + if ! is-at-least 16.73 $APP_VERSION && is-at-least 11.0.0 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2019 generation) is ancient. Updating it now" + RepairApp + fi + GetCustomManifestVersion + if [[ "${CUSTOM_VERSION}" ]] && [[ "${APP_VERSION}" != "${CUSTOM_VERSION}" ]]; then + echo "Office-Reset: ${APP_NAME} is ${APP_VERSION} on-disk, but the pinned version has been set to ${CUSTOM_VERSION}. Removing and reinstalling" + /bin/rm -rf /Applications/Microsoft\ PowerPoint.app + RepairApp + fi + fi + if [[ "${APP_GENERATION}" == "2016" ]]; then + if ! is-at-least 16.16 $APP_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2016 generation) is ancient. Updating it now" + RepairApp + fi + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ PowerPoint.app + if [ $? -gt 0 ]; then + CODESIGN_ERROR=$(/usr/bin/codesign -vv --deep /Applications/Microsoft\ PowerPoint.app) + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and reporting error ${CODESIGN_ERROR}" + if [[ "${CODESIGN_ERROR}" = *"OLE.framework"* ]]; then + echo "Office-Reset: Only OLE.framework has been modified. Ignoring the repair" + else + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ PowerPoint.app + RepairApp + fi + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f /Library/Preferences/com.microsoft.Powerpoint.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Powerpoint.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Powerpoint.plist +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Powerpoint +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Powerpoint + +/bin/rm -rf /Applications/.Microsoft\ PowerPoint.app.installBackup + +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Startup.localized/PowerPoint +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.pot +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.potx +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.potm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Startup.localized/PowerPoint +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.pot +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.potx +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.potm +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Add-Ins/*.ppam +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Add-Ins/*.ppam +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Themes +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Themes + +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/mip_policy +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/FontCache +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/ComRPC32 +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/TemporaryItems +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/Microsoft\ Office\ ACL* +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg + +/bin/rm -rf $TMPDIR/com.microsoft.Powerpoint + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Remove.sh b/scripts/Office_Remove.sh new file mode 100755 index 0000000..8387544 --- /dev/null +++ b/scripts/Office_Remove.sh @@ -0,0 +1,170 @@ +#!/bin/zsh + +echo "Office-Reset: Starting preinstall for Remove_Office" +autoload is-at-least + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Stopping services" +/usr/bin/pkill -9 'Microsoft Word' +/usr/bin/pkill -9 'Microsoft Excel' +/usr/bin/pkill -9 'Microsoft PowerPoint' +/usr/bin/pkill -9 'Microsoft Outlook' +/usr/bin/pkill -9 'Microsoft OneNote' +/usr/bin/pkill -9 'OneDrive' +/usr/bin/pkill -9 'OneDrive Finder Integration' +/usr/bin/pkill -9 'OneDriveStandaloneUpdater' +/usr/bin/pkill -9 'OneDriveUpdater' +/usr/bin/pkill -9 'Microsoft Teams*' +/usr/bin/pkill -9 'Microsoft AutoUpdate' +/usr/bin/pkill -9 'Microsoft Update Assistant' +/usr/bin/pkill -9 'Microsoft AU Daemon' +/usr/bin/pkill -9 'Microsoft AU Bootstrapper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helper' +/usr/bin/pkill -9 'com.microsoft.autoupdate.helpertool' +/usr/bin/pkill -9 'com.microsoft.autoupdate.bootstrapper.helper' + +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.update.agent.plist +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.autoupdate.helper.plist +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/launchctl stop /Library/LaunchAgents/com.microsoft.SyncReporter.plist +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.autoupdate.helper +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.OneDriveUpdaterDaemon.plist +/bin/launchctl stop /Library/LaunchDaemons/com.microsoft.teams.TeamsUpdaterDaemon.plist + +/bin/launchctl unload /Library/LaunchAgents/com.microsoft.update.agent.plist +/bin/launchctl unload /Library/LaunchAgents/com.microsoft.autoupdate.helper.plist +/bin/launchctl unload /Library/LaunchAgents/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.autoupdate.helper +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.OneDriveUpdaterDaemon.plist +/bin/launchctl unload /Library/LaunchDaemons/com.microsoft.teams.TeamsUpdaterDaemon.plist + +echo "Office-Reset: Removing apps" +/bin/rm -rf /Applications/Microsoft\ Word.app +/bin/rm -rf /Applications/Microsoft\ Excel.app +/bin/rm -rf /Applications/Microsoft\ PowerPoint.app +/bin/rm -rf /Applications/Microsoft\ Outlook.app +/bin/rm -rf /Applications/Microsoft\ OneNote.app +/bin/rm -rf /Applications/OneDrive.app +/bin/rm -rf /Applications/Microsoft\ Teams.app +/bin/rm -rf /Applications/Microsoft\ Teams\ classic.app +/bin/rm -rf /Applications/Microsoft\ Teams\ \(work\ or\ school\).app +/bin/rm -rf /Applications/CodeSignSummary-*.md + +echo "Office-Reset: Removing app data" +/bin/rm -rf /Library/Application\ Support/Microsoft/MAU2.0 +/bin/rm -rf /Library/Application\ Support/Microsoft/MERP2.0 +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365 +/bin/rm -rf $HOME/Library/Application\ Support/Microsoft +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.errorreporting +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.com.microsoft.oneauth +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.Office +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.ms +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.OfficeOsfWebHost + +/bin/rm -f /Library/LaunchAgents/com.microsoft.update.agent.plist +/bin/rm -f /Library/LaunchAgents/com.microsoft.OneDriveStandaloneUpdater.plist +/bin/rm -f /Library/LaunchAgents/com.microsoft.SyncReporter.plist + +/bin/rm -f /Library/LaunchDaemons/com.microsoft.autoupdate.helper.plist +/bin/rm -f /Library/LaunchDaemons/com.microsoft.office.licensingV2.helper.plist +/bin/rm -f /Library/LaunchDaemons/com.microsoft.OneDriveStandaloneUpdaterDaemon.plist +/bin/rm -f /Library/LaunchDaemons/com.microsoft.OneDriveUpdaterDaemon.plist +/bin/rm -f /Library/LaunchDaemons/com.microsoft.teams.TeamsUpdaterDaemon.plist + +/bin/rm -f /Library/PrivilegedHelperTools/com.microsoft.autoupdate.helper +/bin/rm -f /Library/PrivilegedHelperTools/com.microsoft.autoupdate.helpertool +/bin/rm -f /Library/PrivilegedHelperTools/com.microsoft.office.licensingV2.helper + +/bin/rm -rf /Library/Audio/Plug-Ins/HAL/MSTeamsAudioDevice.driver + +/bin/rm -rf /Library/Logs/Microsoft +/bin/rm -rf $HOME/Library/Logs/Microsoft + +# OneDriveFolder=$(/bin/ls "$HOME" | grep 'OneDrive' --max-count=1) +# if [ "$OneDriveFolder" != "" ]; then +# IsOneDrive=$(/usr/bin/xattr "$HOME/$OneDriveFolder" | grep 'com.apple.fileutil.SyncRootProviderRootContextList') +# if [ "$IsOneDrive" = "com.apple.fileutil.SyncRootProviderRootContextList" ]; then +# echo "Office-Reset: Removing OneDrive folder $OneDriveFolder" +# /bin/rm -rf "$HOME/$OneDriveFolder" +# fi +# fi + +/bin/rm -f $HOME/Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.autoupdate.fba.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.shared.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.office.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Word.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Excel.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Powerpoint.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Outlook.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.onenote.mac.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.OneDrive-mac.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.OneDrive.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.teams.plist +/bin/rm -f /Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f /Library/Preferences/com.microsoft.autoupdate.fba.plist +/bin/rm -f /Library/Preferences/com.microsoft.shared.plist +/bin/rm -f /Library/Preferences/com.microsoft.office.plist +/bin/rm -f /Library/Preferences/com.microsoft.Word.plist +/bin/rm -f /Library/Preferences/com.microsoft.Excel.plist +/bin/rm -f /Library/Preferences/com.microsoft.Powerpoint.plist +/bin/rm -f /Library/Preferences/com.microsoft.Outlook.plist +/bin/rm -f /Library/Preferences/com.microsoft.onenote.mac.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDrive-mac.plist +/bin/rm -f /Library/Preferences/com.microsoft.OneDrive.plist +/bin/rm -f /Library/Preferences/com.microsoft.teams.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.shared.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.office.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Word.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Excel.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Powerpoint.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Outlook.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.onenote.mac.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.OneDrive-mac.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.OneDrive.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.teams.plist +/bin/rm -f /var/root/Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f /var/root/Library/Preferences/com.microsoft.autoupdate.fba.plist + +/bin/rm -rf $HOME/Library/Caches/com.microsoft.autoupdate2 +/bin/rm -rf $HOME/Library/Caches/com.microsoft.autoupdate.fba +/bin/rm -rf $HOME/Library/Caches/Microsoft + +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.ms +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.OfficeOsfWebHost +/bin/rm -rf $HOME/Library/Group\ Containers/group.com.microsoft +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.com.microsoft.oneauth + +/bin/rm -rf $HOME/Library/Containers/com.microsoft.errorreporting +/bin/rm -rf $HOME/Library/Containers/com.microsoft.netlib.shipassertprocess +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Office365ServiceV2 +/bin/rm -rf $HOME/Library/Containers/com.microsoft.RMS-XPCService + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Remove_2.sh b/scripts/Office_Remove_2.sh new file mode 100755 index 0000000..c5b00c8 --- /dev/null +++ b/scripts/Office_Remove_2.sh @@ -0,0 +1,80 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_Office" +autoload is-at-least +SCRIPT_FOLDER=$(/usr/bin/dirname "$0") + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Removing package receipts" +/usr/sbin/pkgutil --forget com.microsoft.Word +/usr/sbin/pkgutil --forget com.microsoft.Excel +/usr/sbin/pkgutil --forget com.microsoft.Powerpoint +/usr/sbin/pkgutil --forget com.microsoft.Outlook +/usr/sbin/pkgutil --forget com.microsoft.onenote.mac +/usr/sbin/pkgutil --forget com.microsoft.OneDrive-mac + +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_Word.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_Excel.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_PowerPoint.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_Outlook.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_OneNote.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_AutoUpdate.app +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_AU_Bootstrapper.app +/usr/sbin/pkgutil --forget com.microsoft.package.com.microsoft.office.licensingV2.helper + +/usr/sbin/pkgutil --forget com.microsoft.package.Proofing_Tools +/usr/sbin/pkgutil --forget com.microsoft.package.Fonts +/usr/sbin/pkgutil --forget com.microsoft.package.DFonts +/usr/sbin/pkgutil --forget com.microsoft.package.Frameworks + +/usr/sbin/pkgutil --forget com.microsoft.pkg.licensing +/usr/sbin/pkgutil --forget com.microsoft.pkg.licensing.volume +/usr/sbin/pkgutil --forget com.microsoft.office.licensingV2.helper + +/usr/sbin/pkgutil --forget com.microsoft.teams +/usr/sbin/pkgutil --forget com.microsoft.teams2 +/usr/sbin/pkgutil --forget com.microsoft.MSTeamsAudioDevice + +/usr/sbin/pkgutil --forget com.microsoft.wdav + +/usr/sbin/pkgutil --forget com.microsoft.OneDrive + +/bin/rm -f /Library/Preferences/com.microsoft.office.licensingV2.backup +/bin/rm -f /Library/Preferences/com.microsoft.autoupdate2.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.autoupdate2.plist + +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDrive.binarycookies +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDriveUpdater.binarycookies +/bin/rm -f $HOME/Library/Cookies/com.microsoft.OneDriveStandaloneUpdater.binarycookies +/bin/rm -f $HOME/Library/Cookies/com.microsoft.teams.binarycookies + +/bin/rm -rf /Library/Logs/Microsoft +/bin/rm -rf /Library/Application\ Support/Microsoft + +/bin/rm -rf /Users/Shared/OnDemandInstaller + +exit 0 \ No newline at end of file diff --git a/scripts/Office_SkypeForBusiness_Remove.sh b/scripts/Office_SkypeForBusiness_Remove.sh new file mode 100755 index 0000000..fac9a6d --- /dev/null +++ b/scripts/Office_SkypeForBusiness_Remove.sh @@ -0,0 +1,56 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_SkypeForBusiness" +autoload is-at-least +SCRIPT_FOLDER=$(/usr/bin/dirname "$0") + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Skype for Business' + +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.SkypeForBusiness +/bin/rm -rf $HOME/Library/Containers/com.microsoft.SkypeForBusiness +/bin/rm -rf $HOME/Library/Preferences/com.microsoft.OutlookSkypeIntegration.plist + +/bin/rm -f /Library/Preferences/com.microsoft.SkypeForBusiness.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.SkypeForBusiness.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.SkypeForBusiness.plist + +KeychainHasLogin=$(/usr/bin/security list-keychains | grep 'login.keychain') +if [ "$KeychainHasLogin" = "" ]; then + echo "Office-Reset: Adding user login keychain to list" + /usr/bin/security list-keychains -s "$HOME/Library/Keychains/login.keychain-db" +fi + +/usr/bin/security delete-generic-password -l 'com.microsoft.SkypeForBusiness.HockeySDK' +/usr/bin/security delete-generic-password -l 'Skype for Business' + +/bin/rm -rf /Applications/Skype\ for\ Business.app + +/usr/sbin/pkgutil --forget com.microsoft.package.Microsoft_AU_Bootstrapper.app +/usr/sbin/pkgutil --forget com.microsoft.SkypeForBusiness + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Teams_Reset.sh b/scripts/Office_Teams_Reset.sh new file mode 100755 index 0000000..a3ec57d --- /dev/null +++ b/scripts/Office_Teams_Reset.sh @@ -0,0 +1,208 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Teams" +autoload is-at-least +APP_NAME="Microsoft Teams" +DOWNLOAD_URL_TEAMS10="https://go.microsoft.com/fwlink/?linkid=869428" +DOWNLOAD_URL_TEAMS21="https://go.microsoft.com/fwlink/?linkid=2249065" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +RepairApp() { + DOWNLOAD_URL="$1" + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $DOWNLOAD_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi +} + +FindEntryTeamsIdentity() { + /usr/bin/security find-generic-password -l 'Microsoft Teams Identities Cache' 2> /dev/null 1> /dev/null + echo $? +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +/usr/bin/pkill -9 'Microsoft Teams*' + +if [ -d "/Applications/Microsoft Teams.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Teams.app/Contents/Info.plist CFBundleVersion) + APP_BUNDLEID=$(defaults read /Applications/Microsoft\ Teams.app/Contents/Info.plist CFBundleIdentifier) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME} with bundle ID ${APP_BUNDLEID}" + if [[ "${APP_BUNDLEID}" == "com.microsoft.teams" ]]; then + if ! is-at-least 611156.0 $APP_VERSION && is-at-least 10.15 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} is ancient. Updating it now" + RepairApp "$DOWNLOAD_URL_TEAMS10" + fi + fi +fi + +if [ -d "/Applications/Microsoft Teams classic.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Teams\ classic.app/Contents/Info.plist CFBundleVersion) + APP_BUNDLEID=$(defaults read /Applications/Microsoft\ Teams.app/Contents/Info.plist CFBundleIdentifier) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME} with bundle ID ${APP_BUNDLEID}" + if ! is-at-least 627656.0 $APP_VERSION && is-at-least 10.15 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} is ancient. Updating it now" + RepairApp "$DOWNLOAD_URL_TEAMS10" + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ Teams\ classic.app + if [ $? -gt 0 ]; then + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ Teams\ classic.app + RepairApp "$DOWNLOAD_URL_TEAMS10" + else + echo "Office-Reset: Codesign passed successfully" + fi +fi + +if [ -d "/Applications/Microsoft Teams (work or school).app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Teams\ \(work\ or\ school\).app/Contents/Info.plist CFBundleVersion) + APP_BUNDLEID=$(defaults read /Applications/Microsoft\ Teams\ \(work\ or\ school\).app/Contents/Info.plist CFBundleIdentifier) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME} with bundle ID ${APP_BUNDLEID}" + if ! is-at-least 23247.0 $APP_VERSION && is-at-least 10.15 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} is ancient. Updating it now" + RepairApp "$DOWNLOAD_URL_TEAMS21" + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ Teams\ \(work\ or\ school\).app + if [ $? -gt 0 ]; then + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ Teams\ \(work\ or\ school\).app + RepairApp "$DOWNLOAD_URL_TEAMS21" + else + echo "Office-Reset: Codesign passed successfully" + fi +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -rf $HOME/Library/Application\ Support/Teams +/bin/rm -rf $HOME/Library/Application\ Support/Microsoft/Teams +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.teams +/bin/rm -rf $HOME/Library/Application\ Support/com.microsoft.teams.helper + +/bin/rm -rf $HOME/Library/Application\ Scripts/UBF8T346G9.com.microsoft.teams +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.teams2 +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.teams2.launcher +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.teams2.notificationcenter + +/bin/rm -rf $HOME/Library/Caches/com.microsoft.teams +/bin/rm -rf $HOME/Library/Caches/com.microsoft.teams.helper +/bin/rm -f $HOME/Library/Cookies/com.microsoft.teams.binarycookies +/bin/rm -f $HOME/Library/HTTPStorages/com.microsoft.teams.binarycookies +/bin/rm -rf $HOME/Library/HTTPStorages/com.microsoft.teams +/bin/rm -rf $HOME/Library/Logs/Microsoft\ Teams +/bin/rm -rf $HOME/Library/Logs/Microsoft\ Teams\ Helper +/bin/rm -rf $HOME/Library/Logs/Microsoft\ Teams\ Helper \(Renderer\) +/bin/rm -rf $HOME/Library/Saved\ Application\ State/com.microsoft.teams.savedState +/bin/rm -rf $HOME/Library/WebKit/com.microsoft.teams + +/bin/rm -rf $HOME/Library/Containers/com.microsoft.teams2 +/bin/rm -rf $HOME/Library/Containers/com.microsoft.teams2.launcher +/bin/rm -rf $HOME/Library/Containers/com.microsoft.teams2.notificationcenter +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.com.microsoft.teams +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.com.microsoft.oneauth + +/bin/rm -rf /Library/Application\ Support/TeamsUpdaterDaemon +/bin/rm -rf /Library/Application\ Support/Microsoft/TeamsUpdaterDaemon +/bin/rm -rf /Library/Application\ Support/Teams + +/bin/rm -f $HOME/Library/Preferences/com.microsoft.teams.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.teams.plist +/bin/rm -f /Library/Preferences/com.microsoft.teams.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.teams.helper.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.teams.helper.plist +/bin/rm -f /Library/Preferences/com.microsoft.teams.helper.plist + +/bin/rm -rf $TMPDIR/com.microsoft.teams +/bin/rm -rf $TMPDIR/com.microsoft.teams\ Crashes +/bin/rm -rf $TMPDIR/Teams +/bin/rm -rf $TMPDIR/Microsoft\ Teams\ Helper\ \(Renderer\) +/bin/rm -rf $TMPDIR/v8-compile-cache-501 + +/bin/rm -rf /Library/Logs/Microsoft/Teams + +KeychainHasLogin=$(/usr/bin/sudo -u $LoggedInUser /usr/bin/security list-keychains | grep 'login.keychain') +if [ "$KeychainHasLogin" = "" ]; then + echo "Office-Reset: Adding user login keychain to list" + /usr/bin/sudo -u $LoggedInUser /usr/bin/security list-keychains -s "$HOME/Library/Keychains/login.keychain-db" +fi + +echo "Display list-keychains for logged-in user" +/usr/bin/sudo -u $LoggedInUser /usr/bin/security list-keychains + + +while [[ $(FindEntryTeamsIdentity) -eq 0 ]]; do + /usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Microsoft Teams Identities Cache' +done +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Teams Safe Storage' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'Microsoft Teams (work or school) Safe Storage' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'teamsIv' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'teamsKey' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'com.microsoft.teams.HockeySDK' +/usr/bin/sudo -u $LoggedInUser /usr/bin/security delete-generic-password -l 'com.microsoft.teams.helper.HockeySDK' + +exit 0 \ No newline at end of file diff --git a/scripts/Office_Word_Reset.sh b/scripts/Office_Word_Reset.sh new file mode 100755 index 0000000..c3a3c05 --- /dev/null +++ b/scripts/Office_Word_Reset.sh @@ -0,0 +1,190 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Reset_Word" +autoload is-at-least +APP_NAME="Microsoft Word" +APP_GENERATION="2019" +DOWNLOAD_2019="https://go.microsoft.com/fwlink/?linkid=525134" +DOWNLOAD_2016="https://go.microsoft.com/fwlink/?linkid=871748" +OS_VERSION=$(sw_vers -productVersion) + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +GetPrefValue() { # $1: domain, $2: key + osascript -l JavaScript << EndOfScript + ObjC.import('Foundation'); + ObjC.unwrap($.NSUserDefaults.alloc.initWithSuiteName('$1').objectForKey('$2')) +EndOfScript +} + +GetCustomManifestVersion() { + CHANNEL_NAME=$(GetPrefValue "com.microsoft.autoupdate2" "ChannelName") + if [ "${CHANNEL_NAME}" = "Custom" ]; then + MANIFEST_SERVER=$(GetPrefValue "com.microsoft.autoupdate2" "ManifestServer") + echo "Office-Reset: Found custom ManifestServer ${MANIFEST_SERVER}" + FULL_UPDATER=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409MSWD2019.xml | grep -A1 -m1 'FullUpdaterLocation' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom FullUpdaterLocation ${FULL_UPDATER}" + if [[ "${FULL_UPDATER}" = "https://"* ]]; then + CUSTOM_VERSION=$(/usr/bin/nscurl --location ${MANIFEST_SERVER}/0409MSWD2019-chk.xml | grep -A1 -m1 'Update Version' | grep 'string' | sed -e 's,.*\([^<]*\).*,\1,g') + echo "Office-Reset: Found custom update version ${CUSTOM_VERSION}" + fi + fi +} + +RepairApp() { + if [[ "${APP_GENERATION}" == "2016" ]]; then + DOWNLOAD_URL="${DOWNLOAD_2016}" + else + DOWNLOAD_URL="${DOWNLOAD_2019}" + fi + + DOWNLOAD_FOLDER="/Users/Shared/OnDemandInstaller/" + if [ -d "$DOWNLOAD_FOLDER" ]; then + rm -rf "$DOWNLOAD_FOLDER" + fi + mkdir -p "$DOWNLOAD_FOLDER" + + GetCustomManifestVersion + if [[ -z "${CUSTOM_VERSION}" ]]; then + CDN_PKG_URL=$(/usr/bin/nscurl --location --head $DOWNLOAD_URL --dump-header - | awk '/Location/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + else + CDN_PKG_URL="${FULL_UPDATER}" + fi + + echo "Office-Reset: Package to download is ${CDN_PKG_URL}" + CDN_PKG_NAME=$(/usr/bin/basename "${CDN_PKG_URL}") + + CDN_PKG_SIZE=$(/usr/bin/nscurl --location --head $CDN_PKG_URL --dump-header - | awk '/Content-Length/' | cut -d ' ' -f2 | tail -1 | awk '{$1=$1};1') + CDN_PKG_MB=$(/bin/expr ${CDN_PKG_SIZE} / 1000 / 1000) + echo "Office-Reset: Download package is ${CDN_PKG_MB} megabytes in size" + + echo "Office-Reset: Starting ${APP_NAME} package download" + /usr/bin/nscurl --background --download --large-download --location --download-directory $DOWNLOAD_FOLDER $CDN_PKG_URL + echo "Office-Reset: Finished package download" + + LOCAL_PKG_SIZE=$(cd "${DOWNLOAD_FOLDER}" && stat -qf%z "${CDN_PKG_NAME}") + if [[ "${LOCAL_PKG_SIZE}" == "${CDN_PKG_SIZE}" ]]; then + echo "Office-Reset: Downloaded package is wholesome" + else + echo "Office-Reset: Downloaded package is malformed. Local file size: ${LOCAL_PKG_SIZE}" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + LOCAL_PKG_SIGNING=$(/usr/sbin/pkgutil --check-signature ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} | awk '/Developer ID Installer'/ | cut -d ':' -f 2 | awk '{$1=$1};1') + if [[ "${LOCAL_PKG_SIGNING}" == "Microsoft Corporation (UBF8T346G9)" ]]; then + echo "Office-Reset: Downloaded package is signed by Microsoft" + else + echo "Office-Reset: Downloaded package is not signed by Microsoft" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + + echo "Office-Reset: Starting package install" + sudo /usr/sbin/installer -pkg ${DOWNLOAD_FOLDER}${CDN_PKG_NAME} -target / + if [ $? -eq 0 ]; then + echo "Office-Reset: Package installed successfully" + else + echo "Office-Reset: Package installation failed" + echo "Office-Reset: Please manually download and install ${APP_NAME} from ${CDN_PKG_URL}" + exit 0 + fi + echo "Office-Reset: Exiting without removing configuration data" + exit 0 +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME; Temp Folder: $TMPDIR" + +/usr/bin/pkill -9 'Microsoft Word' + +if [ -d "/Applications/Microsoft Word.app" ]; then + APP_VERSION=$(defaults read /Applications/Microsoft\ Word.app/Contents/Info.plist CFBundleVersion) + echo "Office-Reset: Found version ${APP_VERSION} of ${APP_NAME}" + if ! is-at-least 16.17 $APP_VERSION; then + APP_GENERATION="2016" + fi + if [[ "${APP_GENERATION}" == "2019" ]]; then + if ! is-at-least 16.73 $APP_VERSION && is-at-least 11.0.0 $OS_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2019 generation) is ancient. Updating it now" + RepairApp + fi + GetCustomManifestVersion + if [[ "${CUSTOM_VERSION}" ]] && [[ "${APP_VERSION}" != "${CUSTOM_VERSION}" ]]; then + echo "Office-Reset: ${APP_NAME} is ${APP_VERSION} on-disk, but the pinned version has been set to ${CUSTOM_VERSION}. Removing and reinstalling" + /bin/rm -rf /Applications/Microsoft\ Word.app + RepairApp + fi + fi + if [[ "${APP_GENERATION}" == "2016" ]]; then + if ! is-at-least 16.16 $APP_VERSION; then + echo "Office-Reset: The installed version of ${APP_NAME} (2016 generation) is ancient. Updating it now" + RepairApp + fi + fi + echo "Office-Reset: Checking the app bundle for corruption" + /usr/bin/codesign -vv --deep /Applications/Microsoft\ Word.app + if [ $? -gt 0 ]; then + CODESIGN_ERROR=$(/usr/bin/codesign -vv --deep /Applications/Microsoft\ Word.app) + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and reporting error ${CODESIGN_ERROR}" + if [[ "${CODESIGN_ERROR}" = *"OLE.framework"* ]]; then + echo "Office-Reset: Only OLE.framework has been modified. Ignoring the repair" + else + echo "Office-Reset: The ${APP_NAME} app bundle is damaged and will be removed and reinstalled" + /bin/rm -rf /Applications/Microsoft\ Word.app + RepairApp + fi + else + echo "Office-Reset: Codesign passed successfully" + fi +else + echo "Office-Reset: ${APP_NAME} was not found in the default location" +fi + +echo "Office-Reset: Removing configuration data for ${APP_NAME}" +/bin/rm -f /Library/Preferences/com.microsoft.Word.plist +/bin/rm -f /Library/Managed\ Preferences/com.microsoft.Word.plist +/bin/rm -f $HOME/Library/Preferences/com.microsoft.Word.plist +/bin/rm -rf $HOME/Library/Containers/com.microsoft.Word +/bin/rm -rf $HOME/Library/Application\ Scripts/com.microsoft.Word + +/bin/rm -rf /Applications/.Microsoft\ Word.app.installBackup + +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Startup.localized/Word +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.dot +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.dotx +/bin/rm -rf /Library/Application\ Support/Microsoft/Office365/User\ Content.localized/Templates.localized/*.dotm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Startup.localized/Word +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.dot +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.dotx +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/User\ Content.localized/Templates.localized/*.dotm +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/mip_policy +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/FontCache +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/ComRPC32 +/bin/rm -rf $HOME/Library/Group\ Containers/UBF8T346G9.Office/TemporaryItems +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/Microsoft\ Office\ ACL* +/bin/rm -f $HOME/Library/Group\ Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg + +/bin/rm -rf $TMPDIR/com.microsoft.Word + +exit 0 \ No newline at end of file diff --git a/scripts/WebExPT_Remove.sh b/scripts/WebExPT_Remove.sh new file mode 100755 index 0000000..b6c8d2b --- /dev/null +++ b/scripts/WebExPT_Remove.sh @@ -0,0 +1,58 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_WebExPT" +autoload is-at-least +APP_NAME="WebEx Productivity Tools" + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Running native uninstall routine for ${APP_NAME}" +/Applications/WebEx\ Productivity\ Tools/Uninstall/Contents/MacOS/Uninstall + +echo "Office-Reset: Stopping WebEx agent" +/bin/launchctl stop /Library/LaunchAgents/com.webex.pluginagent.plist +/bin/launchctl unload /Library/LaunchAgents/com.webex.pluginagent.plist + +echo "Office-Reset: Removing agent configuration for ${APP_NAME}" +/bin/rm -rf $HOME/Library/Application\ Support/Cisco/Webex\ Plugin +/bin/rm -rf $HOME/Library/Application\ Support/Cisco/Webex\ Meetings +/bin/rm -rf $HOME/Library/Caches/com.cisco.webex.pluginservice +/bin/rm -rf $HOME/Library/Caches/com.cisco.webex.webexmta +/bin/rm -rf $HOME/Library/Group\ Containers/group.com.cisco.webex.meetings +/bin/rm -rf $HOME/Library/Logs/PT +/bin/rm -rf $HOME/Library/Logs/webexmta +/bin/rm -f $HOME/Library/Preferences/com.cisco.webex.pluginservice.plist + +echo "Office-Reset: Removing binaries for ${APP_NAME}" +/bin/rm -rf /Library/Application\ Support/Microsoft/WebExPlugin +/bin/rm -rf /Library/ScriptingAdditions/WebexScriptAddition.osax +/bin/rm -rf /Users/Shared/WebExPlugin + +/bin/rm -rf /Applications/WebEx\ Productivity\ Tools + +/usr/sbin/pkgutil --forget olp.mac.webex.com + +exit 0 \ No newline at end of file diff --git a/scripts/ZoomPlugin_Remove.sh b/scripts/ZoomPlugin_Remove.sh new file mode 100755 index 0000000..d21c45a --- /dev/null +++ b/scripts/ZoomPlugin_Remove.sh @@ -0,0 +1,57 @@ +#!/bin/zsh + +echo "Office-Reset: Starting postinstall for Remove_ZoomPlugin" +autoload is-at-least +APP_NAME="Zoom Outlook Plugin" + +GetLoggedInUser() { + LOGGEDIN=$(/bin/echo "show State:/Users/ConsoleUser" | /usr/sbin/scutil | /usr/bin/awk '/Name :/&&!/loginwindow/{print $3}') + if [ "$LOGGEDIN" = "" ]; then + echo "$USER" + else + echo "$LOGGEDIN" + fi +} + +SetHomeFolder() { + HOME=$(dscl . read /Users/"$1" NFSHomeDirectory | cut -d ':' -f2 | cut -d ' ' -f2) + if [ "$HOME" = "" ]; then + if [ -d "/Users/$1" ]; then + HOME="/Users/$1" + else + HOME=$(eval echo "~$1") + fi + fi +} + +## Main +LoggedInUser=$(GetLoggedInUser) +SetHomeFolder "$LoggedInUser" +echo "Office-Reset: Running as: $LoggedInUser; Home Folder: $HOME" + +echo "Office-Reset: Running native uninstall routine for ${APP_NAME}" +/Applications/ZoomOutlookPlugin/Uninstall/Contents/MacOS/Uninstall + +echo "Office-Reset: Stopping Zoom agent" +/bin/launchctl stop /Library/LaunchAgents/us.zoom.pluginagent.plist +/bin/launchctl unload /Library/LaunchAgents/us.zoom.pluginagent.plist +/bin/launchctl stop "$HOME/Library/LaunchAgents/us.zoom.pluginagent.plist" +/bin/launchctl unload "$HOME/Library/LaunchAgents/us.zoom.pluginagent.plist" + +echo "Office-Reset: Removing agent configuration for ${APP_NAME}" +/bin/rm -f /Library/LaunchAgents/us.zoom.pluginagent.plist +/bin/rm -f $HOME/Library/LaunchAgents/us.zoom.pluginagent.plist +/bin/rm -f $HOME/Library/Logs/zoomoutlookplugin.log +/bin/rm -f $HOME/Library/Preferences/ZoomChat.plist + +echo "Office-Reset: Removing binaries for ${APP_NAME}" +/bin/rm -rf /Library/Application\ Support/ZoomOutlookPlugin +/bin/rm -rf /Library/Application\ Support/Microsoft/ZoomOutlookPlugin +/bin/rm -rf /Library/ScriptingAdditions/zOLPluginInjection.osax +/bin/rm -rf /Users/Shared/ZoomOutlookPlugin + +/bin/rm -rf /Applications/ZoomOutlookPlugin + +/usr/sbin/pkgutil --forget ZoomMacOutlookPlugin.pkg + +exit 0 \ No newline at end of file