Скрипти для повного видалення старих версій Office

В рамках завдання з масового оновлення Office до останньої версії на комп'ютерах усіх користувачів (за схемою розгортання Office 2016 через SCCM), нам знадобилося розробити просте рішення для коректного автоматичного видалення будь-яких інших раніше встановлених на комп'ютерах версій Microsoft Office. Передбачається використовувати дані скрипти в завдання з автоматичного видалення / встановлення Office через пакети SCCM.

У більшості випадків, перед установкою нової версії Office, бажано видалити будь-які раніше встановлені на комп'ютері версії MS Office (одночасне використання різних версій Office на одному комп'ютері підтримується, але не рекомендується через потенційних проблем). Тому виникла необхідність розробити скрипти, які б коректно видаляли будь-яку версію Office, раніше встановлену на ПК.

зміст:

  • VBS скрипти OffScrub
  • Особливості запуску vbs скриптів OffScrub через SCCM
  • Скрипт повного видалення Office 2003
  • Скрипт повного видалення Office 2007
  • Скрипт повного видалення Office 2010
  • Скрипт повного видалення Office 2013
  • Скрипт повного видалення Office 2016
  • Скрипт повного видалення Office Click to Run / Office 365
  • Автоматичне визначення версії Office

VBS скрипти OffScrub

Розглянувши кілька способів видалення раніше встановлених версій Office, ми зупинилися на використанні скриптів OffScrub від служби Premier підтримки Microsoft. скрипти OffScrub входять до складу пакетів офіційних пакетів EasyFix (пакет примусового видалення Office 2007 і 2010, якщо їх не виходить видалити стандартним способом з Панелі Управління) Для видалення Office 2013 і 2016 використовується інший інструмент - пакет O15CTRRemove.diagcab, в який також входять скрипти OffScrub (див. виноску трохи нижче)

Скрипти Offscrub - представляють собою vbs сценарії для автоматизації видалення продуктів зі складу Office. Дані скрипти дозволяють повністю очистити систему від слідів раніше встановленого Office, в незалежності від його поточний працездатності. Перелічимо основні переваги в використання Offscrub для видалення Office:

  • Можливість видалення старої версії навіть при відсутності або пошкодження вихідних файлів установки або кеша Office
  • Кущ користувача в реєстрі не зачіпається
  • Забезпечується повне видалення
  • Видалення застарілих налаштувань і всіх продуктів (в т.ч. Project, Visio, Visio Viewer)

скрипт Remove-PreviousOfficeInstalls.ps1 з пакета O15CTRRemove.diagcab дозволяє визначити встановлену версію Office і викликати скрипт Offscrub * .vbs для відповідної версії Office.

В першу чергу, необхідно завантажити з сайту Microsoft файл FixIt для тих версій Office і Windows, які використовуються у вашій інфраструктурі.

