Skip to content

Add .cab/.vbs to FileExtensionSignInfo for VS signing compliance#1703

Open
jesuszarate wants to merge 1 commit intodotnet:mainfrom
jesuszarate:dev/jezarat/sign-cab-vbs-ps1
Open

Add .cab/.vbs to FileExtensionSignInfo for VS signing compliance#1703
jesuszarate wants to merge 1 commit intodotnet:mainfrom
jesuszarate:dev/jezarat/sign-cab-vbs-ps1

Conversation

@jesuszarate
Copy link
Copy Markdown

@jesuszarate jesuszarate commented Apr 20, 2026

Summary

The VS signing scan flags files across 10 msemscriptenpythonnet* and 3 emsdk6manifest* workload packs (.NET 6-10) as unsigned. All originate from dotnet/emsdk.

Root Cause

eng/Signing.props has no FileExtensionSignInfo for .cab or .vbs. Without .cab, the Arcade SignTool cannot open MSI containers to sign embedded cabinet archives — this blocks signing of ALL files inside the MSI. Without .vbs, CPython VBScript installer scripts remain unsigned.

.ps1 does NOT need an override — the Arcade SDK already defines a default for .ps1 (via .ps1;.psd1;.psm1;.psc1;.py -> Microsoft400, auto-upgraded to MicrosoftDotNet500 via UseDotNetCertificate=true). Once .cab lets the SignTool enter the MSI, .ps1 files are signed automatically.

Fix

Two new entries in eng/Signing.props:

  • FileExtensionSignInfo Include='.cab' CertificateName='MicrosoftDotNet500'
  • FileExtensionSignInfo Include='.vbs' CertificateName='MicrosoftDotNet500'

Both use MicrosoftDotNet500, consistent with existing .pyd and .cat entries. Include (not Update) because .cab and .vbs are not in Arcade SDK defaults. MicrosoftDotNet500 (not 3PartyScriptsSHA2) because FileExtensionSignInfo is global — it applies to all files of that extension in the repo, and the repo standard is MicrosoftDotNet500.

Tracking

VS repo bug: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/2949698

@jesuszarate jesuszarate force-pushed the dev/jezarat/sign-cab-vbs-ps1 branch 2 times, most recently from 214beaa to 99b0028 Compare April 21, 2026 18:59
The VS signing scan flags files across msemscriptenpythonnet* and emsdk6manifest*
workload packs (.NET 6-10) as unsigned.

Root cause: eng/Signing.props has no FileExtensionSignInfo for .cab or .vbs.
Without .cab, the Arcade SignTool cannot open MSI containers to sign embedded
cabinet archives. Without .vbs, CPython VBScript installer scripts are unsigned.

The Arcade SDK default already covers .ps1 (Microsoft400, auto-upgraded to
MicrosoftDotNet500 via UseDotNetCertificate), so no override is needed for that.

Fix:
- .cab -> MicrosoftDotNet500 (consistent with .pyd, .cat)
- .vbs -> MicrosoftDotNet500 (consistent with .pyd, .cat, .cab)
@jesuszarate
Copy link
Copy Markdown
Author

@mmitche would you be able to review this PR? Thanks.

Comment thread eng/Signing.props
<FileExtensionSignInfo Include=".pyd" CertificateName="MicrosoftDotNet500" />
<FileExtensionSignInfo Include=".cat" CertificateName="MicrosoftDotNet500" />
<FileExtensionSignInfo Include=".cab" CertificateName="MicrosoftDotNet500" />
<FileExtensionSignInfo Include=".vbs" CertificateName="MicrosoftDotNet500" />
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The PR description says these are 3P...is this the correct cert to use for those 3P scripts?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Good catch — the PR description was stale from an earlier iteration where we used 3PartyScriptsSHA2.

The code intentionally uses MicrosoftDotNet500 because:

  1. FileExtensionSignInfo is global — it applies to ALL .vbs files in the repo, not just the CPython ones
  2. Consistent with the existing .pyd and .cat entries which all use MicrosoftDotNet500
  3. The repo has UseDotNetCertificate=true, so MicrosoftDotNet500 is the standard cert here

I've updated the PR description to match the actual code.

@jesuszarate jesuszarate changed the title Add .cab/.vbs/.ps1 to FileExtensionSignInfo for VS signing compliance Add .cab/.vbs to FileExtensionSignInfo for VS signing compliance Apr 24, 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.

2 participants