wingetsilent-installdiscordvoice-chatgamingtutorial

How to Install Discord Silently with winget on Windows

Install Discord silently with winget — single-line command for gaming-PC and team setups, with auto-start removal, PTB/Canary variants, and uninstall flags.

· 5 min read
How to Install Discord Silently with winget on Windows

Discord is the voice/chat backbone of gaming PCs and a surprising number of work teams. Here's the silent install for new-PC builds, family computers, and any deployment where you don't want the welcome wizard popping up.

TL;DR

winget install --id Discord.Discord -e --silent --accept-package-agreements --accept-source-agreements

Discord installs per-user to %LOCALAPPDATA%\Discord. ~20 seconds. No admin required.

What gets installed

Field Value
Package ID Discord.Discord
Publisher Discord Inc.
Installer type EXE (Squirrel.Windows)
License Proprietary
Latest version 1.0.9165
Homepage discord.com/download
Default install path %LOCALAPPDATA%\Discord

The desktop app is an Electron wrapper around Discord's web client. About 200 MB on disk. It uses the same Squirrel.Windows auto-updater as Slack and the late Atom editor.

Per-user only

Discord installs per-user by design — into AppData, not Program Files. No admin needed. On shared machines, each user has their own install with their own logged-in account.

There's no --scope machine for Discord. Don't try to install it once for all users — it'll fight back.

Suppress the auto-launch

Discord's Squirrel installer opens the app immediately on completion. To prevent in deployment scripts:

winget install --id Discord.Discord -e --override "--silent"

Note: Squirrel uses GNU-style --silent (double-dash), not /silent.

Discord PTB and Canary

Discord ships three parallel channels:

winget install --id Discord.Discord -e --silent           # Stable
winget install --id Discord.PublicTestBuild -e --silent   # PTB — Public Test Build
winget install --id Discord.Canary -e --silent            # Canary — daily builds

All three run side-by-side, each in its own folder under %LOCALAPPDATA%. PTB and Canary use separate profiles so you can sign in with the same account on all three without conflicts.

Useful for community moderators testing upcoming features before they hit users.

Disable auto-start on login

Discord adds itself to Windows startup by default. Remove:

Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "Discord" -ErrorAction SilentlyContinue

Or via Discord UI: User Settings → Windows Settings → "Open Discord" → off.

Pre-set audio defaults

Discord stores user settings in %APPDATA%\discord\settings.json. For team deployments where everyone needs the same noise-suppression / sample-rate defaults, drop a settings file before first launch:

$settingsPath = "$env:APPDATA\discord\settings.json"
New-Item -ItemType Directory -Path (Split-Path $settingsPath) -Force | Out-Null
@'
{
  "MIN_RTC_FRAMERATE": 30,
  "WINDOW_BOUNDS_RESTORE": false,
  "BACKGROUND_COLOR": "#202225"
}
'@ | Out-File -Encoding utf8 $settingsPath

Most audio settings (input/output device, noise suppression mode, voice activity threshold) are stored encrypted in Discord's cloud, not local — you can't easily pre-populate those.

Specify version

winget install --id Discord.Discord -e --version 1.0.9100 --silent

List versions:

winget show --id Discord.Discord --versions

⚠️ Discord self-updates on every launch — it'll auto-update past whatever winget installed within a day. To freeze, disable Discord's update.exe:

$updateExe = "$env:LOCALAPPDATA\Discord\Update.exe"
if (Test-Path $updateExe) {
  Rename-Item $updateExe "$updateExe.disabled"
}

Re-enable by reversing the rename.

Pin to silence winget noise

Because Discord self-updates faster than winget manifests track, winget upgrade often nags about Discord being outdated even when it's already on the latest. Silence:

winget pin add --id Discord.Discord

See winget pin guide.

Verify

& "$env:LOCALAPPDATA\Discord\app-*\Discord.exe" --version 2>$null

Discord doesn't expose --version cleanly because Squirrel installs versioned folders. Easier:

winget list --id Discord.Discord

Upgrade silently

winget upgrade --id Discord.Discord -e --silent --accept-package-agreements --accept-source-agreements

In practice Discord auto-updates on every launch — winget upgrade rarely has work to do. If winget upgrade shows Discord outdated forever, see winget upgrade not working fix.

Uninstall silently

winget uninstall --id Discord.Discord --silent --disable-interactivity

To also wipe cached attachments, voice plugin configs, and login session:

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

Your account, servers, friends, and message history all live on Discord's servers — local wipe doesn't affect them.

In a gaming-PC setup script

# Voice + game launchers + utilities
$apps = @(
  "Discord.Discord",
  "Valve.Steam",
  "EpicGames.EpicGamesLauncher",
  "OBSProject.OBSStudio",
  "Spotify.Spotify",
  "Nvidia.GeForceExperience"
)

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

# Remove Discord from startup (let users opt in via Discord UI)
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" `
  -Name "Discord" -ErrorAction SilentlyContinue

See Top 15 winget packages for gaming PCs.

Common errors

"Discord is already installed" — winget detects existing per-user install. Force-overlay:

winget install --id Discord.Discord -e --silent --force

Voice / mic not working after install — Discord needs microphone permission. Settings → Privacy & security → Microphone → enable for Discord. Also check Windows Sound settings → Input → correct device selected.

0x80073D02 — Discord is in use — Discord runs in system tray after window close. Kill it:

Get-Process Discord -ErrorAction SilentlyContinue | Stop-Process -Force
Get-Process DiscordCanary -ErrorAction SilentlyContinue | Stop-Process -Force
Get-Process DiscordPTB -ErrorAction SilentlyContinue | Stop-Process -Force
winget upgrade --id Discord.Discord

See package in use fix.

Install succeeds but Discord won't launch (white screen / GPU crash) — Electron/GPU acceleration issue. Disable hardware acceleration:

& "$env:LOCALAPPDATA\Discord\Update.exe" --processStart Discord.exe --process-start-args="--disable-gpu"

Or wipe AppData + reinstall:

Remove-Item "$env:APPDATA\discord" -Recurse -Force
winget uninstall --id Discord.Discord
winget install --id Discord.Discord -e --silent

See also

Continue reading