Power User Software Inventory for Windows

A curated catalog of Windows 11 power-user software with winget install commands for every entry — browsers, terminals, editors, dev tools, and utilities.

Beginner Verified Working Updated 13 min read

This guide is the curated Windows software installation list that pairs with everything else on this site — privacy-respecting browsers, terminals, productivity tools, sync clients, and utilities, all installable via winget or as portable apps. It assumes a debloated Windows base from Tiny 11 vs Atlas OS vs ReviOS, and the Dropbox/Mega/KDE Connect entries are the same three apps that make cross-OS sync work in the dual-boot guide.


Quick Start

If you want to install the essentials right now:

# Run in PowerShell (as Administrator for some packages)
winget install --id Microsoft.PowerToys -e
winget install --id Mozilla.Firefox -e
winget install --id Microsoft.VisualStudioCode -e
winget install --id Git.Git -e
winget install --id Microsoft.WindowsTerminal -e
winget install --id 7zip.7zip -e
winget install --id Notepad++.Notepad++ -e
winget install --id AutoHotkey.AutoHotkey -e

That covers 80% of a power user’s daily needs. Below is the full curated catalog.


Prerequisites

Update Windows Package Manager

winget ships with Windows 11 and Windows 10 (1809+). It updates itself through the Microsoft Store (App Installer package), so there is usually nothing to do. If you must nudge it:

# Update winget itself (App Installer)
winget upgrade --id Microsoft.AppInstaller -e

Note: the winget repository version can trail your installed Store version — a “no applicable upgrade” result here is normal and means you’re already current.

Use --id and -e Flags

For reproducible installs, always use exact IDs with the -e (exact match) flag:

# Good - exact ID, version-locked
winget install --id Mozilla.Firefox -e

# Bad - name can match multiple packages
winget install Firefox

To find a package ID:

winget search "Firefox"
# Returns: Mozilla.Firefox    Firefox    ...

AI & Agentic Systems

Tools for autonomous coding, research, and AI-assisted workflows.

ToolInstallPurpose
Claude Codewinget install --id Anthropic.ClaudeCode -eAgentic CLI for coding and research (packaged on winget, verified)
GitHub CopilotVS Code extension (see below)AI pair programmer in your editor
Ollamawinget install --id Ollama.Ollama -eRun open LLMs locally (Llama, Mistral, etc.)
LM Studiowinget install --id ElementLabs.LMStudio -eGUI for running local LLMs
Janwinget install --id Jan.Jan -eChatGPT-like desktop client for local models

VS Code AI Extensions

# GitHub Copilot (paid subscription)
code --install-extension GitHub.copilot
code --install-extension GitHub.copilot-chat

# Windsurf Plugin (formerly Codeium) — free autocomplete tier
# (the extension ID is still Codeium.codeium; the vendor lists it as maintenance mode)
code --install-extension Codeium.codeium

# Continue.dev (open source AI assistant)
code --install-extension Continue.continue

Core Development Environment

Languages, runtimes, and version managers.

ToolInstallPurpose
Gitwinget install --id Git.Git -eVersion control
GitHub Desktopwinget install --id GitHub.GitHubDesktop -eGUI for Git
Node.js (LTS)winget install --id OpenJS.NodeJS.LTS -eJavaScript runtime
Python 3.12winget install --id Python.Python.3.12 -ePython interpreter
uvpip install uv or winget install --id astral-sh.uv -eFast Python package manager
Rustwinget install --id Rustlang.Rustup -eRust toolchain
Gowinget install --id GoLang.Go -eGo toolchain
Java JDK 21winget install --id EclipseAdoptium.Temurin.21.JDK -eJava development kit
.NET SDK 8winget install --id Microsoft.DotNet.SDK.8 -e.NET development

Version Managers

For languages where you need multiple versions, fnm (Fast Node Manager) manages Node releases and is faster than nvm:

winget install --id Schniz.fnm -e

Editors & IDEs

The primary interfaces for code and document editing.

ToolInstallPurpose
VS Codewinget install --id Microsoft.VisualStudioCode -ePrimary extensible IDE
Zedwinget install --id ZedIndustries.Zed -eHigh-performance, memory-efficient editor
Notepad++winget install --id Notepad++.Notepad++ -eLightweight text editor (replaces Notepad)
Sublime Textwinget install --id SublimeHQ.SublimeText.4 -eFast commercial editor
Neovimwinget install --id Neovim.Neovim -eModal terminal editor
Cursorwinget install --id Anysphere.Cursor -eAI-first VS Code fork
Windsurfwinget install --id Codeium.Windsurf -eAI-powered VS Code fork

VS Code Essential Extensions

# Language & tooling
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension EditorConfig.EditorConfig

# Git
code --install-extension eamodio.gitlens

# Containers & remote
code --install-extension ms-vscode-remote.remote-containers
code --install-extension ms-azuretools.vscode-docker

# Markdown
code --install-extension yzhang.markdown-all-in-one
code --install-extension davidanson.vscode-markdownlint

# Productivity
code --install-extension usernamehw.errorlens
code --install-extension christian-kohler.path-intellisense

Data Analysis & Science

Statistical computing, data science, and research tools.

ToolInstallPurpose
R 4.xDownload from cran.r-project.org/bin/windows/base/Statistical computing
RStudiowinget install --id Posit.RStudio -eR IDE
Python (via uv)See aboveData science alternative
JupyterLabpip install jupyterlabNotebook environment
StataOfficial installer from stata.com (license required — no winget package exists)Professional statistics
SPSSIBM installer onlyIBM statistics
Juliawinget install --id Julialang.Julia -eHigh-performance scientific computing

System Utilities & Optimization

Tools for monitoring, backup, and system management.

ToolInstallPurpose
PowerToyswinget install --id Microsoft.PowerToys -eMicrosoft power user toolbox
7-Zipwinget install --id 7zip.7zip -eArchive manager (replaces built-in)
Everythingwinget install --id voidtools.Everything -eInstant file search (like macOS Spotlight)
QuickLookwinget install --id QL-Win.QuickLook -emacOS-style Spacebar file preview
PDFgearwinget install --id PDFgear.PDFgear -eFree PDF reading, editing, and conversion
Sysinternals Suitewinget install --id Microsoft.Sysinternals.Suite -eAdvanced system tools (ID was renamed from Microsoft.SysinternalsSuite)
BleachBitwinget install --id BleachBit.BleachBit -eSystem cleaner (CCleaner alternative)
HWMonitorwinget install --id CPUID.HWMonitor -eHardware temperature monitoring
CrystalDiskInfowinget install --id CrystalDewWorld.CrystalDiskInfo -eDisk health monitoring
CPU-Zwinget install --id CPUID.CPU-Z -eDetailed hardware info
GPU-Zwinget install --id TechPowerUp.GPU-Z -eGPU detailed info
Revo Uninstallerwinget install --id RevoUninstaller.RevoUninstaller -eThorough app removal
Eyes Guardwinget install --id Avestura.EyesGuard -eScreen-time reminders for eye rest (EyeLeo is a solid alternative)

Backup & Recovery

ToolInstallPurpose
Veeam Agent for Windows (Free)Download from veeam.comFull system image backup
ClonezillaDownload from clonezilla.orgOpen-source disk imaging/cloning (bootable)
RescuezillaDownload from rescuezilla.comGUI frontend for Clonezilla images (bootable, no winget package)
File HistoryBuilt into WindowsContinuous file backup

Note: Macrium Reflect Free was discontinued in January 2024 (no longer distributed or patched). Legacy copies found on third-party mirrors receive no security fixes — prefer the tools above.


Internet & Communication

Browsers, email, messaging, and remote access.

ToolInstallPurpose
Firefoxwinget install --id Mozilla.Firefox -ePrivacy-respecting browser
Google Chromewinget install --id Google.Chrome -eMainstream browser
Bravewinget install --id Brave.Brave -eChromium with built-in ad blocking
Thunderbirdwinget install --id Mozilla.Thunderbird -eEmail client
Zoomwinget install --id Zoom.Zoom -eVideo conferencing
Discordwinget install --id Discord.Discord -eCommunity chat
Slackwinget install --id SlackTechnologies.Slack -eWork chat
Signalwinget install --id OpenWhisperSystems.Signal -ePrivate messaging
Telegramwinget install --id Telegram.TelegramDesktop -eCloud messaging
Microsoft Teams (personal)winget install --id Microsoft.Teams -eMicrosoft’s chat
Mullvad VPNwinget install --id MullvadVPN.MullvadVPN -ePrivacy VPN
Proton VPNwinget install --id Proton.ProtonVPN -ePrivacy VPN with free tier
qBittorrentwinget install --id qBittorrent.qBittorrent -eBitTorrent client
LocalSendwinget install --id LocalSend.LocalSend -eCross-device file sharing
RustDeskDownload from rustdesk.comSelf-hosted remote desktop (no winget package currently)
KDE Connectwinget install --id KDE.KDEConnect -eCross-device clipboard, notifications, file sharing (pairs with phone and Linux)

Cloud Storage (CLI)

For automated sync, use the official CLI tools:

ToolInstallPurpose
rclonewinget install --id Rclone.Rclone -eSync any cloud storage (Google Drive, Dropbox, S3, etc.)
AWS CLIwinget install --id Amazon.AWSCLI -eAmazon Web Services
Azure CLIDownload from aka.ms/installazurecliwindowsMicrosoft Azure
Google Cloud CLIDownload from cloud.google.com/sdkGoogle Cloud Platform

Cloud Storage (Desktop Sync)

Desktop clients with selective sync and “available offline” support. These are the same three apps that make cross-OS sync work in the dual-boot guide — install the equivalent clients on LMDE to keep your synced folders accessible from both operating systems.

ToolInstallPurpose
Dropboxwinget install --id Dropbox.Dropbox -eFile sync with selective offline folders
MEGAsyncwinget install --id Mega.MEGASync -eEnd-to-end encrypted sync with selective folders (note the capital S — exact match is case-sensitive)

Tip for dual-boot setups: always relocate the local sync folder to a shared NTFS partition (not C:) through each app’s official Move feature. Manual drag-and-drop in File Explorer breaks the app’s tracking and triggers a full re-download. Any folder you want to read from LMDE must be set to available offline in Windows — online-only files are tied to Windows’ proprietary cloud-filter driver and won’t show up on the Linux side.


Media & Entertainment

Audio, video, image, and creative tools.

ToolInstallPurpose
VLCwinget install --id VideoLAN.VLC -eUniversal media player
mpvwinget install --id shinchiro.mpv -eMinimalist video player (power user favorite)
Spotifywinget install --id Spotify.Spotify -eMusic streaming
Audacitywinget install --id Audacity.Audacity -eAudio editor
HandBrakewinget install --id HandBrake.HandBrake -eVideo transcoder
OBS Studiowinget install --id OBSProject.OBSStudio -eRecording and streaming
Kdenlivewinget install --id KDE.Kdenlive -eVideo editor (Linux-style on Windows)
GIMPwinget install --id GIMP.GIMP -eImage editor (Photoshop alternative)
Inkscapewinget install --id Inkscape.Inkscape -eVector graphics (Illustrator alternative)
Kritawinget install --id KDE.Krita -eDigital painting
ShareXwinget install --id ShareX.ShareX -eScreenshot and recording
ImageGlasswinget install --id DuongDieuPhap.ImageGlass -eImage viewer (replaces Photos)

Fonts

