Skip to content

The Darling installer refuses an install when the .NET Runtime 10 is missing (#5407) - #5409

Merged
erikdarlingdata merged 1 commit into
devfrom
fix/5407-netcore-runtime-gate
Oct 6, 2026
Merged

erikdarlingdata merged 1 commit into
devfrom
fix/5407-netcore-runtime-gate

Conversation

@erikdarlingdata

Copy link
Copy Markdown
Owner

Closes #5407.

Why

Step 1c of Darling/tools/install-darling.ps1 refused an install when Microsoft.AspNetCore.App 10 was missing, but never looked for Microsoft.NETCore.App 10. The standalone ASP.NET Core Runtime installer does not include the base .NET Runtime, so a box with only that installer passed the gate. The service then failed to start with the .NET host's "You must install .NET" error, which is the failure the gate exists to prevent.

What changes

  • The gate reads Get-InstalledFrameworkVersions 'Microsoft.NETCore.App' and refuses when major 10 is missing. It uses the same Fail style as the ASP.NET Core refusal, says "Nothing was installed or changed", and names -SkipPreflight as the escape.
  • The base-runtime check runs before the ASP.NET Core check. Its message says what to install: the ASP.NET Core Hosting Bundle, which installs both runtimes, or the .NET Runtime 10 plus the ASP.NET Core Runtime 10. It shows a Found line for each framework. A box missing both reads one message.
  • The ASP.NET Core refusal also shows both Found lines now.
  • The Desktop warning text is unchanged. It was already correct when the base runtime is present and Desktop is not. A missing base runtime now refuses before the warning is reached. The "Runtime check passed" line now names the .NET Runtime as well.
  • Script header text at step 1c and the comment block above the gate name the base runtime.
  • Darling/README.md and docs/uat-onboarding.md listed only the ASP.NET Core Runtime as the service prerequisite. They now say the Hosting Bundle, or the .NET Runtime plus the ASP.NET Core Runtime. Lite/README.md and docs/changelog/3.6.md only describe Lite's own history and were left alone.

Test plan

  • Build of Darling.Tests with 0 warnings and 0 errors.
  • DarlingRuntimePreflightTests: 8 of 8 pass. Two cases are new. One pins that the base-runtime block refuses and runs before the ASP.NET Core check. The other runs the gate itself under Windows PowerShell 5.1 with the framework lookup stubbed. Base missing with ASP.NET Core present is refused with the base-runtime message. Both present passes. Base present with ASP.NET Core missing is refused as before. Both missing gives one message with both Found lines. Desktop missing alone only warns.
  • With the old script put back, 4 of the 8 fail. The new script was restored afterwards.
  • Every class matching *Census* (358 tests, 1 skipped) and *Ratchet* (15 tests): 0 failures.
  • *Doc* classes (78 tests): 0 failures.
  • Full suite not run. CI decides.
  • The script was not run end to end on a machine that lacks the base runtime.

Changelog entry to splice

SECTION: Fixed
ENTRY:
- **The Darling installer now refuses an install when the .NET Runtime 10 is missing** ([#PR]) - the installer checked for the ASP.NET Core Runtime 10 but not the base .NET Runtime 10, which the standalone ASP.NET Core Runtime installer does not include. A machine with only that installer passed the check, and the service then failed to start with the .NET host's "You must install .NET" error. The installer now checks the base runtime first and refuses, naming the ASP.NET Core Hosting Bundle (which installs both) or the .NET Runtime 10 plus the ASP.NET Core Runtime 10. The Darling README and onboarding guide list the same prerequisites.
REF:
[#PR]: https://github.com/erikdarlingdata/PerformanceMonitor/pull/PR

…ssing (#5407)

The standalone ASP.NET Core Runtime installer does not include Microsoft.NETCore.App, so a box with only that installer passed the runtime gate and then failed at service start with the host's 'You must install .NET'. The gate now checks the base runtime first and refuses, naming the Hosting Bundle or the .NET Runtime plus the ASP.NET Core Runtime, with Found lines for both. The Darling README and the onboarding guide list the base runtime too.
@erikdarlingdata
erikdarlingdata marked this pull request as ready for review October 6, 2026 17:15
@erikdarlingdata erikdarlingdata added the merge-train In a merge train: its CI ran on the train PR label Oct 6, 2026
@erikdarlingdata
erikdarlingdata merged commit 337890c into dev Oct 6, 2026
27 of 32 checks passed
@erikdarlingdata
erikdarlingdata deleted the fix/5407-netcore-runtime-gate branch October 6, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-train In a merge train: its CI ran on the train PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant