Skip to content

Update Wix to 5.x.x#8268

Merged
andrewlock merged 14 commits into
masterfrom
andrew/update-wix
Mar 13, 2026
Merged

Update Wix to 5.x.x#8268
andrewlock merged 14 commits into
masterfrom
andrew/update-wix

Conversation

@andrewlock

@andrewlock andrewlock commented Mar 4, 2026

Copy link
Copy Markdown
Member

Summary of changes

Updates our MSI project to use Wix 5.x.x instead of Wix 3

Reason for change

Wix 3 was deprecated a year ago, and is generally clunky and hard to use, as it relies on a global install + .NET Framework 3.5. The newer versions of Wix use newer SDK-style projects, are deployed as nuget packages, and can just be built with a normal dotnet build

  • Wix 4: Quite a big change
  • Wix 5: Pretty much back-compatible with 4
  • Wix 6: Shifted licensing model - we need to look into this if we want to upgrade further.
  • Wix 7: As above

Implementation details

This was entirely 🤖 driven, but there's also a .NET tool to help with the conversion. Mostly the changes are just "annoying", e.g. moving values from being element text to a Value property, etc.

Test coverage

At the end of the day, the generated MSI is essentially the same as confirmed by the snapshots created in #8270. The changes all appear to be benign changes in hashing algorithms, or renaming of wix properties.

What's more, I tested the install, and it looks the same (and works), and the MSI tests all pass, which is obviously the important thing! 😄

image image image image image

Other details

The removal of the Win64="yes" and Win64="$(var.Win64)" attributes were the main thing I was unsure about. There is a Bitness attribute now, with values default, always32, or always64, which is pretty much equivalent. However, seeing as we only produce an x64 installer, and not an x86 installer, I think this is essentially just legacy cruft which is ok to remove. We might regret that choice if/when we need an arm64 installer, but I think we'll need to look at everything again at that point anyway, so I don't think it's worth worrying about 😄

@andrewlock andrewlock added area:builds project files, build scripts, pipelines, versioning, releases, packages AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos labels Mar 4, 2026
@dd-trace-dotnet-ci-bot

dd-trace-dotnet-ci-bot Bot commented Mar 4, 2026

