Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eadb00989 | ||
|
|
81bd495af9 | ||
|
|
b41bab4285 | ||
|
|
b603f4d39c | ||
|
|
526c40403b | ||
|
|
7fc0602818 | ||
|
|
3039562e91 |
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -20,6 +20,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Build dist
|
- name: Build dist
|
||||||
run: make dist
|
run: make dist
|
||||||
|
env:
|
||||||
|
SOFTKAT_BUILD_COMMIT: ${{ github.sha }}
|
||||||
|
|
||||||
- name: Package release zip
|
- name: Package release zip
|
||||||
run: |
|
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`.
|
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
|
## 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.
|
- Shows current queue task and progress in the GUI.
|
||||||
- Runs `winget upgrade --all` every 2 hours.
|
- Runs `winget upgrade --all` every 2 hours.
|
||||||
- Tracks installed state from `winget export`, not from request history.
|
- 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
|
## Policy
|
||||||
|
|
||||||
@@ -71,8 +72,16 @@ Generated files are written to:
|
|||||||
C:\ProgramData\__Softwarekatalog\
|
C:\ProgramData\__Softwarekatalog\
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Runtime request files are written below:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\ProgramData\__Softwarekatalog\Requests\
|
||||||
|
C:\ProgramData\__Softwarekatalog\Processed\
|
||||||
|
C:\ProgramData\__Softwarekatalog\Failed\
|
||||||
|
```
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- Requires Windows, Desktop App Installer, and `winget`.
|
- 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.
|
- 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}"
|
src="${1:-setup.ps1}"
|
||||||
out="${2:-dist/setup.ps1}"
|
out="${2:-dist/setup.ps1}"
|
||||||
out_dir="$(dirname "$out")"
|
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"
|
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
|
if base64 --help 2>&1 | grep -q -- '-w'; then
|
||||||
payload="$(base64 -w 0 "$src")"
|
payload="$(base64 -w 0 "$payload_src")"
|
||||||
else
|
else
|
||||||
payload="$(base64 "$src" | tr -d '\n')"
|
payload="$(base64 "$payload_src" | tr -d '\n')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat > "$out" <<EOF
|
cat > "$out" <<EOF
|
||||||
|
# Softwarekatalog build commit: $build_commit
|
||||||
# ASCII-only bootstrap generated from setup.ps1. Do not edit.
|
# ASCII-only bootstrap generated from setup.ps1. Do not edit.
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
param(
|
param(
|
||||||
[ValidateSet('Install','Daemon','UpgradeAll','ApplyPolicy','ProcessQueue','ProcessRequest')]
|
[ValidateSet('Install','UpgradeAll','ApplyPolicy','ProcessQueue','ProcessRequest','ProcessRequests')]
|
||||||
[string]\$Mode = 'Install',
|
[string]\$Mode = 'Install',
|
||||||
[ValidateSet('Install','Uninstall')]
|
[ValidateSet('Install','Uninstall')]
|
||||||
[string]\$RequestAction = 'Install',
|
[string]\$RequestAction = 'Install',
|
||||||
|
|||||||
Reference in New Issue
Block a user