Skip to content

[ci] Fix internal build: duplicate .cab signing + missing MicrosoftWixVersion - #36879

Merged
kubaflo merged 2 commits into
release/11.0.1xx-preview7from
rmarinho-fix-duplicate-cab-signing
Jul 28, 2026
Merged

[ci] Fix internal build: duplicate .cab signing + missing MicrosoftWixVersion#36879
kubaflo merged 2 commits into
release/11.0.1xx-preview7from
rmarinho-fix-duplicate-cab-signing

Conversation

@rmarinho

@rmarinho rmarinho commented Jul 28, 2026

Copy link
Copy Markdown
Member

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Fixes two independent issues that were both blocking the internal dotnet-maui pipeline on release/11.0.1xx-preview7.

1. Duplicate .cab signing entry

The internal Pack, Sign task failed with:

Sign.proj(74,5): error : Multiple certificates for extension '.cab' defined for CollisionPriorityId ''.
There should be one certificate per extension per collision priority id.

Cause: PR #35026 added an explicit .cab FileExtensionSignInfo to eng/Signing.props, but Arcade's built-in Sign.props already registers .cab by default:

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

Fix: Remove the duplicate entry. Cab files inside workload MSIs are still signed with Microsoft400 via the Arcade default. The ReconnectModal.razor.js FileSignInfo entry from #35026 is kept.

Failing build: internal build 3033388.

2. Missing MicrosoftWixVersion property

After fixing (1), the next internal build (3033430) failed the Build Workloads, Sign & Publish task with:

error NU1015: The following PackageReference item(s) do not have a version specified:
  Microsoft.Wix, Microsoft.WixToolset.Dependency.wixext,
  Microsoft.WixToolset.Heat, Microsoft.WixToolset.UI.wixext,
  Microsoft.WixToolset.Util.wixext

Cause: The WiX 6 migration (commit a8624ba) added <MicrosoftWixVersion>6.0.3-dotnet.4</MicrosoftWixVersion> to eng/Versions.props and referenced it from eng/NuGetVersions.targets. A subsequent merge into release/11.0.1xx-preview7 dropped the property definition, so the reference resolves to empty and restore fails.

Fix: Restore the property with the same value used in the original migration.

Follow-up

Both fixes should be ported to main. Main also has the duplicate .cab entry, and MicrosoftWixVersion should be double-checked there after a git merge audit.

Arcade's built-in Sign.props already registers .cab with the
Microsoft400 certificate via:

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

Redefining .cab in eng/Signing.props causes SignToolTask to fail
during the internal 'Pack, Sign' step with:

  error : Multiple certificates for extension '.cab' defined for
  CollisionPriorityId ''. There should be one certificate per
  extension per collision priority id.

Cab files embedded inside workload MSIs will still be signed with
Microsoft400 via Arcade's default, so no signing coverage is lost.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: fe72440b-378b-4c09-9e06-0f3957385779
Copilot AI review requested due to automatic review settings July 28, 2026 14:14
@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:14 — with GitHub Actions Inactive

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36879

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36879"

@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:14 — with GitHub Actions Inactive
@rmarinho
rmarinho changed the base branch from main to release/11.0.1xx-preview7 July 28, 2026 14:14
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

@github-actions

Copy link
Copy Markdown
Contributor

Skill Validation Results

@rmarinho — new skill validation results are available based on this last commit: b436ce1.
To request a fresh validation after new comments or commits, comment /evaluate-skills.

Overall Passed Static Passed LLM Skipped Skills 24 Agents 6

Skill Validation Resultsb436ce1 · [ci] Remove duplicate .cab signing entry breaking internal build · 2026-07-28T14:15:35Z

✅ Static Checks Passed

Skills: 24 | Eval specs linted: 14

Full lint output
── .github/skills/agentic-labeler/tests/eval.vally.yaml
npm warn deprecated prebuild-install@7.1.3: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
✔ .github/skills/agentic-labeler/tests/eval.vally.yaml is valid
── .github/skills/analyze-sessions/tests/eval.vally.yaml
✔ .github/skills/analyze-sessions/tests/eval.vally.yaml is valid
── .github/skills/ci-fix/tests/eval.ownership.vally.yaml
✔ .github/skills/ci-fix/tests/eval.ownership.vally.yaml is valid
── .github/skills/ci-fix/tests/eval.vally.yaml
✔ .github/skills/ci-fix/tests/eval.vally.yaml is valid
── .github/skills/code-review/tests/eval.capability.vally.yaml
✔ .github/skills/code-review/tests/eval.capability.vally.yaml is valid
── .github/skills/code-review/tests/eval.inline-findings.vally.yaml
✔ .github/skills/code-review/tests/eval.inline-findings.vally.yaml is valid
── .github/skills/code-review/tests/eval.producer-trace.vally.yaml
✔ .github/skills/code-review/tests/eval.producer-trace.vally.yaml is valid
── .github/skills/code-review/tests/eval.trim-aot.vally.yaml
✔ .github/skills/code-review/tests/eval.trim-aot.vally.yaml is valid
── .github/skills/code-review/tests/eval.vally.yaml
✔ .github/skills/code-review/tests/eval.vally.yaml is valid
── .github/skills/code-review/tests/hermeticity.vally.yaml
✔ .github/skills/code-review/tests/hermeticity.vally.yaml is valid
── .github/skills/evaluate-pr-tests/tests/eval.vally.yaml
✔ .github/skills/evaluate-pr-tests/tests/eval.vally.yaml is valid
── .github/skills/pr-review/tests/eval.gh-auth.vally.yaml
✔ .github/skills/pr-review/tests/eval.gh-auth.vally.yaml is valid
── .github/skills/try-fix/tests/eval.vally.yaml
✔ .github/skills/try-fix/tests/eval.vally.yaml is valid
── .github/skills/verify-tests-fail-without-fix/tests/eval.vally.yaml
✔ .github/skills/verify-tests-fail-without-fix/tests/eval.vally.yaml is valid

