Skip to content

ci(build): produce PDFApps-<version>.msix on every release#46

Merged
nelsonduarte merged 1 commit into
mainfrom
ci/msix-build-pipeline
May 8, 2026
Merged

ci(build): produce PDFApps-<version>.msix on every release#46
nelsonduarte merged 1 commit into
mainfrom
ci/msix-build-pipeline

Conversation

@nelsonduarte
Copy link
Copy Markdown
Owner

Summary

Wires the MSIX build (added in PR #45) into build.yml so a PDFApps-<version>.msix is produced automatically on every release tag, alongside PDFAppsSetup.exe, PDFApps.exe, etc.

Changes

  • New step Build MSIX (Windows) runs after PyInstaller produces dist/PDFApps.exe and invokes pwsh msix/build.ps1. windows-latest runners already include the Windows 10/11 SDK so makeappx.exe is on PATH.
  • The Publisher CN is read from the optional secret MSIX_PUBLISHER_CN. When set (post-name-reservation in Microsoft Partner Center), the MSIX carries the production CN and is Store-ready. When unset (initial scaffolding period, public forks), build.ps1 falls back to its sideload-test CN — the resulting .msix isn't Store-submittable but lets the build pipeline validate end-to-end.
  • The .msix is included in the PDFApps-Windows artifact and attached to the GitHub Release with a SHA256 checksum line, matching the existing release asset pattern.

Test plan

  • Tag a release; verify CI produces dist/PDFApps-<version>.msix and that it lands as a release asset.
  • Once MSIX_PUBLISHER_CN is set: re-run the build, confirm the MSIX manifest's Publisher matches.
  • Sideload-install the produced .msix on a Windows VM (signing required first via the README workflow).

Note

The IDE flags secrets.MSIX_PUBLISHER_CN as "context access might be invalid" because the secret isn't defined yet in repo settings. That's a static lint false positive — at runtime an undefined secret resolves to empty, which build.ps1 treats as the sideload-test fallback.

🤖 Generated with Claude Code

Add an MSIX build step to the Windows job in build.yml so the
Microsoft Store / sideload package is built automatically alongside
PDFAppsSetup.exe / PDFApps.exe instead of needing a separate manual
pwsh msix/build.ps1 invocation.

- The new step runs after PyInstaller produces dist/PDFApps.exe and
  invokes msix/build.ps1. windows-latest images already include the
  Windows 10/11 SDK so makeappx.exe is on PATH for the script.
- The Publisher CN is read from the optional secret
  MSIX_PUBLISHER_CN. When set (post-name-reservation in Microsoft
  Partner Center), the MSIX carries the production CN and is ready
  for Store upload. When unset (initial scaffolding period, public
  forks), build.ps1 falls back to its sideload-test CN — the
  resulting .msix isn't Store-submittable but lets contributors
  validate the manifest locally.
- The .msix is uploaded as part of the PDFApps-Windows artifact and
  attached to the GitHub Release alongside PDFAppsSetup.exe etc.,
  with a SHA256 line so the in-app updater's hash-verification path
  treats it like any other release asset.

Workflow stays a no-op for the project until the user reserves the
package name in Partner Center and adds MSIX_PUBLISHER_CN as a repo
secret. Until then every release just gets a sideload-test .msix
that confirms the build pipeline works end-to-end.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@nelsonduarte nelsonduarte merged commit 44e57c7 into main May 8, 2026
3 checks passed
@nelsonduarte nelsonduarte deleted the ci/msix-build-pipeline branch May 8, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant