Skip to content

Add .cab to default FileExtensionSignInfo for signing#16742

Merged
jkoritzinsky merged 1 commit intodotnet:mainfrom
jesuszarate:dev/jezarat/sign-cab-files
Apr 24, 2026
Merged

Add .cab to default FileExtensionSignInfo for signing#16742
jkoritzinsky merged 1 commit intodotnet:mainfrom
jesuszarate:dev/jezarat/sign-cab-files

Conversation

@jesuszarate
Copy link
Copy Markdown
Contributor

Problem

Cabinet (.cab) files inside MSI containers are signable via Authenticode but are not included in the Arcade SDK's default FileExtensionSignInfo entries. This causes the SignTool to skip .cab files in all Arcade-based repos that produce MSIs, resulting in unsigned cabs flagged by the VS signing compliance scan.

This affects multiple repos: dotnet/runtime, dotnet/emsdk, dotnet/macios, dotnet/aspnetcore, and potentially the SDK — each producing WiX MSIs with embedded cabs that go unsigned.

Fix

Add .cab to the existing .dll;.exe;.mibc;.msi line in src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.props:

<FileExtensionSignInfo Include=".dll;.exe;.mibc;.msi;.cab" CertificateName="Microsoft400" />

This ensures all Arcade-based repos get correct cab signing by default. Repos that set UseDotNetCertificate=true will automatically use MicrosoftDotNet500 instead.

Context

Suggested by @jkoritzinsky in dotnet/runtime#127242 — rather than adding .cab per-repo in each eng/Signing.props, centralizing it in Arcade fixes all repos at once and covers future repos automatically.

Tracking

VS signing compliance: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2911494

Cabinet (.cab) files inside MSI containers are signable via Authenticode
but were not included in the Arcade SDK's default FileExtensionSignInfo.
This caused the SignTool to skip .cab files in all repos that produce
MSIs (runtime, emsdk, macios, aspnetcore, SDK), resulting in unsigned
cabs flagged by the VS signing scan.

Adding .cab alongside .dll/.exe/.mibc/.msi ensures all Arcade-based
repos get correct cab signing by default, rather than each repo needing
to add it individually in eng/Signing.props.

Tracking: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2911494
jesuszarate added a commit to jesuszarate/runtime that referenced this pull request Apr 23, 2026
The VS signing scan requires every signable file to carry its own
signature. The Mono workload packs contain 198 unsigned .js files
(browser-wasm runtime scripts) that are customer-modifiable.

For .js files: keep CertificateName=None (same as dotnet/emsdk#1671)
because these are customer-modifiable runtime files. Instead, generate
a .cat catalog file covering all .js files, signed via FileExtensionSignInfo
for .cat. The GenerateCatalogFiles target runs after AddMonoRuntimeFiles
on Windows browser-wasm builds.

For .cab files: moved to dotnet/arcade (dotnet/arcade#16742) so all
Arcade-based repos get correct cab signing by default.

Tracking: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2911494
@jesuszarate
Copy link
Copy Markdown
Contributor Author

@jkoritzinsky - Are you able to merge the PR?

@jkoritzinsky jkoritzinsky merged commit 074d8d7 into dotnet:main Apr 24, 2026
9 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.

2 participants