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:
Wird ausgeführt als
SYSTEM: Level führt Paketvorgänge unter demSYSTEMKonto, nicht als angemeldeter Benutzer oder in einer Standard-Adminsitzung. Jedes Paketverhalten, das vom Benutzerkontext abhängt, funktioniert auf diese Weise nicht gleich.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 |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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.
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.exeBefehlszeilentool. Das Ausführen einer Paketion garantiert nicht, dasswinget.exeauf dem Gerät verfügbar istPATH.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.exeinstalliert und auf dem Gerät verfügbar ist. Level's Hintergrundterminal wird ausgeführt alsSYSTEM, 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.

