Installation
- Requirements
- Option 1 — Build from source
- Option 2 — Publish a single-file
wum.exe - Option 3 — MSI / WinGet
- Verify the install
- Where WUM writes on disk
Requirements
| Requirement | Detail |
|---|---|
| OS | Windows 10 or Windows 11 (x64) |
| SDK | .NET 10 SDK — only needed to build from source |
| Runtime | None when published self-contained; the wum.exe bundles the runtime |
| PowerShell | powershell.exe (Windows PowerShell 5.1, ships with Windows) — WUM shells out to it for all WUA COM calls |
| Privileges | Administrator for update operations only. Read-only commands run as a standard user |
The app targets net10.0-windows with RuntimeIdentifier=win-x64. PowerShell is invoked as:
powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "<script>"
so WUM works regardless of the machine’s default execution policy.
Option 1 — Build from source
git clone https://github.com/isubroto/wum.git
cd wum
dotnet build
Run directly from the repo (read-only commands need no admin):
dotnet run --project src/WUM.CLI -- status
dotnet run --project src/WUM.CLI -- list --security
Everything after -- is passed to wum as arguments.
Option 2 — Publish a single-file wum.exe
dotnet publish src/WUM.CLI -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o ./publish
Produces a standalone ./publish/wum.exe that needs no .NET runtime on the target machine. The Release build applies app.manifest (asInvoker) so launching never triggers a UAC prompt; modifying commands request elevation themselves.
The
PublishSingleFileandSelfContainedproperties are already set inWUM.CLI.csproj, so the-p:/--self-containedflags above are belt-and-suspenders.
Add the publish folder to your PATH, or copy wum.exe somewhere already on PATH, to call wum from any terminal.
Option 3 — MSI / WinGet
winget install SubrotoSaha.WUM
The MSI installs wum.exe to:
C:\Program Files\Subroto Saha\WUM
and adds that folder to the system PATH, so wum is available everywhere. Tagged builds publish both the portable wum.exe and the MSI automatically (see .github/workflows/release.yml and wingetRelease.yml).
Verify the install
wum --version # e.g. 0.7.0.79
wum --info # Version, commit, build date, author, license, runtime, OS
wum --help # Top-level help and the command list
--info prints application metadata (version/commit/build date/author/license/repo), runtime details (framework, CLR, process arch), and system info (OS, machine, user, CPU cores). It is handled in Program.Main before the command pipeline runs, so it is fast and needs no admin.
Where WUM writes on disk
| Path | Purpose |
|---|---|
%ProgramData%\WUM\logs\wum-YYYY-MM-DD.log |
Elevated-session Serilog daily rolling logs (7 days retained) |
%LocalAppData%\WUM\logs\wum-YYYY-MM-DD.log |
Standard-user daily rolling logs (7 days retained) |
%ProgramData% is normally C:\ProgramData. Standard-user sessions log under %LocalAppData%; elevated sessions log machine-wide under %ProgramData%. WUM does not persist available-update scan results; it queries WUA for current operating-system state.
Next: Command Reference →