Windows package manager wrapper
Winget upgrades,
finally
bearable.
~ winup check
[ INFO ] Checking for available updates...
[ OK ] 32 upgrades available.
~ winup upgrade
[ INFO ] Fetching available upgrades...
? Select packages to upgrade (Space to select, Enter to confirm):
❯ ◉ Obsidian (Obsidian.Obsidian) [1.7.7 -> 1.12.7]
◉ Python (Python.Python.3.13) [3.13.7 -> 3.13.13]
◯ Zed (ZedIndustries.Zed) [1.0.1 -> 1.2.6]
◯ Telegram (Telegram.Telegram) [unknown -> unknown] (UNKNOWN)
~ ▋
A fast, interactive wrapper around winget - hides noisy unknown
versions, lets you pick exactly what to upgrade, ships as a standalone .exe.
Why winup
Everything winget lacks.
Safe by default
Winget shows all updates including ones marked as unknown - often unstable or test releases. Winup hides them automatically, protecting you from potentially broken upgrades.
Interactive selection
No need to know package IDs upfront. Winup opens a checkbox prompt with all available updates - pick what you want with arrows and space, confirm, done.
Zero noise
Winget dumps walls of technical output. Winup parses everything and surfaces only what matters: a clean table via list, or a single count via check.
Idempotent
Built to run multiple times without issue. Gracefully handles UAC prompts, winget errors, and network failures - never leaves your system in a broken state.
Smart upgrade modes
Skip the prompt entirely with --all-safe, target specific packages with -i, or simulate the whole process with --dry-run before committing to any changes.
Portable
Ships as a single standalone .exe - drop it anywhere in your PATH and run. Also available as an NPM package for developers who already have Node.js or Bun.
Usage
Every command,
explained.
$ winup check
Quickly see how many updates are available without parsing the full list.
~ winup check
[ INFO ] Checking for available updates...
[ OK ] 32 upgrades available.
$ winup list
Display a clean table of all safe updates. Add --include-unknown to show everything.
~ winup list
[ INFO ] Fetching available upgrades...
--------------------------------------------------------------------------------
Name Id Version Available
--------------------------------------------------------------------------------
Obsidian Obsidian.Obsidian 1.7.7 1.12.7
Python 3.13 Python.Python.3.13 3.13.7 3.13.13
Zed ZedIndustries.Zed 1.0.1 1.2.6
AutoHotkey AutoHotkey.AutoHotkey 2.0.19 2.0.26
$ winup upgrade
Launch the interactive checkbox prompt. Safe packages are selected by default.
~ winup upgrade
[ INFO ] Fetching available upgrades...
? Select packages to upgrade (Space to select, Enter to confirm):
❯ ◉ Obsidian (Obsidian.Obsidian) [1.7.7 -> 1.12.7]
◉ Python (Python.Python.3.13) [3.13.7 -> 3.13.13]
◯ Telegram (Telegram.Telegram) [unknown -> unknown] (UNKNOWN)
$ winup upgrade --all-safe
Skip the prompt entirely. Automatically upgrades all packages with known versions.
~ winup upgrade --all-safe
[ INFO ] Fetching available upgrades...
[ INFO ] Starting upgrade for 3 package(s)...
[ INFO ] Upgrading Obsidian (Obsidian.Obsidian)...
[ OK ] Obsidian.Obsidian successfully upgraded.
[ OK ] All selected packages upgraded successfully.
$ winup upgrade --dry-run
Simulate the entire upgrade process without making any real changes to your system.
~ winup upgrade --dry-run
[ INFO ] Fetching available upgrades...
[ INFO ] Starting upgrade for 1 package(s)...
[ INFO ] Upgrading Obsidian (Obsidian.Obsidian)...
[ OK ] Obsidian.Obsidian successfully upgraded (DRY RUN).
$ winup upgrade -i Obsidian.Obsidian
Upgrade specific packages by ID - like winget, but with safety checks built in.
~ winup upgrade -i Obsidian.Obsidian
[ INFO ] Fetching available upgrades...
[ INFO ] Starting upgrade for 1 package(s)...
[ INFO ] Upgrading Obsidian (Obsidian.Obsidian)...
[ OK ] Obsidian.Obsidian successfully upgraded.
[ OK ] All selected packages upgraded successfully.
Installation
Two ways to get started.
Standalone .exe
No runtime required. Download winup.exe, place it in any folder
on your PATH, and run it from any terminal.
- 1 Go to the Releases page on GitHub
- 2 Download winup.exe
- 3 Place it in a folder that is on your PATH
- 4 Run winup from any terminal
NPM / Bun
For developers who already have Node.js or Bun installed.
The package is published on npm as winup-cli.
$ npm install -g winup-cli
$ bun add -g winup-cli