How to doA full Google Chrome Remediation

Graham Lake-Johns

As a Senior Microsoft M365 Consultant based in Ottawa, Canada, I have been enriching the IT industry since 2000. My expertise lies in designing, deploying, and configuring SCCM, specializing in the mass deployment of Windows operating systems, Office 365, and Intune, to streamline and modernize enterprise IT environments.
Intune Unknown State Meme Fun

How to do a full Chrome remediation

Following our post about Improving Google Chrome Update Success Rates, we are going to look deeper into scenarios where doing a full Chrome remediation is required. We will start with identifying the common installation failures that will prevent Chrome from installing successfully. Then we will outline what steps should be performed to fully clean up all blockers that could cause installation issues. Just as an advance warning, we will be delving deeper into Windows Installer and the Google Chrome Enterprise Msi, so this post will be quite long and technical.

What are the common Chrome installation issues?

There are wide range of problems that can prevent Chrome from installing successfully. We are going to focus on the failure scenarios that we have seen most often, particularly with updating devices to the latest version of Chrome using the Google Chrome Enterprise Msi installer file. Google also provides this help document that covers Fixing problems installing Chrome – Google Chrome Help.

The MSI 1603 error

When you look at the listing of Microsoft Installer error codes (MsiExec.exe and InstMsi.exe error messages (for developers) – Win32 apps | Microsoft Learn), we can see that the description for 1603 is “A fatal error occurred during installation”. This is a generic error and unfortunately does not really provide any direction as to what the root cause of the failure is. In our experience with the Google Chrome Enterprise Msi, we know that 1603 errors are typically related to failures generated by custom actions within the Msi.

If we open the googlechromestandaloneenterprise64.msi file with an Msi editor like Orca or InstallShield, you can see that there is a custom action named DoInstall that executes the GoogleChromeInstaller included within the Msi file. We’ve found that if the googlechromestandaloneenterprise64.msi failed with a 1603 error, 90% of the time, it is related to the DoInstall action and the GoogleChromeInstaller failing to complete successfully.

A screenshot of a computer Description automatically generated

If you see Chrome failing to install and the msiexec process is returning a 1603, check the log file, you will likely see a similar error to the one below from the DoInstall custom action.
A screenshot of a computer Description automatically generated

A screenshot of a computer Description automatically generated

Installer Artifacts

There is another scenario where the 1603 error can occur, specifically when an uninstall of Chrome is performed before the install/re-install. If there are any Microsoft Installer artifacts left behind after the uninstall then the install could fail with the 1603 error.

The googlechromestandaloneenterprise64.msi file has a similar custom action for the uninstall named CallUninstaller, which you can see in the picture above of the custom actions displayed in Orca. We have encountered older versions of Google Chrome Enterprise that does not entirely clean up all remnants of Chrome during the uninstall process. In some cases, files and folders are left behind due to file locks. In the worst cases, we have found artifacts left behind in the registry in the following locations:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Features
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components

After an uninstall, search for Chrome in HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer. If you find there is still an entry (as shown below) then the Chrome installer will likely fail with a 1603 error.

A screenshot of a computer Description automatically generated

A screenshot of a computer Description automatically generated

In this scenario, there will be a similar error message to the one below in the Msi log file.

A screenshot of a computer Description automatically generated

A screenshot of a computer Description automatically generated

If you try to install Chrome using the Msi GUI (i.e. just launching the googlechromestandaloneenterprise64.msi file without using the msiexec command with the silent option) then you will likely see this message:

A screenshot of a computer error Description automatically generated

A screenshot of a computer error Description automatically generated

A full clean removal and reinstall of Google Chrome

You may have encountered similar, or the exact same scenarios illustrated above where you just cannot get Chrome to update or install properly. This is often when a full clean removal of Chrome is required, which we will break down in the steps below:

Step 1: Force close Google Chrome

To ensure a successful attempt at uninstalling Chrome, any processes associated with Chrome should be killed. Namely:

  • Chrome.exe
  • GoogleUpdate.exe
  • Chrome_proxy.exe
  • Lbs_native_host.exe *if Legacy Browser Support is installed
TASKKILL /F /IM chrome.exe /T
TASKKILL /F /IM GoogleUpdate.exe /T
TASKKILL /F /IM chrome_proxy.exe /T
TASKKILL /F /IM lbs_native_host.exe /T

