nisse
- !/bin/bash
- Fullständig Office-avinstallation för macOS.
- Standard: endast inventering. --execute: radera efter tydlig bekräftelse.
set -u
if "$(uname -s)" != "Darwin" ; then
echo 'Fel: Detta skript är avsett för macOS.' >&2 exit 1
fi if "$(id -u)" -eq 0 ; then
echo 'Kör som vanlig användare (inte med sudo). Skriptet begär sudo vid behov.' >&2 exit 1
fi
MODE="${1:---dry-run}" case "$MODE" in
--dry-run|--execute) ;; *) echo "Användning: $0 [--dry-run|--execute]"; exit 2 ;;
esac
- Arbeta bara mot den inloggade användarens hemkatalog.
USER_LIBRARY="$HOME/Library" TARGETS=() add() { | -L "$1" && TARGETS+=("$1"); }
- Office-appar (inte Teams eller OneDrive).
for base in /Applications "$HOME/Applications"; do
for name in 'Microsoft Word.app' 'Microsoft Excel.app' 'Microsoft PowerPoint.app' 'Microsoft Outlook.app' 'Microsoft OneNote.app'; do add "$base/$name" done
done
- Microsofts dokumenterade Office-containrar, äldre och nyare namn.
for name in \
'com.microsoft.Word' 'Microsoft Word' \ 'com.microsoft.Excel' 'Microsoft Excel' \ 'com.microsoft.Powerpoint' 'Microsoft PowerPoint' \ 'com.microsoft.Outlook' 'Microsoft Outlook' \ 'com.microsoft.onenote.mac' 'com.microsoft.OneNote' 'Microsoft OneNote' \ 'com.microsoft.Office365ServiceV2' 'com.microsoft.Office.setupassistant' \ 'com.microsoft.netlib.shipassertprocess' 'com.microsoft.RMS-XPCService' \ 'com.microsoft.RMS.XPCService'; do add "$USER_LIBRARY/Containers/$name"
done
for name in 'UBF8T346G9.ms' 'UBF8T346G9.Office' 'UBF8T346G9.OfficeOsfWebHost'; do
add "$USER_LIBRARY/Group Containers/$name"
done
- Endast explicit namngivna Office-relaterade preferenser, cache och supportmappar.
for name in Word Excel Powerpoint Outlook OneNote Office Office365ServiceV2; do
add "$USER_LIBRARY/Preferences/com.microsoft.$name.plist" add "$USER_LIBRARY/Caches/com.microsoft.$name" add "$USER_LIBRARY/Saved Application State/com.microsoft.$name.savedState"
done add "$USER_LIBRARY/Application Support/Microsoft/Office" add "$USER_LIBRARY/Application Support/Microsoft/Office365"
- Microsoft AutoUpdate endast om användaren accepterar att ingen annan
- Microsoft-programvara behöver denna uppdaterare.
MAU_PATH='/Library/Application Support/Microsoft/MAU2.0'
printf '\n=== MICROSOFT OFFICE: %s ===\n' "$MODE" if [[ ${#TARGETS[@]} -eq 0 && ! -e "$MAU_PATH" ]]; then
echo 'Inga kända Office-komponenter hittades.' exit 0
fi printf 'Identifierade Office-filer och mappar (%d):\n' "${#TARGETS[@]}" for path in "${TARGETS[@]}"; do printf ' %s\n' "$path"; done if -e "$MAU_PATH" ; then
printf 'Valfri uppdaterarkomponent: %s\n' "$MAU_PATH"
fi
if "$MODE" == '--dry-run' ; then
echo echo 'Ingen fil har raderats. Kör med --execute för att avinstallera.' exit 0
fi
echo printf '%s\n' 'VARNING: Outlook-profiler, lokal e-post och Office-inställningar kan förloras.' printf '%s\n' 'Kontrollera att säkerhetskopior finns innan du fortsätter.' read -r -p 'Skriv RADERA OFFICE för att bekräfta: ' ANSWER if "$ANSWER" != 'RADERA OFFICE' ; then
echo 'Avbrutet. Ingenting har raderats.' exit 1
fi
- Stäng endast namngivna Office-appar. Ingen bred pkill på "Microsoft".
for app in 'Microsoft Word' 'Microsoft Excel' 'Microsoft PowerPoint' 'Microsoft Outlook' 'Microsoft OneNote'; do
osascript -e "tell application \"$app\" to quit" >/dev/null 2>&1 || true
done sleep 2
ERRORS=0 for path in "${TARGETS[@]}"; do
# Symlänkar avlägsnas som länkar, inte som deras destinationer. if | "$path" == /Library/* ; then if sudo rm -rf -- "$path"; then echo "Borttagen: $path"; else echo "FEL: $path" >&2; ERRORS=$((ERRORS+1)); fi else if rm -rf -- "$path"; then echo "Borttagen: $path"; else echo "FEL: $path" >&2; ERRORS=$((ERRORS+1)); fi fi
done
if -e "$MAU_PATH" ; then
echo echo 'Microsoft AutoUpdate kan även användas av andra Microsoft-program.' read -r -p 'Ta bort Microsoft AutoUpdate (ja/nej)? ' MAU_ANSWER if "$MAU_ANSWER" == 'ja' ; then if sudo rm -rf -- "$MAU_PATH"; then echo 'Microsoft AutoUpdate borttagen.'; else ERRORS=$((ERRORS+1)); fi fi
fi
echo if "$ERRORS" -gt 0 ; then
echo "Avinstallationen är delvis klar. Antal misslyckade raderingar: $ERRORS" exit 1
fi echo 'Office-filerna i skriptets lista är borttagna.' echo 'OBS: Licenser i nyckelringen, paketkvitton eller andra systemkomponenter kan finnas kvar.' echo 'Starta om datorn. Använd Microsofts License Removal Tool för licensrensning.'