From: Max Vilimpoc Date: Tue, 1 Sep 2026 10:49:52 +0000 (+0200) Subject: dotfiles: pin WiX to 5.0.2, the last release that owes no fee X-Git-Url: https://vilimpoc.org/repos/dotfiles/commitdiff_plain/aa6eb7838922a67ac1c9d7169fa0bb5b58b17762?ds=inline dotfiles: pin WiX to 5.0.2, the last release that owes no fee winget install WiXToolset.WiXCLI has no version selector, so it installed 7.0.0. From 6.0 onward the WiX package carries OSMFEULA.txt on top of the Microsoft Reciprocal License: an Open Source Maintenance Fee agreement charging a monthly fee to anyone using the prebuilt binaries as part of revenue-generating activity with annual gross revenue >= US$10,000. The fee buys the binaries; it is not a license fee and restricts nothing about what we package. MS-RL is file-scoped and never reached the MSIs WiX builds under any version. Pinning to 5.0.2 is about the invoice. Install it as a .NET global tool instead, which takes a --version, and add the .NET 10 SDK it needs. The MSBuild half still has to be pinned in each .wixproj; the comment says so where someone will look for it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012gCzbrN6p3emFUyufuJsyq --- diff --git a/setup-windows.bat b/setup-windows.bat index cc12420..5dc46e6 100644 --- a/setup-windows.bat +++ b/setup-windows.bat @@ -7,17 +7,45 @@ @rem --- Non-admin (per-user) winget installs --- winget install Anthropic.ClaudeCode winget install Git.Git +winget install Microsoft.DotNet.SDK.10 winget install Microsoft.PowerShell Microsoft.Sysinternals.ProcessExplorer Microsoft.Sysinternals.ProcessMonitor Microsoft.Sysinternals.SDelete Microsoft.VisualStudioCode Microsoft.WindowsTerminal winget install Oracle.VirtualBox winget install Python.Python.3.13 winget install WinMerge.WinMerge -winget install WiXToolset.WiXCLI @rem OpenCppCoverage: native (PE) line coverage for the C++ binaries. run-coverage-occ.py drives the @rem pytest suite under it to produce an HTML report (the binaries under test build with PDBs, @rem which it reads). The installer elevates via UAC. winget install OpenCppCoverage.OpenCppCoverage +@rem --- WiX 5.0.2, pinned on purpose --- +@rem WiX packages our proprietary software into MSIs, and the version is pinned to keep that +@rem free of a fee. 5.0.2 is the last release distributed under the Microsoft Reciprocal +@rem License alone. From 6.0 onward the package also carries OSMFEULA.txt, an Open Source +@rem Maintenance Fee agreement: a monthly fee owed by anyone who uses the PREBUILT BINARIES +@rem as part of revenue-generating activity and has annual gross revenue >= US$10,000. +@rem +@rem It is a fee for the binaries, not a restriction on what we ship - MS-RL is file-scoped +@rem and never reached the MSIs WiX builds, under any version - but 5.0.2 owes nothing. +@rem The 6.x/7.x SOURCE is still MS-RL too, so self-compiling is another way out; a pin is +@rem the cheaper one. This replaces `winget install WiXToolset.WiXCLI`, which has no version +@rem selector and so installs the latest (7.0.0 today, EULA and all). +@rem +@rem PIN THE MSBUILD SIDE TOO. A .wixproj referencing WixToolset.Sdk without a version +@rem resolves to the latest - 7.x, same EULA - and nothing here constrains it. Pin it in the +@rem project: . +@rem +@rem dotnet.exe is called by full path: winget put the SDK on the machine PATH a few lines +@rem ago, but this cmd session inherited its environment before that and cannot see it. +@rem install-then-update is for re-runs - install fails once the tool is there, and update +@rem then holds it at exactly 5.0.2 - which keeps this script idempotent like the rest. +set "DOTNET_EXE=%ProgramFiles%\dotnet\dotnet.exe" +"%DOTNET_EXE%" tool install --global wix --version 5.0.2 || "%DOTNET_EXE%" tool update --global wix --version 5.0.2 + +@rem Report what the pin actually produced. By full path again, and because the shim lands in +@rem a directory this session's PATH predates: expect "5.0.2+", not 7.x. +"%USERPROFILE%\.dotnet\tools\wix.exe" --version + @rem --------------------------------------------------------------------------- @rem No package manager needed for the Windows build @rem