Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

GitHub release Python Platform License

Winget Upgrade Manager

A smart, interactive package upgrade manager for Windows Package Manager (winget). Track what's changed since your last check and selectively upgrade packages with a clean, user-friendly interface.

Features

  • Clean, aligned output - No more messy progress bars or encoding issues
  • Change tracking - See what's new or removed since last run
  • Interactive selection - Pick exactly which packages to upgrade
  • Color-coded output - Easy to read at a glance
  • Baseline tracking - Automatically remembers your last check
  • Fast and lightweight - Pure Python, no dependencies

📋 Requirements

Installation

Quick Install

  1. Download the script:

    git clone https://github.com/yourusername/winget-upgrade-manager.git
    cd winget-upgrade-manager
  2. Set up the shortcut command:

    Open PowerShell and run:

    # Create profile if it doesn't exist
    if (!(Test-Path $PROFILE)) { New-Item -Path $PROFILE -Type File -Force }
    
    # Add the function (replace with your actual path)
    Add-Content $PROFILE "`nfunction wup { python `"$PWD\compare_winget_upgrades.py`" `$args }"
    
    # Reload profile
    . $PROFILE
  3. You're done! Now you can use wup from anywhere.

📖 Usage

Basic Commands

# View available upgrades and changes since last check
wup

# Interactive mode - select which packages to upgrade
wup -i
wup --interactive

# Reset baseline (clears saved history)
wup --reset

# Show help
wup --help

Interactive Mode

When you run wup -i, you'll see a numbered list of packages:

=== SELECT PACKAGES TO UPGRADE ===

Enter package numbers to upgrade (e.g., 1 3 5-7 or 'all' or 'none'):

  1. Microsoft OneDrive     Microsoft.OneDrive      25.206.1021  25.209.1026  winget
  2. VLC media player       VideoLAN.VLC            3.0.20       3.0.23       winget
  3. Discord                Discord.Discord         1.0.9003     1.0.9216     winget

Select: 

Selection options:

  • 1 3 5 - Select specific packages
  • 1-5 - Select a range
  • 1 2-4 7 - Combine individual and ranges
  • all - Upgrade everything
  • none or just Enter - Skip upgrades

📸 Screenshots

Initial run:

Found 16 packages available for upgrade:

Current upgrades available:
  Microsoft OneDrive     Microsoft.OneDrive      25.206.1021  25.209.1026  winget
  VLC media player       VideoLAN.VLC            3.0.20       3.0.23       winget
  Discord                Discord.Discord         1.0.9003     1.0.9216     winget
  ...

Baseline created.

After upgrades:

=== CHANGES DETECTED ===

Packages no longer needing upgrade:
  - VLC media player       VideoLAN.VLC            3.0.20       3.0.23       winget
  - Discord                Discord.Discord         1.0.9003     1.0.9216     winget

New packages available for upgrade:
  + Python Launcher        Python.Launcher         3.11.5       3.13.5       winget

🛠️ How It Works

  1. Scans winget for available upgrades
  2. Compares with your last scan (stored in ~/.winget-upgrade-last.txt)
  3. Shows changes - what's new, what's been upgraded
  4. Optionally upgrades selected packages in interactive mode
  5. Updates baseline for next time

🎯 Why Use This?

Problem:

  • winget upgrade --all upgrades everything without control
  • Manual selection is tedious with long package IDs
  • Hard to track what changed since last check
  • Progress bars make output messy and hard to parse

Solution:

  • See exactly what changed
  • Pick and choose what to upgrade
  • Clean, readable output
  • Fast baseline comparison

Contributing

Contributions are welcome! Feel free to:

  • Report bugs
  • Suggest features
  • Submit pull requests

License

MIT License - feel free to use and modify as you wish.

Star This Repo

If you find this useful, give it a star! It helps others discover the tool.

Known Issues

  • Progress bars from winget still appear during upgrades (cosmetic only)
  • Very long package names may wrap on narrow terminals

Tips

  • Run wup regularly to stay on top of updates
  • Use wup --reset if the baseline gets corrupted
  • Add wup to your startup script for daily checks

Support

Found a bug or have a question? Open an issue


Made with ❤️ for Windows power users

About

Interactive package upgrade manager for Windows Package Manager (winget)

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages