Skip to content

Migrate nuget-msi-convert to v5.yml (WiX 6)#11743

Merged
jonathanpeppers merged 5 commits into
mainfrom
jonathanpeppers-test-v5-nuget-msi-convert
Jun 30, 2026
Merged

Migrate nuget-msi-convert to v5.yml (WiX 6)#11743
jonathanpeppers merged 5 commits into
mainfrom
jonathanpeppers-test-v5-nuget-msi-convert

Conversation

@jonathanpeppers

@jonathanpeppers jonathanpeppers commented Jun 25, 2026

Copy link
Copy Markdown
Member

Migrates dotnet/android's signed pipeline from the WiX 3 nuget-msi-convert/v4.yml template to the WiX 6 v5.yml template (Microsoft.Wix 6.0.3-dotnet.4).

Changes

Switches the nuget-msi-convert template reference from nuget-msi-convert/job/v4.yml@yaml-templates to nuget-msi-convert/job/v5.yml@yaml-templates, and updates an adjacent comment. All other consumers of yaml-templates@main (sign-artifacts, policheck, build-summary) are unchanged — this is a single-template swap.

Related Xamarin.yaml-templates work (all merged to main)

Intermediate fix commits that landed inside #752740 before it merged:

  • baf73ec — Build convert.proj with Core MSBuild (DotNetCoreCLI@2), not desktop msbuild
  • 981d2a6 — Pass absolute paths to CreateVisualStudioWorkload
  • d8a73d8 — Rename WixPackageVersionMicrosoftWixToolsetSdkVersion (arcade-canonical)

What changed in v5 vs v4 (for reviewer context)

  • WiX packages bumped to 6.0.3-dotnet.4 (was WiX 3)
  • swixBuildPackageVersion: 1.1.922 (was 1.1.392)
  • arcadePackageVersion: 11.0.0-beta.26325.102 (was 9.0.0-beta.24509.3)
  • arcadeTasksFxVersion: net (was netcoreapp3.1)
  • dotNetSdkVersion: 10.0.x (was 9.0.x — required; arcade 11.x tasks are net10.0)
  • convert.proj now built with DotNetCoreCLI@2 / dotnet msbuild (Core MSBuild) instead of MSBuild@1 desktop msbuild, because arcade 11.x workload tasks ship only tools/net/ (.NETCoreApp v10). SwixBuild still uses desktop msbuild via the internal _FindMSBuild target.
  • WiX property renamed WixPackageVersionMicrosoftWixToolsetSdkVersion (arcade-canonical, matches dotnet/dotnet VMR).

All new parameters have sensible defaults in v5.yml, so dotnet/android does not need to override any of them.

End-to-end CI validation (build 14529573)

Internal Xamarin.Android signed build against this branch succeeded. The Convert NuGet to MSI job produced:

  • 39 signed .msi installers = 13 workload packages × 3 host architectures (x86/x64/arm64)
  • 39 wrapping *.msi.<arch>.<version>.nupkg packages, all MicroBuild-verified (Certificate : Passed)
  • VS-insertion manifest pack: microsoft.net.sdk.android.manifest-11.0.100-preview.7

MSI / nupkg spot-check (Microsoft.Android.Sdk.Windows.Msi.x64)

  • MSI Summary Information CreatedBy field (PID 18): WiX Dev Build (6.0.3.4) — confirms WiX 6 toolset.
  • MSI dependency-provider table renamed from WixDependencyProvider (WiX 3) → Wix4DependencyProvider (WiX 4+ versioned name), populated with the correct ProviderKey: Microsoft.Android.Sdk.Windows,<version>,x64.
  • SWIX-generated data/msi.json inside the nupkg has identical schema to the WiX 3 baseline (36.99.0-preview.5.308), with ProviderKeyName correctly extracted in canonical PackageName,Version,Arch form. New RelatedProducts array additionally surfaces WIX_UPGRADE_DETECTED / WIX_DOWNGRADE_DETECTED upgrade metadata — feature gain, not a regression.

jonathanpeppers and others added 2 commits June 29, 2026 11:50
Smoke-test the WiX 3 -> WiX 6.0.3-dotnet.4 migration of the

nuget-msi-convert template in Xamarin.yaml-templates

(PR #752740, branch jonathanpeppers-nuget-msi-convert-v5).

Adds a temporary second repository resource `yaml-templates-v5` pinned

to the feature branch, and switches the nuget-msi-convert template

reference from `v4.yml@yaml-templates` to `v5.yml@yaml-templates-v5`.

All other templates (sign-artifacts, policheck, build-summary) continue

to consume yaml-templates@main, so this is a single-template swap.

Not to be merged: revert once the Xamarin.yaml-templates v5 PR lands.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Instead of cloning the yaml-templates resource into a second entry,

point the existing one at the v5 feature branch. The other templates

(sign-artifacts/v4.yml, security/policheck/v3.yml, build-summary/v1.yml)

are present on the feature branch too, so this is safe for the smoke test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers jonathanpeppers force-pushed the jonathanpeppers-test-v5-nuget-msi-convert branch from 30c9579 to 9d86333 Compare June 29, 2026 16:50
jonathanpeppers and others added 2 commits June 30, 2026 07:50
The WiX 6 migration of nuget-msi-convert (Xamarin.yaml-templates
PR #752740) has merged to main, so we can drop the temporary
feature-branch pin.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Xamarin.yaml-templates PR #754224 adds a fallback for
BundledNETCoreAppTargetFramework on .NET 10 SDK (which only defines
the *Version* property). Without this, the inner msi.csproj builds
in _GenerateManifestsAndMsiNuGets fail with NETSDK1013.

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

Copy link
Copy Markdown
Member Author

Local validation on jonathanpeppers-nuget-msi-convert-v5-bundledtfm (Xamarin.yaml-templates PR #754224, commit bda1bf2):

✅ With .NET SDK 10.0.301 pinned to match CI, dotnet msbuild convert.proj /restore /t:Build;_GenerateManifestsAndMsiNuGets now completes the inner msi.csproj Restore;Pack step — the one that died on build 14528840 with NETSDK1013: TargetFramework value '' was not recognized — and produces 35 msi-nupkgs (~287 MB) against the nuget-unsigned artifact from build 14516944.

The synthesized $(BundledNETCoreAppTargetFramework)=net10.0 flows correctly into the templated <TargetFramework> via the <MSBuild Properties=...> forwarder in convert.proj.

Ready for an internal re-queue against this branch.

@jonathanpeppers jonathanpeppers marked this pull request as ready for review June 30, 2026 14:41
Copilot AI review requested due to automatic review settings June 30, 2026 14:41

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

This PR updates the Azure DevOps pipeline definition used by dotnet/android to smoke-test the nuget-msi-convert template’s WiX 6 migration by switching from v4.yml to v5.yml and (currently) pinning the yaml-templates repository resource to a feature branch.

Changes:

  • Pin DevDiv/Xamarin.yaml-templates pipeline resource to a feature branch.
  • Switch nuget-msi-convert job template from v4.yml to v5.yml.
  • Update the inline comment referencing which template produced the drop consumed later in the pipeline.

Comment thread build-tools/automation/azure-pipelines.yaml Outdated
Comment thread build-tools/automation/azure-pipelines.yaml
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@jonathanpeppers jonathanpeppers changed the title [WIP] Test v5 nuget-msi-convert (WiX 6 migration) Test v5 nuget-msi-convert (WiX 6 migration) Jun 30, 2026
@jonathanpeppers jonathanpeppers changed the title Test v5 nuget-msi-convert (WiX 6 migration) Migrate nuget-msi-convert to v5.yml (WiX 6) Jun 30, 2026
@jonathanpeppers

Copy link
Copy Markdown
Member Author

End-to-end validation succeeded on build 14529573 (still running other test stages, but the Convert NuGet to MSI job completed its work cleanly):

  • Restore convert.proj
  • Generate MSIs and VS Manifests — the exact task that died with NETSDK1013 on build 14528840
  • Sign NUPKG files
  • verify signed msi content
  • Copy nuget-signed to nugets drop directory
  • Copy bin\msi-nupkgs to nugets drop directory

Remaining steps in that job are Guardian/SDL scanning, SBoM, and 1ES post-job cleanup — not blockers.

@jonathanpeppers jonathanpeppers added the ready-to-review This PR is ready to review/merge, I think any CI failures are just flaky (ignorable). label Jun 30, 2026
@jonathanpeppers

Copy link
Copy Markdown
Member Author

Artifact validation against build 14529573:

Pulled the verify signed msi content task log and confirmed the produced artifact set is complete and correct:

  • 39 signed .msi installers = 13 distinct workload packages × 3 host architectures (x86/x64/arm64)
  • 39 corresponding signed .msi.<arch> NuGet packages wrapping each MSI
  • Every MSI and every nupkg reported Certificate : Passed by MicroBuild; 0 failures, 0 exclusions
  • Sign NUPKG files step: Build succeeded, 0 errors

Coverage:

Component Packages
Reference assemblies microsoft.android.ref.37
Runtime (managed) microsoft.android.runtime.37.android
CoreCLR runtimes microsoft.android.runtime.coreclr.37.android-{arm64,x64}
Mono runtimes microsoft.android.runtime.mono.37.android-{arm,arm64,x64,x86}
NativeAOT runtimes microsoft.android.runtime.nativeaot.37.android-{arm64,x64}
Windows SDK pack microsoft.android.sdk.windows
Templates microsoft.android.templates
Workload manifest microsoft.net.sdk.android.manifest-11.0.100-preview.7

Versioning: 37.0.0-ci.jonathanpeppers-test-v5-nuget-msi-convert.100 — sane, branch-suffixed.

The presence of the workload manifest pack confirms the workload registration generation works end-to-end on the new WiX 6 toolchain. Output shape is functionally equivalent to what v4 produced; only the build infrastructure changed.

@jonathanpeppers jonathanpeppers merged commit 986a32d into main Jun 30, 2026
42 checks passed
@jonathanpeppers jonathanpeppers deleted the jonathanpeppers-test-v5-nuget-msi-convert branch June 30, 2026 20:22
jonathanpeppers added a commit to dotnet/macios that referenced this pull request Jun 30, 2026
Equivalent of dotnet/android#11743 for dotnet/macios.

Switches the nuget-msi-convert template reference from
nuget-msi-convert/job/v4.yml@yaml-templates to v5.yml@yaml-templates,
and updates the corresponding comment.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-review This PR is ready to review/merge, I think any CI failures are just flaky (ignorable).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants