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
- Discord on winget.tech → — full package details
- How to install Slack silently → — sibling Squirrel app
- Gaming bundle → — full gaming setup
- Top 15 winget packages for gaming PCs → — Discord + friends
