|
| 1 | +--- |
| 2 | +author: joeloff |
| 3 | +ms.author: joeloff |
| 4 | +ms.date: 11/12/2024 |
| 5 | +ms.topic: include |
| 6 | +--- |
| 7 | + |
| 8 | +.NET is an independent product that can be serviced using Microsoft Update (MU) on Windows. This is different from Windows Update (WU) that is used to service operating system components like .NET Framework. |
| 9 | + |
| 10 | +Both security and non-security fixes for supported versions of .NET are provided through MU using multiple distribution channels. Automatic Updates (AU) is relevant to end-users and consumers while Window Server Update Services (WSUS) and Windows Update Catalog are relevant to IT administrators. |
| 11 | + |
| 12 | +The .NET installer executables support side-by-side (SxS) installations across major/minor releases for different architectures and components (runtime, SDK, etc.). For example, users can install both the 6.0.15 (x64) and 6.0.17 (x86) runtime. When MU triggers, it will offer the latest installer for both installations. |
| 13 | + |
| 14 | +### Blocking Updates |
| 15 | + |
| 16 | +While most users prefer to be kept up to date, it is possible to block .NET updates using the registry keys in the table below. |
| 17 | + |
| 18 | +| .NET Version | Registry Key | Name | Type | Value | |
| 19 | +| -------------- | :--------- | :---------- | :---------- | :---------- | |
| 20 | +| All | HKLM\SOFWARE\Microsoft\\.NET | BlockMU | REG_DWORD | 0x00000001 | |
| 21 | +| .NET 9 | HKLM\SOFWARE\Microsoft\\.NET\9.0 | BlockMU | REG_DWORD | 0x00000001 | |
| 22 | +| .NET 8 | HKLM\SOFWARE\Microsoft\\.NET\8.0 | BlockMU | REG_DWORD | 0x00000001 | |
| 23 | +| .NET 7 | HKLM\SOFWARE\Microsoft\\.NET\7.0 | BlockMU | REG_DWORD | 0x00000001 | |
| 24 | +| .NET 6 | HKLM\SOFWARE\Microsoft\\.NET\6.0 | BlockMU | REG_DWORD | 0x00000001 | |
| 25 | +| .NET 5 | HKLM\SOFWARE\Microsoft\\.NET\5.0 | BlockMU | REG_DWORD | 0x00000001 | |
| 26 | +| .NET Core 3.1 | HKLM\SOFWARE\Microsoft\\.NET\3.1 | BlockMU | REG_DWORD | 0x00000001 | |
| 27 | +| .NET Core 2.1 | HKLM\SOFWARE\Microsoft\\.NET\2.1 | BlockMU | REG_DWORD | 0x00000001 | |
| 28 | + |
| 29 | +### Automatic Updates for Server OS |
| 30 | + |
| 31 | +Updates for server operating systems are supported by WSUS and Microsoft Update Catalog, but not AU. Server operating systems can opt in to receive updates through AU using the following registry keys. |
| 32 | + |
| 33 | +| .NET Version | Registry Key | Name | Type | Value | |
| 34 | +| -------------- | :--------- | :---------- | :---------- | :---------- | |
| 35 | +| All | HKLM\SOFWARE\Microsoft\\.NET | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 36 | +| .NET 9 | HKLM\SOFWARE\Microsoft\\.NET\9.0 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 37 | +| .NET 8 | HKLM\SOFWARE\Microsoft\\.NET\8.0 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 38 | +| .NET 7 | HKLM\SOFWARE\Microsoft\\.NET\7.0 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 39 | +| .NET 6 | HKLM\SOFWARE\Microsoft\\.NET\6.0 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 40 | +| .NET 5 | HKLM\SOFWARE\Microsoft\\.NET\5.0 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 41 | +| .NET Core 3.1 | HKLM\SOFWARE\Microsoft\\.NET\3.1 | AllowAUOnServerOS | REG_DWORD | 0x00000001 | |
| 42 | + |
| 43 | +### Framework-Dependent Deployed Applications |
| 44 | + |
| 45 | +**NOTE:** This feature is only available in .NET 8 (8.0.36 and later), .NET 9 and later versions. |
| 46 | + |
| 47 | +Because updates provided through MU execute quietly, users will not be prompted to close running applications. The Restart Manager service is responsible for closing and restarting applications and depends on a number of factors: |
| 48 | + |
| 49 | +- The type (UI or console) of the application or service. |
| 50 | +- The security identifiers (SID) associated with the installation and application processes. |
| 51 | +- Windows Installer machine policies. |
| 52 | +- Whether or not an application was registered with Restart Manager. |
| 53 | + |
| 54 | +Since MU executes the local system account (NT Authority\SYSTEM), framework-dependent deployed (FDD) user applications may continue to run. The update process will first install the new .NET version before removing previous installations. When the running application tries to load additional assemblies it will crash because the previous runtime no longer exists. To mitigate this, users can defer the removal of the previous .NET version until a member in the Administrators group log on after a reboot using the registry keys below. |
| 55 | + |
| 56 | +| .NET Version | Registry Key | Name | Type | Value | |
| 57 | +| -------------- | :--------- | :---------- | :---------- | :---------- | |
| 58 | +| All | HKLM\SOFWARE\Microsoft\.NET | RemovePreviousVersion | REG_SZ | *always*, *never*, or *nextSession* | |
| 59 | +| .NET 9 | HKLM\SOFWARE\Microsoft\.NET\9.0 | RemovePreviousVersion | REG_SZ | *always*, *never*, or *nextSession* | |
| 60 | +| .NET 8 | HKLM\SOFWARE\Microsoft\.NET\8.0 | RemovePreviousVersion | REG_SZ | *always*, *never*, or *nextSession* | |
| 61 | + |
| 62 | +- *never* retains previous installations and requires manual intervention to remove previous .NET installations. |
| 63 | +- *always* removes previous installations after the new version is installed. This is the default behavior in .NET. |
| 64 | +- *nextSession* defers the removal until the next logon session from members in the Administrators group. |
| 65 | +- Values are case-insensitive and invalid values default to *always*. |
| 66 | + |
| 67 | +When the removal is deferred, the installer writes a command to the [RunOnce](https://learn.microsoft.com/windows/win32/setupapi/run-and-runonce-registry-keys) registry key to uninstall the previous version. The command only executes if users in the Administrators group logs on to the machine. |
0 commit comments