Zum Hauptinhalt springen

Winget-Fehlerbehebung

Resolve common issues with Level's winget actions, including package scope requirements, SYSTEM user context, and install timeouts.

Einführung

Level's Winget-Aktionen werden als SYSTEM Benutzer aus und erzwingt den Maschinenbereich für alle Vorgänge. Die meisten Installations- und Upgrade-Fehler lassen sich auf eine dieser beiden Einschränkungen zurückführen. Wer diese von Anfang an versteht, kann die Mehrheit der gemeldeten Probleme lösen.


Wie Level Winget ausführt

Level's Aktionen zum Installieren, Aktualisieren und Deinstallieren von Paketen nutzen die Windows Package Manager API von Microsoft. Sie sind weder von einer interaktiven PowerShell-Sitzung noch von der Winget-Konfiguration des angemeldeten Benutzers abhängig. Die separate Winget installieren Aktion installiert das eigenständige winget.exe Befehlszeilentool.

Für jede Level-Winget-Pakeaktion gelten stets zwei Bedingungen:

  1. Wird ausgeführt als SYSTEM: Level führt Paketvorgänge unter dem SYSTEM Konto, nicht als angemeldeter Benutzer oder in einer Standard-Adminsitzung. Jedes Paketverhalten, das vom Benutzerkontext abhängt, funktioniert auf diese Weise nicht gleich.

  2. Erzwingt den Maschinenbereich: Level erfordert den Maschinenbereich für Paketvorgänge. Nur Pakete mit einem geeigneten Maschinenbereich-Installer können über Level installiert oder aktualisiert werden.

Diese beiden Einschränkungen erklären nahezu jeden Bericht des Musters „funktioniert in PowerShell, aber nicht in Level".


Häufige Probleme

Paket lässt sich über PowerShell, aber nicht über Level installieren

Wenn Sie ein Paket als aktuell angemeldeter Benutzer installieren können, die Level-Aktion jedoch fehlschlägt, liegt der Unterschied im Benutzerkontext. Level wird ausgeführt als SYSTEM, das eine andere Umgebung und Registry als ein angemeldeter Benutzer hat. Meistens zeigt sich dies als Berechtigungsproblem oder als fehlender Benutzerpfad.

Für Pakete, die grundsätzlich eine Benutzersitzung erfordern, gibt es keine Umgehungslösung. Erwägen Sie für diese Pakete einen skriptbasierten Ansatz mit PsExec oder eine geplante Aufgabe, die unter einem bestimmten Benutzerkontext ausgeführt wird.


Paket lässt sich als Administrator, aber nicht über Level installieren

Level erzwingt den Maschinenbereich. Ein Paket kann sich problemlos als Administrator ohne --scope machine jedoch fehlschlagen, wenn der Maschinenbereich erforderlich ist.

Testen Sie es direkt, um dies zu bestätigen:

winget install --scope machine -e --id PACKAGE_ID

Wenn dies in einer Administrator-PowerShell-Sitzung fehlschlägt, stellt das Paket keinen Maschinenbereich-Installer bereit. Level kann es nicht über die Winget-Aktion installieren. Die einzigen Optionen sind, eine alternative Paket-ID zu finden, die den Maschinenbereich unterstützt, oder es über eine Skript-ausführen-Aktion mit einem anderen Installer zu installieren.


Upgrade-Aktion zeigt weniger Pakete als erwartet

Level verwendet den Maschinenbereich für Upgrade-Scans, daher werden nur maschinenbereichsbezogene Installationen in der Upgrade-Liste angezeigt.

Sie können dies überprüfen, indem Sie den entsprechenden Befehl selbst ausführen:

winget upgrade --scope machine --all

Wenn die Ergebnisse mit dem übereinstimmen, was Level anzeigt, ist Level korrekt. Im Benutzerbereich installierte Pakete werden nicht angezeigt.


Paketinstallation oder -upgrade überschreitet das Zeitlimit

Wenn die Aktionsausgabe operation timed out, hat der Windows Package Manager den Paketvorgang nicht innerhalb von etwa 30 Minuten abgeschlossen. Dies tritt häufig auf, wenn ein Installer hängt oder auf eine Benutzerinteraktion wartet, die nicht möglich ist, während Level ohne Benutzeroberfläche als SYSTEM.

Überprüfen Sie die Aktionsausgabe auf einen hängenden Prozessnamen oder eine Meldung, dass die Anwendung in Verwendung ist. Schließen Sie die Anwendung und wiederholen Sie den Vorgang, wenn dies sinnvoll ist. Wenn dasselbe Paket wiederholt das Zeitlimit überschreitet, fügen Sie seine Paket-ID zu Ausgeschlossene Pakete in einer „Alle upgraden"-Aktion und stellen Sie es stattdessen mit dem unterstützten Silent-Installer des Anbieters oder einer Skript-ausführen-Aktion bereit.


Häufige Fehlermeldungen

Fehler

Bedeutung

Vorgehensweise

0x8A150010 — Keiner der Installer ist für das aktuelle System anwendbar

Das Paket stellt keinen geeigneten Installer für dieses Gerät und den Maschinenbereich bereit.

Testen Sie das Paket mit dem obigen Maschinenbereich-Befehl. Verwenden Sie eine andere Paket-ID oder einen Anbieter-Installer, wenn es dort ebenfalls fehlschlägt. Schließen Sie es von „Alle upgraden" aus, wenn es weiterhin ausgewählt wird.

0x8A150011 — Der Hash der Installationsdatei stimmt nicht mit dem Manifest überein

Das Katalog-Manifest und der heruntergeladene Installer stimmen nicht mehr überein, oft weil der Anbieter die Datei ausgetauscht hat, bevor der Katalog aktualisiert wurde.

Versuchen Sie es später erneut. Wenn der Fehler weiterhin besteht, schließen Sie das Paket aus, bis das zugehörige Manifest korrigiert wurde.

0x8A15005F — Installationsort muss angegeben werden

Das Paket erfordert einen Installationsort, den die unbeaufsichtigte Aktion nicht angeben kann.

Verwenden Sie ein anderes Paket oder stellen Sie den Anbieter-Installer mit einem Skript bereit, das den erforderlichen Installationsort angibt. Schließen Sie es von „Alle upgraden" aus.

0x8A150030 — Ausführung des Deinstallationsbefehls fehlgeschlagen, oder 0x8A150114 — Der Installer unterstützt kein Upgrade eines vorhandenen Pakets

Die aktuelle Installation des Pakets kann über den verfügbaren unbeaufsichtigten Pfad nicht aktualisiert werden.

Verwenden Sie das vom Anbieter unterstützte Upgrade-Verfahren oder eine benutzerdefinierte Automatisierung. Schließen Sie das Paket von „Alle upgraden" aus, um wiederholte Fehler zu verhindern.

0x8A150006 — Ausführung von ShellExecute fehlgeschlagen, oder 0x8A150049 — MSI-Installation fehlgeschlagen

Der Anbieter-Installer hat einen Fehler zurückgegeben. Da es sich um allgemeine Fehler handelt, hängt die genaue Ursache vom jeweiligen Paket ab.

Überprüfen Sie die Aktionsausgabe und die Installer-Protokolle des Anbieters. Schließen Sie die Anwendung oder führen Sie einen ausstehenden Neustart durch, wenn die Ausgabe darauf hinweist. Verwenden Sie einen vom Anbieter unterstützten Silent-Installer, wenn der Fehler weiterhin auftritt.

0x8A150102 — Eine andere Installation ist bereits im Gange

Windows Installer ist mit einem anderen Paket oder einem Windows Update-Vorgang beschäftigt.

Warten Sie, bis die andere Installation abgeschlossen ist, und versuchen Sie es erneut. Vermeiden Sie es, Winget- und Windows Update-Installationsfenster gleichzeitig zu planen.


Ein Paket von automatischen Aktualisierungen ausschließen

Die Winget-Paket upgraden Aktion verfügt über ein integriertes Ausgeschlossene Pakete Feld. Geben Sie dort eine oder mehrere Paket-IDs ein, und diese Pakete werden während des Upgrade-Durchlaufs übersprungen – ohne Pinning oder Befehlszeilen-Umgehungen.

Exclude Winget Package

Prüfen, ob ein Paket den Maschinenbereich unterstützt

Die zuverlässigste Prüfung ist das Paket-Manifest im winget-pkgs-Repository. Suchen Sie nach InstallerScope: machine im Manifest. Wenn es fehlt oder auf user, kann Level's Winget-Aktion es nicht installieren.

Die praktische Abkürzung: Führen Sie den winget install --scope machine Befehl oben in einer Administrator-PowerShell-Sitzung. Wenn er dort erfolgreich ist, funktioniert er auch in Level.


Häufig gestellte Fragen

  • Verwendet Level das standardmäßige Microsoft-Winget oder eine eigene Version? Level's Paketaktionen verwenden die Windows Package Manager API von Microsoft. Die separate Winget installieren Aktion installiert das eigenständige winget.exe Befehlszeilentool. Das Ausführen einer Paketion garantiert nicht, dass winget.exe auf dem Gerät verfügbar ist PATH.

  • Ich kann keine Paket-ID finden. Wo suche ich? Durchsuchen Sie das winget-pkgs-Repository oder führen Sie aus winget search <name> in einer PowerShell-Sitzung auf einem Gerät, auf dem das eigenständige CLI installiert ist. Die gefundene ID ist diejenige, die in die Level-Aktion eingetragen wird.

  • Kann ich Winget-Befehle direkt aus Level's Terminal ausführen? Ja, wenn winget.exe installiert und auf dem Gerät verfügbar ist. Level's Hintergrundterminal wird ausgeführt als SYSTEM, daher gelten dort ebenfalls die Einschränkungen bezüglich Maschinenbereich und SYSTEM-Kontext. Die Paketaktionen verwenden die Windows Package Manager API anstelle Ihres Terminal-Prozesses. Verwenden Sie direkte Befehle daher zur Diagnose und nehmen Sie nicht an, dass jedes Ergebnis identisch ist.

  • Ein Paket wurde kürzlich zu winget-pkgs hinzugefügt, aber Level zeigt es nicht als verfügbar an. Level's Katalogdaten können dem Community-Repository leicht hinterherhinken. Wenn ein sehr aktuelles Paket nicht angezeigt wird, prüfen Sie, ob der Maschinenbereich bereits im Manifest definiert ist.

Hat dies deine Frage beantwortet?