Support installers that differ only by MinimumOSVersion - #5
Draft
Tom Plant (pl4nty) wants to merge 1 commit into
Draft
Tom Plant (pl4nty) wants to merge 1 commit into
Tom Plant (pl4nty) wants to merge 1 commit into
Conversation
Manifests could not express "use installer/dependencies A on older OS versions and B on newer ones" (e.g. the NetFx3 Windows feature before 10.0.28000 vs the standalone .NET Framework 3.5 package after): - Validation rejected installers differing only by MinimumOSVersion as DuplicateInstallerEntry. MinOSVersion is now part of the uniqueness key. - Selection only used MinOSVersion as a filter, so when several installers applied the first listed won. The OS version filter is now also a (lowest priority, weak) comparator that prefers the installer with the highest applicable MinOSVersion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012UP995MPhExEvbvvcjRyR4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📖 Description
Manifests can't currently express "use installer/dependencies A on older OS versions and B on newer ones". The motivating case is .NET Framework 3.5: from Windows 11 26H1 (10.0.28000) the
NetFx3Windows feature is gone and apps must depend on the standaloneMicrosoft.DotNet.Framework.Runtime.3package instead, while older OS versions still need the feature.Two bugs blocked this:
MinimumOSVersionwere rejected asDuplicateInstallerEntry(key was type/arch/locale/scope).MinOSVersionis now part of the uniqueness key (compared as a version, empty = lowest).MinOSVersionwas only a filter, so when several installers applied the first listed won. Workarounds like usingneutralvsx86arch to dodge the duplicate check made the architecture comparator pick the older installer on 26H1. The OS version filter is now also a comparator: lowest priority, weak, preferring the highest applicableMinOSVersion. Locale/scope/arch/installer-type preferences still win, so existing manifests are unaffected.🔗 References
🔍 Validation
Microsoft.DotNet.Framework.Runtime.3manifest and asserting the right dependency set is selected for the current OS.ReadGoodManifests/ReadBadManifests.✅ Checklist
🤖 AI Assistance
📋 Issue Type
🤖 Generated with Claude Code
https://claude.ai/code/session_012UP995MPhExEvbvvcjRyR4
Generated by Claude Code