Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eadb00989 | ||
|
|
81bd495af9 | ||
|
|
b41bab4285 | ||
|
|
b603f4d39c | ||
|
|
526c40403b | ||
|
|
7fc0602818 |
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -20,6 +20,8 @@ jobs:
|
||||
|
||||
- name: Build dist
|
||||
run: make dist
|
||||
env:
|
||||
SOFTKAT_BUILD_COMMIT: ${{ github.sha }}
|
||||
|
||||
- name: Package release zip
|
||||
run: |
|
||||
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
dist/
|
||||
13
README.md
13
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
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 queues work for a SYSTEM `winget` worker.
|
||||
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
|
||||
|
||||
@@ -14,6 +14,7 @@ Users install approved software through a small GUI or request helper. A SYSTEM
|
||||
- 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
|
||||
|
||||
@@ -71,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.
|
||||
|
||||
35
dist/setup.ps1
vendored
35
dist/setup.ps1
vendored
File diff suppressed because one or more lines are too long
@@ -4,20 +4,35 @@ set -euo pipefail
|
||||
src="${1:-setup.ps1}"
|
||||
out="${2:-dist/setup.ps1}"
|
||||
out_dir="$(dirname "$out")"
|
||||
build_commit="${SOFTKAT_BUILD_COMMIT:-${GITHUB_SHA:-}}"
|
||||
|
||||
if [ -z "$build_commit" ] && git rev-parse --verify HEAD >/dev/null 2>&1; then
|
||||
build_commit="$(git rev-parse HEAD)"
|
||||
fi
|
||||
|
||||
if [ -z "$build_commit" ]; then
|
||||
build_commit="unknown"
|
||||
fi
|
||||
|
||||
mkdir -p "$out_dir"
|
||||
|
||||
payload_src="$(mktemp)"
|
||||
trap 'rm -f "$payload_src"' EXIT
|
||||
printf '# Softwarekatalog build commit: %s\n' "$build_commit" > "$payload_src"
|
||||
cat "$src" >> "$payload_src"
|
||||
|
||||
if base64 --help 2>&1 | grep -q -- '-w'; then
|
||||
payload="$(base64 -w 0 "$src")"
|
||||
payload="$(base64 -w 0 "$payload_src")"
|
||||
else
|
||||
payload="$(base64 "$src" | tr -d '\n')"
|
||||
payload="$(base64 "$payload_src" | tr -d '\n')"
|
||||
fi
|
||||
|
||||
cat > "$out" <<EOF
|
||||
# Softwarekatalog build commit: $build_commit
|
||||
# ASCII-only bootstrap generated from setup.ps1. Do not edit.
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[ValidateSet('Install','Daemon','UpgradeAll','ApplyPolicy','ProcessQueue','ProcessRequest')]
|
||||
[ValidateSet('Install','UpgradeAll','ApplyPolicy','ProcessQueue','ProcessRequest','ProcessRequests')]
|
||||
[string]\$Mode = 'Install',
|
||||
[ValidateSet('Install','Uninstall')]
|
||||
[string]\$RequestAction = 'Install',
|
||||
|
||||
Reference in New Issue
Block a user