Zum Inhalt springen
DeutschlandGPT

Windows

MSI und EXE still installieren, über winget verteilen und die Paketquelle einbinden

Für Windows gibt es zwei Installationsdateien. Das MSI installiert nach C:\Program Files, für alle Nutzer des Geräts, und ist die richtige Wahl für eine zentrale Verteilung. Die EXE installiert ohne Adminrechte ins Benutzerprofil und ist für die Selbstinstallation gedacht.

Stille Installation

POWERSHELL
# MSI, für alle Nutzer des Geräts
msiexec /i DeutschlandGPT_1.4.0_x64_en-US.msi /qn

# EXE, nur für den angemeldeten Benutzer
DeutschlandGPT_1.4.0_x64-setup.exe /S

Deinstallieren geht über msiexec /x <ProductCode> /qn beziehungsweise über den Uninstaller im Installationsverzeichnis.

Den ProductCode der aktuellen Version liefert die winget-Paketquelle mit, siehe unten. In Intune laden Sie das MSI als Win32-App oder als Branchen-App hoch und ziehen sich die neueste Datei per Skript über die stabile Adresse aus dem Überblick.

Installation über winget

DeutschlandGPT liegt bewusst nicht im öffentlichen winget-Community-Repository, weil wir die Verteilung selbst in der Hand behalten. Stattdessen veröffentlichen wir ein Manifest, das immer auf die neueste MSI zeigt, samt Prüfsumme und ProductCode:

CODE
https://www.deutschlandgpt.de/api/desktop/winget/manifest.yaml

Die Datei wird als DeutschlandGPT.Desktop.yaml ausgeliefert, die Paketkennung lautet DeutschlandGPT.Desktop. Das Manifest installiert die MSI mit Scope: machine, also für alle Nutzer des Geräts und mit Adminrechten.

Lokale Manifeste müssen auf dem Gerät einmalig erlaubt sein. In einer Eingabeaufforderung mit Adminrechten:

POWERSHELL
winget settings --enable LocalManifestFiles

Flottenweit setzen Sie stattdessen die App-Installer-Richtlinie „Enable App Installer Local Manifest Files" (HKLM\SOFTWARE\Policies\Microsoft\Windows\AppInstaller, Wert EnableLocalManifestFiles = 1).

Installiert wird dann so:

POWERSHELL
$manifest = "$env:TEMP\DeutschlandGPT.Desktop.yaml"
Invoke-WebRequest -Uri 'https://www.deutschlandgpt.de/api/desktop/winget/manifest.yaml' -OutFile $manifest
winget install --manifest $manifest --silent

winget upgrade findet dieses Paket nicht. Eine über ein lokales Manifest installierte Anwendung hat keine Paketquelle hinterlegt, deshalb kann winget sie nicht von sich aus aktualisieren. Zum Aktualisieren laden Sie das Manifest erneut und führen denselben Befehl noch einmal aus. Genau darauf ist es ausgelegt: UpgradeBehavior: install ersetzt die vorhandene Installation. Am einfachsten hinterlegen Sie das Skript oben als geplanten Task oder als wiederkehrendes Intune-Skript. Wenn Sie stattdessen winget upgrade verwenden wollen, nehmen Sie unsere Paketquelle, siehe nächster Abschnitt.

Solange noch keine Version veröffentlicht ist, antwortet der Endpunkt mit 503 statt mit einem halbfertigen Manifest. Ein Skript sollte diesen Fall abfangen und den Durchlauf einfach überspringen.

Weil winget hier die MSI installiert, gilt alles aus Aktualisierung steuern: die App aktualisiert sich danach nicht mehr selbst, die Versionspflege bleibt bei Ihnen.

Paketquelle für winget upgrade

Wenn Sie Updates über Ihren gewohnten winget upgrade-Lauf verteilen wollen, binden Sie unsere Paketquelle ein. Sie ist vom Typ Microsoft.Rest und liefert immer die neueste Version:

POWERSHELL
winget source add --name deutschlandgpt --type Microsoft.Rest `
  --arg https://www.deutschlandgpt.de/api/desktop/winget

Das ist einmalig pro Gerät nötig und erfordert Adminrechte. Lokale Manifeste müssen dafür nicht erlaubt sein, die Einstellung aus dem vorigen Abschnitt entfällt also.

Danach funktioniert alles wie mit jeder anderen Quelle:

POWERSHELL
winget install DeutschlandGPT.Desktop --source deutschlandgpt --silent
winget upgrade DeutschlandGPT.Desktop --silent

Der interessante Teil: winget erkennt über den ProductCode auch eine Installation, die Sie per Intune ausgerollt haben und die nie durch winget gelaufen ist. Sie müssen also nichts neu installieren. Sobald die Quelle eingebunden ist, taucht DeutschlandGPT in winget upgrade auf, sobald eine neuere Version vorliegt.

Flottenweit verteilen Sie die Quelle über die App-Installer-Richtlinie „Enable Windows Package Manager Additional Sources". Setzen Sie unter HKLM\SOFTWARE\Policies\Microsoft\Windows\AppInstaller den Wert EnableAdditionalSources (REG_DWORD) auf 1 und legen Sie im Unterschlüssel AdditionalSources einen Eintrag mit der Quellenbeschreibung an:

POWERSHELL
$key = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppInstaller'
$source = @{
  Name       = 'deutschlandgpt'
  Arg        = 'https://www.deutschlandgpt.de/api/desktop/winget'
  Type       = 'Microsoft.Rest'
  Data       = ''
  Identifier = 'deutschlandgpt-desktop'
} | ConvertTo-Json -Compress

New-Item -Path "$key\AdditionalSources" -Force | Out-Null
New-ItemProperty -Path $key -Name 'EnableAdditionalSources' `
  -PropertyType DWord -Value 1 -Force | Out-Null
New-ItemProperty -Path "$key\AdditionalSources" -Name '1' `
  -PropertyType String -Value $source -Force | Out-Null

Alle fünf Felder sind Pflicht, Data bleibt bei einer REST-Quelle leer. So verteilte Quellen kann der Benutzer nicht entfernen. Prüfen können Sie den Eintrag mit winget source export, das ist auch die von Microsoft dokumentierte Quelle für diesen Wert.

Zwei Grenzen der Quelle sollten Sie kennen. Sie liefert ausschließlich die neueste Version, ein Festnageln auf eine ältere Version über --version ist nicht möglich und wird mit 404 abgelehnt. Und sie ändert nichts daran, dass die MSI sich nicht selbst aktualisiert: winget löst das Update aus, nicht die App.

Gesperrte Ausführung im Benutzerprofil

Setzen Sie AppLocker, WDAC oder eine vergleichbare Richtlinie ein, die Programme nur aus C:\Program Files und C:\Windows startet, dann ist die per-Benutzer-Variante der App ohnehin nicht lauffähig. Verteilen Sie in diesem Fall ausschließlich das MSI. Die automatische Aktualisierung schaltet sich dort von selbst ab, sodass keine Installation im Benutzerprofil entstehen kann.

War diese Seite hilfreich?