Skip to content

build: harden publish scripts, package all RIDs and bump to 3.2.4.0 - #295

Open
BENDER35 wants to merge 11 commits into
OSTooling:mainfrom
BENDER35:main
Open

BENDER35 wants to merge 11 commits into
OSTooling:mainfrom
BENDER35:main

Conversation

@BENDER35

Copy link
Copy Markdown

Summary

Windows publish scripts hardened, package all RIDs (.NET 10 + legacy .NET 6), and bump version to 3.2.4.0.

Changes

  • Windows scripts: generic publish.cmd <rid> [tfm] helper, pushd/quoted paths, RID validation, abort-on-error, only .NET SDK needed.
  • Release packaging: package_release.sh with all 9 RIDs, legacy split archive, checksums.txt (SHA-256).
  • CI: .NET 10, native runners per platform, pinned SDK (global.json), NuGet caching, per-target timeouts, SHA-pinned actions, Windows‑only UUPSort job, tag‑driven release job.
  • Misc: .gitattributes CRLF for *.cmd/*.bat, CHANGELOG.md, global.json, docs (EN/ES) updated, version bumped to 3.2.4.0.

Verification

  • CI: 10/10 jobs success (run #38455804089)
  • Release: v3.2.4.0 published with 3 assets (zip, legacy zip, checksums)
  • All .cmd scripts smoke‑tested under Wine
  • Checksums match between local build and release assets

BENDER35 and others added 11 commits October 13, 2026 14:17
- TempManager: fall back to Path.GetTempPath() when TEMP is not set,
  fixing out-of-the-box crashes on Linux/macOS
- Add publish_linux.sh to build single-file Linux binaries (x64/arm64)
- README, README.es.md: dependencies, Windows 10 support lifecycle
  (EOL 2025-10-14, consumer ESU until 2027-10-12, commercial ESU to
  Oct 2028) and Windows Update root certificate rotation warning
  (May 17 / June 19, 2027) for Win7-Win10 without ESU
- Add technical guides: docs/TECHNICAL_GUIDE.md, docs/GUIA_TECNICA.md
- Bump version to 3.2.0.0
- get-builds/BuildFetcher: Beta & Release Preview now use ge_release (GE),
  Dev/Canary use rs_prerelease; add Windows 11 retail entries (NI/GE).
- Remove misleading 'Insider Slow/Fast (RS2)' presets: Windows 10 1703
  (rs2_release) and older are no longer served; oldest available is 1709.
- Retry get-builds once when the servers return an empty set (rate limiting).
- README/ES + technical guides: corrected channel/branch table, note that
  1703 is retired and that the official Insider ISO page now only offers Win11.
- request-download: retry once when the servers return an empty set, so a
  valid Beta/insider request no longer spuriously fails with 'No updates found'.
- get-builds: add 'Beta (Windows 10)' preset (still served, latest 22H2).
- README/ES + technical guides: document Windows 10 Beta (10.0.19045.6396),
  the request-download retry and the current Windows 11 Beta build.
- package_release.sh: reproducible release zip (linux-x64, linux-arm64, win-x64
  + docs). Bump version to 3.2.1.0.
- package_release.sh / publish_linux.sh: '--self-contained false' was being
  ignored and produced 75 MB self-contained binaries; set -p:SelfContained=true
  explicitly so the intent is clear.
- README/ES: the published binaries are self-contained, so no .NET runtime is
  required (only the bundled libwim.so).
Windows 10 22H2 reached end of support on 2025-10-14, so the monthly
updates released afterwards are only offered to devices enrolled in the
ESU programme. Add a new `-u/--esu` option to `request-download` and a
`Retail (Windows 10 ESU)` preset to `get-builds` that report the ESU
eligibility attributes in the CTAC DeviceAttributes, making the servers
hand out the ESU build (e.g. 10.0.19045.7727) for x86, amd64 and arm64.

- CTAC: new `IsEsu` flag appends Win10ConsumerESUStatus/ESUAY and the
  commercial ESU eligibility attributes to DeviceAttributes.
- UUPDownload: `-u/--esu`, wired through ParseDownloadOptions.
- RingCheck/BuildFetcher: new "Retail (Windows 10 ESU)" preset.
- Docs (EN/ES): branch-table row, note and verification entry.
- Version bump to 3.2.2.0.
- publish_win_x86.cmd: 32-bit build mirroring publish_win_x64.cmd.
- publish_win_legacy.cmd: builds x86+x64 for Windows 7 SP1 / 8 / 8.1 by
  targeting net6.0 (the last .NET runtime that runs on Windows 7 SP1),
  self-contained single-file executables.
- Directory.Build.props: add UUPMediaTargetFramework property (defaults to
  net10.0) and use it as TargetFramework in every CLI-dependency project, so
  the default build is unchanged but the legacy build can select net6.0.
- Cross-target compatibility shims so the code also compiles on net6.0:
  IntPtr <-> long/char casts, new(-1) for IntPtr, .AsEnumerable().Reverse()
  for arrays, and a #if NET7_0_OR_GREATER guard for [GeneratedRegex].
- Document the Windows publish scripts and the legacy build (EN/ES README and
  technical guides).
- Bump version to 3.2.3.0.
- package_release.sh now also publishes win-x86 and the legacy (.NET 6)
  win-legacy-x64 / win-legacy-x86 self-contained executables.
- Bump setup-dotnet to 10.0.x and build via 'dotnet msbuild' so the SDK
  used matches the installed one (drops the desktop setup-msbuild step,
  which can lag behind and fail to resolve net10.0).
- Rebuild the RID matrix as explicit entries and add the legacy Windows 7
  targets win-legacy-x86/win-legacy-x64 (UUPMediaTargetFramework=net6.0,
  LangVersion=latest), mirroring publish_win_legacy.cmd.
- Add osx-arm64 to RuntimeIdentifiers of both CLI apps so the declared
  RIDs match the CI matrix.
- Publish with SelfContained/PublishSingleFile/PublishTrimmed and upload
  per-variant binary and symbol artifacts.
Windows scripts
- Add a generic publish.cmd <rid> [tfm] helper and turn every
  publish_win_*.cmd / publish_linux_x64.cmd into a thin wrapper.
- The scripts now pushd to their own directory, quote every path (so they
  survive spaces in the path), validate the RID, and abort on the first
  error.
- Use "dotnet msbuild" instead of desktop MSBuild: only the .NET SDK is
  required (no Visual Studio), and the whole .sln (with its Windows-only
  projects) is no longer touched.

Release packaging (package_release.sh)
- Ship win-arm64, osx-x64 and osx-arm64 in addition to the existing RIDs.
- Split the legacy (.NET 6, Windows 7 SP1+) binaries into their own
  archive and write checksums.txt (SHA-256).
- Check for the required tools (dotnet, zip, unzip, sha256sum) and use
  "zip -X".

CI
- Build on .NET 10 with native runners per platform, a pinned SDK
  (global.json), NuGet caching, per-target timeouts and a concurrency
  group.
- Pin the GitHub actions to commit SHAs.
- Add a job that builds the full solution (Windows-only dev tools) and a
  tag-driven job that assembles and publishes the release archives.

Misc
- Force CRLF for *.cmd / *.bat in .gitattributes.
- Add CHANGELOG.md and global.json.

Version bumped to 3.2.4.0.
The full solution cannot build on GitHub-hosted runners: CsWinRT fails
with "Could not read the Windows SDK's Platform.xml" for
Windows.Internal.Flighting (and Playground, which depends on it), because
the runner lacks the Windows 10 SDK UAP platform. Cabinet and CompDB are
already compiled as dependencies of the CLIs, so build the Windows-only
UUPSort tool (which exercises the net10.0-windows TFM) and document the
exclusion.
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