Relevant area(s)
Description of the new feature / enhancement
Extend the native DSC v3 command resources shipped with the WinGet client to cover package-set
convergence and package pins while improving package installer selection.
WinGet already provides these native resources:
Microsoft.WinGet/Package
Microsoft.WinGet/Source
Microsoft.WinGet/UserSettingsFile
Microsoft.WinGet/AdminSettings
The remaining enhancements are:
- Add an optional per-package
installerType requirement to package resources.
- Add
Microsoft.WinGet/PackageList for declaring a package set with guarded DSC _purge
semantics.
- Add
Microsoft.WinGet/Pin for declarative package pin management.
- Export WinGet Configuration files using native resources.
Native command resources avoid the PowerShell adapter overhead required by the
Microsoft.WinGet.DSC class-based resources.
Proposed technical implementation details
Users author, test, and apply the resources through winget configure. The existing winget dsc
alias remains equivalent to winget configure.
The implementation-facing winget dscv3 commands continue to implement the DSC command-resource
protocol used by the resource manifests:
winget dscv3 <resource> --get
winget dscv3 <resource> --set
winget dscv3 <resource> --test
winget dscv3 <resource> --export
winget dscv3 <resource> --schema
winget dscv3 <resource> --manifest
Microsoft.WinGet/PackageList should:
- accept package-specific source, version, installer type, install mode, and agreement settings
- treat
installerType as a requirement when specified
- support opt-in
_purge behavior that defaults to false
- remove only packages WinGet can establish were authoritatively managed by WinGet
- never remove unknown, best-effort-correlated, protected, or unsupported Windows software
- require an enabling Group Policy before processing
_purge: true
Microsoft.WinGet/Pin should manage one pin per resource instance and use DSC _exist for removal.
Specification: #6291
Relevant area(s)
Description of the new feature / enhancement
Extend the native DSC v3 command resources shipped with the WinGet client to cover package-set
convergence and package pins while improving package installer selection.
WinGet already provides these native resources:
Microsoft.WinGet/PackageMicrosoft.WinGet/SourceMicrosoft.WinGet/UserSettingsFileMicrosoft.WinGet/AdminSettingsThe remaining enhancements are:
installerTyperequirement to package resources.Microsoft.WinGet/PackageListfor declaring a package set with guarded DSC_purgesemantics.
Microsoft.WinGet/Pinfor declarative package pin management.Native command resources avoid the PowerShell adapter overhead required by the
Microsoft.WinGet.DSCclass-based resources.Proposed technical implementation details
Users author, test, and apply the resources through
winget configure. The existingwinget dscalias remains equivalent to
winget configure.The implementation-facing
winget dscv3commands continue to implement the DSC command-resourceprotocol used by the resource manifests:
winget dscv3 <resource> --getwinget dscv3 <resource> --setwinget dscv3 <resource> --testwinget dscv3 <resource> --exportwinget dscv3 <resource> --schemawinget dscv3 <resource> --manifestMicrosoft.WinGet/PackageListshould:installerTypeas a requirement when specified_purgebehavior that defaults tofalse_purge: trueMicrosoft.WinGet/Pinshould manage one pin per resource instance and use DSC_existfor removal.Specification: #6291