⏭️ LLM Evaluation: Skipped

No changed skills with eval specs found.

🔍 Full results and investigation steps

@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:15 — with GitHub Actions Inactive
@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:17 — with GitHub Actions Inactive
@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:18 — with GitHub Actions Inactive
@github-actions github-actions Bot added area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions platform/windows labels Jul 28, 2026
@rmarinho
rmarinho temporarily deployed to copilot-pat-pool July 28, 2026 14:19 — with GitHub Actions Inactive
dalexsoto
dalexsoto previously approved these changes Jul 28, 2026
The WiX 6 migration (a8624ba) added $(MicrosoftWixVersion) in
eng/Versions.props and referenced it from eng/NuGetVersions.targets for
the 5 WiX 6 packages. A subsequent merge into release/11.0.1xx-preview7
dropped the property definition, so the reference in NuGetVersions.targets
now resolves to empty and NuGet restore fails with:

  error NU1015: The following PackageReference item(s) do not have a
  version specified: Microsoft.Wix, Microsoft.WixToolset.Dependency.wixext,
  Microsoft.WixToolset.Heat, Microsoft.WixToolset.UI.wixext,
  Microsoft.WixToolset.Util.wixext

Restore the property with the same value used in the original migration.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: fe72440b-378b-4c09-9e06-0f3957385779
Copilot AI review requested due to automatic review settings July 28, 2026 16:09
@rmarinho rmarinho changed the title [ci] Remove duplicate .cab signing entry breaking internal build [ci] Fix internal build: duplicate .cab signing + missing MicrosoftWixVersion Jul 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

@rmarinho
rmarinho requested a review from dalexsoto July 28, 2026 16:55
@rmarinho

Copy link
Copy Markdown
Member Author

/backport to main

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to main (link to workflow run)

@github-actions

Copy link
Copy Markdown
Contributor

@rmarinho backporting to main was not run because the source pull request has not been merged. Please merge this pull request before requesting a backport.

@kubaflo
kubaflo merged commit 67c53f3 into release/11.0.1xx-preview7 Jul 28, 2026
23 of 32 checks passed
@kubaflo
kubaflo deleted the rmarinho-fix-duplicate-cab-signing branch July 28, 2026 17:41
@github-actions github-actions Bot added this to the .NET 11.0-preview7 milestone Jul 28, 2026
PureWeen pushed a commit that referenced this pull request Jul 29, 2026
Refresh dotnet/dotnet, dotnet/android, and dotnet/macios from the .NET 11.0.1xx SDK channel. Keep Android and macOS workload manifest package bands on Preview 7 during the RC 1 transition, and port the signing and WiX fixes from #36879.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d483d48e-8fc4-43ba-a37f-ac8d32c45fd5
@rmarinho

Copy link
Copy Markdown
Member Author

/backport to main

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to main (link to workflow run)

@github-actions

Copy link
Copy Markdown
Contributor

@rmarinho backporting to main failed, the patch most likely resulted in conflicts. Please backport manually!

git am output
$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch

Applying: [ci] Remove duplicate .cab signing entry
Applying: [ci] Restore MicrosoftWixVersion property lost in merge
Using index info to reconstruct a base tree...
M	eng/Versions.props
Falling back to patching base and 3-way merge...
Auto-merging eng/Versions.props
CONFLICT (content): Merge conflict in eng/Versions.props
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0002 [ci] Restore MicrosoftWixVersion property lost in merge
Error: The process '/usr/bin/git' failed with exit code 128

Link to workflow output

@rmarinho

Copy link
Copy Markdown
Member Author

@copilot can you create apply this fix on top of main and make a new pr?

kubaflo pushed a commit that referenced this pull request Jul 30, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

Ports the `.cab` signing fix from #36879 (merged into
`release/11.0.1xx-preview7`) to `main`.

### Duplicate `.cab` signing entry

The internal `Pack, Sign` task fails with:

```
Sign.proj(74,5): error : Multiple certificates for extension '.cab' defined for CollisionPriorityId ''.
There should be one certificate per extension per collision priority id.
```

**Cause:** PR #35026 added an explicit `.cab` `FileExtensionSignInfo` to
`eng/Signing.props`, but Arcade's built-in `Sign.props` already
registers `.cab` by default:

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

**Fix:** Remove the duplicate entry. Cab files inside workload MSIs are
still signed with `Microsoft400` via the Arcade default, so no signing
coverage is lost. The `ReconnectModal.razor.js` `FileSignInfo` entry
from #35026 is kept.

### Note on the second fix in #36879

#36879 also restored a missing `MicrosoftWixVersion` property in
`eng/Versions.props`. **That part does not apply to `main`** — `main`
has not taken the WiX 6 migration and still uses `Microsoft.Signed.WiX`
/ `$(MicrosoftSignedWixVersion)` in `eng/NuGetVersions.targets`. There
is no `$(MicrosoftWixVersion)` reference anywhere on `main`, so adding
the property would be dead config.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 515c328a-83aa-4348-9548-4d45f97760c0
kubaflo pushed a commit that referenced this pull request Jul 30, 2026
<!-- Please let the below note in for people that find this PR -->
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

### Description of Change

Refreshes `net11.0` from the latest builds on the `.NET 11.0.1xx SDK`
channel and fixes the official workload and sample-build failures
exposed by the RC1 transition.

| Source | BAR build | Build/version | Commit |
|---|---:|---|---|
| `dotnet/dotnet` | 324908 | `20260729.2` / SDK
`11.0.100-rc.1.26379.102` / Arcade `11.0.0-beta.26379.102` |
`813f634ceb016018f5acc9bd3c2b16e17dff4686` |
| `dotnet/macios` | 324699 | `20260728.2` / Apple
`26.5.11992-net11-rc.1` | `17d5ebd7632ca2960ab6e3d4bdb68697d24bc2ba` |
| `dotnet/android` | 324914 | `11.0.0-preview.7.26379.1+azdo.14802945` /
Android `37.0.0-ci.main.2160` |
`444db99f7b362334b2785498c57064a4c66a7165` |

The dependency refresh updates `eng/Version.Details.xml`,
`eng/Versions.props`, and `global.json`, while preserving the macOS
dependency feed update in `NuGet.config`. The macOS net10 coherent
dependencies remain mapped to BAR 324587, and the previous Android
manifest remains mapped to BAR 315081.

The branch also merges the current `net11.0` tip so it includes the
already-merged `ExampleJsInterop` BL0016 fixes from #36888.

### RC1 build fixes

- Advances `Microsoft.DotNet.Arcade.Sdk` and related VMR dependencies to
`11.0.0-beta.26379.102`, replacing the unavailable
`11.0.0-beta.26365.101` requested by failing official build 3034332.
- Temporarily pins the Android and Apple workload manifest package IDs
to `11.0.100-preview.7`. Their latest component builds contain RC1
product versions but still publish Preview 7 manifest package IDs; using
the VMR-derived RC1 IDs fails restore with `NU1101`.
- Removes MAUI's duplicate explicit `.cab` `FileExtensionSignInfo`;
Arcade already signs `.cab` files with `Microsoft400`.
- Restores `<MicrosoftWixVersion>6.0.3-dotnet.4</MicrosoftWixVersion>`
so all five WiX 6 package references have a version.
- Guards the Controls sample's `confirm`, `prompt`, and `alert`
JavaScript interop calls with `JSException` handling. The RC1 BL0016
analyzer rejects these calls when they are outside a `try`/`catch`;
exceptions are rethrown as operation-specific
`InvalidOperationException`s rather than suppressed or swallowed.

The signing and WiX changes reproduce the final implementation from
merged PR #36879 (merge commit
`67c53f3a438adf50bc1023321f33d7bc2e5bf6f9`) without merging or
cherry-picking the release-branch commit.

### Validation

- XML and JSON parsing; `git diff --check`
- Exact BAR asset/version/SHA mapping for all refreshed dependencies and
coherent prior pins
- `darc verify` (only unchanged baseline Tizen/XUnit duplicate aliases
and XHarness casing/version findings remain)
- Workload bootstrap/restore and targeted MSBuild preparation using
Arcade `11.0.0-beta.26379.102`
- WiX restore resolves all five references to `6.0.3-dotnet.4`
- No explicit `.cab` signing entry remains in `eng/Signing.props`
- `Maui.Controls.Sample.csproj -f net11.0 -c Debug` under SDK
`11.0.100-rc.1.26379.102` — passed with 0 warnings/errors
- `Maui.Controls.Sample.csproj -f net11.0 -c Release` under SDK
`11.0.100-rc.1.26379.102` — passed with 0 warnings/errors

### Issues Fixed

No linked GitHub issue. Fixes the `net11.0` official pipeline dependency
provisioning, workload restore, signing, WiX restore, and RC1 BL0016
sample-build failures.

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: PureWeen <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d483d48e-8fc4-43ba-a37f-ac8d32c45fd5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-infrastructure CI, Maestro / Coherency, upstream dependencies/versions platform/windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants