ci: migrate Windows Store publishing from StoreBroker to msstore-cli - #1581
Open
davidanthoff wants to merge 2 commits into
Open
ci: migrate Windows Store publishing from StoreBroker to msstore-cli#1581davidanthoff wants to merge 2 commits into
davidanthoff wants to merge 2 commits into
Conversation
Replace the archived StoreBroker PowerShell module with the MSStore Developer CLI (via the official microsoft/microsoft-store-apppublisher setup action) for all three store deploy channels. - package-windows-msix now uploads the raw .appxbundle as the storepackage artifact; the StoreBroker New-SubmissionPackage step and the PDP/listing payload are gone. Listing metadata is now managed directly in Partner Center. - The deploy jobs rename the bundle to .msixbundle (msstore-cli only accepts .msix/.msixbundle/.msixupload; the formats are identical) and run "msstore reconfigure" + "msstore publish", which replaces packages, commits, and polls ingestion in one command. - Remove deploy/winstoresubmission (SBConfig.json, PDP.xml, screenshot) and the dead commented-out PowerShell-downgrade workaround blocks. Requires a new SELLERID secret (Partner Center seller ID) in the dev-channel, release-preview-channel, and release-channel environments. Once msstore-cli ships a release containing microsoft/msstore-cli#145, auth can switch from CLIENTSECRET to federated GitHub OIDC (reconfigure --clientAssertion + MSSTORE_CLIENT_ASSERTION). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The formats are byte-identical; MSIX is the modern name for the same container. Renaming at the source (PackagingLayout.xml) lets the deploy jobs pass the bundle to msstore-cli directly, removing the Rename-Item workaround, and modernizes the App Installer artifact names. The MainBundle Uri in Julia.appinstaller changes in lockstep with the bundle filename. VCLibs dependency entries are intentionally untouched: Microsoft ships those as .appx only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Collaborator
Author
|
I'll wait with merging this until we got a new build out with the new system for Windows, as this might take a while to really polish and we should presumably first catch up on things. |
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.
Summary
Replaces the archived StoreBroker PowerShell module with the MSStore Developer CLI (installed via the official
microsoft/microsoft-store-apppublishersetup action, latest tagv1.4) for all three Windows Store deploy channels, and renames the MSIX outputs to modern.msixbundle/.msixextensions. Microsoft archived the oldstore-submissionaction on 2026-08-24 and points at msstore-cli as the replacement; StoreBroker has repeatedly broken our releases (see the CHANGELOG "Force old PowerShell version" workarounds, whose dead commented-out blocks are also removed here).Changes
package-windows-msix: drops the StoreBroker install and theNew-SubmissionPackagepayload step; thestorepackageartifact is now the raw.msixbundleproduced bycargo msix.deploy-dev-channel-winstore,deploy-releasepreview-channel-winstore,deploy-release-channel-winstore): install msstore-cli via the setup action, then runmsstore reconfigure+msstore publish.msstore publishreplaces packages, commits, and polls ingestion in one command, replacingUpdate-Application(Flight)Submission -ReplacePackages -AutoCommit -Force+Start-SubmissionMonitor. The 3-attempt/60s retry loop is kept.PackagingLayout.xmlnow names the bundleJulia-<ver>.0.msixbundleand the inner per-arch packages.msix(the formats are byte-identical — MSIX is the modern name for the same container; msstore-cli only accepts.msix/.msixbundle/.msixupload, verified in its source). TheMainBundleUri inJulia.appinstallerchanges in lockstep. Compatibility: the appxmanifest requires Windows 10 1803+ and.msixextensions are supported from 1709; old S3 objects remain in place for clients mid-update. VCLibs dependency entries are intentionally untouched (Microsoft ships those as.appxonly).deploy/winstoresubmission/(SBConfig.json, PDP.xml, screenshot) is deleted. msstore-cli has no PDP support; the store listing is now managed directly in Partner Center, and CI submissions are packages-only (which preserve the existing published listing).Required before merging / next tagged release
SELLERIDsecret (Partner Center → Account settings → Identifiers → Seller ID) to thedev-channel,release-preview-channel, andrelease-channelenvironments.TENANTID/CLIENTID/CLIENTSECRETare reused unchanged.CLIENTID) is associated in Partner Center → User management → Microsoft Entra applications with the Manager role (it should already be, StoreBroker uses the same API).Follow-up: federated (OIDC) auth
msstore-cli gained client-assertion auth in microsoft/msstore-cli#145 (merged 2026-08-29), but the latest release (v0.4.1, 2026-08-20) does not include it yet. Once a release ships with it, a follow-up PR can drop
CLIENTSECRET: addid-token: writeto the deploy jobs, mint a GitHub OIDC token with audienceapi://AzureADTokenExchangeintoMSSTORE_CLIENT_ASSERTION, switch tomsstore reconfigure --clientAssertion, and add federated credentials on the Entra app for the three deploy environments.Verification
actionlintpasses on the edited workflow (the one remaining warning,matrix.labelat line 414, is pre-existing from the rust-cache change).reconfigure --tenantId/--sellerId/--clientId/--clientSecret,publish --appId/--flightId) and the accepted package extensions were verified against the msstore-cli source; cargo-msix passes thePackagingLayout.xmlfilenames through to makeappx untouched (verified in its source).PackagingLayout.xmlandJulia.appinstalleragree exactly onJulia-{{Version}}.0.msixbundle; noappxbundlereferences remain outside.gitignore.package-windows-msixjob (bundle build) and the dev-channel flight, which limits blast radius.🤖 Generated with Claude Code