Windows · Windows Server  ·  medium  ·  Microsoft Office

Office is stuck on an old build, or a bad update needs rolling back

Office is not taking updates, or an update has broken something and the previous build is needed back. Both are handled by the Click-to-Run client from the command line, which is considerably more reliable than the Update Now button.

What you see

File → Account → Update Options shows an old version and Update Now does nothing, or reports it is up to date when it plainly is not. Alternatively, a feature that worked last week has stopped and the version number changed in between.

What is actually wrong

Click-to-Run updates on a channel, and the channel decides which builds a machine is even offered. Updates can be disabled by policy, the channel can be set somewhere nobody remembers, or the update task can be failing quietly. Rolling back is supported but only to a build that is still on the content network — roughly the last few for the channel.

Codes and articles

OfficeC2RClientUpdateChannelupdatetoversionoffice update stuckUpdatesEnabled

Start here — find out which fix applies

A script that runs the 6 inspection commands from the write-up below and prints what each one returned. It reads the machine and changes nothing — every command that could write, delete, start or stop is excluded from it by construction. Run this first, then pick the fix its output points at.

Download the read-only diagnosticchanges nothing · safe to run before reading

Fixes (3)

Find out why updates are not applying
PowerShell as administrator30 minuteslow riskreversible

Update Now does nothing, or the version never changes.

  1. Read the current state — version, channel, and whether updates are permitted at all.

    PowerShell
    Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Format-List ClientVersionToReport, UpdateChannel, UpdatesEnabled, CDNBaseUrl

    UpdatesEnabled set to False is the answer surprisingly often, left behind by a deployment configuration or a well-meaning attempt to stop updates during a project.

  2. Re-enable updates if they are turned off.

    PowerShell
    Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' -Name UpdatesEnabled -Value 'True'
  3. Check for a policy that overrides the local setting.

    PowerShell
    Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Office\16.0\Common\OfficeUpdate' -ErrorAction SilentlyContinue
  4. Confirm the scheduled task that drives updates exists and is running.

    PowerShell
    Get-ScheduledTask -TaskPath '\Microsoft\Office\' -ErrorAction SilentlyContinue | Select-Object TaskName, State
  5. Force an update from the command line, which reports errors the button swallows.

    PowerShell
    & "$env:CommonProgramFiles\Microsoft Shared\ClickToRun\OfficeC2RClient.exe" /update user displaylevel=true forceappshutdown=true
Confirm it workedThe version reported changes and matches the current build for the channel.
PowerShell
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Select-Object ClientVersionToReport
If you need to undo itSet UpdatesEnabled back to False if it was deliberately off and you were only testing.
Download this fix as a PowerShell scriptneeds an elevated shell · asks before each step
Roll back to the previous build
PowerShell as administrator45 minutesmedium riskreversible

An update broke something and you need the previous build while it is investigated. A pinned build stops receiving security updates, so treat this as a temporary measure with an end date rather than a configuration.

  1. Record the current version before changing anything, so you can come back to it.

    PowerShell
    Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Select-Object ClientVersionToReport, UpdateChannel
  2. Find the build number you want from Microsoft's update history for your channel. Note the full four-part version, for example 16.0.17928.20114.

    PowerShell
    Start-Process 'https://learn.microsoft.com/officeupdates/update-history-microsoft365-apps-by-date'

    Only the last few builds per channel stay on the content network. A version older than that will fail to download and leave the installation exactly where it was, which is at least harmless.

  3. Stop updates first, or the machine will simply update forward again within the day.

    PowerShell
    Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' -Name UpdatesEnabled -Value 'False'
  4. Roll back to the chosen build. Close every Office application first.

    PowerShell
    & "$env:CommonProgramFiles\Microsoft Shared\ClickToRun\OfficeC2RClient.exe" /update user updatetoversion=16.0.17928.20114 displaylevel=true forceappshutdown=true
  5. Set a date to re-enable updates. A machine pinned to an old build and forgotten stops receiving security fixes, which is a worse problem than the one you are working around.

    This is the step that gets skipped, and it is the reason estates end up with machines years behind. Write the date down somewhere that is not this machine.

Confirm it workedThe version reported is the one you asked for, and the broken behaviour is gone.
PowerShell
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Select-Object ClientVersionToReport
If you need to undo itSet UpdatesEnabled back to True and run /update user to return to the current build.
Download this fix as a PowerShell scriptneeds an elevated shell · 1 step you do yourself · asks before each step
Change the update channel
PowerShell as administrator1 hourmedium riskreversible

The machine is on the wrong channel — usually Current when it should be Monthly Enterprise, so that updates arrive predictably rather than continuously.

  1. Read the current channel.

    PowerShell
    Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' | Select-Object UpdateChannel, ClientVersionToReport

    The value is a CDN URL ending in a GUID rather than a name. 492350f6 is Current, 55336b82 is Monthly Enterprise, 7ffbc6bf is Semi-Annual Enterprise, and 64256afe is Semi-Annual Preview.

  2. Set the channel. This example moves the machine to Monthly Enterprise.

    PowerShell
    Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' -Name UpdateChannel -Value 'http://officecdn.microsoft.com/pr/55336b82-a18d-4dd6-b5f6-9e5095c314a6'
  3. Trigger an update so the change takes effect. Moving to a slower channel can mean a downgrade, which takes a full package download.

    PowerShell
    & "$env:CommonProgramFiles\Microsoft Shared\ClickToRun\OfficeC2RClient.exe" /update user displaylevel=true forceappshutdown=true
  4. For more than a handful of machines, set the channel through the Office administrative templates or Intune instead. Setting it per machine by hand does not survive a rebuild.

Confirm it workedThe channel value is the one you set and the version settles on a build belonging to that channel.
If you need to undo itSet UpdateChannel back to the previous URL and run the update again.
Download this fix as a PowerShell scriptneeds an elevated shell · 1 step you do yourself · asks before each step

Where this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.