Step 2: Uninstall Google Chrome

Next, try to uninstall Chrome (and Legacy Browser Support – if installed) from Programs and Features. To run the uninstall command silently, you can look up the relevant product code and/or uninstall string from the Programs and Features registry keys (listed below in step 3). Specify the “/qn” parameter in the command line to execute uninstall silently as shown in the example below. We would also recommend specifying a verbose log file with the /l*v switch.

Msiexec /x <ProductCode> /qn /l*v “C:\Windows\Logs\Google_Chrome_Uninstall.log” REBOOT=ReallySuppress

If you are not sure of the product code, and if there is no entry for Chrome in Programs and Features then have a look at step 5 below. Specifically, under the section titles “Retrieving the Product Code from the Registry” where we explain how to search the Windows Installer registry keys for the “compressed” product code and how to convert this to the GUID.

Note: If the uninstall step is missed or if it is unsuccessful, then the following Google Update registry keys will need to be removed:

  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Update\Clients\{8A69D345-D564-463c-AFF1-A69D9E530F96}
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Update\ClientState\{8A69D345-D564-463C-AFF1-A69D9E530F96}
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Update\ClientStateMedium\{8A69D345-D564-463C-AFF1-A69D9E530F96}

Step 3: Remove Chrome artifacts from the Programs and Features registry keys

The uninstall may not have been successful or may not have been able to remove all Chrome remnants from the registry. So next we will search the following registry locations for Chrome artifacts and remove them.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<ProductCode>
  • HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\<ProductCode> *if the 32-bit Google Chrome is installed
Reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<ProductCode> /F

Important: If you find an entry for Google Chrome, make a note of the product code, we will need it in step 4 below.

Step 4: Remove Chrome artifacts from the Microsoft Installer registry keys

Like the above step, we will need to search the following registry locations for Chrome installer artifacts and remove them.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Features
  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components

This step is a little trickier than the last because there can be several artifacts and it’s quite an involved process to search and remove every artifact that could be left behind. And Msi products can be referenced in several ways and the product code referenced in the above registry locations will be “compressed” to improve searchability in older versions of Windows. The compressed product code will need to be converted to the GUID as explained below.

For this step, I would recommend using MsiZap which is a Windows Installer tool from the 7.1 version of the Windows SDK, which can be downloaded from here: Download Microsoft Windows SDK 7.1 from Official Microsoft Download Center. Once downloaded and installed, MsiZap can be found in the folder “C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin”.

Note: The MsiZap.exe can be copied and run on its own without reinstalling the Windows SDK on any other computers.
A screenshot of a computer Description automatically generated

To remove Chrome installer artifacts with MsiZap we will need the product code GUID, as shown in the syntax below:
A screenshot of a computer program Description automatically generated

Retrieving the Compressed Product Code from the Registry

If you don’t know the product code for the version of Chrome you are trying to uninstall, then you can search the below Windows Installer product registry keys for “Google Chrome”.

  • HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products

Once you have found Google Chrome, you will find the “compressed” product code. In this example, the product code is “FAA05604EE323E7349749FE0D3F0B9D1”.

A screenshot of a computer Description automatically generated

A screenshot of a computer Description automatically generated

Converting the Compressed Product Code

To convert the compressed product code to the GUID, the below PowerShell function can be used (credit goes to MyITGuy on GitHub for this handy function). Using the example above, the GUID of the compressed product code “FAA05604EE323E7349749FE0D3F0B9D1” is {40650AAF-23EE-37E3-9447-F90E3D0F9B1D}.

function ConvertFrom-CompressedGuid {
<#
.SYNOPSIS
Converts a compressed globally unique identifier (GUID) string into a GUID string.
.DESCRIPTION
Takes a compressed GUID string and breaks it into 6 parts. It then loops through the first five parts and reversing the order. It loops through the sixth part and reversing the order of every 2 characters. It then joins the parts back together and returns a GUID.
.EXAMPLE
ConvertFrom-CompressedGuid -CompressedGuid ‘2820F6C7DCD308A459CABB92E828C144’

The output of this example would be: {7C6F0282-3DCD-4A80-95AC-BB298E821C44}
.PARAMETER CompressedGuid
A compressed globally unique identifier (GUID) string.
#>
[CmdletBinding()]
[OutputType([System.String])]
param (
[Parameter(ValueFromPipeline, ValueFromPipelineByPropertyName, Mandatory)]
[ValidatePattern(‘^[0-9a-fA-F]{32}$’)]
[ValidateScript( { [System.Guid]::Parse($_) -is [System.Guid] })]
[System.String]$CompressedGuid
)
process {
Write-Verbose “CompressedGuid: $($CompressedGuid)”
$GuidString = ([System.Guid]$CompressedGuid).ToString(‘N’)
Write-Verbose “GuidString: $($GuidString)”
$Indexes = [ordered]@{
0 = 8
8 = 4
12 = 4
16 = 2
18 = 2
20 = 12
}
$Guid = ”
foreach ($index in $Indexes.GetEnumerator()) {
$Substring = $GuidString.Substring($index.Key, $index.Value)
Write-Verbose “Substring: $($Substring)”
switch ($index.Key) {
20 {
$parts = $Substring -split ‘(.{2})’ | Where-Object { $_ }
foreach ($part In $parts) {
$part = $part -split ‘(.{1})’
Write-Verbose “Part: $($part)”
[System.Array]::Reverse($part)
Write-Verbose “Reversed: $($part)”
$Guid += $part -join ”
}
}
default {
$part = $Substring.ToCharArray()
Write-Verbose “Part: $($part)”
[System.Array]::Reverse($part)
Write-Verbose “Reversed: $($part)”
$Guid += $part -join ”
}
}
}
[System.Guid]::Parse($Guid).ToString(‘B’).ToUpper()
}

 

Retrieving the Product Code from SCCM
The Google Chrome product codes on the devices in your environment can be queried in SCCM using the below WQL query. It is worth noting that the data “Installed Applications (64)” class is ingested from the Programs and Features registry sub keys during the SCCM client hardware inventory (i.e. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*).

select SMS_R_System.Name, SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName, SMS_G_System_ADD_REMOVE_PROGRAMS_64.Publisher, SMS_G_System_ADD_REMOVE_PROGRAMS_64.Version, SMS_G_System_ADD_REMOVE_PROGRAMS_64.ProdID from SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS_64 on SMS_G_System_ADD_REMOVE_PROGRAMS_64.ResourceID = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS_64.DisplayName = “Google Chrome”

The query results will appear like below
A screenshot of a computer Description automatically generated

Executing MsiZap

All the Msi product information for a given product code can be removed with MsiZap, using the syntax shown in the example below. MsiZap will search the registry for any associated Msi info and will remove it. It will also remove any cached Msi file or icon files, as well as the installer folder in C:\Windows\Installer\<Product Code>.

<Path to file>\MsiZap.exe T! <ProductCode>

A screen shot of a computer screen Description automatically generated

A screen shot of a computer screen Description automatically generated

Step 5: Remove remaining Chrome files and folders

The last step before attempting reinstalling Chrome is to remove any remaining files or folders in the following locations. If you encounter any file or folder locks, you may need to kill the processes associated with Chrome (using the commands from step 1) and then try again.

  • C:\Program Files\Google\Chrome
  • C:\Program Files (x86)\Google\Chrome
  • C:\Program Files (x86)\Google\Update
  • C:\Program Files (x86)\Google\CrashReports
  • C:\Program Files (x86)\Google\Temp
  • C:\Program Files\Google\Legacy Browser Support *
  • C:\Program Files (x86)\Google\Legacy Browser Support * If Legacy Browser Support is installed
RD /S /Q “C:\Program Files\Google\Chrome”
RD /S /Q “C:\Program Files (x86)\Google\Chrome”
RD /S /Q “C:\Program Files (x86)\Google\Update”
RD /S /Q “C:\Program Files (x86)\Google\CrashReports”
RD /S /Q “C:\Program Files (x86)\Google\Temp”
RD /S /Q “C:\Program Files\Google\Legacy Browser Support”
RD /S /Q “C:\Program Files (x86)\Google\Legacy Browser Support”

Step 6: Reinstall Google Chrome

Finally, you should now be able to successfully reinstall Google Chrome using the googlechromestandaloneenterprise64.msi file. To install chrome silently, use the following command:

Msiexec /i <Path to googlechromestandaloneenterprise64.msi file> /qn /l*v “C:\Windows\Logs\Google_Chrome_Install.log” REBOOT=ReallySuppress

Perform the full Chrome remediation with a MPA Tools workflow

First, the MsiZap and the googlechromestandaloneenterprise64.msi files will need be copied to a temporary location on the client computer.

A screenshot of a computer Description automatically generated

Next, we will add the action to run the CMD script.

TASKKILL /F /IM chrome.exe /T
TASKKILL /F /IM GoogleUpdate.exe /T
TASKKILL /F /IM chrome_proxy.exe /T

Msiexec /x {E5A0A728-F1C0-3C28-8D09-840E46698133} /qn /l*v “C:\Windows\Logs\Google_Chrome_Uninstall.log” REBOOT=ReallySuppress

Reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{E5A0A728-F1C0-3C28-8D09-840E46698133} /f

“C:\Windows\Temp\MsiZap.Exe” T! {E5A0A728-F1C0-3C28-8D09-840E46698133}

TASKKILL /F /IM chrome.exe /T
TASKKILL /F /IM GoogleUpdate.exe /T
TASKKILL /F /IM chrome_proxy.exe /T

RD /S /Q “C:\Program Files\Google\Chrome”
RD /S /Q “C:\Program Files (x86)\Google\Chrome”
RD /S /Q “C:\Program Files (x86)\Google\Update”
RD /S /Q “C:\Program Files (x86)\Google\CrashReports”
RD /S /Q “C:\Program Files (x86)\Google\Temp”

Msiexec /i “C:\Windows\Temp\googlechromestandaloneenterprise64.msi” /qn /l*v “C:\Windows\Logs\Google_Chrome_Install.log” REBOOT=ReallySuppress

A computer screen shot of a computer Description automatically generated

Once we have saved the workflow, we can select the relevant client computers and then click the blue play button to execute the workflow.

A screenshot of a computer Description automatically generated

Important: Don’t forget that the WMI firewall rules need to be enabled for this workflow to work. For more information, see MPA Tools Guide for Enabling Windows WMI Firewall Rules | Veles Software

I know that all of this was a lot but when it comes to remediation activities, it’s usually quite involved. Hopefully this will help you with your Google Chrome remediation efforts!

 

Frequently Asked Questions (FAQs)

What are some common installation issues that can prevent Google Chrome from installing successfully?

Common installation issues include encountering a 1603 error during installation, artifacts remaining in the registry after uninstallation, and residual files or folders from previous installations.

How can I identify and resolve a 1603 error during Google Chrome installation?

A 1603 error typically indicates a fatal error during installation, often caused by custom actions within the MSI file. This error can be resolved by identifying the specific cause, such as issues with the DoInstall custom action or leftover artifacts from previous installations, and addressing them accordingly.

What steps should I follow for a full clean removal and reinstallation of Google Chrome?

To perform a full clean removal and reinstallation of Google Chrome, follow these steps:

  • Force close all Chrome-related processes.
  • Uninstall Google Chrome and Legacy Browser Support (if installed) from Programs and Features.
  • Remove Chrome artifacts from the Programs and Features registry keys.
  • Remove Chrome artifacts from the Microsoft Installer registry keys.
  • Remove remaining Chrome files and folders from specific locations.
  • Reinstall Google Chrome using the MSI file.

How can I remove Chrome artifacts from the registry to ensure a successful reinstallation?

Chrome artifacts can be removed from the registry by searching for entries in specific locations such as HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products and HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products, and then deleting them manually or using tools like MsiZap.

Is there a recommended workflow or tool for performing a comprehensive Chrome remediation process efficiently?

Yes, using tools like MsiZap and creating workflows with MPA Tools can streamline the Chrome remediation process. These tools allow for efficient removal of artifacts, killing of processes, and reinstallation of Google Chrome, ensuring a thorough remediation process. Additionally, enabling WMI firewall rules is necessary for executing such workflows effectively.

Subscribe To Our Newsletter

Subscribe To Our Newsletter

Join our mailing list to receive the latest news and updates from our team.

You have Successfully Subscribed!

Pin It on Pinterest

Share This