Skip to content

Install lab: test a signed Windows installer without a paid certificate - #170

Merged
theontho merged 2 commits into
mainfrom
install-lab-test-sign
Oct 26, 2026
Merged

theontho merged 2 commits into
mainfrom
install-lab-test-sign

Conversation

@theontho

Copy link
Copy Markdown
Owner

lab.py run windows --gui-installer <setup.exe> --test-sign signs the
unsigned installer inside the disposable VM with a throwaway certificate
the VM trusts machine-wide (private key deleted after signing), before
the baseline. The guest's existing check must then report Valid.

Refused outside app install runs on the windows VM target. The
OneDrive self-update's version and Codecs folders join the measured
desktop noise. Release signing is tracked in theontho/gui-for-cli#167.

Verified: the v0.6.1 release installer, test-signed, passes 25/25
checks; mutate catches every corruption, including signature-flipped.

Closes #97

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
Copilot-Session: 86b87a6d-09a0-4852-9280-a9e685946179

`lab.py run windows --gui-installer <setup.exe> --test-sign` signs the
unsigned installer inside the disposable VM with a throwaway certificate
the VM trusts machine-wide (private key deleted after signing), before
the baseline. The guest's existing check must then report `Valid`.

Refused outside app install runs on the windows VM target. The
OneDrive self-update's version and Codecs folders join the measured
desktop noise. Release signing is tracked in theontho/gui-for-cli#167.

Verified: the v0.6.1 release installer, test-signed, passes 25/25
checks; `mutate` catches every corruption, including signature-flipped.

Closes #97

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 86b87a6d-09a0-4852-9280-a9e685946179
Copilot AI balanced review requested due to automatic review settings October 26, 2026 21:36
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

An unescaped apostrophe in a valid installer filename breaks PowerShell parsing in the signing and cleanup commands, causing --test-sign to abort.

1 open issue
What changed in this PR

Adds disposable-VM test signing to exercise the Windows install lab’s signed-installer checks without a paid certificate. This validates the signed path, not public release signing.

Changes:

  • Adds --test-sign, restricted to Windows VM app-install runs, with updated signature metadata.
  • Creates a temporary signing certificate, trusts it in the guest, signs the installer, and deletes the private key.
  • Documents the workflow, tests unsupported invocations, and expands OneDrive noise exclusions.
File Description
tests/​test_lab_gui_build.py Tests rejection of unsupported test-signing runs.
scripts/​installlab/​windows_gui_vm.py Adds guest-side certificate creation and installer signing.
scripts/​installlab/​noise/​windows-gui.txt Excludes OneDrive version and Codecs folders from measured changes.
scripts/​installlab/​lab.py Adds the CLI flag, validation, signing step, and metadata updates.
docs/​install_testing.md Explains test signing and its verification limits.

Review effort: Balanced

Comment thread scripts/installlab/windows_gui_vm.py Outdated
The installer's host file name was quoted into PowerShell, so a name
with an apostrophe broke signing. Authenticode doesn't cover the file
name, and the guest still downloads the installer under its own name.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 86b87a6d-09a0-4852-9280-a9e685946179
@theontho
theontho merged commit d8283a1 into main Oct 26, 2026
16 checks passed
@theontho
theontho deleted the install-lab-test-sign branch October 26, 2026 22:13
@theontho theontho mentioned this pull request Oct 27, 2026
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.

Install lab: test a signed release installer

2 participants