microsoft / microsoft/winget-cli
For manifests with multiple non-portable InstallerUrl-s across multiple InstallerType-s but the same arch: If InstallerUrl 1 fails, fall back to InstallerUrl 2
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 26.4k
- Forks
- 1.8k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 15
Description
Relevant area(s)
WinGet CLI
Description of the new feature / enhancement
Currently, if a package has for example both an .msi and .exe installer for x64, Winget installs the .msi version; but if the .msi installation fails, Winget gives up without having tried the .exe installer first.
The idea involves having Winget automatically try out the various InstallerUrl-s by priority, one at a time, until at least one of them succeeds (or if they all fail).
Examples of affected packages in the Community Repo include, but are not limited to (But there may or may not also be false positives):
7zip.7zip
AgileBits.1Password
ArduinoSA.IDE.stable
Cloudflare.cloudflared
Foxit.PhantomPDF
GitHub.GitHubDesktop
Inkscape.Inkscape
Microsoft.RMSClient
Microsoft.Teams.Classic
Notepad++.Notepad++
OpenStreetMap.Josm
SlackTechnologies.Slack
VideoLAN.VLC
Voidtools.Everything
WiresharkFoundation.Wireshark
Zoom.ZoomRooms
Proposed technical implementation details
That installer outputs for eligible packages can become, for example, this:
PS C:\Users\A> winget install JohnMadden.aeiou
Found John Madden aeiou [JohnMadden.aeiou] Version 1.2010
This application is licensed to you by its owner.
Microsoft is not responsible for, nor does it grant any licenses to, third-party packages.
Downloading https://example.org/aeiou.msi
Successfully verified installer hash
Starting package install...
████████████████████████████▌ 95%
Installer failed with exit code: 0x80070005 : Access is denied.
MSI installer failed; trying EXE installer
Downloading https://example.org/aeiou.exe
Successfully verified installer hash
Starting package install...
Successfully installed
PS C:\Users\A>
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the WinGet CLI install flow for manifests containing multiple non-portable InstallerUrl values across InstallerType values for the same architecture. Review how installer failures are currently reported and how the listed affected packages behave. Done means installers are attempted in priority order until one succeeds or all fail, with output identifying each fallback attempt.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100