Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Dev Tool Updater

A modular, automated PowerShell script to update developer tools, runtimes, and package managers across fragmented ecosystems from a single terminal interface.


Supported Tools

  • Docker Desktop
  • MSYS2 System and Packages
  • Node.js LTS Runtime
  • NPM Global Packages
  • Python PIP
  • Winget Applications
  • WSL2 (Windows Subsystem for Linux)

Prerequisites

1. Check PowerShell Version

This script runs best on PowerShell 7+. To verify your installed version, run:

$PSVersionTable.PSVersion

If the Major version is 5, you are using the legacy Windows PowerShell. Upgrading to PowerShell 7 is strongly recommended.

2. Install or Upgrade to PowerShell 7

Run the following command via Windows Package Manager (Winget):

winget install --id Microsoft.PowerShell --source winget

Once installed, restart your terminal or launch PowerShell 7 by typing:

pwsh

3. Check and Install Windows Package Manager (winget)

This updater uses winget to update Docker Desktop, Node.js, and Windows applications. Check whether it is available:

winget --version

If PowerShell reports that winget is not recognized, install or update App Installer from the Microsoft Store. App Installer includes Windows Package Manager and is available on supported versions of Windows 10 and Windows 11.

After installing App Installer, close and reopen PowerShell, then verify the installation:

Get-Command winget
winget --version
winget source update

If winget is still unavailable, install pending Windows updates and confirm that your Windows user profile has access to App Installer. The updater cannot run its winget-based tools until this command is available.

4. Execution Policy

If script execution is disabled on your system, enable execution for your user profile:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

5. Administrator Privileges

Certain tools (such as WSL2 kernel updates, Docker Desktop, and system-wide Node.js MSI installations) require elevated privileges. If you plan to update these tools, launch your terminal with "Run as Administrator".


Installation

Clone the repository and navigate into the project directory:

git clone https://github.com/razban96/DevToolsUpdater.git
cd DevToolsUpdater

Usage

Interactive Menu

Run the entry-point script:

.\update.ps1

The terminal prints a numbered list of all supported tools. From the prompt, you can:

  • Select specific tools using space ' ' or comma-separated numbers (e.g., 1 3 5 or 1,2,4).
  • Type A or all to run updates for all listed tools.
  • Type Q or exit to terminate the script.

If a tool is not installed on your machine, the runner detects its absence in your PATH or target directory and skips it automatically without failing.

Non-Interactive Unattended Mode

To trigger updates for all tools immediately without loading the interactive menu, pass the -All switch:

.\update.ps1 -All

Project Architecture

dev-tool-updater/
├── update.ps1 # Main script entry point and orchestration loop
├── README.md # Project documentation
├── .gitignore # Ignores logs, test files, and local session artifacts
└── src/
├── Core/
│ ├── Menu.ps1 # CLI menu rendering and input token parsing
│ ├── Runner.ps1 # Command execution, tool validation, and error handling
│ └── Security.ps1 # Administrator privilege detection
└── Tools/
├── Docker.ps1 # Docker Desktop update definition
├── MSYS2.ps1 # MSYS2 Pacman update definition
├── Node.ps1 # Node.js runtime and NPM update definitions
├── Python.ps1 # Python PIP update definition
├── Windows.ps1 # Winget system applications definition
└── WSL.ps1 # WSL2 kernel update definition

Adding New Tools

The updater uses a dynamic plugin model. To add a new tool:

  1. Create a new .ps1 file inside the src/Tools/ directory.
  2. Define a function returning an array of PSCustomObject definitions with the following attributes:
function Get-CustomTools {
return @(
[PSCustomObject]@{
Id = "tool-id"
Name = "Display Name"
CheckCmd = "executable-name"
RequiresAdmin = $false
Action = { run-update-command-here }
}
)
}
  1. Import the function call inside update.ps1 to register it with the execution pipeline.

About

Quick powershell script for Updating Developer-Related tools and other Windows Applications

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages