wingetsilent-installgooglechromebrowsertutorial
Google Chrome

How to Install Google Chrome Silently with winget on Windows

Install Google Chrome silently with winget — single-line command for unattended deployments, with policy template, default browser setup, and uninstall flags.

· 4 min read · updated May 29, 2026

Chrome is on roughly 70% of Windows desktops. If you're scripting machine setup, the silent install is mandatory — Chrome's installer otherwise pops a "Welcome to Chrome" tab on first run and tries to set itself as default. Here's how to do it cleanly with winget.

TL;DR

Open Terminal as Administrator:

winget install --id Google.Chrome -e --silent --accept-package-agreements --accept-source-agreements

Chrome installs to C:\Program Files\Google\Chrome system-wide. ~15 seconds. No welcome tab, no default-browser nag.

What gets installed

Field Value
Package ID Google.Chrome
Publisher Google LLC
Installer type WiX bootstrapper
License Freeware (proprietary)
Latest version 148.0.7778.179
Homepage google.com/chrome
Default install path C:\Program Files\Google\Chrome

Chrome's installer is actually a WiX bootstrapper that pulls down an MSI. winget handles the bootstrapper handshake for you — you don't need to know the difference.

Stop Chrome from auto-launching after install

Chrome's installer opens a new browser window on completion by default. The --silent flag suppresses this. If you're still seeing the popup, force the WiX-level silent flag:

winget install --id Google.Chrome -e --override "/silent /install"

Chrome Beta / Dev / Canary

Google ships parallel release channels. Install side-by-side:

winget install --id Google.Chrome.Beta -e --silent
winget install --id Google.Chrome.Dev -e --silent
winget install --id Google.Chrome.Canary -e --silent

Canary is especially useful for QA — it updates daily and runs in its own profile.

Disable Chrome auto-updates (enterprise)

Chrome's GoogleUpdate.exe runs in the background and updates Chrome whether you want it to or not. For frozen enterprise deployments, disable it:

# Disable Chrome auto-update via registry
New-Item -Path "HKLM:\SOFTWARE\Policies\Google\Update" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Google\Update" -Name "UpdateDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Google\Update" -Name "Update{8A69D345-D564-463C-AFF1-A69D9E530F96}" -Value 0 -Type DWord

The GUID is Chrome's specific update token. Now Chrome stays on whatever version you installed until you manually upgrade via winget.

Chrome Enterprise policies

For real fleet management, drop a master_preferences file alongside Chrome:

$prefsPath = "C:\Program Files\Google\Chrome\Application\master_preferences"
@'
{
  "homepage": "https://intranet.company.com",
  "homepage_is_newtabpage": false,
  "browser": {
    "show_home_button": true
  },
  "distribution": {
    "skip_first_run_ui": true,
    "make_chrome_default": false,
    "suppress_first_run_default_browser_prompt": true,
    "import_bookmarks": false,
    "do_not_create_desktop_shortcut": false,
    "do_not_create_quicklaunch_shortcut": true,
    "do_not_create_taskbar_shortcut": false
  }
}
'@ | Out-File -Encoding utf8 $prefsPath

For full ADMX policy templates (140+ knobs including extension allowlist, proxy config, sign-in restrictions), grab Chrome Enterprise Bundle.

Specify version

Pinning to an older Chrome for compatibility testing:

winget install --id Google.Chrome -e --version 138.0.7204.158 --silent

List versions:

winget show --id Google.Chrome --versions

⚠️ Chrome auto-updates aggressively — even if you pin via winget, GoogleUpdate.exe will update it within hours unless you also disable auto-updates (see above).

Pin to stop winget noise

Because Chrome self-updates, winget upgrade often reports it as outdated when the running version is already newer than the manifest. Silence this:

winget pin add --id Google.Chrome

Now winget upgrade --all skips Chrome and lets Google's own updater handle it. See winget pin guide.

Verify

& "C:\Program Files\Google\Chrome\Application\chrome.exe" --version
# Google Chrome 148.0.7778.179

Uninstall silently

winget uninstall --id Google.Chrome --silent --disable-interactivity

To also wipe the user profile (bookmarks, history, saved passwords, extensions):

winget uninstall --id Google.Chrome --silent
Remove-Item "$env:LOCALAPPDATA\Google\Chrome" -Recurse -Force -ErrorAction SilentlyContinue

⚠️ This deletes your saved Chrome data. Sync via Google account beforehand if you want to recover it on the next install.

In a privacy-conscious setup

If you'd rather not have Chrome at all, install one of the de-Googled forks instead — they install just as silently:

winget install --id Brave.Brave -e --silent
winget install --id Mozilla.Firefox -e --silent
winget install --id Vivaldi.Vivaldi -e --silent

Common errors

Chrome is already installed — winget detects existing install (often from Google's own auto-installer running before winget). Use --force to overlay:

winget install --id Google.Chrome -e --silent --force

0x80073D02 — Chrome is currently in use — Chrome plus MSEdgeUpdate.exe-style helpers stay running. Kill them:

Get-Process | Where-Object { $_.Name -like "*chrome*" -or $_.Name -like "*GoogleUpdate*" } | Stop-Process -Force
winget upgrade --id Google.Chrome

See 0x80073D02 fix.

winget upgrade says Chrome is outdated forever — version-string mismatch with GoogleUpdate. Pin Chrome (see above). See winget upgrade not working fix.

See also

Continue reading