add README.md, fix policy definitions
This commit is contained in:
@@ -43,8 +43,32 @@
|
|||||||
<decimal value="0" />
|
<decimal value="0" />
|
||||||
</falseValue>
|
</falseValue>
|
||||||
</boolean>
|
</boolean>
|
||||||
<list id="Catalog" key="Software\Policies\STL\Softwarekatalog\Catalog" valuePrefix="Catalog" additive="false" explicitValue="true" />
|
</elements>
|
||||||
<list id="Required" key="Software\Policies\STL\Softwarekatalog\Required" valuePrefix="Required" additive="false" explicitValue="true" />
|
</policy>
|
||||||
|
<policy name="Softwarekatalog_Catalog" class="Machine" displayName="$(string.Softwarekatalog_Catalog)" explainText="$(string.Softwarekatalog_Catalog_Help)" key="Software\Policies\STL\Softwarekatalog" valueName="CatalogPolicy" presentation="$(presentation.Softwarekatalog_Catalog)">
|
||||||
|
<parentCategory ref="Softwarekatalog" />
|
||||||
|
<supportedOn ref="windows:SUPPORTED_Windows7" />
|
||||||
|
<enabledValue>
|
||||||
|
<decimal value="1" />
|
||||||
|
</enabledValue>
|
||||||
|
<disabledValue>
|
||||||
|
<decimal value="0" />
|
||||||
|
</disabledValue>
|
||||||
|
<elements>
|
||||||
|
<list id="Catalog" key="Software\Policies\STL\Softwarekatalog\Catalog" valuePrefix="Catalog" additive="false" explicitValue="true" required="false" />
|
||||||
|
</elements>
|
||||||
|
</policy>
|
||||||
|
<policy name="Softwarekatalog_Required" class="Machine" displayName="$(string.Softwarekatalog_Required)" explainText="$(string.Softwarekatalog_Required_Help)" key="Software\Policies\STL\Softwarekatalog" valueName="RequiredPolicy" presentation="$(presentation.Softwarekatalog_Required)">
|
||||||
|
<parentCategory ref="Softwarekatalog" />
|
||||||
|
<supportedOn ref="windows:SUPPORTED_Windows7" />
|
||||||
|
<enabledValue>
|
||||||
|
<decimal value="1" />
|
||||||
|
</enabledValue>
|
||||||
|
<disabledValue>
|
||||||
|
<decimal value="0" />
|
||||||
|
</disabledValue>
|
||||||
|
<elements>
|
||||||
|
<list id="Required" key="Software\Policies\STL\Softwarekatalog\Required" valuePrefix="Required" additive="false" explicitValue="true" required="false" />
|
||||||
</elements>
|
</elements>
|
||||||
</policy>
|
</policy>
|
||||||
</policies>
|
</policies>
|
||||||
|
|||||||
@@ -6,14 +6,22 @@
|
|||||||
<stringTable>
|
<stringTable>
|
||||||
<string id="Softwarekatalog">Softwarekatalog</string>
|
<string id="Softwarekatalog">Softwarekatalog</string>
|
||||||
<string id="Softwarekatalog_Settings">Softwarekatalog konfigurieren</string>
|
<string id="Softwarekatalog_Settings">Softwarekatalog konfigurieren</string>
|
||||||
<string id="Softwarekatalog_Settings_Help">Aktiviert und konfiguriert den Softwarekatalog. Katalog-Eintraege werden unter HKLM\Software\Policies\STL\Softwarekatalog\Catalog gespeichert. Der Wertname ist der Alias, der Wert hat das Format PackageId|DisplayName|Description. Pflichtsoftware wird unter HKLM\Software\Policies\STL\Softwarekatalog\Required gespeichert. Der Wertname ist der Alias, der Wert ist 1. Der Client liest maximal 500 Eintraege pro Liste.</string>
|
<string id="Softwarekatalog_Settings_Help">Aktiviert den Softwarekatalog und steuert, ob Benutzer Software installieren oder deinstallieren duerfen und ob Pflichtsoftware automatisch installiert wird.</string>
|
||||||
|
<string id="Softwarekatalog_Catalog">Freigegebene Software konfigurieren</string>
|
||||||
|
<string id="Softwarekatalog_Catalog_Help">Konfiguriert freigegebene Software unter HKLM\Software\Policies\STL\Softwarekatalog\Catalog. Der Wertname ist der Alias, der Wert hat das Format PackageId|DisplayName|Description. Der Client liest maximal 500 Eintraege.</string>
|
||||||
|
<string id="Softwarekatalog_Required">Pflichtsoftware konfigurieren</string>
|
||||||
|
<string id="Softwarekatalog_Required_Help">Konfiguriert Pflichtsoftware unter HKLM\Software\Policies\STL\Softwarekatalog\Required. Der Wertname ist ein Alias aus dem Katalog, der Wert ist 1. Der Client liest maximal 500 Eintraege.</string>
|
||||||
</stringTable>
|
</stringTable>
|
||||||
<presentationTable>
|
<presentationTable>
|
||||||
<presentation id="Softwarekatalog_Settings">
|
<presentation id="Softwarekatalog_Settings">
|
||||||
<checkBox refId="AllowUserInstalls">Benutzer duerfen Software installieren</checkBox>
|
<checkBox refId="AllowUserInstalls">Benutzer duerfen Software installieren</checkBox>
|
||||||
<checkBox refId="AllowUserUninstall">Benutzer duerfen Software deinstallieren</checkBox>
|
<checkBox refId="AllowUserUninstall">Benutzer duerfen Software deinstallieren</checkBox>
|
||||||
<checkBox refId="EnforceRequired">Pflichtsoftware automatisch installieren</checkBox>
|
<checkBox refId="EnforceRequired">Pflichtsoftware automatisch installieren</checkBox>
|
||||||
|
</presentation>
|
||||||
|
<presentation id="Softwarekatalog_Catalog">
|
||||||
<listBox refId="Catalog">Freigegebene Software. Name = Alias, Wert = PackageId|DisplayName|Description.</listBox>
|
<listBox refId="Catalog">Freigegebene Software. Name = Alias, Wert = PackageId|DisplayName|Description.</listBox>
|
||||||
|
</presentation>
|
||||||
|
<presentation id="Softwarekatalog_Required">
|
||||||
<listBox refId="Required">Pflichtsoftware. Name = Alias aus Katalog, Wert = 1.</listBox>
|
<listBox refId="Required">Pflichtsoftware. Name = Alias aus Katalog, Wert = 1.</listBox>
|
||||||
</presentation>
|
</presentation>
|
||||||
</presentationTable>
|
</presentationTable>
|
||||||
|
|||||||
@@ -6,14 +6,22 @@
|
|||||||
<stringTable>
|
<stringTable>
|
||||||
<string id="Softwarekatalog">Software Catalog</string>
|
<string id="Softwarekatalog">Software Catalog</string>
|
||||||
<string id="Softwarekatalog_Settings">Configure Software Catalog</string>
|
<string id="Softwarekatalog_Settings">Configure Software Catalog</string>
|
||||||
<string id="Softwarekatalog_Settings_Help">Enables and configures Software Catalog. Catalog entries are stored below HKLM\Software\Policies\STL\Softwarekatalog\Catalog. Value name is alias, value format is PackageId|DisplayName|Description. Required software is stored below HKLM\Software\Policies\STL\Softwarekatalog\Required. Value name is alias, value is 1. Client reads up to 500 entries per list.</string>
|
<string id="Softwarekatalog_Settings_Help">Enables Software Catalog and controls whether users may install or uninstall software and whether required software is installed automatically.</string>
|
||||||
|
<string id="Softwarekatalog_Catalog">Configure allowed software</string>
|
||||||
|
<string id="Softwarekatalog_Catalog_Help">Configures allowed software below HKLM\Software\Policies\STL\Softwarekatalog\Catalog. Value name is alias, value format is PackageId|DisplayName|Description. Client reads up to 500 entries.</string>
|
||||||
|
<string id="Softwarekatalog_Required">Configure required software</string>
|
||||||
|
<string id="Softwarekatalog_Required_Help">Configures required software below HKLM\Software\Policies\STL\Softwarekatalog\Required. Value name is a catalog alias, value is 1. Client reads up to 500 entries.</string>
|
||||||
</stringTable>
|
</stringTable>
|
||||||
<presentationTable>
|
<presentationTable>
|
||||||
<presentation id="Softwarekatalog_Settings">
|
<presentation id="Softwarekatalog_Settings">
|
||||||
<checkBox refId="AllowUserInstalls">Allow users to install software</checkBox>
|
<checkBox refId="AllowUserInstalls">Allow users to install software</checkBox>
|
||||||
<checkBox refId="AllowUserUninstall">Allow users to uninstall software</checkBox>
|
<checkBox refId="AllowUserUninstall">Allow users to uninstall software</checkBox>
|
||||||
<checkBox refId="EnforceRequired">Automatically install required software</checkBox>
|
<checkBox refId="EnforceRequired">Automatically install required software</checkBox>
|
||||||
|
</presentation>
|
||||||
|
<presentation id="Softwarekatalog_Catalog">
|
||||||
<listBox refId="Catalog">Allowed software. Name = alias, value = PackageId|DisplayName|Description.</listBox>
|
<listBox refId="Catalog">Allowed software. Name = alias, value = PackageId|DisplayName|Description.</listBox>
|
||||||
|
</presentation>
|
||||||
|
<presentation id="Softwarekatalog_Required">
|
||||||
<listBox refId="Required">Required software. Name = catalog alias, value = 1.</listBox>
|
<listBox refId="Required">Required software. Name = catalog alias, value = 1.</listBox>
|
||||||
</presentation>
|
</presentation>
|
||||||
</presentationTable>
|
</presentationTable>
|
||||||
|
|||||||
67
README.md
Normal file
67
README.md
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
# Softwarekatalog
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
## What It Does
|
||||||
|
|
||||||
|
- Reads allowed software from GPO registry policy.
|
||||||
|
- Lets users install/uninstall only catalog entries allowed by policy.
|
||||||
|
- Installs required software automatically.
|
||||||
|
- Runs `winget upgrade --all` every 2 hours.
|
||||||
|
- Tracks installed state from `winget export`, not from request history.
|
||||||
|
|
||||||
|
## Policy
|
||||||
|
|
||||||
|
ADMX templates live in `PolicyDefinitions/`.
|
||||||
|
|
||||||
|
Copy them to your domain Central Store:
|
||||||
|
|
||||||
|
```text
|
||||||
|
\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\Softwarekatalog.admx
|
||||||
|
\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\de-DE\Softwarekatalog.adml
|
||||||
|
\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\en-US\Softwarekatalog.adml
|
||||||
|
```
|
||||||
|
|
||||||
|
Policy registry path:
|
||||||
|
|
||||||
|
```text
|
||||||
|
HKLM\Software\Policies\STL\Softwarekatalog
|
||||||
|
```
|
||||||
|
|
||||||
|
Catalog entries:
|
||||||
|
|
||||||
|
```text
|
||||||
|
HKLM\Software\Policies\STL\Softwarekatalog\Catalog
|
||||||
|
alias = PackageId|DisplayName|Description
|
||||||
|
```
|
||||||
|
|
||||||
|
Required software:
|
||||||
|
|
||||||
|
```text
|
||||||
|
HKLM\Software\Policies\STL\Softwarekatalog\Required
|
||||||
|
alias = 1
|
||||||
|
```
|
||||||
|
|
||||||
|
The client reads up to 500 catalog entries and 500 required entries.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
Run as admin or as computer startup script:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\setup.ps1 -Mode Install
|
||||||
|
```
|
||||||
|
|
||||||
|
Generated files are written to:
|
||||||
|
|
||||||
|
```text
|
||||||
|
C:\ProgramData\__Softwarekatalog\
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Requires Windows, Desktop App Installer, and `winget`.
|
||||||
|
- The daemon runs as `LocalSystem`; keep catalog policy restricted to trusted admins.
|
||||||
|
- Package IDs and silent machine-scope support depend on upstream `winget` packages.
|
||||||
Reference in New Issue
Block a user