For development work, monospace fonts matter. The winget catalog no longer carries the NerdFonts.* or Microsoft.CascadiaCode packages — what remains:

# Nerd-patched JetBrains Mono (verified on winget)
winget install --id DEVCOM.JetBrainsMonoNerdFont -e

# Hack typeface (regular, not Nerd-patched)
winget install --id SourceFoundry.HackFonts -e

For everything else, grab the installers directly from GitHub releases and run them (font installs are silent and per-user):


Input & Localization

Multilingual Input

ToolInstallPurpose
Microsoft IMEBuilt into Windows 11Multilingual typing (Chinese, Japanese, Korean)
Avro Keyboardwinget install --id OmicronLab.Avro -eBangla phonetic input (packaged on winget, verified)
Google Input ToolsDownload from google.com/inputtoolsMany languages
KeyManDownload from keyman.com1,000+ keyboards

Bangla Fonts (PowerShell Installer)

Avro covers typing; this script installs the fonts themselves. It pulls 20 of the most-used Bangla fonts — Unicode standards (SolaimanLipi, Kalpurush, Siyam Rupali), government/formal (Nikosh), print-era classics (SutonnyMJ, AdorshoLipi, Chitra MJ), and modern Google fonts (Noto Sans Bengali, Hind Siliguri) — from pinned GitHub raw URLs. All 20 URLs verified live August 2026.

Run in an administrator PowerShell (the script checks and pauses if you forgot):

# ==========================================
# BANGLA FONT INSTALLER (20 fonts, verified URLs)
# ==========================================

# 1. Admin check (pauses instead of closing the window)
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
    Write-Host "`nERROR: Run PowerShell as Administrator to install fonts.`n" -ForegroundColor Red
    Read-Host "Press Enter to exit..."
    Exit
}

