Ladění a řešení potíží s nástrojem WinGet

Pokud se zdá, že se winGet nenainstaluje správně, postupujte podle těchto kroků z příkazového řádku PowerShellu:

Install-PackageProvider -Name NuGet -Force | Out-Null
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery | Out-Null
Repair-WinGetPackageManager -Force -Latest

Pokud příkazy WinGet selhávají, někdy je potřeba se podívat na protokolové soubory, abychom lépe porozuměli chování.

Protokoly WinGet

Správce balíčků systému Windows ve výchozím nastavení vytváří soubory protokolu při provádění příkazů. Tyto protokoly obsahují informace, které můžou pomoct při ladění problémů s nástrojem WinGet. Chování čištění protokolového souboru lze konfigurovat pomocí logging settings v souboru settings. Ve výchozím nastavení se soubory protokolů starší než 7 dnů nebo překračující 128 MB automaticky odeberou a jednotlivé soubory protokolu se zabalí na 16 MB. Použijte k úpravě logging.filesettings těchto limitů.

Pomocí příkazu winget --info vyhledejte cestu k adresáři k souborům protokolu WinGet. Výchozí cesta pro soubory protokolu WinGet je:

%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

Ke kterémukoli příkazu můžete přidat možnost --logs nebo --open-logs, aby se po dokončení příkazu otevřel adresář protokolů. Tady je několik příkladů použití --logs této možnosti:

> winget list --logs
> winget source update --open-logs

--verbose-logs

Pokud potřebujete podrobnější soubory protokolů, které obsahují kompletní komunikaci se sítěmi CDN a zdroji, přidejte na příkazové řádce také --verbose nebo --verbose-logs. Tady je několik příkladů použití --verbose-logs této možnosti:

> winget install vscode --verbose-logs
> winget search -n visual --verbose-logs
> winget source add -n mysource -t Microsoft.REST -a https://www.contoso.org --verbose

settings

Můžete zadat výchozí úroveň protokolování pro WinGet, která se má použít v souboru Nastavení WinGet. Příkaz settings otevře settings soubor.json ve výchozím editoru JSON.

Příklad s detailním protokolováním:

{
    "$schema": "https://aka.ms/winget-settings.schema.json",
    "logging": {
        "level": "verbose"
    }
}

Známé problémy

Známé list problémy se zdroji a chováním jsou v úložišti klienta Windows Správce balíčků aktuální. Pokud při používání nástroje WinGet narazíte na problémy, přejděte sem pro řešení potíží.

Ukončovací kódy

Nástroj WinGet vrátí ukončovací kódy, které označují úspěch nebo selhání příkazu. V souboru "Návratové kódy" úložiště klienta Správce balíčků systému Windowsvyhledejte tabulku ukončovacích kódů a jejich významů.

Příkaz chyby WinGet přijímá chyby z "Ukončovací kódy" a zobrazí popis známých kódů chyb pro instalační programy WinGet, MSIX a MSI. Mnoho instalačních programů založených na .exemá nestandardní kódy chyb a nemusí se zobrazit.

> winget error 1603

Rozsah pro konkrétního uživatele vs. celosystémově

Ne všechny instalační programy podporují instalaci v oboru "uživatel" vs. obor "počítač" konzistentně.

  • Balíčky na bázi MSIX: Spolehlivé chování WinGet.
  • balíčky založené na MSI obvykle podporují spolehlivé konfigurace WinGet, ale v některých případech jsou vnořené do instalačního programu založeného na .exe, takže může být větší variabilita.
  • instalační programy založené na EXE chování ve vztahu k rozsahu není nutně deterministické. V některých případech nejsou argumenty pro určení oboru dostupné a v jiných případech může instalační program určit na základě toho, zda je uživatel členem místní skupiny administrators. Balíčky nainstalované v oboru uživatele můžou stále vyžadovat autorizaci nástroje Řízení uživatelských účtů (UAC) od správce.

Další podrobnosti o problémech souvisejících s rozsahem naleznete v produktovém úložišti WinGet na GitHubu.

Chyba 403 – Zakázáno

Při pokusu o stažení balíčku pomocí nástroje WinGet může dojít k chybě 403 Zakázáno. K tomuto problému může dojít v případě, že nezávislý dodavatel softwaru (ISV) nemá svůj produkt distribuovaný službou správce balíčků, jako je WinGet.

Server zodpovědný za inicializování stahování obvykle kontroluje řetězec uživatelského agenta, který je součástí žádosti o stažení, aby identifikoval zařízení nebo klienta (např. prohlížeč, WinGet). Pokud si můžete stáhnout instalační program pomocí prohlížeče, ale narazíte na problémy s WinGetem, je možné, že isV zablokoval řetězec uživatelského agenta WinGet.

Řetězec uživatelského agenta pro WinGet má následující formát:

winget-cli WindowsPackageManager/{Client Version} DesktopAppInstaller/Microsoft.DesktopAppInstaller {AppInstaller Version}

Příklad:

winget-cli WindowsPackageManager/1.9.25200 DesktopAppInstaller/Microsoft.DesktopAppInstaller v1.24.25200.0

Kontext systému

WinGet se doručí prostřednictvím App Installeru jako balíčkované aplikace. Aplikace MSIX (balené) závisejí na tom, že balíček je pro uživatele zaregistrován. Protože balíčky lze zaregistrovat pro libovolného uživatele s výjimkou NT AUTHORITY\SYSTEM (neboli LocalSystem, neboli System), rozhraní příkazového řádku WinGet není v kontextu systému podporováno. Modul Microsoft.WinGet.Client PowerShell lze použít v kontextu systému s aplikacemi, které jsou nainstalované na celém počítači.