Skip to content

release: v1.4.11 windows installer Smart App Control fix#332

Merged
BitHighlander merged 1 commit into
masterfrom
release/1.4.11
Jul 6, 2026
Merged

release: v1.4.11 windows installer Smart App Control fix#332
BitHighlander merged 1 commit into
masterfrom
release/1.4.11

Conversation

@BitHighlander

Copy link
Copy Markdown
Collaborator

Follow-up to #329. One commit landed on release/1.4.11 after that PR merged:

  • fix(windows-installer): UseSetupLdr=no so Smart App Control can't block it

v1.4.11's single-exe Inno installer self-extracted an unsigned setup.tmp engine, which Windows Smart App Control (on by default on Win11) blocked — install failed with exit 1 / CodeIntegrity 3077/3033. UseSetupLdr=no removes the unsigned stub so SAC only ever sees the signed setup.exe. Validated on a SAC-Enforce machine.

Supersedes #331, which carries an identical patch opened directly against develop — closing that one to avoid landing the same fix twice.

…ck it

The default single-exe Inno installer self-extracts an UNSIGNED setup.tmp engine
to %TEMP% and runs it. Smart App Control (on by default on many Win11 machines)
blocks unsigned code, so v1.4.11 died with "Setup failed to initialize" (exit 1,
CodeIntegrity 3077/3033) and installed nothing. The EV signature on the outer
setup.exe doesn't help — SAC evaluates the extracted setup.tmp on its own, and
stock Inno can't sign it. The app binaries themselves are all EV-signed and
SAC-clean; only the installer's extracted stub was the problem.

Fix:
- installer.iss: UseSetupLdr=no -> no setup.tmp; the signed setup.exe is the
  engine and runs in-process, so SAC only sees the signed exe. Inno now emits
  setup.exe + setup-*.bin.
- build-windows-production.ps1: zip the parts into
  KeepKey-Vault-<ver>-win-x64-setup.zip and delete the loose exe/bin so a bare
  (SAC-blocked) single exe can't be shipped by accident.
- docs: WINDOWS-BUILD-AND-SIGN.md gains a "Smart App Control" section and a
  MANDATORY "install under SAC (Enforce)" checklist item — SAC-off machines are
  an invalid test, which is how this slipped through (1.4.7 smoke test was
  SAC-off). Full write-up in docs/incidents/.

Validated on a SAC-Enforce machine via the real download flow (zip + MotW ->
extract -> run setup.exe): exit 0, version 1.4.11, no 3077/3033, app boots.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@BitHighlander BitHighlander requested a review from pastaghost as a code owner July 6, 2026 20:23
@BitHighlander BitHighlander merged commit a9b1b87 into master Jul 6, 2026
7 checks passed
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