Repository navigation
Conversation
Summary by CodeRabbit
WalkthroughAdds Scoop manifests for .NET 8.0.31, .NET 9.0.20, and .NET 10.0.12. Each manifest defines architecture-specific ZIP downloads and hashes, installation and removal steps, environment settings, runtime version checks, and autoupdate rules. Changes.NET Runtime Manifests
Priority: ⬇️ Low Merge Risk: 🔵 Low · up to
|
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Organization UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
100f3e91-69a7-4ad9-bba2-95791b4d8a4d
📒 Files selected for processing (3)
bucket/dotnet10-runtime.jsonbucket/dotnet8-runtime.jsonbucket/dotnet9-runtime.json
Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.
…e installation Each manifest set DOTNET_ROOT to its own $dir, so installing several runtimes left only the last one visible, and updating or uninstalling one removed DOTNET_ROOT for all of them. Expose every runtime in a common root, <scoop root>\shared\dotnet, built from junctions to each package's own files. The root is derived from basedir, so it works with portable and global Scoop installs. - post_install: link host\fxr\<ver> and shared\<framework>\<ver>, copy dotnet.exe - env_set: DOTNET_ROOT points to the common root - pre_uninstall: remove only the junctions of the package, delete the root when empty - post_uninstall: restore DOTNET_ROOT while another runtime remains
…red with aspnetcoreN-runtime The ASP.NET Core zip also bundles host\fxr and Microsoft.NETCore.App for the same version, so both packages can provide the same junction in the shared root. - post_install: keep an existing valid junction (first owner wins). - pre_uninstall: re-link each junction owned by this package to another installed package providing the same runtime before removing the root.
…install and uninstall edge cases - Compare the full dotnet.exe file version instead of the major only - Find replacement runtimes in installed version dirs when NO_JUNCTION is set - Stop recursively deleting the shared dotnet root; remove only empty dirs
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Organization UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
2df79a22-aea3-4347-a99b-02009febb070
📒 Files selected for processing (3)
bucket/dotnet10-runtime.jsonbucket/dotnet8-runtime.jsonbucket/dotnet9-runtime.json
Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.
| }, | ||
| "post_install": [ | ||
| "# Link this runtime into the root shared by all .NET packages (side-by-side)", | ||
| "$root = Join-Path (basedir $global) 'shared\\dotnet'", |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use a separate shared root for each architecture. All three manifests use one root, shared\dotnet, and one DOTNET_ROOT for every architecture. Scoop lets a user pick the architecture for each app with --arch. For example, an x86 dotnet8-runtime next to an x64 dotnet10-runtime puts x86 8.0 runtime junctions and an x64 dotnet.exe in the same root. A 64-bit app that targets 8.0 then fails to load the x86 runtime. The dotnet.exe version check in post_install compares only file versions, so it does not catch this.
bucket/dotnet8-runtime.json#L25-L25: change the root toshared\dotnet-$architectureinpost_install,pre_uninstall,post_uninstallandenv_set. For 32-bit installs, setDOTNET_ROOT(x86)through anenv_setinside eacharchitectureblock.bucket/dotnet9-runtime.json#L25-L25: make the same change to the root path andenv_set.bucket/dotnet10-runtime.json#L25-L25: make the same change to the root path andenv_set.
📍 Affects 3 files
bucket/dotnet8-runtime.json#L25-L25(this comment)bucket/dotnet9-runtime.json#L25-L25bucket/dotnet10-runtime.json#L25-L25
Relates to ScoopInstaller/Extras#18998
Adds portable (ZIP-based, no admin rights) .NET Runtime manifests pinned to a channel, consistent with the existing
dotnetN-sdkmanifests:dotnet8-runtime8.0.31dotnet9-runtime9.0.20dotnet10-runtime10.0.12Each manifest installs the official ZIP archives (x64, x86, arm64), sets
DOTNET_ROOT, and usescheckver/autoupdateon its ownchannel-versionwith sha512 hashes from the officialreleases.json.<manifest-name[@version]|chore>: <general summary of the pull request>