Skip to content

Sign releases with Azure Artifact Signing - #17

Merged
Menelion merged 3 commits into
masterfrom
code-signing
Oct 25, 2026
Merged

Menelion merged 3 commits into
masterfrom
code-signing

Conversation

@Menelion

Copy link
Copy Markdown
Contributor

Closes #16.

Code signing

  • Build-Installer.ps1 signs plancake.exe once the publish is verified, so the installer and the portable zip both carry the signed exe.
  • Inno Setup signs the installer and its uninstaller itself: plancake.iss turns on SignTool=azure only under /DSign, which the script passes along with the sign command.
  • Every signed file is checked with Get-AuthenticodeSignature; anything but Valid fails the build.
  • The appcast is generated after the installer is signed, since its Ed25519 signature covers the installer's bytes.
  • Signing is on whenever installer/signing.json exists (gitignored; signing.example.json shows its shape). -NoSign skips it; -Appcast and -Deploy refuse to release unsigned unless -NoSign is given.
  • WebView2Loader.dll already carries Microsoft's signature and is left alone.

Company name

The company is Oire Software, as registered and as the certificate names it. "SARL" is gone from the installer's publisher, the .csproj's Company and Copyright, the six manuals' footers, LICENSE, THIRD-PARTY-NOTICES.txt and the local winget manifests. The manifests already in winget-pkgs still carry it; CLAUDE.md describes the one-time fix for the next winget update.

Tested

  • dotnet test: 1286 passed.
  • Full signed trial build (-AllowDirty, Windows PowerShell 5.1): plancake.exe, the uninstaller and the setup exe all signed and Valid; plancake.iss keeps its BOM.
  • Not tested: an actual -Appcast/-Deploy release run.

Build-Installer.ps1 signs plancake.exe once the publish is verified, so
the installer and the portable zip carry the signed exe, then lets Inno
Setup sign the installer and its uninstaller through the "azure" sign
tool that plancake.iss turns on under /DSign. Every signed file must
come out Valid, and the appcast is generated after, since its Ed25519
signature covers the installer's bytes. WebView2Loader.dll keeps
Microsoft's signature. Signing is on whenever installer/signing.json
(gitignored; copy signing.example.json) exists; -NoSign skips it, and
-Appcast/-Deploy refuse to go out unsigned without it.

The company is "Oire Software", as registered and as the certificate
names it: drop "SARL" from the installer's publisher, the .csproj's
Company and Copyright, the manuals' footers, LICENSE,
THIRD-PARTY-NOTICES.txt and the local winget manifests. CLAUDE.md
describes the signing setup, the az login step of a release, and the
one-time Publisher fix the next winget update needs.

Closes #16
@Menelion Menelion added the infrastructure Internal changes, dev-ops tasks label Oct 25, 2026
The UAC prompt shows the description as the program name instead of the file name, and the signature details link to the product site.
@Menelion
Menelion merged commit 142171b into master Oct 25, 2026
1 check passed
@Menelion
Menelion deleted the code-signing branch October 25, 2026 23:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure Internal changes, dev-ops tasks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sign release binaries with Azure Artifact Signing

1 participant