Copy link
Copy Markdown

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (8268) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration73.76 ± (73.70 - 74.03) ms74.02 ± (73.96 - 74.27) ms+0.4%✅⬆️
.NET Framework 4.8 - Bailout
duration78.33 ± (78.10 - 78.51) ms79.05 ± (78.74 - 79.07) ms+0.9%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1080.87 ± (1084.03 - 1091.93) ms1090.06 ± (1089.66 - 1095.50) ms+0.8%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.84 ± (22.80 - 22.88) ms23.06 ± (23.01 - 23.10) ms+0.9%✅⬆️
process.time_to_main_ms86.58 ± (86.39 - 86.76) ms87.24 ± (87.07 - 87.40) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.90 ± (10.90 - 10.91) MB10.91 ± (10.91 - 10.92) MB+0.1%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.77 ± (22.73 - 22.81) ms23.00 ± (22.95 - 23.05) ms+1.0%✅⬆️
process.time_to_main_ms88.29 ± (88.08 - 88.49) ms88.98 ± (88.77 - 89.19) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.93 ± (10.93 - 10.94) MB10.95 ± (10.94 - 10.95) MB+0.1%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms254.34 ± (250.50 - 258.18) ms224.69 ± (223.47 - 225.90) ms-11.7%
process.time_to_main_ms495.18 ± (494.44 - 495.91) ms499.12 ± (498.35 - 499.89) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.61 ± (47.59 - 47.64) MB47.25 ± (47.22 - 47.27) MB-0.8%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms21.38 ± (21.34 - 21.41) ms21.89 ± (21.84 - 21.93) ms+2.4%✅⬆️
process.time_to_main_ms74.20 ± (74.04 - 74.36) ms76.34 ± (76.15 - 76.53) ms+2.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.61 ± (10.61 - 10.61) MB10.63 ± (10.62 - 10.63) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.37 ± (21.33 - 21.42) ms21.78 ± (21.73 - 21.82) ms+1.9%✅⬆️
process.time_to_main_ms75.47 ± (75.27 - 75.68) ms77.22 ± (77.04 - 77.39) ms+2.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.65 - 10.66) MB10.74 ± (10.74 - 10.75) MB+0.8%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms260.69 ± (258.30 - 263.07) ms216.86 ± (215.76 - 217.95) ms-16.8%
process.time_to_main_ms473.36 ± (472.73 - 473.99) ms476.15 ± (475.42 - 476.89) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.46 ± (48.44 - 48.49) MB48.17 ± (48.15 - 48.19) MB-0.6%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.79 ± (19.76 - 19.83) ms19.85 ± (19.80 - 19.90) ms+0.3%✅⬆️
process.time_to_main_ms74.27 ± (74.13 - 74.40) ms74.58 ± (74.42 - 74.75) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.65 - 7.66) MB7.67 ± (7.67 - 7.68) MB+0.2%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.67 ± (19.63 - 19.72) ms19.95 ± (19.91 - 19.99) ms+1.4%✅⬆️
process.time_to_main_ms74.96 ± (74.81 - 75.12) ms76.37 ± (76.22 - 76.51) ms+1.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.72 ± (7.71 - 7.73) MB7.75 ± (7.75 - 7.76) MB+0.5%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms190.88 ± (190.11 - 191.64) ms167.17 ± (166.46 - 167.87) ms-12.4%
process.time_to_main_ms460.12 ± (459.36 - 460.88) ms465.08 ± (464.24 - 465.93) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.30 ± (36.26 - 36.35) MB35.88 ± (35.85 - 35.90) MB-1.2%
runtime.dotnet.threads.count27 ± (27 - 27)26 ± (26 - 26)-0.4%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.36 ± (192.40 - 193.12) ms194.24 ± (194.09 - 195.04) ms+1.0%✅⬆️
.NET Framework 4.8 - Bailout
duration195.86 ± (195.75 - 196.33) ms197.97 ± (198.27 - 199.29) ms+1.1%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1140.61 ± (1142.16 - 1149.00) ms1149.06 ± (1149.24 - 1157.14) ms+0.7%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms188.61 ± (188.18 - 189.05) ms188.45 ± (188.05 - 188.85) ms-0.1%
process.time_to_main_ms80.91 ± (80.67 - 81.14) ms81.08 ± (80.86 - 81.30) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.12 ± (16.10 - 16.15) MB16.10 ± (16.07 - 16.13) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-0.2%
.NET Core 3.1 - Bailout
process.internal_duration_ms188.19 ± (187.80 - 188.57) ms188.11 ± (187.79 - 188.44) ms-0.0%
process.time_to_main_ms82.03 ± (81.85 - 82.21) ms82.38 ± (82.20 - 82.55) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.19 ± (16.16 - 16.22) MB16.20 ± (16.16 - 16.25) MB+0.1%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.4%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms440.34 ± (438.10 - 442.58) ms397.26 ± (395.29 - 399.23) ms-9.8%
process.time_to_main_ms473.78 ± (473.18 - 474.39) ms474.44 ± (473.75 - 475.13) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed57.92 ± (57.79 - 58.04) MB58.02 ± (57.87 - 58.17) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)30 ± (30 - 30)+0.9%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms192.86 ± (192.48 - 193.24) ms194.84 ± (194.33 - 195.35) ms+1.0%✅⬆️
process.time_to_main_ms70.48 ± (70.26 - 70.70) ms70.76 ± (70.60 - 70.93) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.35 ± (16.30 - 16.41) MB16.30 ± (16.24 - 16.37) MB-0.3%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.3%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms192.44 ± (192.04 - 192.84) ms192.40 ± (192.12 - 192.68) ms-0.0%
process.time_to_main_ms71.24 ± (71.13 - 71.36) ms71.39 ± (71.25 - 71.54) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.33 ± (16.25 - 16.42) MB16.30 ± (16.19 - 16.41) MB-0.2%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-1.4%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms454.48 ± (452.88 - 456.08) ms426.16 ± (424.56 - 427.76) ms-6.2%
process.time_to_main_ms454.73 ± (454.09 - 455.37) ms454.27 ± (453.57 - 454.98) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.08 ± (57.96 - 58.20) MB59.49 ± (59.42 - 59.56) MB+2.4%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.0%
.NET 8 - Baseline
process.internal_duration_ms189.88 ± (189.52 - 190.24) ms191.49 ± (191.04 - 191.94) ms+0.8%✅⬆️
process.time_to_main_ms69.31 ± (69.16 - 69.46) ms70.14 ± (69.95 - 70.32) ms+1.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.80 ± (11.77 - 11.83) MB11.75 ± (11.73 - 11.78) MB-0.4%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.2%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms189.25 ± (188.87 - 189.62) ms189.53 ± (189.25 - 189.82) ms+0.2%✅⬆️
process.time_to_main_ms70.50 ± (70.38 - 70.62) ms70.68 ± (70.55 - 70.81) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.87 ± (11.83 - 11.90) MB11.78 ± (11.75 - 11.80) MB-0.8%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.1%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms366.25 ± (364.81 - 367.68) ms352.80 ± (351.42 - 354.19) ms-3.7%
process.time_to_main_ms436.71 ± (436.10 - 437.33) ms439.25 ± (438.56 - 439.93) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.98 ± (47.95 - 48.01) MB47.94 ± (47.90 - 47.98) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.0%✅⬆️
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (74ms)  : 72, 76
    master - mean (74ms)  : 71, 76

    section Bailout
    This PR (8268) - mean (79ms)  : 77, 80
    master - mean (78ms)  : 76, 80

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (1,093ms)  : 1051, 1135
    master - mean (1,088ms)  : 1031, 1145

Loading
FakeDbCommand (.NET Core 3.1)
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (117ms)  : 114, 120
    master - mean (117ms)  : 114, 121

    section Bailout
    This PR (8268) - mean (119ms)  : 116, 122
    master - mean (119ms)  : 116, 121

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (760ms)  : 732, 788
    master - mean (782ms)  : 728, 835

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (105ms)  : 102, 108
    master - mean (102ms)  : 100, 104

    section Bailout
    This PR (8268) - mean (105ms)  : 103, 108
    master - mean (103ms)  : 101, 106

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (718ms)  : 695, 741
    master - mean (765ms)  : 722, 808

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (102ms)  : 99, 105
    master - mean (102ms)  : 99, 105

    section Bailout
    This PR (8268) - mean (104ms)  : 102, 107
    master - mean (102ms)  : 100, 104

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (661ms)  : 643, 679
    master - mean (680ms)  : 663, 698

Loading
HttpMessageHandler (.NET Framework 4.8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (195ms)  : 190, 199
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (8268) - mean (199ms)  : 192, 205
    master - mean (196ms)  : 193, 199

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (1,153ms)  : 1094, 1212
    master - mean (1,146ms)  : 1096, 1195

Loading
HttpMessageHandler (.NET Core 3.1)
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (278ms)  : 271, 286
    master - mean (278ms)  : 271, 284

    section Bailout
    This PR (8268) - mean (279ms)  : 275, 283
    master - mean (278ms)  : 274, 283

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (905ms)  : 877, 933
    master - mean (944ms)  : 903, 985

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (274ms)  : 266, 282
    master - mean (272ms)  : 266, 278

    section Bailout
    This PR (8268) - mean (272ms)  : 269, 275
    master - mean (272ms)  : 266, 278

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (911ms)  : 891, 932
    master - mean (937ms)  : 915, 960

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8268) - mean (271ms)  : 264, 278
    master - mean (268ms)  : 263, 274

    section Bailout
    This PR (8268) - mean (270ms)  : 265, 274
    master - mean (270ms)  : 265, 274

    section CallTarget+Inlining+NGEN
    This PR (8268) - mean (822ms)  : 803, 842
    master - mean (835ms)  : 812, 857

Loading

@pr-commenter

pr-commenter Bot commented Mar 4, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-03-06 11:56:29

Comparing candidate commit bc1cfe3 in PR branch andrew/update-wix with baseline commit 76f3785 in branch master.

Found 9 performance improvements and 11 performance regressions! Performance is the same for 157 metrics, 15 unstable metrics.

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟩 execution_time [-81.210ms; -80.855ms] or [-40.134%; -39.958%]

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1

  • 🟥 execution_time [+86.693ms; +86.917ms] or [+79.454%; +79.659%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody net6.0

  • 🟥 execution_time [+13.824ms; +19.337ms] or [+6.961%; +9.737%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody netcoreapp3.1

  • 🟩 execution_time [-16.263ms; -10.666ms] or [-7.747%; -5.081%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody net6.0

  • 🟩 execution_time [-17.452ms; -10.929ms] or [-8.047%; -5.039%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody netcoreapp3.1

  • 🟩 execution_time [-23.841ms; -18.036ms] or [-10.945%; -8.280%]

scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net6.0

  • 🟥 execution_time [+100.754ms; +101.840ms] or [+104.045%; +105.167%]

scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest netcoreapp3.1

  • 🟩 throughput [+613.612op/s; +1455.914op/s] or [+6.542%; +15.523%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟥 execution_time [+27.837ms; +38.914ms] or [+13.435%; +18.781%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1

  • 🟥 execution_time [+28.210ms; +40.929ms] or [+16.298%; +23.647%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice netcoreapp3.1

  • 🟥 throughput [-179.453op/s; -130.222op/s] or [-34.698%; -25.179%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net6.0

  • 🟥 execution_time [+191.231µs; +193.409µs] or [+18.395%; +18.605%]
  • 🟥 throughput [-151.033op/s; -149.324op/s] or [-15.701%; -15.523%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net472

  • 🟩 throughput [+35600.683op/s; +37743.741op/s] or [+12.603%; +13.362%]

scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark netcoreapp3.1

  • 🟥 throughput [-415.302op/s; -213.276op/s] or [-19.740%; -10.137%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1

  • 🟥 execution_time [+41.509ms; +43.214ms] or [+26.036%; +27.105%]

scenario:Benchmarks.Trace.NLogBenchmark.EnrichedLog netcoreapp3.1

  • 🟩 execution_time [-46.043ms; -42.298ms] or [-22.455%; -20.629%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore net6.0

  • 🟥 execution_time [+86.246ms; +88.112ms] or [+110.627%; +113.021%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan netcoreapp3.1

  • 🟩 execution_time [-17.592ms; -11.774ms] or [-8.281%; -5.542%]

scenario:Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin net6.0

  • 🟩 execution_time [-22.151ms; -16.839ms] or [-10.295%; -7.826%]

@andrewlock
andrewlock force-pushed the andrew/update-wix branch 2 times, most recently from f67dfce to 3fe38ad Compare March 5, 2026 11:14
@andrewlock
andrewlock changed the base branch from master to andrew/msi-snapshot March 5, 2026 18:17
@andrewlock
andrewlock marked this pull request as ready for review March 5, 2026 18:18
@andrewlock
andrewlock requested a review from a team as a code owner March 5, 2026 18:18

@NachoEchevarria NachoEchevarria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM!

@andrewlock
andrewlock requested a review from a team as a code owner March 6, 2026 11:14
@andrewlock
andrewlock force-pushed the andrew/msi-snapshot branch from 14e4b48 to 2b3dfb6 Compare March 6, 2026 11:14

@lucaspimentel lucaspimentel left a comment

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.

finally, thanks!

Base automatically changed from andrew/msi-snapshot to master March 13, 2026 09:49
claude and others added 13 commits March 13, 2026 09:55
- Merge Product and Package elements into single Package element
- InstallScope → Scope attribute
- Drop auto-generated Product Id="*"
- Convert Directory tree to use StandardDirectory for well-known folders
- Remove TARGETDIR wrapper (implicit in WiX 4)
- Remove redundant RegistryValue Action="write" (default in WiX 4)
- Simplify empty Directory elements to self-closing tags

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Use WixToolset.Sdk/4.0.5 MSBuild SDK (NuGet-based, no global install)
- Replace WixExtension items with PackageReference NuGet entries:
  WixUtilExtension → WixToolset.Util.wixext
  WixUIExtension → WixToolset.UI.wixext
  WixNetFxExtension → WixToolset.Netfx.wixext
- Remove Compile/Content/EmbeddedResource items (SDK auto-discovers)
- Remove WiX targets imports and EnsureWixToolsetInstalled target
- Remove obsolete properties (ProductVersion, ProjectGuid, SchemaVersion,
  OutputType, SuppressPdbOutput, DefineSolutionProperties)
- Simplify Debug conditional to apply to all platforms

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This property was specific to WiX 3 and is no longer needed with WiX 4
SDK-style projects.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Bump WixToolset.Sdk from 4.0.5 to 5.0.2. WiX 5 is backward-compatible
with WiX 4 authoring (same XML namespace, no schema changes). Extension
NuGet packages will automatically resolve to v5-compatible versions.

No code changes needed: we don't use Overridable (replaced by
virtual/override in v5) or DifxApp (removed in v5).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
WiX 5 SDK-style projects work with dotnet build, which handles NuGet
SDK resolution automatically without needing a specific MSBuild path.
This removes the dependency on having a particular MSBuild installation
and is more consistent with how other SDK-style projects are built.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
NuGet requires explicit versions on PackageReference items when there
is no central package management (Directory.Packages.props). Pin to
latest WiX 5 extension versions:
- WixToolset.Util.wixext 5.0.2
- WixToolset.UI.wixext 5.0.1
- WixToolset.Netfx.wixext 5.0.2

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Remove Win64 attribute from all Component elements (WiX 5 infers
  bitness from the Package platform)
- Convert Component Condition child element to Condition attribute
- Convert Publish element inner text to Condition attribute
- Convert String element inner text to Value attribute
- Convert Text element inner text to Value attribute on Control

Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Convert Property inner text to Value attribute (ARPPRODUCTICON,
  ARPURLINFOABOUT, ARPHELPLINK)
- Remove Win64 attribute from RegistrySearch (WiX 5 defaults to
  package platform bitness)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
WiX 5 renamed WixUIValidatePath to WixUIValidatePath_$(WIXUIARCH)
where WIXUIARCH resolves to the target architecture (X86/X64/A64).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
  - Custom actions renamed with Wix4 prefix (e.g., ExecSecureObjects_64 → Wix4ExecSecureObjects_X64)
  - Custom action source DLLs changed (WixCA_x64 → Wix4UtilCA_X64, WixUIWixca → WixUiCa_X64)
  - WixUIPrintEula custom action removed (WiX 5 no longer includes it)
  - Registry identifiers regenerated with new WiX 5 hashing (e.g., reg94290E163033D1A6292B7FADE992B182 → regKT3eEzbVD_g1Ie_yyxYAzbfsgFE)
  - Component IDs updated for registry components
  - Directory short names changed (CommonAppDataFolder from . → CommApp, ProgramFiles64Folder from . → PFiles64)
  - File short names (8.3 format) regenerated by WiX 5
  - SecureCustomProperties now includes BURNMSIMODIFY;BURNMSIREPAIR;BURNMSIUNINSTALL; prefix
  - MsiHiddenProperties updated to match new custom action names
@andrewlock
andrewlock enabled auto-merge (squash) March 13, 2026 09:59
@andrewlock
andrewlock merged commit b4930d2 into master Mar 13, 2026
136 checks passed
@andrewlock
andrewlock deleted the andrew/update-wix branch March 13, 2026 11:57
@github-actions github-actions Bot added this to the vNext-v3 milestone Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos area:builds project files, build scripts, pipelines, versioning, releases, packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants