community.syncromsp.com Open in urlscan Pro
184.105.99.43  Public Scan

URL: https://community.syncromsp.com/t/office-365-critical-update-deployment-help/10327
Submission: On February 15 via manual from AU — Scanned from AU

Form analysis 1 forms found in the DOM

POST /login

<form id="hidden-login-form" method="post" action="/login" style="display: none;">
  <input name="username" type="text" id="signin_username">
  <input name="password" type="password" id="signin_password">
  <input name="redirect" type="hidden">
  <input type="submit" id="signin-button" value="Log In">
</form>

Text Content

Syncro System Status: operational
Issues
100% UptimeNo events for 6 days!
There are currently no reported issues.

View Status Page
Skip to main content

 * Submit Support Ticket
 * Knowledge Base

Log In
 * 
 * 



Syncro is introducing this Known Issue Board to openly share details about
specific defects that we are either tracking, investigating, fixing, or working
on and to allow our partners visibility into more behind-the-scenes topics that
are top of mind.

Syncro’s ongoing mission is to make life better for MSPs. Communication and
transparency are vital for helping you run the most efficient MSP possible.

This Known Issue Board project is in its early stages of development. While we
are under development, we appreciate everyone’s understanding that not all
defects will be instantly posted. It will take us time to establish a good
triage rhythm and process. We will be continuing to add specific items to this
board along with workflow enhancement and engagement opportunities utilizing
this board as we move into the 2023 Calendar year. Our goal is to improve
proactive communication and engagement within the Syncro Community providing
more awareness and knowledge to our partners of our top priority items.

How this Known Issue Board will work:

 * Each specific defect will receive its own post by the Syncro Team.
 * As a Partner you have the opportunity to do the following:
   * Add a emoji to the post to indicate you are impacted by this known issue.
     * Note: By adding this emoji here, you will no longer need to open a
       Support Incident Case. Syncro will be tracking both Support Cases and
       Impact numbers on the KIB.
   * Add a emoji to indicate if you would like to volunteer your environment if
     the opportunity comes for EA, beta testing, or QA workarounds.
   * You can Follow the Known Issue Post to receive up to date notifications and
     alerts to any changes made to the post. Do this by upgrading your
     Notification Status on the specific post of interest to WATCHING.



 * Add a comment: The only comments for the KIB should be for providing found
   workarounds or if you found additional items specific to the reported issue.





OFFICE 365 - CRITICAL UPDATE DEPLOYMENT HELP



You have selected 0 posts.

select all

cancel selecting

Mar 2023
1 / 13
Mar 2023

Mar 2023

ian6
Mar '23


Hi,

Having received an email this morning stating Microsoft are releasing a critical
patch for Outlook for Windows, I wondered how other MSPs are rolling out fixes
like this?

I have been search this forum and the web to find an automated way to do this
via Syncro, Chocolatey or PowerShell but am finding nothing works.

I am aware I can instruct customer to use the Click to Run feature within
Outlook to prompt for the upgrade but it doesn’t look great. If I can say
Microsoft have released a critical security update but if you are a managed
customer this has already be done. It not only looks good but may encourage
other customers to see the value of having our RMM service.

Any help would be very much appreciated.

Solved by Neil in post #6


> Good catch! I forgot about 32-bit Office on 64-bit Windows. Here’s an updated
> version for anyone that needs it. Import-Module $env:SyncroModule # Check if
> running as System $sid =
> ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value if
> ($sid -ne "S-1-5-18") { Write-Host "This…


1




 * CREATED
   
   Mar '23

 * LAST REPLY
   
   Mar '23
 * 12
   
   REPLIES

 * 2.1k
   
   VIEWS

 * 8
   
   USERS

 * 4
   
   LIKES

   
 * 3
   3
   2


Neil
Mar '23


I haven’t dug into the Outlook issue yet but we have a script to force Office
Click to Run versions to update. Take note that the “forceappshutdown=true”
option will close any open Office apps. Either run it after-hours or change it
to false.

# Check if running as System
$sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
if ($sid -ne "S-1-5-18") {
    Write-Host "This script needs to be run as System."
    Exit 1
}

$updateExePath = "$($env:ProgramFiles)\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"

# Exit if execuatable not found
$pathExists = Test-Path -Path $updateExePath -PathType Leaf
if(!($pathExists)) {
    Write-Host "Office C2R not found on this system."
    Exit 0
}

# Update Office using ClickToRun
try {
    Write-Host "Updating Office..."
    $result = Start-Process -FilePath $updateExePath -ArgumentList "/update user displaylevel=false forceappshutdown=true" -PassThru -Wait
    if($result.ExitCode -eq 0) {
        Write-Host "Office was sucessfully updated."
    } else {
        Write-Host "Office was not updated successfully."
        Exit 1
    }
} catch {
    Write-Host "An error occurred while updating Office."
    Exit 1
}


2 Replies

1




ian6
Mar '23


Amazing, thank you very much.

I will try that shortly.





ian6
Mar '23


Neil:

> # Check if running as System
> $sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
> if ($sid -ne "S-1-5-18") {
>     Write-Host "This script needs to be run as System."
>     Exit 1
> }
> 
> $updateExePath = "$($env:ProgramFiles)\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
> 
> # Exit if execuatable not found
> $pathExists = Test-Path -Path $updateExePath -PathType Leaf
> if(!($pathExists)) {
>     Write-Host "Office C2R not found on this system."
>     Exit 0
> }
> 
> # Update Office using ClickToRun
> try {
>     Write-Host "Updating Office..."
>     $result = Start-Process -FilePath $updateExePath -ArgumentList "/update user displaylevel=false forceappshutdown=true" -PassThru -Wait
>     if($result.ExitCode -eq 0) {
>         Write-Host "Office was sucessfully updated."
>     } else {
>         Write-Host "Office was not updated successfully."
>         Exit 1
>     }
> } catch {
>     Write-Host "An error occurred while updating Office."
>     Exit 1
> }

This worked amazingly, thank you very much.





isaacg
Mar '23


FYI, C2R can be in two possible locations, so you probably want to wrap that all
in a foreach something like this:

$C2RPaths = @(
        "$env:SystemDrive\Program Files (x86)\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
        "$env:SystemDrive\Program Files\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
)
$C2RPaths | ForEach-Object {
    if (Test-Path -Path $_) {
yadayada
}






Neil
Mar '23


Good catch! I forgot about 32-bit Office on 64-bit Windows. Here’s an updated
version for anyone that needs it.

Import-Module $env:SyncroModule

# Check if running as System
$sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
if ($sid -ne "S-1-5-18") {
    Write-Host "This script needs to be run as System."
    Exit 1
}

$c2rPaths =@(
    "$($env:ProgramFiles)\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
    "${env:ProgramFiles(x86)}\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
)

# Check each path to see which is correct
foreach ($c2rPath in $c2rPaths) {
    $pathExists = Test-Path -Path $c2rPath -PathType Leaf
    if ($pathExists) {
        Write-Host "Updating Office using C2R located at '$($c2rPath)'."
       
        try {           
            $result = Start-Process -FilePath $c2rPath -ArgumentList "/update user displaylevel=false forceappshutdown=true" -PassThru -Wait
        } catch {
            Write-Host "An error occurred updating Office."
            Exit 1
        }
        
        if ($result.ExitCode -eq 0) {
            Write-Host "Successfully called the Office C2R updater."
        } else {
            Write-Host "The Office C2R updater was not called successfully. Please investigate."
            Rmm-Alert -Category "Windows | Application Management" -Body "The Office C2R updater was not called successfully. Please investigate."
        }
    }
}


1 Reply

3
Solution




adam.jones
Mar '23


We have had a few computers I cannot get this to run on. I log in and click
update in the actual Office app and it updates fine, so I’m perplexed why some
machines just will not take it with no apparent error.





paul8
Mar '23


We have found that this script needs one more variable or it doesn’t always
work.

updatepromptuser=false displaylevel=false forceappshutdown=true

The updatepromptuser=false also needed to be there. And if you wanted to NOT
force apps shutdown, then displaylevel=true because the user has to push OK or
the update won’t work.

2 Replies





anon67100344
Mar '23


So to be clear, and for those of us without the Powershell skills you folks
possess, the command should look like this?
$result = Start-Process -FilePath $c2rPath -ArgumentList “/update user
updatepromptuser=false displaylevel=false forceappshutdown=true” -PassThru -Wait

Thanks for this. Takes a long time to learn to use Powershell, and this sort of
thing really helps.


1




Neil
paul8
Mar '23


Out of curiosity, what was happening when the “updatepromptuser=false” parameter
was not included?

You’ve got to love Microsoft for it’s edge cases!





paul8
Mar '23


That’s a great question.

Nothing! With no logs, feedback, output from the command, or evidence otherwise.

It looks like the CTR executable runs and “does a bunch of stuff”. I THINK that
the failure is when people are using Office and never do anything, something
like … “times out”?

Others are reporting that this may actually work but require a PC reboot to be
updated anyhow. If this is true, then my comment should just be modified to
“this works AFTER a PC reboot”. However, I wasn’t testing for that. It might
work great by the time everyone restarts their PC.





anon83661907
Neil
Mar '23


Thanks Neil, works like a charm.





cw1
1
Mar '23


I had chatGPT 4 read the Syncro scripting documentation and update this script
with the correct error code status. Let me know what you all think.

Title: Update Microsoft Office Using RMM Tool with Error Handling

Description: This PowerShell script is designed to update Microsoft Office
installations using the Click-to-Run (C2R) technology via a Remote Monitoring
and Management (RMM) tool, specifically Syncro. The script first checks if it is
running as System, as this is required for the update process. If not running as
System, the script exits with an error code of 1. It then searches for the
OfficeC2RClient.exe file, which is responsible for handling C2R updates, in two
possible locations (both 32-bit and 64-bit Program Files directories).

The script iterates through each potential path and, if the file is found,
attempts to update Office with the appropriate command-line arguments. These
arguments ensure that the update process runs silently, without prompting the
user, and forces the shutdown of Office applications to apply the updates. If
the update is successful, the script outputs a success message. If an error
occurs during the update process, the script outputs an error message, sends an
RMM alert, and exits with an error code of 1.

The script includes a flag to track whether the update was performed or not. If
the script iterates through all paths but doesn’t find the OfficeC2RClient.exe
file, it outputs a message indicating that the file wasn’t found and the update
couldn’t be performed. In this case, the script exits with an error code of 2.
These error codes help the Syncro RMM tool correctly report the script’s status
based on the provided error codes, ensuring proper monitoring and error
reporting.

Import-Module $env:SyncroModule

# Check if running as System
$sid = ([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value
if ($sid -ne "S-1-5-18") {
    Write-Host "This script needs to be run as System."
    Exit 1
}

$c2rPaths =@(
    "$($env:ProgramFiles)\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
    "${env:ProgramFiles(x86)}\Common Files\Microsoft Shared\ClickToRun\OfficeC2RClient.exe"
)

# Add a flag to indicate whether the update was performed or not
$updatePerformed = $false

# Check each path to see which is correct
foreach ($c2rPath in $c2rPaths) {
    $pathExists = Test-Path -Path $c2rPath -PathType Leaf
    if ($pathExists) {
        Write-Host "Updating Office using C2R located at '$($c2rPath)'."

        try {           
            $result = Start-Process -FilePath $c2rPath -ArgumentList "/update user displaylevel=false updatepromptuser=false forceappshutdown=true" -PassThru -Wait
        } catch {
            Write-Host "An error occurred updating Office."
            Exit 1
        }
        
        if ($result.ExitCode -eq 0) {
            Write-Host "Successfully called the Office C2R updater."
            $updatePerformed = $true # Set the flag to true when the update is successful
        } else {
            Write-Host "The Office C2R updater was not called successfully. Please investigate."
            Rmm-Alert -Category "Windows | Application Management" -Body "The Office C2R updater was not called successfully. Please investigate."
            Exit 1
        }
    }
}

# Output a message if the OfficeC2RClient.exe file wasn't found and exit with error code 2
if (-not $updatePerformed) {
    Write-Host "OfficeC2RClient.exe was not found. Unable to update Office."
    Exit 2
}










Reply




RELATED TOPICS

Topic Replies Views Activity

Windows Feature Updates

5 319 7d Is it possibel to update Powershell version through Syncro

5 406 Sep '22

The February CyberDrain Community Event Is Now Live!
Other
15 1.4k Mar '22 Scripted install of Office 2016 Pro Plus (Not 365)

5 1.0k Dec '21 Windows Update restart Scheduling
Other
11 691 Dec '22








Invalid date Invalid date