[release/v7.6.7] Handle MSIX installation specially when prepend to PATH - #28091
Merged
Dongbo Wang (daxian-dbw) merged 1 commit intoSep 24, 2026
Conversation
…7782) Update the code that prepends `$PSHOME` to `PATH` to handle the MSIX package installation specially -- it uses the stable path that points to the `ExecutionAlias` of the MSIX installation instead of `$PSHOME`.
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Copilot started reviewing on behalf of
Dongbo Wang (daxian-dbw)
September 24, 2026 18:27
View session
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved MSIX detection issues and insufficient, duplicated test coverage must be addressed.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 2
Open (2)
What changed in this PR
Backports the MSIX PATH handling fix so PowerShell uses a stable execution-alias directory instead of the versioned package path.
Changes:
- Adds executable-home and MSIX alias resolution.
- Updates startup PATH behavior.
- Adjusts
pwshPATH test coverage.
| File | Review summary |
|---|---|
test/powershell/Host/ConsoleHost.Tests.ps1 |
Moderate findings (2 votes): the assertion does not distinguish the old behavior and should verify the stable MSIX alias path. Nit (1 vote): the assertion duplicates existing coverage. |
src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs |
Moderate findings: use case-insensitive process-name comparison (2 votes); derive MSIX identity rather than limiting support to official package constants (1 vote); support MSIX installations on non-default volumes (1 vote). |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| string processName = Path.GetFileName(psExePath); | ||
|
|
||
| // Use 'Environment.ProcessPath' if it points to 'pwsh.exe' or 'pwsh'. | ||
| if (pwshName.Equals(processName, StringComparison.Ordinal)) |
| It "`$PSHOME should be in front so that pwsh.exe starts current running PowerShell" { | ||
| & $powershell -v | Should -Match $PSVersionTable.GitCommitId | ||
| It "Running 'pwsh' should start the currently running PowerShell" { | ||
| pwsh -v | Should -Match $PSVersionTable.GitCommitId |
Aditya Patwardhan (adityapatwardhan)
approved these changes
Sep 24, 2026
Dongbo Wang (daxian-dbw)
merged commit Sep 24, 2026
df0dc57
into
PowerShell:release/v7.6.7
36 of 39 checks passed
Dongbo Wang (daxian-dbw)
deleted the
backport/release/v7.6.7/27782-d0f43b003
branch
September 24, 2026 21:59
3 of 9 tasks
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.

Backport of #27782 to release/v7.6.7
Triggered by Dongbo Wang (@daxian-dbw) on behalf of Dongbo Wang (@daxian-dbw)
Original CL Label: CL-General
/cc @PowerShell/powershell-maintainers
Impact
REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.
Tooling Impact
Customer Impact
Fixes an issue where, on MSIX-packaged PowerShell installations, the $PSHOME directory (which contains a version number) was prepended to PATH at startup. Because this path changes on every MSIX update, cached references to it (e.g., by cmake) become invalid after an update. The fix uses the stable ExecutionAlias directory instead.
Regression
REQUIRED: Check exactly one box.
This is not a regression.
Testing
Original PR was manually tested against MSIX-packaged PowerShell installations, verifying that the ExecutionAlias directory is prepended to PATH instead of the version-specific $PSHOME path, and that this remains stable across MSIX package updates. Backport verified by confirming the cherry-pick applied cleanly with no conflicts on release/v7.6.7.
Risk
REQUIRED: Check exactly one box.
Medium risk: changes core startup logic that modifies the PATH environment variable, but the change is narrowly scoped to MSIX installation detection and doesn't affect non-MSIX installations. The fix addresses a real reliability issue where PATH entries become invalid after an MSIX update.