chocolatey/choco · critical · ApplicationException
.NET 4.8 is not installed or may need a reboot to complete i
Error message
.NET 4.8 is not installed or may need a reboot to complete installation. Please install .NET Framework 4.8 manually and reboot the system. Download at 'https://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe'
What it means
Chocolatey's startup guard ThrowIfNotDotNet48 verifies that .NET Framework 4.8 (release >= 528040) is installed by reading HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release (32-bit registry view). If the key/value is missing or below 528040 on Windows, it throws an ApplicationException telling the user to install .NET 4.8 and reboot. This is a hard prerequisite: Chocolatey cannot run its managed code without the runtime.
Source
Thrown at src/chocolatey.console/Program.cs:327
choco feature enable --name=""'disableCompatibilityChecks'""
Or by passing the --skip-compatibility-checks option when executing a
command.");
}
private static void ThrowIfNotDotNet48()
{
if (Platform.GetPlatform() == PlatformType.Windows)
{
// https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#minimum-version
const int net48ReleaseBuild = 528040;
const string regKey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(regKey))
{
if (ndpKey == null || ndpKey.GetValue("Release") == null || (int)ndpKey.GetValue("Release") < net48ReleaseBuild)
{
throw new ApplicationException(
@".NET 4.8 is not installed or may need a reboot to complete installation.
Please install .NET Framework 4.8 manually and reboot the system.
Download at 'https://download.visualstudio.microsoft.com/download/pr/2d6bb6b2-226a-4baa-bdec-798822606ff1/8494001c276a4b96804cde7829c04d7f/ndp48-x86-x64-allos-enu.exe'"
.FormatWith(Environment.NewLine));
}
}
}
}
}
}
View on GitHub (pinned to 0d5abdd10c)
Solutions
- Install .NET Framework 4.8 from the URL in the message (ndp48-x86-x64-allos-enu.exe) and reboot.
- On Server Core / automated builds, use DISM or a provisioning step to install .NET 4.8 then reboot before invoking choco.
- Upgrade to a base OS image that ships .NET 4.8 out of the box (Windows 10 1903+, Server 2022).
Defensive patterns
Strategy: validation
Validate before calling
// Probe .NET 4.8 release BEFORE invoking choco in provisioning.
using (var k = Microsoft.Win32.RegistryKey.OpenBaseKey(
Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry32)
.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"))
{
int release = (int)(k?.GetValue("Release") ?? 0);
if (release < 528040)
{
// install ndp48 then reboot before running choco
}
} Prevention
- Bake .NET 4.8 into base OS images so choco never hits this guard.
- After installing .NET 4.8 unattended, reboot before invoking choco so the registry value finalizes.
- Verify the 'Release' DWORD is >= 528040 in CI smoke checks.
When it happens
Trigger: Running choco.exe on a Windows machine where the NET Framework 4.8 Full 'Release' DWORD is absent or < 528040 (e.g. only 4.7.x installed, or 4.8 installed but pending reboot before the registry value is finalized).
Common situations: Fresh Windows Server 2016/2019 or older Windows 10 images without .NET 4.8; CI/build agents based on older base images; a just-completed .NET 4.8 installer that has not yet rebooted; locked-down systems where the registry value was reset.
Related errors
AI-assisted analysis of chocolatey/choco@0d5abdd10c (2026-08-13).
Data as JSON: /api/errors/10df848999205e93.
Report an issue: GitHub.