8 Commits

Author SHA1 Message Date
Ludwig Lehnert
81bd495af9 fix: retry busy queue requests
All checks were successful
Release / build-release (push) Successful in 3s
2026-07-01 15:39:14 +00:00
Ludwig Lehnert
b41bab4285 fix: harden queue and request handling
All checks were successful
Release / build-release (push) Successful in 3s
2026-07-01 15:03:29 +00:00
Ludwig Lehnert
b603f4d39c replace daemon with request drop
All checks were successful
Release / build-release (push) Successful in 3s
2026-07-01 14:19:27 +00:00
Ludwig Lehnert
526c40403b fix gui timeout; ignore dist
All checks were successful
Release / build-release (push) Successful in 4s
2026-07-01 13:20:24 +00:00
Ludwig Lehnert
7fc0602818 fix gui runspace cleanup
All checks were successful
Release / build-release (push) Successful in 3s
2026-07-01 13:02:48 +00:00
Ludwig Lehnert
3039562e91 fix gui install runspace
All checks were successful
Release / build-release (push) Successful in 5s
2026-07-01 12:18:59 +00:00
Ludwig Lehnert
91208323ab interactive loading bars and more; (fix)
All checks were successful
Release / build-release (push) Successful in 4s
2026-06-29 15:30:39 +00:00
Ludwig Lehnert
292bd12a4b interactive loading bars and more
All checks were successful
Release / build-release (push) Successful in 4s
2026-06-29 14:56:22 +00:00
4 changed files with 1608 additions and 546 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
dist/

View File

@@ -2,15 +2,19 @@
Windows self-service software catalog backed by `winget`.
Users install approved software through a small GUI or request helper. A SYSTEM scheduled task runs a named-pipe daemon, authenticates the connecting Windows user, validates requests against Group Policy, then runs `winget install --scope machine`.
Users install approved software through a small GUI or request helper. User tools write request files to a controlled drop directory. A SYSTEM scheduled task validates those requests against Group Policy, queues approved work, then runs a SYSTEM `winget` worker.
## What It Does
- Reads allowed software from GPO registry policy.
- Lets users install/uninstall only catalog entries allowed by policy.
- Installs required software automatically.
- Blocks user removal of required software.
- Queues install, uninstall, and upgrade actions.
- Shows current queue task and progress in the GUI.
- Runs `winget upgrade --all` every 2 hours.
- Tracks installed state from `winget export`, not from request history.
- Polls user request files every minute; no long-lived user-facing daemon is required.
## Policy
@@ -68,8 +72,16 @@ Generated files are written to:
C:\ProgramData\__Softwarekatalog\
```
Runtime request files are written below:
```text
C:\ProgramData\__Softwarekatalog\Requests\
C:\ProgramData\__Softwarekatalog\Processed\
C:\ProgramData\__Softwarekatalog\Failed\
```
## Notes
- Requires Windows, Desktop App Installer, and `winget`.
- The daemon runs as `LocalSystem`; keep catalog policy restricted to trusted admins.
- SYSTEM scheduled tasks validate and execute requests; keep catalog policy restricted to trusted admins.
- Package IDs and silent machine-scope support depend on upstream `winget` packages.

View File

@@ -17,7 +17,7 @@ cat > "$out" <<EOF
# ASCII-only bootstrap generated from setup.ps1. Do not edit.
[CmdletBinding()]
param(
[ValidateSet('Install','Daemon','UpgradeAll','ApplyPolicy','ProcessRequest')]
[ValidateSet('Install','UpgradeAll','ApplyPolicy','ProcessQueue','ProcessRequest','ProcessRequests')]
[string]\$Mode = 'Install',
[ValidateSet('Install','Uninstall')]
[string]\$RequestAction = 'Install',

2129
setup.ps1

File diff suppressed because it is too large Load Diff