{{ message }}
Repository navigation
feat: add WinGet upgrade option to PowerShell update notification (#5477) - #5558
Open
PtJade Ceramic (PtJade-Ceramic) wants to merge 5 commits into
Open
PtJade Ceramic (PtJade-Ceramic) wants to merge 5 commits into
PtJade Ceramic (PtJade-Ceramic) wants to merge 5 commits into
Conversation
2 tasks done
Collaborator
Justin Grote (JustinGrote)
marked this pull request as draft
July 21, 2026 20:17
PtJade Ceramic (PtJade-Ceramic)
marked this pull request as ready for review
July 22, 2026 08:09
PtJade Ceramic (PtJade-Ceramic)
marked this pull request as draft
July 22, 2026 08:17
PtJade Ceramic (PtJade-Ceramic)
marked this pull request as ready for review
July 22, 2026 08:26
Collaborator
Justin Grote (JustinGrote)
marked this pull request as draft
July 22, 2026 23:07
Contributor
Author
|
The code changes are clean — the macOS failure is a CI environment issue (VS Code Insiders download/corruption), unrelated to this PR. Could someone with write access please re-run the failed jobs? Thanks! |
PtJade Ceramic (PtJade-Ceramic)
marked this pull request as ready for review
July 23, 2026 10:31
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
from
September 12, 2026 11:55
ff9fa3e to
3575846
Compare
Test-first: covers parsing of 'winget show' output and of winget-pkgs manifest listings, plus the buttons and notes the update prompt should show for each WinGet state, including that WinGet is not offered off Windows.
…werShell#5477) Detects WinGet via 'winget show --id Microsoft.PowerShell', falling back to the winget-pkgs listing when the CLI is missing. The prompt can upgrade with WinGet, install WinGet, and follow WinGet's progress, noting the version WinGet currently has. It is built by a pure buildUpdatePrompt() function, and WinGet options are only offered on Windows.
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
2 times, most recently
from
September 12, 2026 16:09
103d4f7 to
a4b0e45
Compare
Contributor
Author
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
2 times, most recently
from
September 12, 2026 16:47
5d1b946 to
12e0256
Compare
Temporary workaround: PSES's nuget.config only lists an Azure DevOps feed, which returns 401 (Unauthorized) for anonymous downloads, so CI fails while restoring the .NET reference packs before any tests run. Drop this once that is fixed upstream.
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
4 times, most recently
from
September 12, 2026 18:40
0a3ccc1 to
fd56c92
Compare
VS Code 1.110 renamed the macOS main executable from 'Contents/MacOS/Electron' to the product name ('Code - Insiders' for Insiders), so v2's hardcoded path fails with 'spawn ... Electron ENOENT' before any test runs. v3 resolves it from the bundle's Info.plist. CI needs the `@vscode` scope served by npmjs meanwhile: the PowerShell npm mirror has not cached 3.1.0 yet and returns 401 for packages it has not cached, which npm silently skips for optional dependencies.
Fixes PowerShell#5592.
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
from
September 13, 2026 05:21
fd56c92 to
b17a977
Compare
- Only offer "Upgrade with WinGet" when the installed WinGet reports a newer version; otherwise `winget update` is a guaranteed no-op while the message already says WinGet has not caught up. "View WinGet Progress" is still offered while the catalog lags. - Treat only ENOENT from `winget show` as WinGet being missing. Other failures (source lookups, network problems, and so on) keep WinGet installed with an unknown version instead of offering to install it. - Run the install action in an explicit `powershell.exe` terminal, since `Add-AppxPackage` is a PowerShell cmdlet and the user's default terminal profile may be cmd or Git Bash. - Show the terminal before sending the WinGet command so progress and errors are visible, matching how the extension reveals its own terminal.
PtJade Ceramic (PtJade-Ceramic)
force-pushed
the
feat/winget-upgrade
branch
from
October 15, 2026 06:35
f9ea9a3 to
096ead7
Compare
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.





PR Summary
When a new PowerShell version is available, this PR adds WinGet integration to the update notification:
winget showWinGet only exists on Windows, so its buttons are offered there only, and the prompt is built by a pure
buildUpdatePrompt()function so its buttons and message can be tested.Resolves #5477.
PR Checklist
Testing
npm run compile,npm run lint,npm run formatandnpx tsc --noEmitpass.test/features/UpdatePowerShell.test.tscover the version parsing (fromwinget showoutput and from winget-pkgs manifest listings) and the buttons and notes the prompt produces for each WinGet state, including that WinGet options are not offered off Windows.@vscode/test-electron3.x for the renamed macOS binary, npmjs for the@vscodescope until the PowerShell npm mirror has that version, andfail-fast: false. They are easy to drop or move into a separate PR.