Skip to content

Sign releases with Azure Artifact Signing - #87

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

Menelion merged 2 commits into
masterfrom
code-signing

Conversation

@Menelion

Copy link
Copy Markdown
Contributor

Closes #86.

Code signing

  • Build-Installer.ps1 signs sic.exe right after publish, so the installer and the portable ZIP both carry the signed exe.
  • Inno Setup signs the installer and its uninstaller itself: sic.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.
  • Magick.Native-Q16-x64.dll already carries ImageMagick'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 copyright lines, the About dialog and its catalogs, LICENSE, README 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

  • Full signed build (Windows PowerShell 5.1, as build-installer.bat runs it): sic.exe, the uninstaller and the setup exe all signed and Valid.
  • -NoSign build: compiles, installer unsigned.
  • Not tested: an actual -Appcast/-Deploy release run.

Build-Installer.ps1 signs sic.exe right after publish, 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 sic.iss
enables under /DSign. Every signed file must come out Valid, and the
appcast is generated after, since its Ed25519 signature covers the
installer's bytes. 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 copyright
lines, the About dialog (with its catalogs), LICENSE, README and the
local winget manifests. CLAUDE.md describes the signing setup and the
one-time Publisher fix the next winget update needs.

Closes #86
@Menelion Menelion added the infrastructure Internal changes, such as helper scripts 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 6ca55d5 into master Oct 25, 2026
1 of 2 checks passed
@Menelion
Menelion deleted the code-signing branch October 25, 2026 23:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infrastructure Internal changes, such as helper scripts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Sign release binaries with Azure Artifact Signing

1 participant