ci: migrate from the deprecated microsoft/store-submission action to the MSStore CLI - #43
ci: migrate from the deprecated microsoft/store-submission action to the MSStore CLI#43azchohfi wants to merge 2 commits into
Conversation
microsoft/store-submission is deprecated and its repository is being archived. Switch to microsoft/microsoft-store-apppublisher + the MSStore CLI, which is the supported replacement and covers both packaged (MSIX) and unpackaged (MSI/EXE) applications.
Up to standards ✅🟢 Issues
|
microsoft/microsoft-store-apppublisher@v1.4 is a lightweight tag pointing directly at a commit, so it can be moved. This step handles Partner Center credentials, so pin the action to cc9910a8d59f2eb55cbb83df0a3800cf3b5300e0 and pin the CLI it downloads to v0.4.1 instead of the default 'latest'. v0.4.1 is what 'latest' resolves to today, so this freezes current behaviour rather than changing it. microsoft/PowerToys pins this same action the same way.
|
As far as I know, the automatic upload to MS store is not possible with personal Microsoft account, so I need to do it manually anyway. |
|
You may have more options here than you'd expect — the requirement is a Microsoft Entra ID tenant associated with Partner Center, which isn't the same thing as needing a company/organizational account. If you don't already have a tenant, you can create one from within Partner Center at no additional charge, then associate it with your account under Account settings → Tenants. From there you'd register an Entra application with the Manager role, which gives you the tenant ID, client ID and secret the CLI needs. That said — totally your call whether it's worth the setup. If manual submission works fine for you, feel free to close this; I mainly wanted to flag the option in case it was ruled out on a misunderstanding. Either way the old action is going away, so this file would just be dead weight otherwise. |
Why
microsoft/store-submissionis deprecated and the repository is being archived (see microsoft/store-submission#27). Archiving does not break anything —uses: microsoft/store-submission@v1will keep resolving — but there will be no further fixes, features, or security updates, and it has open issues that will never be addressed (notably #20: no certificate or federated/managed-identity auth).The supported replacement is the MSStore CLI, put on the runner by
microsoft/microsoft-store-apppublisher(the action formerly namedmicrosoft/setup-msstore-cli). It handles both packaged (MSIX) and unpackaged (MSI/EXE) apps and is actively maintained.microsoft/PowerToysalready runs on it.I'm doing a sweep of the repos still referencing the old action so nobody is caught out by the archive.
What changed
.github/workflows/deploy-microsoft-store.ymlnow sets up the MSStore CLI and submits the locally built MSIX with a singlemsstore publishcall.Why it's not a 1:1 step swap
The old
Update Submission with local MSIXstep passedfilePathwas never a field the action understood — itsproduct-updatepayload only supportspackageUrl(a public HTTPS URL), so a local path could not have worked. The workflow has 0 recorded runs, which is consistent with that.msstore publish <path-to-.msix>is the supported route for a local package: it uploads the package, updates the draft submission and commits it in one call — so it replaces both theupdateandpublishsteps. Theconfigurestep becomesmsstore reconfigurewith the same four secrets.Please double-check that
secrets.PRODUCT_IDis the Store app ID for a packaged (MSIX) product —msstore publish --appIdexpects that rather than the GUID used for EXE/MSI products.Command mapping used
microsoft/store-submissioncommand: configure+tenant-id/seller-id/client-id/client-secretmsstore reconfigure --tenantId … --sellerId … --clientId … --clientSecret …command: update+product-updatemsstore submission update <productId> '<json>'command: publishmsstore submission publish <productId>type: win32/type: packagedNotes
msstore submission updatedeserializes intoUpdatePackagesRequest→{ "packages": [ { packageUrl, languages, architectures, isSilentInstall, installerParameters, packageType, genericDocUrl, … } ] }, which is the same shapeproduct-updatetook, so the payload carried over verbatim.env:and referenced as shell variables rather than interpolated straight into the command line — same behaviour, and it keeps them out of the process command line.