Google Chrome MSI 1603 Failures: The Why and How To Fix
Note in 2020 and beyond: In my opinion, you should be using Edge in your enterprise environment at this point. It offers all the same benefits (and engine) as chrome, but with o365 accounts, IE mode for sites that need it (think a single browser in your environment without the need to manage shortcuts to open specific sites in this or that browser), and enhanced security.
Original Post:
I've been noticing packages for Chrome installers have been failing as of late. While ADMX templates for the chromium based Edge Preview browser have been released, support for the Enterprise Mode Site List (and thus, IE mode) have not been added yet, so we must continue to support Chrome and IE for now. So doing some deeper digging - it appears that the enterprise chrome msi installer must still use the Google Updater application to install. If you have this disabled via ADMX templates, it will fail to install even on clean installs. You can either change this to allow installation of Google Software via Google Updater, or you can temporarily override it in your installation script for Chrome by adding the command shown below.
Enjoy!
# Magic Line To Add New-ItemProperty -Name "InstallDefault" -Path "HKLM:\SOFTWARE\Policies\Google\Update" -Value 1 -force | Out-Null # Full Installer Script For Google Chrome Is Given Below ########################################################### # Google Chrome Installation Script # Script By: Sean Huggans ########################################################### # Script Variables ########################## $AppName = "Google Chrome" $Version = "75.0.3770.100" $AppVendorName = "Google" $InstallerFile = "googlechromestandaloneenterprise.msi" if (Test-Path "C:\Program Files (x86)") { $InstallerFile = "googlechromestandaloneenterprise64.msi" } $LogFile = "$($AppName)-$($Version)-Install.log" $LogDir = "C:\Windows\Logs\Software" $LogPath = "$($LogDir)\$($LogFile)" ########################## # Script Functions ########################## function Log-Action ($Message, $StampDateTime) { ################################ # Function Version 18.4.14.1 # Function by Sean Huggans ################################ New-Item -ItemType directory -Path $LogDir -Confirm:$false -Force | out-null if (($StampDateTime -eq $false) -or ($StampDateTime -eq "no")) { $Message | Out-File $LogPath -Append } else { "[ $(get-date -Format 'yyyy.MM.dd HH:mm:ss') ] $($Message)" | Out-File $LogPath -Append } } function ErrorOut-Script { Log-Action "Installation has failed. See above for details." exit } function Install-ApplicationFromMSI ($MSIFile) { Log-Action "Starting MSI Installation..." $InstallerProcess = start-process MSIExec -ArgumentList "/i ""$($PSScriptRoot)\$($MSIFile)"" /qn NOGOOGLEUPDATING=1 /l*v ""$($LogDir)\$($MSIFile.Replace('.msi',''))-$($Version)-MSIOutput.log""" -Wait -NoNewWindow -verbose -passthru if ($InstallerProcess.ExitCode -eq 0) { Log-Action "Finished MSI Installation successfully, see ""$($LogDir)\$($MSIFile.Replace('.msi',''))-$($Version)-MSIOutput.log"" for details." return $true } else { Log-Action "Error: MSI Installation exited with a non-zero error code $($InstallerProcess.ExitCode), see ""$($LogDir)\$($MSIFile.Replace('.msi',''))-$($Version)-MSIOutput.log"" for details." return $False } } ########################## # Execution Logic ########################## Log-Action -Message "=================================================================================================" -StampDateTime $False Log-Action -Message "= $($AppName) Installation | Version: $($Version)" -StampDateTime $False Log-Action -Message "=================================================================================================" -StampDateTime $False Log-Action -Message "Installation script started..." Try { # Allow Google Install via Google Updater (needed) New-ItemProperty -Name "InstallDefault" -Path "HKLM:\SOFTWARE\Policies\Google\Update" -Value 1 -force | Out-Null Log-Action -Message "Set item to allow install through Google Updater to True." if ($(Install-ApplicationFromMSI -MSIFile $InstallerFile) -eq $true) { Log-Action -Message "Installation script completed." } else { ErrorOut-Script } } catch { Log-Action -Message "Error: Setting item to allow install through Google Updater failed!" ErrorOut-Script }