wingetsilent-installfirefoxbrowsertutorial

How to Install Mozilla Firefox Silently with winget on Windows

Install Firefox silently with winget — single-line command for unattended deployments, with locale options, profile setup, and uninstall flags. MPL-2.0 licensed.

· 3 min read · updated May 29, 2026
How to Install Mozilla Firefox Silently with winget on Windows

Firefox is many users' default browser of choice — privacy-focused, fast, and not from Microsoft or Google. Here's how to install it silently with winget for one-shot setups and team deployments.

TL;DR

Open Terminal as Administrator:

winget install --id Mozilla.Firefox -e --silent --accept-package-agreements --accept-source-agreements

Firefox installs as English (en-US) by default. ~30 seconds.

What gets installed

Field Value
Package ID Mozilla.Firefox
Publisher Mozilla
Installer type NSIS (Nullsoft)
License MPL-2.0
Latest version 151.0.2 (May 2026)
Homepage mozilla.org/firefox
Default install path C:\Program Files\Mozilla Firefox

The installer:

  • Adds Firefox to Start Menu and taskbar (optional)
  • Creates a desktop shortcut
  • Doesn't set itself as default browser (you opt-in via Settings)
  • Skips telemetry opt-in dialog when silently installed

Locale variants

Firefox publishes locale-specific builds. Replace the ID for non-English:

winget install --id Mozilla.Firefox.DE-DE -e --silent    # German
winget install --id Mozilla.Firefox.FR-FR -e --silent    # French
winget install --id Mozilla.Firefox.JA-JP -e --silent    # Japanese
winget install --id Mozilla.Firefox.ZH-CN -e --silent    # Simplified Chinese
winget install --id Mozilla.Firefox.VI-VN -e --silent    # Vietnamese

Search for your locale:

winget search Mozilla.Firefox

Per-user install

Firefox supports per-user install — no admin needed:

winget install --id Mozilla.Firefox -e --scope user --silent

Installs to %LOCALAPPDATA%\Mozilla Firefox.

Firefox Developer Edition / ESR

For the developer build (separate profile, dev tools always on):

winget install --id Mozilla.Firefox.DeveloperEdition -e --silent

For Extended Support Release (LTS for enterprises):

winget install --id Mozilla.Firefox.ESR -e --silent

Runs side-by-side with regular Firefox.

Customise with installer overrides

NSIS installers (Firefox uses NSIS) accept /S for silent. To override the install path:

winget install --id Mozilla.Firefox -e --override "/S /D=C:\Apps\Firefox"

/D= MUST be the last flag and unquoted (NSIS quirk).

Pre-configure Firefox for team / enterprise

After install, drop a policies.json to lock down or pre-configure Firefox for enterprise:

$policiesPath = "C:\Program Files\Mozilla Firefox\distribution"
New-Item -ItemType Directory -Path $policiesPath -Force | Out-Null

@'
{
  "policies": {
    "DisableTelemetry": true,
    "DisableFirefoxStudies": true,
    "DontCheckDefaultBrowser": true,
    "Homepage": {
      "URL": "https://intranet.company.com",
      "Locked": true
    },
    "Bookmarks": [
      {
        "Title": "Company Wiki",
        "URL": "https://wiki.company.com",
        "Placement": "toolbar"
      }
    ]
  }
}
'@ | Out-File -Encoding utf8 "$policiesPath\policy.json"

Restart Firefox, the policies apply. Full reference: mozilla.github.io/policy-templates.

Variations

Specify version

To freeze on a tested version:

winget install --id Mozilla.Firefox -e --version 150.0.1 --silent

List versions:

winget show --id Mozilla.Firefox --versions

Pin to current major

winget pin add --id Mozilla.Firefox --version "151.*"

Now winget upgrade --all won't jump to Firefox 152. See winget pin guide.

Verify

& "C:\Program Files\Mozilla Firefox\firefox.exe" --version
# Mozilla Firefox 151.0.2

Upgrade silently

winget upgrade --id Mozilla.Firefox -e --silent --accept-package-agreements --accept-source-agreements

Firefox also auto-updates by default; winget upgrade is for environments where you've disabled auto-update or want centrally-managed updates.

Uninstall silently

winget uninstall --id Mozilla.Firefox --silent --disable-interactivity

To also wipe the Firefox profile (bookmarks, history, saved logins):

winget uninstall --id Mozilla.Firefox --silent
Remove-Item "$env:APPDATA\Mozilla\Firefox" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Mozilla\Firefox" -Recurse -Force -ErrorAction SilentlyContinue

Detailed: How to uninstall Windows apps with winget.

In a fresh-machine script

# Install Firefox + Thunderbird for a privacy-focused desktop
$apps = @(
  "Mozilla.Firefox",
  "Mozilla.Thunderbird",
  "Bitwarden.Bitwarden"
)

foreach ($id in $apps) {
  winget install --id $id -e --silent `
    --accept-package-agreements --accept-source-agreements
}

Common errors

"Firefox is already installed" — winget detects existing. Force-reinstall:

winget install --id Mozilla.Firefox -e --silent --force

Wrong locale installed — winget defaults to en-US. Use the specific locale ID:

winget install --id Mozilla.Firefox.VI-VN -e --silent

"Installer hash does not match" — Mozilla pushed a new release before the manifest updated. Wait a day or --force. See hash mismatch fix.

See also

Continue reading