Built by a packager. Used by our team daily.

Every packaging task in one console. One elevation. Zero navigating.

I built Packaging Console after 30 years on Windows, tired of losing real time every day to the same navigating — hunting a registry path from memory, retyping msiexec flags, clicking through another UAC prompt. It replaces all of that with one unified, elevate-once desktop tool built specifically for the job of a Windows application packager.

Without it — typed by hand, every time
msiexec /i "\\server\share\Packages\VendorApp\1.0\VendorApp.msi" TRANSFORMS="VendorApp.mst" REBOOT=REALLYSUPPRESS ALLUSERS=1 /l*v "C:\Temp\install_20260728.log" /qn
With Packaging Console
Install with Verbose Log Browse to the .msi, pick an optional .mst, done.
1
UAC prompt per session, not per task
11
tools unified into one console
1
external code dependency in the whole app
0
PowerShell required to run it

Why I built it

The job hasn't changed. The number of places I had to visit to do it had gotten out of hand.

Validating an install, checking what a previous version left behind, confirming a reboot isn't already pending, reading an MSI's properties, wrapping something for Intune — none of that is hard. What eats the day is everything around it: opening regedit and typing a path from memory, elevating another command prompt, digging through Explorer for the Installer cache, guessing a silent switch that changed since the last version of that same installer, then hand-typing a long command with no real confidence the quoting's right.

None of that is skilled work. All of it is time. Packaging Console exists to remove it — not by changing what Windows does, but by making everything a packager already knows how to do reachable in one click, from one elevated session, without leaving the app.

Home

My day starts here — not spread across five different windows

