wingetsilent-installslackproductivitytutorial
Slack

How to Install Slack Silently with winget on Windows

Install Slack silently with winget — single-line command for unattended deployments, with workspace pre-population, auto-start, and uninstall flags.

· 4 min read · updated May 29, 2026

Slack is the de-facto team chat for most workplaces. Here's how to install it cleanly for new team members or fresh dev machines, including the autostart and workspace pre-population details that aren't obvious.

TL;DR

winget install --id SlackTechnologies.Slack -e --silent --accept-package-agreements --accept-source-agreements

Slack installs per-user to %LOCALAPPDATA%\slack. ~15 seconds. No admin required.

What gets installed

Field Value
Package ID SlackTechnologies.Slack
Publisher Slack Technologies Inc.
Installer type EXE (Squirrel.Windows)
License Proprietary
Latest version 4.50.128
Homepage slack.com/downloads/windows
Default install path %LOCALAPPDATA%\slack

Slack uses Squirrel.Windows under the hood — same auto-updater framework as Discord and Atom. It's per-user by design (no admin needed) and self-updates aggressively (no need to winget upgrade it manually).

Per-user install (default)

Slack's installer doesn't support --scope machine — it's always per-user. If you need it available to all users on a shared machine, install it once per user account.

Stop Slack from launching after install

The Squirrel installer launches Slack on completion. Suppress via:

winget install --id SlackTechnologies.Slack -e --override "--silent"

(Note the double-dash — Squirrel uses GNU-style long flags.)

Slack Beta

For early-access builds:

winget install --id SlackTechnologies.Slack.Beta -e --silent

Runs side-by-side with stable Slack. Useful for testing new features before they hit your whole team.

Disable auto-start on login

By default Slack adds itself to Windows startup. To prevent this in a bulk deployment:

Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "com.squirrel.slack.slack" -ErrorAction SilentlyContinue

Or disable via Slack's UI: Settings → Notifications → "Launch app on login" off. There's no winget flag for this — it's an in-app preference.

Pre-populate workspaces

You can't silently log a user into Slack via the installer — auth is interactive by design. But you can pre-populate workspace URLs so first-launch is faster:

$workspacesPath = "$env:APPDATA\Slack\storage\workspaces.json"
New-Item -ItemType Directory -Path (Split-Path $workspacesPath) -Force | Out-Null
@'
{
  "workspaces": [
    { "team_url": "https://yourcompany.slack.com" }
  ]
}
'@ | Out-File -Encoding utf8 $workspacesPath

Now Slack shows the workspace URL on first launch — user just clicks to sign in via SSO/email.

Specify version

To pin a known-stable version:

winget install --id SlackTechnologies.Slack -e --version 4.49.89 --silent

List versions:

winget show --id SlackTechnologies.Slack --versions

⚠️ Slack's self-updater ignores winget's pin. To freeze Slack at a version, disable its auto-updater:

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

Re-enable by reversing the rename.

Verify

winget list --id SlackTechnologies.Slack

Or launch:

& "$env:LOCALAPPDATA\slack\slack.exe"

Upgrade silently

winget upgrade --id SlackTechnologies.Slack -e --silent

In practice Slack updates itself on every launch — winget upgrade rarely does anything. If winget upgrade shows Slack outdated even after upgrades, see winget upgrade not working fix.

Uninstall silently

winget uninstall --id SlackTechnologies.Slack --silent --disable-interactivity

To also wipe profile and cached messages (frees ~500 MB):

winget uninstall --id SlackTechnologies.Slack --silent
Remove-Item "$env:APPDATA\Slack" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\slack" -Recurse -Force -ErrorAction SilentlyContinue

Your workspace data lives on Slack's servers — local wipe doesn't affect history.

In a team-deployment script

# Install full collab stack
$apps = @(
  "SlackTechnologies.Slack",
  "Zoom.Zoom",
  "Notion.Notion",
  "Google.Chrome",
  "Microsoft.WindowsTerminal",
  "Bitwarden.Bitwarden"
)

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

# Disable Slack auto-start (optional)
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" `
  -Name "com.squirrel.slack.slack" -ErrorAction SilentlyContinue

# Pre-populate workspace
$wsPath = "$env:APPDATA\Slack\storage\workspaces.json"
New-Item -ItemType Directory -Path (Split-Path $wsPath) -Force | Out-Null
@'
{ "workspaces": [{ "team_url": "https://yourcompany.slack.com" }] }
'@ | Out-File -Encoding utf8 $wsPath

Common errors

Slack is already installed — winget detects the per-user install. To overlay:

winget install --id SlackTechnologies.Slack -e --silent --force

0x80073D02 — Slack is in use — Slack runs in the system tray even after window-close. Kill it:

Get-Process slack -ErrorAction SilentlyContinue | Stop-Process -Force
winget upgrade --id SlackTechnologies.Slack

See package in use fix.

"This app isn't supported by your administrator" — corporate IT has blocked Squirrel/per-user installs via AppLocker. Talk to IT or install Slack from the Microsoft Store instead:

winget install --id 9WZDNCRDK3WP -e --source msstore

(The msstore variant is sandboxed UWP, different install model.)

See also

Continue reading