[windows] Declare PerMonitorV2 DPI awareness on Windows#3208
Conversation
Co-authored-by: Codex <noreply@openai.com>
There was a problem hiding this comment.
Reviewed. This looks clean and well-scoped.
What's good:
- Manifest uses both
dpiAwareness(modern, with PerMonitorV2 + PerMonitor fallback) and legacydpiAware true/pm— correct belt-and-suspenders for Win10 1607+ and earlier. /MANIFESTINPUTis the right hook for merging into the linker-generated manifest, and confirmed the existingpackaging/windows/AetherSDR.rconly declares the icon — no duplicate manifest resource to conflict with.- The CI verifier (
check-dpi-awareness.ps1) is solid:Set-StrictMode,$ErrorActionPreference = "Stop", GUID-suffixed temp path,-LiteralPathconsistently, finally-block cleanup. Failing CI on a missing manifest is the right defense — quietly losing the manifest after a future link-flag refactor would be exactly the kind of regression worth catching. - WACK
DPIAwarenessValidationPASS is the validation that matters here; thanks for running it.
One small observation (not blocking):
- The
target_link_optionsis gated onif(MSVC). That's correct for the shipped Windows build path, but means a MinGW Windows build (if anyone attempts one) would silently produce an unmanifested exe. Given AetherSDR's Windows packaging is MSVC-only and the CI verifier runs in that path, this is fine — just worth a brief comment in CMakeLists noting "MSVC-only; MinGW path would need windres + RT_MANIFEST" so a future contributor doesn't get surprised.
Thanks for the thorough validation notes and the verifier — nice touch making this hard to silently break later. 73!
🤖 aethersdr-agent · cost: $7.8083 · model: claude-opus-4-7
…pi-compliance # Conflicts: # docs/WINDOWS-STORE-MSIX.md
|
Claude here — merged, thanks @jensenpat. Third of three Store-cert PRs landed cleanly. The manifest + verifier combination is the right belt-and-suspenders pattern: WACK passes today and the CI check prevents a silent regression if the link flag ever gets refactored away. Also picked up your note in the body about AetherSDR.exe.manifest using both Resolved the docs conflict against main (single bullet from #3205's DFNR strip landed adjacent to your DPI bullet) by 3-way merge — both #3205's and your status text preserved. Local incremental build clean, all required CI gates green on the merged commit. WACK status going forward, per the updated docs/WINDOWS-STORE-MSIX.md:
That's the WACK trifecta cleared from your side. Outstanding follow-ups for the team are #3217 (DFNR restoration via DeepFilter fork patch) and #3218 (deflate compression for support bundles — non-cert, just UX). Thanks for the thorough validation methodology on each PR — it made these reviewable. 73, Jeremy KK7GWY & Claude (AI dev partner) |
## Summary - Add a Windows executable manifest that declares `PerMonitorV2, PerMonitor` DPI awareness with the legacy `true/pm` fallback. - Merge that manifest into the MSVC-built `AetherSDR.exe` using `/MANIFESTINPUT`, avoiding a duplicate resource manifest in the `.rc` file. - Add a Windows packaging verifier that extracts the embedded manifest with `mt.exe` and fails CI if the DPI declarations are missing. - Run the verifier in the Windows installer workflow before MSIX packaging and update the Store MSIX follow-up notes. ## Validation - Configured and built `AetherSDR.exe` with MSVC/Ninja from `codex/windows-store-dpi-compliance` using 8 jobs. - Ran `windeployqt` on the built executable. - Extracted the embedded manifest with `mt.exe`; confirmed `dpiAwareness` contains `PerMonitorV2, PerMonitor` and `dpiAware` contains `true/pm`. - Ran `packaging/windows/check-dpi-awareness.ps1` against the deployed executable; it passed. - Created an unsigned development MSIX and `.msixupload` with `packaging/windows/create-msix.ps1 -CreateUpload -SkipSign`. - Ran Windows App Certification Kit 10.0.26100.7705 elevated against the generated MSIX; `OVERALL_RESULT="PASS"` and `DPIAwarenessValidation` passed. Co-authored-by: Codex <noreply@openai.com> Co-authored-by: Jeremy Fielder <kk7gwy@aethersdr.com>
Summary
PerMonitorV2, PerMonitorDPI awareness with the legacytrue/pmfallback.AetherSDR.exeusing/MANIFESTINPUT, avoiding a duplicate resource manifest in the.rcfile.mt.exeand fails CI if the DPI declarations are missing.Validation
AetherSDR.exewith MSVC/Ninja fromcodex/windows-store-dpi-complianceusing 8 jobs.windeployqton the built executable.mt.exe; confirmeddpiAwarenesscontainsPerMonitorV2, PerMonitoranddpiAwarecontainstrue/pm.packaging/windows/check-dpi-awareness.ps1against the deployed executable; it passed..msixuploadwithpackaging/windows/create-msix.ps1 -CreateUpload -SkipSign.OVERALL_RESULT="PASS"andDPIAwarenessValidationpassed.