Home is the first thing I see on launch: my current Project Folder, a live reboot-pending check, and the handful of things I do constantly, pinned right where I land.

  • Reboot-pending banner — checked across four separate signals (pending file rename operations, Component Based Servicing, Windows Update, and SCCM's own client state if present), so I know before I start an install whether the machine's already carrying a pending restart from something else.
  • Project Folder — a per-session working folder I browse to once. Every log and report generated elsewhere in the app lands there automatically, and it always resets to a safe default rather than silently pointing at a folder from last week.
  • Pinned favorites — right-click any button anywhere and pin it here. Six defaults are already seeded on first run.
  • Search / Ctrl+K — type any part of a label from anywhere in the app and jump straight to it.
No more guessing whether a reboot's already pending No more re-navigating to the same things every day
Packaging Console Home view showing the reboot-pending banner, Project Folder, and pinned favorites
Home — reboot status, Project Folder, and pinned actions

Registry

Every uninstall key, one click — including the one everyone forgets

Opens regedit directly at the key I need, instead of me typing a path from memory and hoping I didn't fat-finger it.

  • HKLM Uninstall and HKCU Uninstall — the two places every install/uninstall entry actually lives.
  • HKLM Uninstall (WOW6432Node) — the 32-bit-on-64-bit redirected path that's trivially easy to forget, and just as easy to draw the wrong conclusion from when you do.

Each click sets regedit's own remembered location proactively, so it opens exactly where I need it — using a value Windows already manages, just triggered for me.

No more typing long registry paths from memory
Registry section showing HKLM, HKLM WOW6432Node, and HKCU uninstall key launchers
Registry — one click to any uninstall key, including WOW6432Node

User Profile

AppData has three folders. It's always the one I didn't open.

One click to AppData Roaming, AppData Local, AppData LocalLow, and ProgramData — the places an install can leave user-scoped or machine-scoped data behind — without turning on hidden files in Explorer first.

No more enabling hidden files, three folders deep, every time
User Profile section showing AppData Roaming, Local, LocalLow, and ProgramData launchers
User Profile — every AppData location, one click each

Installer & Temp

The Windows Installer cache, and every temp folder, without a DOS box

Windows Installer Cache, User Temp, Windows Temp, and Windows Logs — the exact folders I check when validating an install or hunting for what a package actually dropped — reachable directly, with %TEMP% and %WINDIR% expanded for me automatically.

No more opening cmd just to run cd %WINDIR%\Installer
Installer and Temp section showing Windows Installer Cache, User Temp, Windows Temp, and Windows Logs launchers
Installer & Temp — the cache and every temp folder that matters

Diagnostics

A pre-filtered Event Viewer, and Add/Remove Programs, without the detour

Windows doesn't give you a documented way to launch Event Viewer straight into a specific saved view — so clicking Event Viewer (MsiInstaller) creates or refreshes a Custom View filtered to Provider Name = MsiInstaller, then opens Event Viewer to it. One extra click to expand Custom Views and select it — a native Event Viewer limitation, not something I'm pretending to fully automate.

Add/Remove Programs sits right alongside it, since I check the two together constantly during install validation.

No more building an Event Viewer filter from scratch each time
Diagnostics section showing Event Viewer MsiInstaller filter and Add/Remove Programs launchers The resulting filtered Event Viewer custom view, showing MsiInstaller events
Diagnostics — one click builds the filter, one more shows exactly this

Run

Run anything elevated. Install with full logging. Properly, the way I'd already insist on doing it.

Right-clicking an MSI and hitting Install is bad practice for a packager — it can work, but it leaves real room for a failed or incomplete install with nothing to show for it afterward. What I've always done instead is go to the command line and build the proper install string myself, or run it through PSADT or a batch file, so I get a controlled result and a real log. Run is that same discipline, just without the typing.

  • Run Elevated… — browse to any .cmd, .bat, .exe, or .msi and it runs with the console's own admin token. Install-script locations move around between every package; whatever I pick inherits elevation directly, not through a non-elevated Explorer shell.
  • Install with Verbose Log — browse to an .msi, add a .mst if there is one, and it builds and runs the full msiexec /i … /l*v … command in the background while I keep working. When it's done, a dialog shows the log path with Copy and Open buttons right there.
No more hand-typing msiexec flags and second-guessing the quoting No more hunting for the log file afterward
The Run section on first open, before anything's been clicked Run Elevated file picker, filtered to scripts and installers Install with Verbose Log, prompting for an optional MST transform Install with Verbose Log running in the background Install complete dialog with log file path and Copy and Open buttons
Run — starts here, then Run Elevated and Install with Verbose Log, start to finish

MSI Inspector

Every MSI property, readable and copyable, without opening Orca

Browse to any .msi and see its Product Name, Product Code, Product Version, Upgrade Code, Manufacturer, Package Code, and Languages at a glance — plus the full, searchable Property table underneath.

  • Copy buttons sit right on the fields I actually paste into command lines and tickets — Product Code and Upgrade Code first, Product Name, Manufacturer, and Product Version alongside them.
  • Reads the MSI through the same Windows Installer automation interface that ships with every copy of Windows — no third-party library, no licensing question, nothing extra installed.
No more opening a separate MSI editor to read three values Uses Windows' own built-in MSI reader — nothing bundled
MSI Inspector showing a loaded MSI's summary fields and property table
MSI Inspector — summary fields and full property table, one click from a copy button

Installer Helper

"What silent switch does this even use?" — answered, honestly

Bare .exe installers give no obvious sign of what's underneath. Installer Helper scans the file for known signatures and gives a best-effort guess — Inno Setup, NSIS, InstallShield, WiX Burn, and more — then shows the commonly used silent switches for that type.

Every guess is labelled exactly that: a guess. Some vendors never build silent-install support in at all, and no tool — this one included — can create a capability the installer doesn't have. The accuracy is not guaranteed, and it says so on screen.

Once I've manually confirmed the switch that actually works for a specific file, I save it — the app remembers it by the file's own content hash, so the exact same installer shows "you've seen this before" next time, without ever assuming a shared location for those notes across different clients.

No more re-solving the same switch I already found last month
Installer Helper showing a detected installer type, suggested silent switches, and the notes form
Installer Helper — best-effort type detection, switch reference, and per-file notes

IntuneWin Packager

Wraps Microsoft's own packaging tool — so I never touch the command line for it again

Pick a source folder, a setup file, and an output folder, then click Package. Real-time log output streams as it runs, and the resulting .intunewin path is one click from my clipboard when it's done.

  • Optional output filename — leave it blank for the tool's own naming, or set one and the result is renamed automatically the moment packaging finishes, with a confirmation before it ever overwrites an existing file.
  • Works online or offline — checks a locally available copy first (including one I've placed myself, for client sites with no internet access), only attempting a download — always straight from Microsoft's own official source, never a mirror — if nothing local is found.
  • Source folder, setup file, and output folder are all remembered between runs, since going back into a package after rework is the normal case, not the exception.
No more building the -c/-s/-o command by hand every time No more browsing back afterward just to rename the output
IntuneWin Packager showing source, setup file, output folder, and a completed package with log
IntuneWin Packager — a full GUI wrap of Microsoft's own command-line tool

System Info

Everything about the machine I'm standing on, in one glance

Disk space per drive, memory, CPU (model and core count), GPU (model, driver version, VRAM), CPU architecture, OS build and edition, pending Windows Update count, and the exact .NET Framework, .NET runtime, and Visual C++ redistributable versions installed — the most common source of a mysterious install failure, made visible instead of guessed at.

Everything here is read live from the machine each time I visit or hit Refresh — nothing's written to disk, nothing's cached stale.

No more checking five different places to confirm one machine's specs
System Info panel showing OS, memory, CPU, GPU, disk space, and installed runtimes
System Info — disk, memory, CPU/GPU, and every installed prerequisite runtime

Custom config — my favorite part of this

Add your own shortcuts. No recompiling, no code.

Every button in the app, aside from a few dedicated tools like MSI Inspector, comes from one plain locations.json file. Add an entry, save, relaunch — a brand-new category can appear in the rail automatically, generated from whatever Group name you use. This is genuinely the coolest part of the whole thing: the console isn't fixed to how I work, it bends to how anyone on the team works.

{ "Label": "Environment Variables", "Group": "Diagnostics", "Type": "Process", "Path": "rundll32.exe", "Arguments": "sysdm.cpl,EditEnvironmentVariables" }

Six entry types cover almost anything a team wants quick access to — folders, registry keys, arbitrary processes and Control Panel applets, plus a few built-in behaviours like Add/Remove Programs and the filtered Event Viewer.

Extends without a rebuild — everyone's console can look a little different, safely
A custom locations.json entry added by hand, and the resulting new button appearing in the app
A hand-added config entry, and the button it produces — no rebuild required

For the people signing off on it

It's Windows, doing what Windows already does — just from one place

Every action in this console is something Windows itself already exposes and permits — regedit navigation, Event Viewer, Explorer, Add/Remove Programs, and the same Windows Installer engine every MSI already runs through. Nothing here reaches further than I could already reach by hand; it just removes the friction of getting there.

No kernel drivers, ever

Nothing is installed at the system level. The app is a normal user-mode Windows program that elevates once, the same way any admin tool does, and does nothing an admin couldn't already do by hand.

One external code dependency

Built in C# on .NET, the app has exactly one third-party package in its entire codebase, used only for an optional SCCM check — verified directly against the compiled project. It does ship alongside a handful of native WPF runtime files, part of any self-contained .NET desktop app, so it isn't literally one file — but there's no external code, no NuGet package, beyond that single one.

Documented, not just trusted

The in-app Help screen lists precisely what the app writes to disk or the registry, where, and when — the same footprint table a security review would ask for, available before anyone has to ask.

No PowerShell required

Nothing about running or distributing this tool depends on PowerShell execution policy, script signing, or an admin loosening a security control to allow it. It's a plain, signed-capable .exe.

Portable, inspectable

Ships as a self-contained folder — unzip, unblock, run. The only network access the app itself ever initiates is a documented, on-demand fetch of Microsoft's own IntuneWin packaging tool from Microsoft's official source, and only when nothing's found locally first. Nothing else calls out anywhere. (One honest caveat: since the nav config is a plain, user-editable file, someone could point a custom entry at a network location — that's the same openness that makes the config useful, not the app reaching out on its own.)

Open about its limits

Where Windows itself has a real limitation — Event Viewer's saved-view launching, an installer with no silent mode at all — the app says so plainly, rather than pretending to fully automate something it can't.

What's next

On the roadmap

Two more tools planned, both aimed at the same problem: command lines that are easy to get right in your head, and easy to get subtly wrong when you actually type them.

Planned

MSI command-line builder

Tick the properties I need, pick a UI level, and get a fully-formed install and uninstall command line — built, not remembered — ready to test immediately and copy out for deployment.

ALLUSERS=1 — install for all users of the machine
REBOOT=REALLYSUPPRESS — suppress a forced reboot after install
REINSTALLMODE=vomus — force a full reinstall over an existing version
UI level: /qn (silent)  ·  /qb (basic UI)
msiexec /i "VendorApp.msi" ALLUSERS=1 REBOOT=REALLYSUPPRESS /qn /l*v "install.log"
Planned

MSIX command-line builder

Same idea, aimed at provisioning and deprovisioning an MSIX package to a machine or a single user — with quick access to view the package manifest and details before committing to a deployment.

  • Provision for all users on a machine, or a single user, without recalling the exact PowerShell cmdlet syntax
  • Deprovision cleanly, machine- or user-scoped
  • Inspect a package's manifest and identity details directly, the same idea as MSI Inspector applied to MSIX

Documentation

Help is built in — and it stays with the file

Every footprint the app leaves on a machine, every behaviour that needs a one-line explanation, lives directly inside the app's own Help screen — not a separate manual someone has to go find.

In-app Help screen listing exactly what the app writes to disk and the registry