Завантажити пакет O15CTRRemove.diagcab для різних версій Office і Windows можна зі сторінки (https://support.microsoft.com/en-us/kb/971179).

важливе зауваження. Раніше на цій сторінці присутні посилання як на пакет EasyFix, так і на O15CTRRemove.diagcab. На даний момент залишилася посилання тільки на універсальний пакет O15CTRRemove.diagcab, який можна використовувати для видалення Office 2013/2016 на Window 7, Windows 8 і Windows 10. Крім того, ще на початку року в архіві O15CTRRemove.diagcab були присутні скрипти Offscrub для нових версій Office, то тепер в ньому залишилися тільки PowerShell скрипти. Ці (і інші) версії vbs Offscrub скриптів тепер можна отримати тільки з офіційного репозиторію розробників Office на GitHub (OfficeDev).

У наступній таблиці я зібрав посилання на пакети Microsoft для видалення різних версій Office в різних ОС.

версія OfficeWindows 7Windows 8Windows 10
Office 2003MicrosoftFixit20054.mini.diagcab відсутній
Office 2007MicrosoftFixit20052.mini.diagcab відсутній
Office 2010MicrosoftFixit20055.mini.diagcab
Office 2013Файл OffScrub_O15msi.vbs на GitHub
Office 2016Файл OffScrub_O16msi.vbs на GitHub
Office 365 / Click-To-RunФайл OffScrubc2r.vbs на GitHub

Качаємо зазначені файли і зберігаємо в каталог C: \ tools \ OfficeUninstall. Файли * .diagcab представляють собою звичайні архіви в CAB форматі, які можна розпакувати за допомогою команди expand.

Отже, для зручності для кожної версії Office створимо окремий каталог:

set OFFICEREMOVE = C: \ tools \ OfficeUninstall \
md "% OFFICEREMOVE% \ 2003"
md "% OFFICEREMOVE% \ 2007"
md "% OFFICEREMOVE% \ 2010"
md "% OFFICEREMOVE% \ 2013"
md "% OFFICEREMOVE% \ 2016"
md "% OFFICEREMOVE% \ O365"

Тепер в кожен каталог з викачаних архівів diagcab розпакуємо тільки vbs файли.

expand -i "% OFFICEREMOVE% \ MicrosoftFixit20054.mini.diagcab" -f: OffScrub * .vbs "% OFFICEREMOVE% \ 2003"
expand -i "% OFFICEREMOVE% \ MicrosoftFixit20052.mini.diagcab" -f: OffScrub * .vbs "% OFFICEREMOVE% \ 2007"
expand -i "% OFFICEREMOVE% \ MicrosoftFixit20055.mini.diagcab" -f: OffScrub * .vbs "% OFFICEREMOVE% \ 2010"

І скопіюємо тужа ж vbs файли, для нових версій Office, викачані з GitHub.

move / y "% OFFICEREMOVE% \ OffScrub_O15msi.vbs" "% OFFICEREMOVE% \ 2013"
move / y "% OFFICEREMOVE% \ OffScrub_O16msi.vbs" "% OFFICEREMOVE% \ 2016"
move / y "% OFFICEREMOVE% \ OffScrubc2r.vbs" "% OFFICEREMOVE% \ O365"

Таким чином, у нас з'явиться такі vbs файли:

  • 2003 \ OffScrub03.vbs
  • 2007 \OffScrub07.vbs
  • 2010 рік \OffScrub10.vbs
  • 2013 \OffScrub_O15msi.vbs
  • 2016 \OffScrub_O16msi.vbs
  • O365 \ OffScrubc2r.vbs

Список доступних аргументів будь-якого vbs скрипта OffScrub можна отримати так:

OffScrub_O16msi.vbs /?

Microsoft Customer Support Service - Office 2016 MSI Removal Utility
OffScrub_O16msi.vbs helps to remove Office 2016 MSI Server and Client products
Usage: OffScrub_O16msi.vbs [List of config ProductIDs] [Options]

Особливості запуску vbs скриптів OffScrub через SCCM

Для того, щоб скрипт видалення Office працював коректно на 64 бітових версіях Windows, при запуску їх 32-бітовим клієнтом Configuration Manager, потрібно запускати відповідну версію cscript.exe. Тому на 64 бітної системі для запуску сценаріїв потрібно запускати процесор cscript.exe з каталогу C: \ Windows \ SysWOW64.

Даного функціоналу можна домогтися скриптом NativeCScript.cmd:

@echo off
if "% PROCESSOR_ARCHITEW6432%" == "AMD64" (
"% SystemRoot% \ Sysnative \ cscript.exe"% *
) Else (
"% SystemRoot% \ System32 \ cscript.exe"% *
)

Готовий архів з усіма необхідними файлами можна скачати з нашого сайту: OfficeUninstall.zip (1,4 Мб)

Скрипт повного видалення Office 2003

Команда ручного запуску скрипта повного видалення компонентів Office 2003 на комп'ютері буде виглядати так:

Cscript.exe "% OFFICEREMOVE% \ 2003 \ OffScrub03.vbs" ALL / Quiet / NoCancel / Force / OSE

Якщо завдання видалення запускається у вигляді пакету SCCM, команда видалення може виглядати так:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo" 2003 \ OffScrub03.vbs "ALL / Quiet / NoCancel / Force / OSE"

Скрипт повного видалення Office 2007

Команда повного видалення компонентів Office 2007 для ручного запуску:

Cscript.exe "% OFFICEREMOVE% \ 2007 \ OffScrub07.vbs" ALL / Quiet / NoCancel / Force / OSE

Для запуску скрипта через завдання SCCM:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo» 2007 \ OffScrub07.vbs "ALL / Quiet / NoCancel / Force / OSE"

Скрипт повного видалення Office 2010

Команда повного видалення Microsoft Office 2010 для ручного запуску:

Cscript.exe "% OFFICEREMOVE% \ 2010 рік \ OffScrub10.vbs" ALL / Quiet / NoCancel / Force / OSE

При запуску через Configuration Manager:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo" 2010 рік \ OffScrub10.vbs "ALL / Quiet / NoCancel / Force / OSE"

Скрипт повного видалення Office 2013

Команда повного видалення компонентів Microsoft Office 2013 для ручного запуску:

Cscript.exe "% OFFICEREMOVE% \ +2013 \ OffScrub_O15msi.vbs" ALL / Quiet / NoCancel / Force / OSE

Для запуску скрипта через завдання SCCM:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo" 2013 \ OffScrub_O15msi.vbs "ALL / Quiet / NoCancel / Force / OSE"

Скрипт повного видалення Office 2016

Команда ручного запуску скрипта повного видалення компонентів Office 2016 на поточному буде виглядати так:

Cscript.exe "% OFFICEREMOVE% \ 2016 \ OffScrub_O16msi.vbs" ALL / Quiet / NoCancel / Force / OSE

Видалення Office 2016 через пакету SCCM можна запустити такою командою:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo" 2016 \ OffScrub_O16msi.vbs "ALL / Quiet / NoCancel / Force / OSE"

Скрипт повного видалення Office Click to Run / Office 365

Команда повного видалення компонентів Office Click to Run / Office 365 для ручного запуску:

Cscript.exe "% OFFICEREMOVE% \ C2R \ OffScrubc2r.vbs" ALL / Quiet / NoCancel / Force / OSE

Для запуску скрипта через завдання SCCM:

"% SystemRoot% \ System32 \ cmd.exe" / C "NativeCScript.cmd // B // NoLogo" C2R \ OffScrubc2r.vbs "ALL / Quiet / NoCancel / OSE"

Автоматичне визначення версії Office

До складу проекту Remove-PreviousOfficeInstalls на Git входить також скрипт Remove-PreviousOfficeInstalls.ps1, який повинен автоматично визначати встановлену на комп'ютері версію MS Office і викликати один з дають поради OffScrub скриптів. З певними модифікаціями його також можна використовувати в сценаріях автоматичного видалення Office.