Tempo fa ti avevo parlato di un problema riguardante un mancato rollback della versione 16.0.8229.2073 (1706) di Microsoft Office 365 ProPlus (la versione 2016), risolto scaricando e installando un diverso pacchetto, inferiore a quello difettoso. Nel frattempo i problemi sono stati risolti e altri sono sorti, facendomi scegliere una diversa strada per un certo gruppo di utenti ai quali ho tolto la possibilità di aggiornare Office dal canale un po’ più rapido di Microsoft.
Dato che si tratta di semplici modifiche alle chiavi di registro, ho optato per la scrittura di un batch che potesse automatizzare le operazioni. Te lo propongo oggi, così che possa tornarti utile in caso di necessità, da tenere quindi da parte nella solita chiave USB degli strumenti da avere sempre a portata di mano :-)
Scritto a luglio e utilizzato nel corso del tempo, lo condivido e ti spiego com’è che funziona:
Aggiornamento di ottobre: ho modificato lo script correggendo una svista che tornava a disabilitare gli aggiornamenti di Office quando veniva richiesta la riattivazione. Ne ho approfittato per integrare una nuova voce di menu (la 7) che effettua la lettura del canale di aggiornamento al quale Office si appoggia (fa una lettura da registro di sistema). Ogni voce selezionata attendere ora un colpo di invio (o altro pulsante da tastiera) per tornare a mostrare il menu principale del batch.
@echo off | |
setlocal | |
cls | |
:: Microsoft Office Update Channel Selector | |
:: ---------------------------------------------------------------------------------------------------------------- | |
:: Autore: GSolone | |
:: Utilizzo: .\Office-ChannelSelector.cmd | |
:: Versione: 0.2 | |
:: Info: https://gioxx.org/tag/microsoft-office-365/ | |
:: Ultima modifica: 12-11-2018 | |
:: Fonti utilizzate: https://docs.microsoft.com/it-it/DeployOffice/overview-of-update-channels-for-office-365-proplus | |
:: https://support.microsoft.com/it-it/help/3185078/how-to-switch-from-semi-annual-channel-to-monthly-channel | |
:: https://docs.microsoft.com/it-it/officeupdates/release-notes-office365-proplus | |
:: Modifiche: | |
:: 0.2- modificati i canali di aggiornamento (nomi modificati da Microsoft) e inseriti dettagli in più a video, ho modificato anche il modo di intervenire sul registro, aggiunta una query a registro per verificare se si sta lanciando lo script con Office installato (altrimenti lo termina) e inserito il nuovo blocco informativo di apertura script. | |
:: ---------------------------------------------------------------------------------------------------------------- | |
:: ATTENZIONE: va utilizzato come amministratore locale o di dominio della macchina alla quale si punta | |
:StartEngine | |
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration\ /v CDNBaseUrl | |
if %errorlevel%==0 (goto SwitchChannel) else (goto OfficeNotFound) | |
:SwitchChannel | |
cls | |
echo. | |
echo ******************************************************* | |
echo Office Channel Selector 0.2 (per Office 365 ProPlus, Office 2016) | |
echo https://gioxx.org // giovanni@solone.it | |
echo Canali di aggiornamento Office 365 ProPlus (2016): https://go.gioxx.org/ofc365updatechannels | |
echo GSolone nov.2018 (12/11/18) | |
echo ******************************************************* | |
echo. | |
echo (1) Monthly Channel (ex-Current) | |
echo (2) Semi-annual Channel (ex-Deferred) | |
echo (3) Semi-annual Channel Targeted (ex-First Release for Deferred) | |
echo (4) Monthly Channel Targeted (ex-First Release for Current) | |
echo. | |
echo Extras | |
echo (7) Branch utilizzato | |
echo (8) Avvia gli aggiornamenti | |
echo (9) Ferma gli aggiornamenti | |
echo (0) Esci dal programma | |
echo. | |
SET /P SCELTA="Seleziona canale di update (es. 1): " | |
REM echo DEBUG %errorlevel% | |
if errorlevel 1 set "SCELTA=" & verify>nul & goto SwitchChannel | |
IF /i %SCELTA% EQU 0 goto END | |
IF /i %SCELTA% EQU 1 goto Current | |
IF /i %SCELTA% EQU 2 goto Deferred | |
IF /i %SCELTA% EQU 3 goto FirstReleaseDeferred | |
IF /i %SCELTA% EQU 4 goto FirstReleaseCurrent | |
IF /i %SCELTA% EQU 7 goto ReadChannel | |
IF /i %SCELTA% EQU 8 goto StartUpdates | |
IF /i %SCELTA% EQU 9 goto StopUpdates | |
echo; | |
goto END | |
:Current | |
echo Channel: Monthly Channel (era: Current) | |
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v CDNBaseUrl /t REG_SZ /d "http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60" /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateUrl /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Updates /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate\ /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:Deferred | |
echo Channel: Semi-annual Channel (era: Deferred) | |
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v CDNBaseUrl /t REG_SZ /d "http://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114" /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateUrl /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Updates /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate\ /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:FirstReleaseDeferred | |
echo Channel: Semi-annual Channel (Targeted) (era: First Release for Deferred) | |
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v CDNBaseUrl /t REG_SZ /d "http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf" /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateUrl /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Updates /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate\ /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:FirstReleaseCurrent | |
echo Channel: Monthly Channel (Targeted) (era: First Release for Current) | |
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v CDNBaseUrl /t REG_SZ /d "http://officecdn.microsoft.com/pr/64256afe-f5d9-4f86-8936-8840a6a4f5be" /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateUrl /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Updates /v UpdateToVersion /f | |
reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate\ /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:ReadChannel | |
echo Verifico il canale dal quale il tuo Office riceve gli aggiornamenti: | |
echo. | |
REG QUERY HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Office\16.0\common\officeupdate /v updatebranch | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:StartUpdates | |
echo Aggiornamenti di Microsoft Office attivi. | |
echo. | |
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Office\16.0\common\officeupdate /v enableautomaticupdates /t REG_DWORD /d 1 /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:StopUpdates | |
echo. | |
echo ATTENZIONE | |
echo Ho bloccato gli aggiornamenti di Office. | |
echo Non riceverai ulteriori aggiornamenti fino a modifica di questa opzione. | |
echo. | |
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Office\16.0\common\officeupdate /v enableautomaticupdates /t REG_DWORD /d 0 /f | |
echo Premi invio per tornare al menu principale | |
pause > NUL | |
goto StartEngine | |
:OfficeNotFound | |
echo. | |
echo ATTENZIONE | |
echo Non ho rilevato alcuna installazione di Office su cui operare. | |
echo Lo script viene ora terminato. | |
echo. | |
:END | |
Endlocal |
Il codice si basa sul fatto che:
- l’aggiornamento arriverà dai server di Microsoft e non da una location interna alla tua rete (
updatepath
non viene infatti valorizzato); - non c’è una versione d’arrivo dichiarata (come sopra,
updatetargetversion
non viene valorizzato); - l’unica voce che cambia (in base all’esigenza) è sempre quella relativa al canale di aggiornamento (
updatebranch
prende il valore in base al ramo di aggiornamento scelto).
è inoltre possibile (e previsto) che una postazione possa avere la necessità di bloccare ogni futuro aggiornamento, continuando quindi a utilizzare solo e sempre quell’unica versione di Office già a bordo. Alla stessa maniera, potrai sempre tornare indietro e chiedere a Office di aggiornarsi, in un secondo momento. In entrambi i casi, la chiave di registro da andare a ritoccare è la enableautomaticupdates
.
Il batch è stato testato con successo su configurazioni Windows 7 e 10, con Office 2016 (365 ProPlus) a bordo, installato chiaramente tramite C2R. Potrai scaricarlo direttamente da GitHub e avviarlo –come amministratore locale o di dominio– sul PC che ti interessa. Se l’intervento è invece da portare a termine su più PC, ti consiglio di prelevare dal codice le chiavi di registro che ti interessano, quindi darle in pasto a uno strumento di distribuzione software (come Kace).
Buon lavoro! :-)
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)