From 377337a62558397eb96996c48fef00e604de3746 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 21 Jul 2026 17:27:54 +0200 Subject: [PATCH] feat: Improve LTSC and IoT edition handling (#1926) --- assets/win10x64-iot.xml | 8 +- assets/win10x64-ltsc.xml | 9 +-- assets/win7x64-enterprise-eval.xml | 2 +- assets/win7x64-enterprise.xml | 2 +- assets/win7x64-ultimate.xml | 2 +- assets/win7x64.xml | 2 +- assets/win7x86-enterprise.xml | 2 +- assets/win7x86-ultimate.xml | 2 +- assets/win7x86.xml | 2 +- src/define.sh | 115 +++++++++++++++++------------ src/install.sh | 20 ++++- src/mido.sh | 53 ++++++++++--- 12 files changed, 136 insertions(+), 83 deletions(-) diff --git a/assets/win10x64-iot.xml b/assets/win10x64-iot.xml index 39cfe05a..89f3dcd6 100644 --- a/assets/win10x64-iot.xml +++ b/assets/win10x64-iot.xml @@ -61,12 +61,6 @@ - - - /image/index - 2 - - 0 3 @@ -87,7 +81,7 @@ Docker Windows for Docker - + KBN8V-HFGQ4-MGXVD-347P6-PDQGT false diff --git a/assets/win10x64-ltsc.xml b/assets/win10x64-ltsc.xml index 4b6b3733..a6bc30b1 100644 --- a/assets/win10x64-ltsc.xml +++ b/assets/win10x64-ltsc.xml @@ -61,12 +61,6 @@ - - - /image/index - 1 - - 0 3 @@ -86,6 +80,9 @@ true Docker Windows for Docker + + M7XTQ-FN8P6-TTKYV-9D4CC-J462D + false diff --git a/assets/win7x64-enterprise-eval.xml b/assets/win7x64-enterprise-eval.xml index 86c0ccc3..b93fff24 100644 --- a/assets/win7x64-enterprise-eval.xml +++ b/assets/win7x64-enterprise-eval.xml @@ -280,7 +280,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x64-enterprise.xml b/assets/win7x64-enterprise.xml index 841d319a..4f266e5f 100644 --- a/assets/win7x64-enterprise.xml +++ b/assets/win7x64-enterprise.xml @@ -284,7 +284,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x64-ultimate.xml b/assets/win7x64-ultimate.xml index 45028d88..7e4a96c7 100644 --- a/assets/win7x64-ultimate.xml +++ b/assets/win7x64-ultimate.xml @@ -284,7 +284,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x64.xml b/assets/win7x64.xml index 6bd03cb9..8e4de788 100644 --- a/assets/win7x64.xml +++ b/assets/win7x64.xml @@ -284,7 +284,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x86-enterprise.xml b/assets/win7x86-enterprise.xml index 09319835..02ff34d6 100644 --- a/assets/win7x86-enterprise.xml +++ b/assets/win7x86-enterprise.xml @@ -275,7 +275,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x86-ultimate.xml b/assets/win7x86-ultimate.xml index 0d01a857..b40033cc 100644 --- a/assets/win7x86-ultimate.xml +++ b/assets/win7x86-ultimate.xml @@ -275,7 +275,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/assets/win7x86.xml b/assets/win7x86.xml index d9eb4593..1b8cb27e 100644 --- a/assets/win7x86.xml +++ b/assets/win7x86.xml @@ -275,7 +275,7 @@ 17 cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data Create desktop shortcut to shared folder - + 18 cmd /C net use Z: \\host.lan\Data /persistent:yes diff --git a/src/define.sh b/src/define.sh index 8eab982b..bd885f9c 100644 --- a/src/define.sh +++ b/src/define.sh @@ -52,28 +52,28 @@ parseVersion() { "11e" | "win11e" | "windows11e" | "windows 11e" ) VERSION="win11x64-enterprise-eval" ;; - "11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" ) - VERSION="win11x64-enterprise-iot-eval" - [ -z "$DETECTED" ] && DETECTED="win11x64-iot" - ;; "11l" | "11ltsc" | "ltsc11" | "win11l" | "win11-ltsc" | "win11x64-ltsc" ) VERSION="win11x64-enterprise-ltsc-eval" [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc" ;; + "11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" ) + VERSION="win11x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win11x64-iot" + ;; "10" | "10p" | "win10" | "pro10" | "win10p" | "windows10" | "windows 10" ) VERSION="win10x64" ;; "10e" | "win10e" | "windows10e" | "windows 10e" ) VERSION="win10x64-enterprise-eval" ;; - "10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" ) - VERSION="win10x64-enterprise-iot-eval" - [ -z "$DETECTED" ] && DETECTED="win10x64-iot" - ;; "10l" | "10ltsc" | "ltsc10" | "win10l" | "win10-ltsc" | "win10x64-ltsc" ) VERSION="win10x64-enterprise-ltsc-eval" [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc" ;; + "10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" ) + VERSION="win10x64-enterprise-iot-eval" + [ -z "$DETECTED" ] && DETECTED="win10x64-iot" + ;; "8" | "8p" | "81" | "81p" | "pro8" | "8.1" | "win8" | "win8p" | "win81" | "win81p" | "windows 8" ) VERSION="win81x64" ;; @@ -451,6 +451,18 @@ printVersion() { [[ "${PLATFORM,,}" != "x64" ]] && desc+=" for ${PLATFORM}" fi + case "${id,,}" in + *"-iot" | *"-iot-eval" ) + desc+=" IoT" + ;; + *"-ltsc" | *"-ltsc-eval" ) + desc+=" LTSC" + ;; + *"-enterprise" | *"-enterprise-eval" ) + desc+=" Enterprise" + ;; + esac + echo "$desc" return 0 } @@ -485,10 +497,10 @@ printEdition() { edition="2019" ;; *"-iot" | *"-iot-eval" ) - edition="LTSC" + edition="IoT Enterprise LTSC" ;; *"-ltsc" | *"-ltsc-eval" ) - edition="LTSC" + edition="Enterprise LTSC" ;; *"-enterprise-eval" ) edition="Enterprise (Evaluation)" @@ -720,7 +732,12 @@ getMido() { sum="a61adeab895ef5a4db436e0a7011c92a2ff17bb0357f58b13bbc4062e535e7b9" url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso" ;; - "win11x64-enterprise-iot-eval" | "win11x64-enterprise-ltsc-eval" ) + "win11x64-enterprise-ltsc-eval" ) + size=5112850432 + sum="67cec5865eaa037a72ddc633a717a10a2bed50778862267223ddb9c60ef5da68" + url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_en-us.iso" + ;; + "win11x64-enterprise-iot-eval" ) size=5060020224 sum="2cee70bd183df42b92a2e0da08cc2bb7a2a9ce3a3841955a012c0f77aeb3cb29" url="https://software-static.download.prss.microsoft.com/dbazure/998969d5-f34g-4e03-ac9d-1f9786c66749/26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_IOT_LTSC_EVAL_x64FRE_en-us.iso" @@ -806,12 +823,12 @@ getLink1() { sum="f5ffe9313eebc6299fba9e6eeb2971007264e6c6be013073a89b5ae9bd85bfb3" url="11/en-us_windows_11_25h2_x64.iso" ;; - "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) + "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" ) size=5144817664 sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; - "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" ) + "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) size=5144817664 sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" @@ -821,16 +838,16 @@ getLink1() { sum="316f718f21fc9b386d81dadd62dc60268a1cfd65b184ac6a052875a454c3431b" url="10/en-us_windows_10_22h2_x64.iso" ;; - "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) - size=4851668992 - sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" - url="10/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" - ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" ) size=4899461120 sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d" url="10/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" ;; + "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) + size=4851668992 + sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" + url="10/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" + ;; "win81x64" ) size=4320526336 sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" @@ -1040,14 +1057,14 @@ getLink3() { url="nano11_25h2/nano11%2025h2.iso" ;; "core11" ) - size=3176654848 - sum="29c055fcfb7b089abd9e007e7abe4bb82c70a03aac9d65e56a38b87ab32d04d2" - url="tiny11_25H2/tiny11core_25H2_Oct25.iso" + size=3304132608 + sum="c0e0252b24144b8defb6c7ded2bc09f9297daf1fb8369b16c5b85382331eb47f" + url="tiny11_25H2/tiny11core_25H2_Nov25.iso" ;; "tiny11" ) - size=5514559488 - sum="92484f2b7f707e42383294402a9eabbadeaa5ede80ac633390ae7f3537e36275" - url="tiny11_25H2/tiny11_25H2_Oct25.iso" + size=5730246656 + sum="7b24815845684add7250808b3b0027ba4e94cf52c62e9ef40d5b965dd304d6ca" + url="tiny11_25H2/tiny11_25H2_Nov25.iso" ;; "tiny10" ) size=3839819776 @@ -1060,35 +1077,35 @@ getLink3() { url="W11x64_26200.6584/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso" ;; "win11x64-enterprise" | "win11x64-enterprise-eval" ) - size=6209064960 - sum="c8dbc96b61d04c8b01faf6ce0794fdf33965c7b350eaa3eb1e6697019902945c" - url="Windows11Enterprise23H2x64/22631.2428.231001-0608.23H2_NI_RELEASE_SVC_REFRESH_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso" - ;; - "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) - size=5144817664 - sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" - url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" + size=7620513792 + sum="2b65df49334b64e9341dc404e9c527bf1b2a9a105e95314a347fd29ac9900581" + url="massgrave.dev-windows-x64-and-x86-archive/en-us_windows_11_business_editions_version_25h2_x64_dvd_41c521e7.iso" ;; "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" ) size=5144817664 sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; - "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) - size=6978310144 - sum="7847abd6f39abd02dc8089c4177d354f9eb66fa0ee2fe8ae20e596e675d1ab67" - url="Windows-10-22H2-July-2024-64-bit-DVD-English/en-us_windows_10_business_editions_version_22h2_updated_july_2024_x64_dvd_c004521a.iso" + "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" ) + size=5144817664 + sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a" + url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso" ;; - "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) - size=4851668992 - sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" - url="en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_202411/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" + "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" ) + size=6985445376 + sum="2c23bc8b95a9314f15ebff881dcbea49651f52a96a0327d7aaf523aa66043765" + url="windows_10_version_2004/Windows%2010%2C%20version%2022H2/Updated%20October%202025%20%2819045.6456%29/en-us_windows_10_business_editions_version_22h2_updated_oct_2025_x64_dvd_d2eef4b0.iso" ;; "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" ) size=4899461120 sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d" url="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96_202302/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso" ;; + "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" ) + size=4851668992 + sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160" + url="en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_202411/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso" + ;; "win81x64" ) size=4320526336 sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51" @@ -1100,19 +1117,19 @@ getLink3() { url="en_windows_8.1_enterprise_with_update_x64_dvd/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso" ;; "win2025" | "win2025-eval" ) - size=6014152704 - sum="d0ef4502e350e3c6c53c15b1b3020d38a5ded011bf04998e950720ac8579b23d" - url="26100.1742.240906-0331.ge-release-svc-refresh-server-eval-x-64-fre-en-us/26100.1742.240906-0331.ge_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso" + size=8145395712 + sum="f3e277e75acdb793e6f08f4880b514ae0046cedf618c22f727890e54367075e6" + url="massgrave.dev-windows-x64-and-x86-archive/en-us_windows_server_2025_updated_dec_2025_x64_dvd_c54ab58b.iso" ;; "win2022" | "win2022-eval" ) - size=5550684160 - sum="5a077ee2a95976ef9f3623eb4040e25cdf7f8f01dee3b8165a32a7626f39f025" - url="en-us_windows_server_2022_x64_dvd_620d7eac_202405/en-us_windows_server_2022_x64_dvd_620d7eac.iso" + size=6023239680 + sum="5d6d91efa972cbdd6701d78db1dcf6a34c7024ca931c1718e7cb3d0c6dd54e88" + url="massgrave.dev-windows-x64-and-x86-archive/en-us_windows_server_2022_updated_oct_2025_x64_dvd_26e9af36.iso" ;; "win2019" | "win2019-eval" ) - size=5575774208 - sum="0067afe7fdc4e61f677bd8c35a209082aa917df9c117527fc4b2b52a447e89bb" - url="sw-dvd-9-win-server-std-core-2019-1809.18-64-bit-english-dc-std-mlf-x-22-74330/SW_DVD9_Win_Server_STD_CORE_2019_1809.18_64Bit_English_DC_STD_MLF_X22-74330.ISO" + size=5651695616 + sum="ea247e5cf4df3e5829bfaaf45d899933a2a67b1c700a02ee8141287a8520261c" + url="massgrave.dev-windows-x64-and-x86-archive/en-us_windows_server_2019_x64_dvd_f9475476.iso" ;; "win2016" | "win2016-eval" ) size=6006587392 diff --git a/src/install.sh b/src/install.sh index d780508e..54d846c4 100644 --- a/src/install.sh +++ b/src/install.sh @@ -672,15 +672,29 @@ hasVersion() { local id="$1" local tag="$2" local xml="$3" - local edition + local edition alternate="" [ ! -f "/run/assets/$id.xml" ] && return 1 edition=$(printEdition "$id" "") [ -z "$edition" ] && return 1 - [[ "${xml,,}" != *"<${tag,,}>${edition,,}"* ]] && return 1 - return 0 + [[ "${xml,,}" == *"<${tag,,}>${edition,,}"* ]] && return 0 + + case "${id,,}" in + *"-iot" | *"-iot-eval" ) + alternate="${id/-iot/-ltsc}" ;; + *"-ltsc" | *"-ltsc-eval" ) + alternate="${id/-ltsc/-iot}" ;; + * ) return 1 ;; + esac + + edition=$(printEdition "$alternate" "") + [ -z "$edition" ] && return 1 + + [[ "${xml,,}" == *"<${tag,,}>${edition,,}"* ]] && return 0 + + return 1 } selectVersion() { diff --git a/src/mido.sh b/src/mido.sh index 5953ac81..b050c47d 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -277,8 +277,8 @@ downloadWindowsEval() { type="iot" winVer="windows-11-iot-enterprise-ltsc-eval" ;; "win11${PLATFORM,,}-enterprise-ltsc-eval" ) - type="iot" - winVer="windows-11-iot-enterprise-ltsc-eval" ;; + type="ltsc" + winVer="windows-11-enterprise" ;; "win2025-eval" ) type="server" winVer="windows-server-2025" ;; @@ -343,17 +343,18 @@ downloadWindowsEval() { } case "$type" in - "iot" | "ltsc" ) + "iot" ) case "${PLATFORM,,}" in "x64" ) - if [[ "$winVer" != "windows-10"* ]]; then - link=$(echo "$links" | head -n 1) - else - link=$(echo "$links" | head -n 4 | tail -n 1) - fi ;; + link=$(echo "$links" | head -n 1) ;; "arm64" ) link=$(echo "$links" | head -n 2 | tail -n 1) ;; esac ;; + "ltsc" ) + case "${PLATFORM,,}" in + "x64" ) + link=$(echo "$links" | head -n 2 | tail -n 1) ;; + esac ;; "enterprise" ) case "${PLATFORM,,}" in "x64" ) @@ -405,7 +406,7 @@ downloadWindowsEval() { if enabled "$DEBUG" && enabled "$VERIFY" && [[ "${lang,,}" == "en"* ]]; then compare=$(getMido "$id" "$lang" "") - if [[ "${link,,}" != "${compare,,}" ]]; then + if [ -n "$compare" ] && [[ "${link,,}" != "${compare,,}" ]]; then echo "Retrieved link does not match the fixed link: $compare" fi fi @@ -414,6 +415,33 @@ downloadWindowsEval() { return 0 } +downloadWindowsLtsc() { + + local id="$1" + local lang="$2" + local desc="$3" + local alternate="" + + case "${id,,}" in + "win11${PLATFORM,,}-enterprise-iot-eval" ) + alternate="win11${PLATFORM,,}-enterprise-ltsc-eval" ;; + "win11${PLATFORM,,}-enterprise-ltsc-eval" ) + alternate="win11${PLATFORM,,}-enterprise-iot-eval" ;; + * ) error "Invalid VERSION specified, value \"$id\" is not recognized!" + return 1 ;; + esac + + if downloadWindowsEval "$id" "$lang" "$desc" > /dev/null 2>&1; then + return 0 + fi + + info "Primary download source failed, trying the alternate LTSC source..." + + downloadWindowsEval "$alternate" "$lang" "$desc" && return 0 + + return 1 +} + getWindows() { local version="$1" @@ -428,8 +456,7 @@ getWindows() { info "$msg" && html "$msg" case "${version,,}" in - "win2008r2" | "win81${PLATFORM,,}"* | "win10${PLATFORM,,}-enterprise"* | \ - "win11${PLATFORM,,}-enterprise-iot"* | "win11${PLATFORM,,}-enterprise-ltsc"* ) + "win2008r2" | "win81${PLATFORM,,}"* | "win10${PLATFORM,,}-enterprise"* ) if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then error "No download in the $language language available for $edition!" MIDO_URL="" && return 1 @@ -450,6 +477,10 @@ getWindows() { "win11${PLATFORM,,}" ) downloadWindows "$version" "$lang" "$edition" && return 0 ;; + "win11${PLATFORM,,}-enterprise-iot-eval" | \ + "win11${PLATFORM,,}-enterprise-ltsc-eval" ) + downloadWindowsLtsc "$version" "$lang" "$edition" && return 0 + ;; "win11${PLATFORM,,}-enterprise"* ) downloadWindowsEval "$version" "$lang" "$edition" && return 0 ;;