Updates default Windows version to 25H2

Changes the default Windows version from 24H2 to 25H2 across the FFU development tool to reflect the latest Windows 11 release.

Adds dynamic products.cab download functionality for Windows 11 using Windows Update service API instead of static MCT links. This is due to a change in how the MCT pulls the products.cab file.
This commit is contained in:
rbalsleyMSFT
2025-10-02 17:03:09 -07:00
parent 08c9214976
commit 1daa14584a
2 changed files with 139 additions and 31 deletions
@@ -126,7 +126,7 @@ $script:mctWindowsReleases = @(
$script:windowsVersionMap = @{
10 = @("22H2")
11 = @("22H2", "23H2", "24H2", "25H2")
11 = @("25H2", "24H2", "23H2", "22H2")
2016 = @("1607") # Windows 10 LTSB 2016 & Server 2016
2019 = @("1809") # Windows 10 LTSC 2019 & Server 2019
# Note: Server 2016 and LTSB 2016 now share the key 2016, mapping to version "1607"
@@ -268,10 +268,15 @@ function Get-AvailableWindowsVersions {
# Logic for when an ISO is specified
$result.Versions = $validVersions
# Set default selection logic (e.g., latest for Win11)
if ($SelectedRelease -eq 11 -and $validVersions -contains "24H2") {
$result.DefaultVersion = "24H2"
if ($SelectedRelease -eq 11) {
if ($validVersions -contains "25H2") {
$result.DefaultVersion = "25H2"
}
elseif ($validVersions -contains "24H2") {
$result.DefaultVersion = "24H2"
}
}
elseif ($validVersions.Count -gt 0) {
if (-not $result.DefaultVersion -and $validVersions.Count -gt 0) {
$result.DefaultVersion = $validVersions[0]
}
$result.IsEnabled = $true
@@ -280,7 +285,7 @@ function Get-AvailableWindowsVersions {
# Logic for when no ISO is specified (MCT scenario)
switch ($SelectedRelease) {
10 { $result.DefaultVersion = "22H2" }
11 { $result.DefaultVersion = "24H2" }
11 { $result.DefaultVersion = "25H2" }
# Server versions typically require an ISO, but handle just in case
2016 { $result.DefaultVersion = "1607" }
2019 { $result.DefaultVersion = "1809" }
@@ -515,7 +520,7 @@ function Update-WindowsArchCombo {
}
else {
# Standard Windows 11
if ($versionValue -eq '24H2') {
if ($versionValue -in @('24H2', '25H2')) {
$availableArchitectures = @('x64', 'arm64')
}
else {