Instalace spravovaných .NET na Windows

Částečně odebrané instalace .NET jsou běžným důvodem, proč software kontroly ohrožení zabezpečení, jako je Microsoft Defender Správa zranitelností, nahlásí zařízení. Když zjistíte, jak .NET instalace fungují, můžou správcům pomoct s vyšetřováním sestav a prováděním nápravných akcí.

Na Windows .NET komponenty, jako je modul runtime a sada SDK, se skládají z několika rozhraní MSI. Jednotlivé rozhraní MSI nejsou distribuovány přímo. Místo toho jsou zřetězený dohromady a vytvářejí svazky.

Získání .NET na Windows

  • Samostatné balíčky (EXE) je možné stáhnout z .NET webu.
  • WinGet poskytuje balíčky, které obsahují .NET sady.
  • Servisní aktualizace distribuují sady prostřednictvím Microsoft Update pomocí automatických aktualizací, služby WSUS a katalogu služba Windows Update.
  • Nezávislí dodavatelé softwaru (ISV) mohou distribuovat .NET sady v rámci jejich softwaru.
  • OEM někdy obsahují předinstalované kopie .NET sad do imagí nových zařízení.
  • Některé Azure image marketplace Windows zahrnují předinstalované kopie sad.
  • Správci balíčků třetích stran, jako je Chocolatey, také distribuují balíčky .NET.
  • Podniky někdy balíčky znovu zabalí pomocí proprietárních balíčků pro interní distribuci.
  • Někteří hostitelé .NET aplikací můžou také nasměrovat uživatele, aby stáhli a nainstalovali chybějící sady runtime.

Visual Studio lze také použít k získání .NET a použití stejných msI jako samostatných sad.

Note

Sada .NET SDK dodávaná s Visual Studio do verze 16.2. Počínaje .NET Core 3.0 v Visual Studio 16.3 byly sady SDK nahrazeny jednotlivými .NET MSI.

Upgrades

.NET podporuje upgrady mezi verzemi oprav v rámci hlavní/podverze. .NET 8.0.7 upgraduje předchozí verze, jako je 8.0.4 nebo 8.0.0, včetně předběžných verzí, ale neupgraduje předchozí hlavní verzi, jako je .NET 7.0. Sada .NET SDK podporuje upgrady mezi opravami v rámci pásu funkcí. Sadu SDK 8.0.100 je možné upgradovat na verzi 8.0.103, ale sada SDK 8.0.3xx neupgraduje pásma funkcí 1xx ani 2xx.

Většina upgradů se zpracovává na úrovni sady. Předchozí verze se odebere jenom po instalaci nové verze. Existují dvě výjimky: .NET hostitel a ASP.NET Core modul MSI se aktualizují.

Od .NET 8 mají uživatelé možnost odložit odebrání předchozí verze sady.

Svazek složení a počítání odkazů

Sady se skládají z několika msI, z nichž některé jsou sdíleny mezi několika sadami.

.NET složení instalačního programu

  • Sada runtime obsahuje tři rozhraní MSI, které se dodávají také v sadách runtime desktopových počítačů a sad SDK.
  • Sada desktopových počítačů obsahuje další MSI, která je sdílená se sadou SDK.
  • Sada SDK obsahuje další msI, které obsahují rozhraní příkazového řádku, šablony a cílové balíčky používané k vytváření a sestavování .NET aplikací.

Sdílené rozhraní MSI se spravují pomocí počítání odkazů. Každá .NET MSI vytvoří klíč registru označovaný jako klíč zprostředkovatele, který umožňuje, aby se sada zaregistrovala jako závislá. Pokud už je msi nainstalovaná, sada aktualizuje jenom informace o registraci. Svazky se při odebrání zrušují. Sdílené rozhraní MSI se odeberou jenom tehdy, když nejsou zaregistrovaní žádní závislí.

Níže uvedené informace o registru jsou příkladem klíče zprostředkovatele .NET hostitele MSI. Existují čtyři zaregistrované závislé osoby, včetně Visual Studio.

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64
    (Default)   REG_SZ    {8A8CC49F-7D1E-45DC-B7B5-35FF61A2C25E}
    Version     REG_SZ    80.40.55332
    DisplayName REG_SZ    Microsoft .NET Host - 10.0.10 (x64)

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\VS.{AEF703B8-D2CC-4343-915C-F54A30B90937}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{609A456D-467D-4077-9BA2-B6404F1B1163}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{866BECDA-F284-473A-9E84-0CCE816BF06F}

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Dependencies\Dotnet_CLI_SharedHost_10.0_x64\Dependents\{FD5EA214-C690-466F-B8FB-1741881913F9}

Note

Jednotlivé msI se stanou osamocenými, když závislé osoby zůstanou zaregistrované po odebrání sady, například při přerušení odinstalace.

Note

Visual Studio používá dobře známou hodnotu , VS.{AEF703B8-D2CC-4343-915C-F54A30B90937}k registraci sebe jako závislé. Skutečný počet odkazů je určen kontrolou manifestu instalace pro každou instanci Visual Studio.

Instalace nasazené přihrádky

Přihrádky nasazené instalace odkazují na kopie .NET, které nejsou přidružené k MSI. Toho lze dosáhnout spuštěním instalačních skriptů jako správce a nastavením instalačního adresáře na Program Files\dotnet. Instalace nasazené přihrádky můžou komplikovat nápravu. Skenery hlásí ohrožení zabezpečení, ale správci nenajdou rozhraní MSI, která se mají odinstalovat. DNIM dokáže detekovat instalace nasazené přihrádky.

Detekce

DniM spoléhá na řadu heuristiky k identifikaci sad a msI přidružených k .NET. Přesné zjišťování instalací je nezbytné k úspěšnému nápravě zařízení bez stížností.

Bundles

Sady jsou identifikovány pomocí jejich zobrazovaných názvů a informací o souborech uložených v registru. Na spustitelných souborech se provádějí další kontroly, aby se zajistilo, že jsou platné instalační programy. Tento informatio je také porovnán s daty JSON, .NET publikuje pro každou verzi.

Detekce MSI

DNIM provádí vyčerpávající vyhledávání dat součásti instalačního programu uložených v registru HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components za účelem identifikace .NET msI.

Každý podklíč představuje jiné ID komponenty. Hodnoty pod každým klíčem představují kódy produktů. ID komponenty i kódy produktů se ukládají jako zabalené identifikátory GUID. Následující příklad je součástí přidružené dotnet.exe.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\BBB993545ADD68342A9E16F83B5CA481
    40A3E8A8CB38EDC4299598B366C6A11B    REG_SZ    C:\Program Files\dotnet\dotnet.exe
    A75437C333A10ED46B2CF6AB78E7F1FC    REG_SZ    C:\Program Files (x86)\dotnet\dotnet.exe
    79D2396D1F638B04C9CDAC38562B0100    REG_SZ    C:\Program Files\dotnet\dotnet.exe
    EA6D9CBF69367CF4CB81005882631FD6    REG_SZ    C:\Program Files (x86)\dotnet\dotnet.exe
    872D9C61B8AA60F47A4CDF137C8523A3    REG_SZ    C:\Program Files (x86)\dotnet\dotnet.exe
    6235DF10DB18AED4F910D396BBDD7AE5    REG_SZ    C:\Program Files\dotnet\dotnet.exe
    0370151E43A53FE48B564853D1B81FAB    REG_SZ    C:\Program Files\dotnet\dotnet.exe
    F6D22817F79056B46B45655C7495EE9A    REG_SZ    C:\Program Files (x86)\dotnet\dotnet.exe
    D512842CB6C6A404BAE605D564042E50    REG_SZ    C:\Program Files\dotnet\dotnet.exe

Instalace nasazené přihrádky

Vzhledem k tomu, že DNIM provádí vyčerpávající vyhledávání komponent instalačního programu, všechny soubory, které Program Files\dotnet nejsou přidružené k MSI, jsou klasifikovány jako přihrádky nasazené instalace.

Classification

Nesprávná klasifikace instalací může vést k odebrání nebo zachování nesprávné instalace, potenciálně přerušení aplikací nebo opuštění zařízení v nevyhovujícím stavu.

Po identifikaci produktu (například NET 10) je možné určit další informace, jako je jeho vydání (například 10.0.4) a fáze podpory (například aktivní). Správci tak můžou vytvářet flexibilní nasazení.

Instalace se dále klasifikují podle jejich komponenty .NET (ASP.NET Core, SDK atd.), architektury a typu instalace (sada, MSI nebo přihrádka nasazená).

Existuje několik zvláštních případů, které stojí za zmínku.

.NET Standard 2.1

Zajištění konzistentního chování vyžaduje, aby instalace definovaly svůj produkt, verzi a fázi podpory. Balíček cílení pro .NET Standard 2.1 představuje zajímavou výzvu. Neobsahuje spustitelný kód a poskytuje pouze referenční sestavení pro rozhraní API definovaná standardem. Cílová sada byla poprvé odeslána jako součást sady SDK .NET Core 3.0.100, ale byla zahrnuta do všech následujících sad SDK až do .NET 10. Zatímco DNIM klasifikuje verzi a produkt v rámci .NET Core 3.0, fáze podpory se vždy ohlásí jako aktivní, protože může být zahrnuta do sad SDK, které jsou v aktivní podpoře.

Note

Sada cílení .NET Standard 2.1 byla odebrána z instalace sady SDK v .NET 10. Sady SDK automaticky stahují chybějící balíčky cílení pomocí balíčků NuGet při vytváření aplikací.

Pásy funkcí sady .NET SDK

V .NET Core 1.0 a 1.1 používaly sady SDK schéma správy verzí podobné runime. Poslední sada SDK v .NET Core 1.1 byla verze 1.1.14 a obsahovala modul runtime 1.1.13.

Pásma funkcí sady SDK byla zavedena v sadě SDK 2.1.100, aby bylo potřeba rozlišovat mezi podporovanými funkcemi v Visual Studio. Sada SDK byla dodána jako součást verze .NET Core 2.0.5. Poslední sada SDK 2.0 byla verze 2.1.202 a součástí verze 2.0.9. První sada SDK, která se má odeslat v .NET Core 2.1, byla verze 2.1.300. V pozdějších verzích se pásy funkcí sady SDK vždy spouštějí na 100, např. 2.2.100, 3.0.100 atd.