Skip to content

[release/v7.6.1] Build, package, and create VPack for the PowerShell-LTS store package within the same msixbundle-vpack pipeline (#150)#27237

Merged
daxian-dbw merged 1 commit intoPowerShell:release/v7.6.1from
daxian-dbw:backport/release/v7.6.1/27209-073f4d61b
Apr 9, 2026
Merged

[release/v7.6.1] Build, package, and create VPack for the PowerShell-LTS store package within the same msixbundle-vpack pipeline (#150)#27237
daxian-dbw merged 1 commit intoPowerShell:release/v7.6.1from
daxian-dbw:backport/release/v7.6.1/27209-073f4d61b

Conversation

@daxian-dbw
Copy link
Copy Markdown
Member

Backport of #27209 to release/v7.6.1

Triggered by @daxian-dbw on behalf of @daxian-dbw

Original CL Label: CL-BuildPackaging

/cc @PowerShell/powershell-maintainers

Impact

REQUIRED: Choose either Tooling Impact or Customer Impact (or both). At least one checkbox must be selected.

Tooling Impact

  • Required tooling change
  • Optional tooling change (include reasoning)

Backports the pipeline update that builds, packages, publishes symbols, and creates the PowerShell LTS store VPack within the same official MSIXBundle-vPack pipeline to satisfy release packaging and compliance requirements.

Customer Impact

  • Customer reported
  • Found internally

Regression

REQUIRED: Check exactly one box.

  • Yes
  • No

This is not a regression.

Testing

Verified by cherry-picking the change onto release/v7.6.1 without conflicts. No local pipeline run was performed; CI on the backport PR will validate the updated packaging and VPack pipeline behavior in the release branch context.

Risk

REQUIRED: Check exactly one box.

  • High
  • Medium
  • Low

High risk because the change affects official packaging, symbol publication, and VPack creation flows used for release infrastructure. The change cherry-picked cleanly, but pipeline behavior changes in this area have broad release impact.

@daxian-dbw daxian-dbw requested review from a team and jshigetomi as code owners April 9, 2026 17:43
Copilot AI review requested due to automatic review settings April 9, 2026 17:43
@daxian-dbw daxian-dbw added the CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log label Apr 9, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Backport to release/v7.6.1 that updates the official MSIXBundle-vPack pipeline to build/sign/package the PowerShell LTS store MSIX packages and then create the MSIXBundle/VPack within the same pipeline, aligning with release compliance requirements. It also includes a few small refactors and string/resource updates in the product code.

Changes:

  • Reworks .pipelines/MSIXBundle-vPack-Official.yml to build x64/arm64, sign outputs, package unsigned MSIX, bundle + sign MSIXBundle, and publish symbols.
  • Updates console host banner resource naming and adjusts several user-facing strings from “PowerShell Core” to “PowerShell 7+”.
  • Minor cleanups/refactors in telemetry and build props formatting.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.pipelines/MSIXBundle-vPack-Official.yml Major pipeline restructuring to build/package/sign/bundle LTS store artifacts and publish symbols in one official pipeline run.
tools/packaging/packaging.psm1 Comment cleanup in New-MSIXPackage (no functional change).
src/System.Management.Automation/utils/Telemetry.cs Removes redundant initializer and simplifies intra-class method calls.
src/System.Management.Automation/resources/TabCompletionStrings.resx Updates #requires -PSEdition completion descriptions.
src/System.Management.Automation/resources/RemotingErrorIdStrings.resx Updates remoting error wording to “PowerShell 7+”.
src/Microsoft.PowerShell.ConsoleHost/resources/ManagedEntranceStrings.resx Renames banner resource key to be product-generic.
src/Microsoft.PowerShell.ConsoleHost/host/msh/ManagedEntrance.cs Uses the renamed banner resource key and makes banner variable explicit type.
src/Microsoft.PowerShell.ConsoleHost/host/msh/ConsoleHost.cs Minor refactor using inherited static member access for stdout redirection flag.
PowerShell.Common.props Whitespace-only tweak in MSBuild condition.

Comment on lines +286 to +287
$msixPkgFile = Get-ChildItem -Path $repoRoot -Filter $msixPkgNameFilter -File
$msixPkgPath = $msixPkgFile.FullName
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the MSIX packaging step, Get-ChildItem -Filter "PowerShell*.msix" can return 0 or multiple files. The current code then dereferences .FullName without validating, which will either throw a null reference or silently pick multiple paths. Please assert exactly one MSIX is produced (or explicitly select the intended one) and throw a clear error if the count is not 1.

Suggested change
$msixPkgFile = Get-ChildItem -Path $repoRoot -Filter $msixPkgNameFilter -File
$msixPkgPath = $msixPkgFile.FullName
$msixPkgFiles = @(Get-ChildItem -Path $repoRoot -Filter $msixPkgNameFilter -File)
if ($msixPkgFiles.Count -ne 1) {
$matchedMsixPaths = if ($msixPkgFiles.Count -gt 0) {
($msixPkgFiles | ForEach-Object { $_.FullName }) -join ', '
}
else {
'<none>'
}
throw "Expected exactly one MSIX package matching '$msixPkgNameFilter' in '$repoRoot', but found $($msixPkgFiles.Count): $matchedMsixPaths"
}
$msixPkgPath = $msixPkgFiles[0].FullName

Copilot uses AI. Check for mistakes.
Comment on lines +412 to +419
- pwsh: |
$signedBundle = Get-ChildItem -Path $(BundleDir) -Filter "*.msixbundle" -File
Write-Verbose -Verbose "Signed bundle: $signedBundle"

$signature = Get-AuthenticodeSignature -FilePath $signedBundle.FullName
if ($signature.Status -ne 'Valid') {
throw "The bundle file doesn't have a valid signature. Signature status: $($signature.Status)"
}
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$signedBundle = Get-ChildItem -Filter "*.msixbundle" may return 0 or multiple bundles; the subsequent signature validation assumes a single file ($signedBundle.FullName and $signature.Status). Please validate the count is exactly 1 and fail with a clear message otherwise (or select the correct bundle deterministically).

Copilot uses AI. Check for mistakes.
- name: WindowsContainerImage
value: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest'
- name: Codeql.Enabled
value: false # pipeline is not building artifacts; it repackages existing artifacts into a vpack
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Codeql.Enabled variable comment says the pipeline is not building artifacts/repackages existing artifacts, but this pipeline now performs a full build and packaging. Please update the comment (and/or the variable value if it is intended to control CodeQL behavior) to avoid misleading future maintainers.

Suggested change
value: false # pipeline is not building artifacts; it repackages existing artifacts into a vpack
value: false # CodeQL is intentionally disabled for this pipeline.

Copilot uses AI. Check for mistakes.
@daxian-dbw daxian-dbw merged commit 0b825b3 into PowerShell:release/v7.6.1 Apr 9, 2026
42 of 43 checks passed
@daxian-dbw daxian-dbw deleted the backport/release/v7.6.1/27209-073f4d61b branch April 9, 2026 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CL-BuildPackaging Indicates that a PR should be marked as a build or packaging change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants