A simple PowerShell-based TUI (Terminal User Interface) for batch installing Windows packages via winget.
- Profile-based package management (Developer, Designer, Office)
- Interactive keyboard navigation
- Automatic detection of already installed packages
- Batch installation with progress feedback
- Customizable package groups via JSON configuration
- Security warnings for community-sourced packages
- Detailed error messages on installation failures
# Interactive mode (profile selection)
.\work.ps1
# Direct mode with specific config
.\work.ps1 --config dev.json
.\work.ps1 --config office.jsonProfile Selection:
UP/DOWN- Navigate profilesENTER- Select profileQ- Quit
Package Selection:
UP/DOWN- Navigate packagesSPACE- Toggle selectionA- Select all available packagesN- Deselect allENTER- Install selected packagesQ- Quit
Profiles are stored as JSON files in the configs/ folder or in the script directory.
{
"name": "Profile Name",
"description": "Profile description",
"packageGroups": {
"Group Name": [
{ "Name": "Display Name", "Id": "winget.package.id", "Selected": true }
]
}
}| Profile | Description |
|---|---|
| Developer | Git, VS Code, Docker, Rust, AI tools, dev utilities |
| Designer | Figma, Adobe CC, OBS, media editing, design tools |
| Office | Microsoft 365, browsers, communication, productivity |
- Create a new
.jsonfile in theconfigs/folder - Follow the profile structure above
- Use
winget search <package>to find package IDs
- Packages from community sources (non-Microsoft Store) display a warning
- You can cancel installation after reviewing the warning
- Error messages are displayed if installation fails
- Windows 10/11
- PowerShell 5.1+
- winget (Windows Package Manager)
MIT