# 2. TLS 1.2 (older PowerShell defaults get rejected by GitHub)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 3. Verified raw font URLs (case-sensitive and exact)
$fonts = @(
    # --- Modern Unicode ---
    @{ Name = "SolaimanLipi";     Url = "https://raw.githubusercontent.com/shiftenterdev/bangla-font/master/SolaimanLipi.ttf";          FileName = "SolaimanLipi.ttf" }
    @{ Name = "Kalpurush";        Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/kalpurush.ttf";                 FileName = "kalpurush.ttf" }
    @{ Name = "Siyam Rupali";     Url = "https://raw.githubusercontent.com/potasiyam/Siyam-Rupali/master/Siyamrupali_1_070ship.ttf";    FileName = "SiyamRupali.ttf" }
    @{ Name = "Lohit Bengali";    Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/Lohit_14-04-2007.ttf";          FileName = "Lohit_14-04-2007.ttf" }

    # --- Official & formal ---
    @{ Name = "Nikosh";           Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/Nikosh.ttf";                    FileName = "Nikosh.ttf" }
    @{ Name = "NikoshBAN";        Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/NikoshBAN.ttf";                 FileName = "NikoshBAN.ttf" }
    @{ Name = "Mukti Narrow";     Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/muktinarrow.ttf";               FileName = "muktinarrow.ttf" }

    # --- Print & legacy (ANSI/Bijoy era) ---
    @{ Name = "SutonnyMJ";        Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/SutonnyMJ.ttf";                    FileName = "SutonnyMJ.ttf" }
    @{ Name = "AdorshoLipi";      Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/AdorshoLipi_20-07-2007.ttf";    FileName = "AdorshoLipi.ttf" }
    @{ Name = "Chitra MJ Bold";   Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/Chitra%20MJ%20Bold.ttf";           FileName = "ChitraMJBold.ttf" }

    # --- Stylized & creative ---
    @{ Name = "BenSen";           Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/BenSen.ttf";                    FileName = "BenSen.ttf" }
    @{ Name = "BenSen Handwriting"; Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/BenSenHandwriting.ttf";       FileName = "BenSenHandwriting.ttf" }
    @{ Name = "Amar Bangla";      Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/Amar%20Bangla.ttf";                FileName = "AmarBangla.ttf" }
    @{ Name = "3D Sonar Bangla";  Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/3D%20Sonar%20Bangla.ttf";          FileName = "3DSonarBangla.ttf" }
    @{ Name = "Aparajita";        Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/Aparajita.ttf";                    FileName = "Aparajita.ttf" }

    # --- Modern clean & corporate ---
    @{ Name = "Hind Siliguri";    Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/Hind%20Siliguri.ttf";              FileName = "HindSiliguri.ttf" }
    @{ Name = "Robi";             Url = "https://raw.githubusercontent.com/tazihad/bangla-fonts/main/Robi.ttf";                         FileName = "Robi.ttf" }
    @{ Name = "Akaash";           Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/akaashnormal.ttf";              FileName = "akaashnormal.ttf" }
    @{ Name = "Mitra";            Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/mitra.ttf";                     FileName = "mitra.ttf" }
    @{ Name = "Sagar";            Url = "https://raw.githubusercontent.com/hmoazzem/bangla-fonts/master/sagarnormal.ttf";               FileName = "sagarnormal.ttf" }
)

$fontFolder   = "C:\Windows\Fonts"
$tempFolder   = "$env:TEMP\BanglaFonts"
$registryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"

if (-not (Test-Path $tempFolder)) { New-Item -ItemType Directory -Path $tempFolder | Out-Null }

$successCount = 0
foreach ($font in $fonts) {
    $tempPath = Join-Path $tempFolder $font.FileName
    $destPath = Join-Path $fontFolder $font.FileName
    $nameInRegistry = "$($font.Name) (TrueType)"

    Write-Host "-> Fetching $($font.Name)... " -NoNewline

    # Skip if already installed (file or registry entry exists)
    if ((Test-Path $destPath) -or (Get-ItemProperty -Path $registryPath -Name $nameInRegistry -ErrorAction SilentlyContinue)) {
        Write-Host "Already installed. Skipped." -ForegroundColor DarkGray
        continue
    }

    try {
        Invoke-WebRequest -Uri $font.Url -OutFile $tempPath -UseBasicParsing -ErrorAction Stop

        # Guard against HTML error pages saved as .ttf
        if ((Get-Item $tempPath).Length -lt 10000) { throw "Downloaded file too small - URL may be broken" }

        Copy-Item $tempPath -Destination $destPath -Force
        New-ItemProperty -Path $registryPath -Name $nameInRegistry -Value $font.FileName -PropertyType String -Force | Out-Null

        Write-Host "Installed!" -ForegroundColor Yellow
        $successCount++
    } catch {
        Write-Host "Failed! ($($_.Exception.Message))" -ForegroundColor Red
    }
}

Remove-Item -Path $tempFolder -Recurse -Force | Out-Null
Write-Host "`nComplete: $successCount new fonts installed. Restart open apps to load them.`n" -ForegroundColor Cyan

Notes from real use:

  • GitHub raw URLs are case-sensitive and exact — BenSen.ttf ≠ Bensen.ttf, and some fonts carry date stamps (AdorshoLipi_20-07-2007.ttf). A 404 here means the filename drifted; browse the repo to find the new name.
  • Vrinda and Sonar Bangla ship with Windows’ Bangla language support, so they’re not in the list.
  • To add more fonts, append another @{ Name = ...; Url = ...; FileName = ... } entry with a direct .ttf URL.

Windows-Specific Input Tweaks

After installing AutoHotkey v2, remap Caps Lock to Ctrl:

; capslock_to_ctrl.ahk
#Requires AutoHotkey v2.0

CapsLock::Ctrl

Terminal & Shell

Modern Windows terminals beat Command Prompt and Windows PowerShell 5.1.

ToolInstallPurpose
Windows Terminalwinget install --id Microsoft.WindowsTerminal -eModern terminal (tabs, splits, GPU rendering)
PowerShell 7winget install --id Microsoft.PowerShell -eModern cross-platform shell
Oh My Poshwinget install --id JanDeDobbeleer.OhMyPosh -eTerminal prompt theming
Nerd FontSee Media section aboveIcons in terminal
fzfwinget install --id junegunn.fzf -eFuzzy file finder
zoxidewinget install --id ajeetdsouza.zoxide -eSmarter cd command
batwinget install --id sharkdp.bat -eSyntax-highlighted cat
ezawinget install --id eza-community.eza -eModern ls replacement
fdwinget install --id sharkdp.fd -eFast find alternative
ripgrepwinget install --id BurntSushi.ripgrep.MSVC -eFast grep alternative
lazygitwinget install --id JesseDuffield.lazygit -eGit TUI
deltawinget install --id dandavison.delta -eBetter git diff

Productivity

ToolInstallPurpose
Obsidianwinget install --id Obsidian.Obsidian -eMarkdown knowledge base
Logseqwinget install --id Logseq.Logseq -eOutliner-style notes
Zoterowinget install --id DigitalScholar.Zotero -eReference manager
Calibrewinget install --id calibre.calibre -eEbook library manager
KeePassXCwinget install --id KeePassXCTeam.KeePassXC -eLocal password manager
Bitwardenwinget install --id Bitwarden.Bitwarden -eCloud password manager
1Passwordwinget install --id AgileBits.1Password -ePaid password manager
ShareX(see Media)Screenshot tool
Greenshotwinget install --id Greenshot.Greenshot -eScreenshot alternative

Windows-Specific Power User Tools

These make Windows behave more like a real developer OS:

ToolInstallPurpose
PowerToys(see Utilities)Includes FancyZones, PowerRename, Keyboard Manager
EarTrumpetwinget install --id File-New-Project.EarTrumpet -ePer-app volume control
AutoHotkey v2winget install --id AutoHotkey.AutoHotkey -eKeyboard automation, custom hotkeys
Windows Subsystem for Linuxwsl --installRun Linux inside Windows

Configure WSL

wsl --install -d Ubuntu

wsl --install defaults to WSL 2 and requires one reboot. Add -d Ubuntu (or any distro name) to pick the distribution in the same step.


Setting Up a Fresh Windows Workstation (Under 1 Hour)

If you’ve just installed a debloated Windows and want to get to a productive state fast, run this single script.

Important: winget install accepts exactly one package per invocation — you cannot stack multiple --id flags on one command. The loop below is the correct pattern:

# Run as Administrator in PowerShell 7

# 1. Refresh package sources
winget source update

# 2. Install everything (one winget call per package, silent, no popups)
$packages = @(
    'Microsoft.PowerToys',            # utilities
    '7zip.7zip',
    'voidtools.Everything',
    'Notepad++.Notepad++',
    'Microsoft.WindowsTerminal',
    'Microsoft.PowerShell',           # PowerShell 7
    'AutoHotkey.AutoHotkey',
    'Mozilla.Firefox',                # browsers
    'Google.Chrome',
    'Microsoft.VisualStudioCode',     # editor
    'Git.Git',                        # development tools
    'OpenJS.NodeJS.LTS',
    'Python.Python.3.12',
    'VideoLAN.VLC',                   # media
    'Spotify.Spotify',
    'DEVCOM.JetBrainsMonoNerdFont'    # fonts
)

foreach ($id in $packages) {
    Write-Host "Installing $id..." -ForegroundColor Cyan
    winget install --id $id -e --silent `
        --accept-package-agreements --accept-source-agreements `
        --disable-interactivity
    if ($LASTEXITCODE -ne 0) {
        Write-Warning "$id failed (exit $LASTEXITCODE) - continuing with the rest"
    }
}

# 3. Install WSL (for Linux tools; requires reboot)
wsl --install

# 4. Configure PowerShell profile
code $PROFILE
# Add:
# oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\agnoster.omp.json" | Invoke-Expression
# Set-PSReadLineOption -PredictionSource History
# Import-Module Terminal-Icons

Write-Host "Setup complete! Restart your terminal." -ForegroundColor Green

Save this as setup.ps1 and run it on any new Windows machine.


Verify & Remove

# Everything winget can upgrade
winget upgrade

# Find an installed package by name (output is text — filter with Select-String)
winget list firefox

# Uninstall cleanly by exact ID
winget uninstall --id Mozilla.Firefox -e

Silent & Elevated Installs (No Popups)

For unattended installs and updates — no wizards, no UAC spam beyond one elevation, no interruptions:

# Run this from an ELEVATED PowerShell 7 session (right-click Terminal → Run as administrator)
winget install --id <Package.Id> -e `
    --silent `
    --accept-package-agreements `
    --accept-source-agreements `
    --disable-interactivity

What each flag does:

FlagEffect
--silent / -sSuppresses the installer’s own UI (uses NSIS /S, Inno /VERYSILENT, MSI quiet mode, etc.)
-eExact ID match — prevents installing a similarly-named package
--accept-package-agreementsAuto-accepts the package’s license
--accept-source-agreementsAuto-accepts the source (winget/msstore) agreements
--disable-interactivityFails fast instead of hanging on any interactive prompt

Batch-upgrade everything at once:

# Review what would be upgraded first
winget upgrade

# Then apply all of it silently
winget upgrade --all --silent `
    --accept-package-agreements --accept-source-agreements `
    --disable-interactivity

Notes from real use:

  • Run elevated. Machine-scoped installers need admin; without it you get one UAC prompt per package (or silent failures). One elevated terminal = zero mid-install prompts.
  • Close running apps first. Installers for running apps (sync clients, download managers, editors) either wait for exit or abort in silent mode. Stop the process before upgrading.
  • Some packages reject winget upgrades entirely (“No applicable upgrade found”). When that happens, download the official installer directly and run its silent switch yourself — NSIS uses /S, Inno uses /VERYSILENT /NORESTART, MSIs use /qn. Always verify the SHA-256 against the manifest (winget show <id>) before executing.
  • MSIX/Store apps ignore --silent (they’re always quiet) but may need the Store service running.

The Frozen-Update Maintenance Routine

This site’s dual-boot setup runs Windows with automatic updates disabled (services stopped via the Revision Tool) so work is never interrupted. That control comes with a responsibility: you are now the update scheduler. Budget 15–30 minutes once a month:

  1. Review pending app updates (safe, reversible):
    winget source update
    winget upgrade          # read the list first
    winget upgrade --all --silent --accept-package-agreements --accept-source-agreements --disable-interactivity
  2. Check the OS servicing state occasionally (every 2–3 months): open Settings → Windows Update and let it scan manually. On this setup the update services are set to Manual, so a manual check still works — you decide when, and can reboot on your schedule. Skipping OS security patches indefinitely is the single riskiest part of a debloated setup.
  3. Antivirus reality check: if your debloat removed Microsoft Defender rather than pausing it, “update virus definitions when I feel like it” isn’t possible — there is no engine to update. Verify with Get-Service WinDefend. If absent, either re-enable Defender through your debloat tool periodically, or run a third-party AV you update on your own schedule.
  4. Keep a changelog — note the date and packages after each pass, so a future breakage has a suspect list.

What Didn’t Work (and Why)

ApproachWhy It Failed
Stacking multiple --id flags on one winget install commandwinget takes exactly one package per invocation — use a loop or separate commands
Typing a package ID with different casing under -eExact-match IDs are case-sensitive (Mega.MEGASync ≠ Mega.MEGAsync) — copy the ID from winget search output
Trusting winget upgrade to cover every installed appSome manifests report “No applicable upgrade found” forever; fall back to the vendor’s silent installer (see above)

Official References