The closest primary Microsoft contract for both .NET 10 SDK installers is the current “.NET installer” → “Command-line options” section: /norestart “suppresses any attempts to restart,” while the same section permits exit code 3010 to report that a restart is required.^1^
Applicability to 10.0.114 and 10.0.403
The page is product-line documentation rather than an installer-build specification:
- Its supported-version table explicitly includes .NET 10.
- Its .NET installer section covers Windows installer executables for SDKs and runtimes and instructs readers to select a version such as 10.0.
- Under Command-line options, it defines:
-
/install — installs .NET.
-
/quiet — prevents UI and prompts.
-
/norestart — “Suppresses any attempts to restart.”
- It separately states:
-
0 means success.
-
3010 means a restart is required.^1^
Microsoft’s .NET release record identifies 10.0.114 and 10.0.403 as .NET 10 SDKs in the October 2026 update.^2^
Consequently, the Learn page is the closest current primary documentation applicable at the .NET 10 installer product-line level. It does not explicitly enumerate 10.0.114 or 10.0.403 beside /norestart, so it should not be represented as a build-specific guarantee.
An immutable snapshot of the underlying windows.md documentation containing both the /norestart example and the 0/3010 text is available at commit 951c3a5bdf253157f9b403e1f490bc42f5171fbc:
That snapshot preserves the documentation wording; it does not convert the product-line guidance into an installer-build-specific contract.
Restart and exit-code semantics
The documented interpretation is:
-
/norestart suppresses restart attempts initiated by the .NET installer.
- It does not mean that no restart can remain necessary.
- If installation succeeds but requires a later restart, the installer can return
3010.^1^
Therefore, these results are compatible:
/norestart + exit 0 = success; no restart reported as required
/norestart + exit 3010 = success; restart required but not initiated
Windows Installer independently uses the same distinction: /norestart is the “Never restart” option and maps to REBOOT=ReallySuppress.^3^ Windows Installer defines 3010 as successful installation with a restart required and distinguishes it from 1641, where the installer initiated the restart.^4^
Those MSI references corroborate the semantics only. They do not prove that either specific .NET SDK EXE implements every path through MSI or propagates REBOOT=ReallySuppress identically.
Chained-package scope
The public .NET wording—“suppresses any attempts to restart”—supports suppression at the top-level .NET installer boundary. However, the available primary documentation does not explicitly specify, for SDK 10.0.114 or 10.0.403:
- which packages are chained by each EXE;
- how
/norestart is propagated to every possible chained package;
- whether every child-installer restart path is intercepted; or
- a build-specific guarantee covering chain behavior.
Accordingly, the supported public conclusion is that the .NET installer should not initiate a restart when invoked with /norestart, and it may still return 3010. A stronger statement guaranteeing suppression by every chained package in those exact builds is not established by the public documentation identified here.
For authoritative confirmation of that unresolved build-specific chain behavior, open a product issue with the Microsoft-maintained dotnet/installer project, including the two exact SDK versions and architecture, or request a binding determination through Microsoft Support. Only the product team or Support can confirm contractual behavior for those exact binaries beyond the published product-line documentation.
If later executing a system-wide installation, run the installer from an elevated process and preserve the full exit code:
$process = Start-Process `
-FilePath '.\dotnet-sdk-10.0.403-win-x64.exe' `
-ArgumentList '/install', '/quiet', '/norestart' `
-Wait -PassThru
if ($process.ExitCode -eq 3010) {
'Installation succeeded; schedule a restart.'
} elseif ($process.ExitCode -ne 0) {
throw "Installation failed with exit code $($process.ExitCode)."
}
References
- Install .NET on Windows - .NET | Microsoft Learn
- .NET 10.0 October 2026 Update - .NET 10.0.14 and SDKs 10.0.114 ... - GitHub
- Microsoft Standard Installer command-line options - Win32 apps
- MsiExec.exe and InstMsi.exe error messages (for developers)