A software lifecycle management platform for Windows.
A single desktop interface for Winget, Chocolatey and Microsoft Store — with software inventory, updates, package collections, system snapshots, machine migration and drift detection.
If you want a Winget GUI, a Chocolatey GUI, or one place to manage Microsoft Store packages alongside everything else, PCC does all three.
Package Control Center (PCC) is a Windows package manager GUI and software lifecycle management tool for system administrators and power users. It brings Winget, Chocolatey and Microsoft Store management under one interface, so you can see what is installed, update it, prove what changed, and rebuild a machine without rebuilding the list from memory.
Use it as a:
- Windows package manager GUI — one window instead of three command lines
- Windows software updater — a real update queue with progress and retry
- Software inventory tool — export exactly what a machine has installed
- Application management console — ignore, pin, and control update scope
- Migration tool — carry a known-good package set to a new machine
Everything runs locally. No account, no telemetry, no cloud service.
- What is Package Control Center?
- Features
- Requirements
- Installation
- Building from Source
- Where PCC Stores Your Data
- Providers
- Project Structure
- Documentation
- Contributing
- Security
- License
| Area | What PCC does |
|---|---|
| Multi-provider updates | One update queue across Winget, Chocolatey and Microsoft Store, each provider tracked separately. |
| Software inventory | Aggregated installed-package list, filterable and exportable to JSON/CSV. |
| Package collections | Curate groups of packages, export/import them, and install a whole collection in one action. |
| System snapshots | Capture a point-in-time inventory and compare any two snapshots. |
| Drift detection | Compare the current machine against a snapshot, backup or collection and see exactly what changed. |
| Machine migration | Restore a package set onto a new machine, with a preview before anything is installed. |
| Backup & restore | Inventory backups plus restore reports, written to a single well-known folder. |
| Update queue | Serialised updates with live progress, per-item logs, safe shutdown and manual retry. |
| Ignore & pin rules | Suppress noisy packages, or pin specific ones so bulk updates skip them. |
| Application-in-use detection | Detects blockers (0x80070020), terminates them and retries. |
| Light & dark themes | Persisted theme, applied before first paint. |
PCC is local-first: no account, no telemetry, no cloud service. Your data never leaves your machine.
- Windows 10 / 11 (PCC uses
winget, Chocolatey and the Microsoft Store) - At least one package provider:
- WinGet — preinstalled on Windows 11
- Chocolatey — optional
- Microsoft Store — via the built-in
wingetmsstoresource
- Administrator rights are required for Chocolatey install/upgrade/uninstall. PCC detects this and offers a one-click elevated relaunch.
- Go to Releases.
- Download
PackageControlCenter-<version>-Setup.exe. - Run the installer (NSIS). Desktop and Start Menu shortcuts are created.
Portable builds are published alongside the installer for machines where you cannot install software.
On first launch PCC creates its data folder and, if you are upgrading from an older release, automatically copies your previous data across. Nothing is ever deleted without your say-so — see Legacy data migration.
- Node.js 18+ and npm
- Windows (the provider CLIs are Windows-only)
git clone https://github.com/NB-InfoTech/Package-Control-Center.git
cd Package-Control-Center
npm install
npm run dev # run with hot reload
npm run typecheck # strict TypeScript check (main + renderer)
npm run build # compile main, preload and renderer.\generate-installer.ps1 # NSIS installer + portable build -> release/| Script | Purpose |
|---|---|
npm run dev |
Run the app with hot reload. |
npm run build |
Type-check and build main, preload and renderer. |
npm run typecheck |
Type-check both TypeScript projects. |
npm run lint |
ESLint over src. |
npm run preview |
Preview the built renderer. |
Everything lives on your machine:
~/.package-control-center/
├── config.json # settings
├── ignored-packages.json # ignore list
├── pinned-packages.json # pin list
├── collections.json # package collections
├── snapshots.json # system snapshots
├── queue-state.json # update queue (safe-shutdown restore)
├── logs/ # application + startup logs
└── migration-complete.flag # written after the one-time data migration
~/Documents/Package Control Center Backups/ # inventory backups
~/Documents/Package Control Center Reports/ # restore reports
PCC was originally released as Winget Control Center. If you are upgrading from that era, your data is migrated automatically and exactly once:
- Settings, collections, snapshots, backups, logs and queue state are copied into the new locations.
- A
migration-complete.flagmarker records that this happened. - Nothing is deleted. The old folders stay on disk so you can inspect them and remove them yourself whenever you are satisfied.
Backup and report folders follow the same rule.
PCC treats each package manager as a first-class provider and routes every operation to the right one:
| Provider | Source | Elevation |
|---|---|---|
| Winget | Community repository | No (self-elevates via the Windows consent prompt) |
| Chocolatey | choco CLI |
Yes — PCC must run as Administrator |
| Microsoft Store | winget --source msstore |
No |
Providers can be enabled or disabled independently in Settings. The About page
shows each provider's health (Ready / Unavailable / Disabled /
Error) and its installed version, detected live.
src/
├── main/ # Electron main process
│ ├── index.ts # App lifecycle, window, safe shutdown
│ ├── ipc/ # IPC handlers (the only renderer-facing surface)
│ ├── services/
│ │ ├── paths/ # DataPathService / BackupPathService / ReportPathService
│ │ ├── providers/ # Winget, Chocolatey, Microsoft Store + registry
│ │ ├── config/ # ConfigService
│ │ ├── migration/ # Legacy folder migration
│ │ └── logging/ # Logger
│ └── utils/
├── preload/ # contextBridge API (contextIsolation + sandbox)
└── renderer/ # React UI (Tailwind + shadcn-style components)
Architecture notes
contextIsolationandsandboxare both enabled; the renderer has no direct Node access and reaches the main process only through the preload bridge.- Every persisted path resolves through a path service, so there is exactly one definition of where data lives.
- Provider-specific CLI parsing stays inside each provider implementation; the UI and queue engine depend only on the shared provider interface.
| Document | Contents |
|---|---|
| CHANGELOG.md | Release history. |
| MULTI_PROVIDER_ARCHITECTURE.md | How the provider layer is designed. |
| PROVIDER_CAPABILITY_MATRIX.md | Per-provider feature support. |
| V2_2_ROADMAP.md | Planned work. |
| LEGACY_REFERENCE_AUDIT.md | Legacy naming audit. |
Bug reports and pull requests are welcome. Please read CONTRIBUTING.md first — it covers the dev workflow, coding standards and what makes a good bug report.
Please do not open a public issue for security problems. Follow the process in SECURITY.md.
Released under the MIT License.
Copyright © 2024-2026 NB InfoTech (Package Control Center)