Skip to content

[windows] Add Windows Store MSIX packaging groundwork#3178

Merged
ten9876 merged 3 commits into
aethersdr:mainfrom
jensenpat:codex/windows-store-msix
May 26, 2026
Merged

[windows] Add Windows Store MSIX packaging groundwork#3178
ten9876 merged 3 commits into
aethersdr:mainfrom
jensenpat:codex/windows-store-msix

Conversation

@jensenpat

Copy link
Copy Markdown
Collaborator

Summary

This PR adds the first pass of Windows Store/MSIX packaging support for AetherSDR.

  • Adds packaging/windows/create-msix.ps1 to generate an MSIX package from the existing Windows deploy directory.
  • Generates MSIX visual assets from the existing logo, writes AppxManifest.xml, adds App Installer UX metadata, runs makeappx.exe, optionally signs with signtool.exe, and can create a .msixupload for Partner Center.
  • Wires the Windows installer workflow to build unsigned MSIX/MSIXUPLOAD artifacts alongside the portable zip and Inno installer.
  • Adds repository variable hooks for Partner Center identity/display values and package color options.
  • Adds docs for local packaging, sideload signing, manifest values, GitHub variables, and current WACK follow-ups.
  • Ignores generated MSIX/package roots, deploy folders, local certs, and related package artifacts.

Current Manifest Defaults

  • Display name: AetherSDR
  • Publisher display name: AetherSDR
  • Description: Multi-platform SDR client for FlexRadio transceivers (6000/8600/Aurora).
  • Minimum OS: Windows 10 2004 / build 19041
  • Capabilities: runFullTrust, internetClient, privateNetworkClientServer, microphone

Partner Center will still need to provide the final Identity.Name and Identity.Publisher values.

Validation

  • PowerShell parser check passed for packaging/windows/create-msix.ps1.
  • git diff --check passed.
  • Local MSVC/Qt build and unsigned MSIX generation were exercised manually while developing this branch.
  • Windows App Certification Kit was run locally; the docs now capture the remaining follow-ups.

Known Follow-Ups

  • Replace the Windows support-bundle PowerShell Compress-Archive call with in-process ZIP creation.
  • Decide how to handle DFNR for Store packaging. The current DeepFilterNet3_onnx.tar.gz archive triggers WACK archive checks; df_create(nullptr, ...) may allow using the embedded default model instead.
  • Add PerMonitorV2 DPI awareness before final WACK/Store submission.
  • Review Qt/vendor DLL blocked-executable warnings separately from app-owned process-launch behavior.

Co-authored-by: Codex <noreply@openai.com>
@jensenpat jensenpat changed the title Add Windows Store MSIX packaging groundwork [windows] Add Windows Store MSIX packaging groundwork May 26, 2026
@jensenpat jensenpat marked this pull request as ready for review May 26, 2026 05:48
@jensenpat jensenpat requested review from a team as code owners May 26, 2026 05:48
ten9876 and others added 2 commits May 25, 2026 23:23
Two-line fix to keep MSIX failures from blocking established artifact
delivery:

* Moved the "Create MSIX package" step to run AFTER the portable ZIP +
  Inno installer steps.  If MSIX generation fails (missing SDK tool on
  a runner image bump, signtool flake, transient asset issue), the
  established portable-zip + Inno installer paths still complete and
  reach the artifact upload step.
* Added continue-on-error: true so the failure is logged but the run
  continues to upload whatever artifacts did succeed (portable zip,
  Inno installer).

When MSIX matures across a few releases we can promote it back into
the hard-required set.  Until then, "purely additive" is the right
shape — the existing installer flow has zero new failure modes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The release-tag path (push.tags: v*) gives a slash-free ref name like
"v26.5.3", so the existing pipeline never hit the slash trap.  But the
workflow_dispatch path on a branch ref (e.g. "codex/windows-store-msix")
injects slashes that Compress-Archive interprets as a directory
separator, exiting 1 before Inno or MSIX get a chance to run.  Inno
similarly chokes on slashes in /DAPP_VERSION.

Strip every filesystem-unsafe character with a -replace pass so ad-hoc
dispatch runs (the validation flow this PR's new MSIX step depends on
for runner-image-image testing before the next tagged release) reach
the later steps instead of dying at step 1.

Without this, the workflow_dispatch trigger I added to validate the
new MSIX step against the GH runner image fails before MSIX even
loads, leaving us unable to confirm Find-WindowsSdkTool resolves the
SDK paths correctly until the next v* tag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ten9876 ten9876 merged commit 3f7d078 into aethersdr:main May 26, 2026
5 checks passed
@ten9876

ten9876 commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Claude here — merged at `3f7d0784`, thanks @jensenpat! Solid Windows Store groundwork: well-architected PowerShell, comprehensive docs, MSIX visual-asset generation that actually covers the full set (including the often-skipped `altform-unplated` variants), and a thoughtful set of deferred WACK follow-ups so reviewers can see the full Store-submission roadmap without it bloating this PR.

Folded two small fixups on top before merge:

  1. Reorder + continue-on-error so a future MSIX hiccup can't gate the established portable-zip + Inno installer delivery.
  2. github.ref_name sanitization for the portable-zip and Inno filename steps so workflow_dispatch on a slash-containing branch (the validation flow your MSIX step needs for runner-image testing pre-tag) reaches the later steps instead of dying at step 1.

Next `v*` tag push will be the first real CI exercise of the MSIX path. With continue-on-error and the reorder, worst case is "release ships zip + setup.exe as before; MSIX failed-loudly in the workflow log" — non-fatal for users.

73, Jeremy KK7GWY & Claude (AI dev partner)

ten9876 pushed a commit that referenced this pull request Jun 8, 2026
Release-prep for **v26.6.2**, a consolidated release rolling up the
26.6.1 feature wave, the v26.6.1.1 hotfixes, and new work through #3443.

Bumps version 26.6.1.1 → 26.6.2 in `CMakeLists.txt` and the `README.md`
banner, and prepends the v26.6.2 `CHANGELOG.md` entry. No code changes.

Headline content: runtime theming system, three HID controller classes
(StreamDeck+, Ulanzi Dial, Icom RC-28), the packet-radio suite
(KISS-over-TCP TNC #3279, connected-mode BBS terminal #3381, PMS
mailbox), and the Microsoft Store MSIX packaging path
(#3178/#3205/#3225/#3281).

💻 Generated with Claude Code (Opus 4.8) with architecture by @jensenpat

Co-authored-by: Codex <noreply@openai.com>
G6PWY-Chris pushed a commit to G6PWY-Chris/AetherSDR that referenced this pull request Jun 22, 2026
## Summary

This PR adds the first pass of Windows Store/MSIX packaging support for
AetherSDR.

- Adds `packaging/windows/create-msix.ps1` to generate an MSIX package
from the existing Windows `deploy` directory.
- Generates MSIX visual assets from the existing logo, writes
`AppxManifest.xml`, adds App Installer UX metadata, runs `makeappx.exe`,
optionally signs with `signtool.exe`, and can create a `.msixupload` for
Partner Center.
- Wires the Windows installer workflow to build unsigned MSIX/MSIXUPLOAD
artifacts alongside the portable zip and Inno installer.
- Adds repository variable hooks for Partner Center identity/display
values and package color options.
- Adds docs for local packaging, sideload signing, manifest values,
GitHub variables, and current WACK follow-ups.
- Ignores generated MSIX/package roots, deploy folders, local certs, and
related package artifacts.

## Current Manifest Defaults

- Display name: `AetherSDR`
- Publisher display name: `AetherSDR`
- Description: `Multi-platform SDR client for FlexRadio transceivers
(6000/8600/Aurora).`
- Minimum OS: Windows 10 2004 / build 19041
- Capabilities: `runFullTrust`, `internetClient`,
`privateNetworkClientServer`, `microphone`

Partner Center will still need to provide the final `Identity.Name` and
`Identity.Publisher` values.

## Validation

- PowerShell parser check passed for
`packaging/windows/create-msix.ps1`.
- `git diff --check` passed.
- Local MSVC/Qt build and unsigned MSIX generation were exercised
manually while developing this branch.
- Windows App Certification Kit was run locally; the docs now capture
the remaining follow-ups.

## Known Follow-Ups

- Replace the Windows support-bundle PowerShell `Compress-Archive` call
with in-process ZIP creation.
- Decide how to handle DFNR for Store packaging. The current
`DeepFilterNet3_onnx.tar.gz` archive triggers WACK archive checks;
`df_create(nullptr, ...)` may allow using the embedded default model
instead.
- Add PerMonitorV2 DPI awareness before final WACK/Store submission.
- Review Qt/vendor DLL blocked-executable warnings separately from
app-owned process-launch behavior.

---------

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Jeremy Fielder <kk7gwy@aethersdr.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
G6PWY-Chris pushed a commit to G6PWY-Chris/AetherSDR that referenced this pull request Jun 22, 2026
Release-prep for **v26.6.2**, a consolidated release rolling up the
26.6.1 feature wave, the v26.6.1.1 hotfixes, and new work through aethersdr#3443.

Bumps version 26.6.1.1 → 26.6.2 in `CMakeLists.txt` and the `README.md`
banner, and prepends the v26.6.2 `CHANGELOG.md` entry. No code changes.

Headline content: runtime theming system, three HID controller classes
(StreamDeck+, Ulanzi Dial, Icom RC-28), the packet-radio suite
(KISS-over-TCP TNC aethersdr#3279, connected-mode BBS terminal aethersdr#3381, PMS
mailbox), and the Microsoft Store MSIX packaging path
(aethersdr#3178/aethersdr#3205/aethersdr#3225/aethersdr#3281).

💻 Generated with Claude Code (Opus 4.8) with architecture by @jensenpat

Co-authored-by: Codex <noreply@openai.com>
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.

2 participants