From 248c9e931413f201f1bff32949ae1f1ce6725e5b Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 7 Aug 2026 05:38:21 +0200 Subject: [PATCH] feat: Restore Windows 10 Enterprise mirror (#2092) --- docs/environment.md | 1 - readme.md | 11 ----------- src/mido.sh | 33 +++++++++++++++++---------------- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/docs/environment.md b/docs/environment.md index 7fd693aa..4bbc0679 100644 --- a/docs/environment.md +++ b/docs/environment.md @@ -159,7 +159,6 @@ Also see [Dynamic memory allocation](https://github.com/qemus/qemu/blob/master/d | `ESD` | `Y` | Enables downloading Windows through the ESD-based installation method. | | `VERIFY` | `N` | Verifies downloaded installation media against predefined checksums. | | `REMOVE` | `Y` | Deletes the downloaded Windows ISO after installation to save space. | -| `MANUAL` | `N` | Enables manual installation instead of unattended installation. | | `COMMAND` | | Command to be executed during the final step of automatic installation. | ## 🔌 Shutdown diff --git a/readme.md b/readme.md index 1fa1d117..5417640f 100644 --- a/readme.md +++ b/readme.md @@ -298,17 +298,6 @@ For a complete graphical desktop experience, see [WinBoat](https://winboat.app), The example folder `./example` will be copied to `C:\OEM` and the `install.bat` file inside it will be executed during the final step of the automatic installation. -### How do I perform a manual installation? - - It's recommended to stick to the automatic installation, as it adjusts various settings to prevent common issues when running Windows inside a virtual environment. - - However, if you insist on performing the installation manually (at your own risk), add the following environment variable to your compose file: - - ```yaml - environment: - MANUAL: "Y" - ``` - ### How do I assign an individual IP address to the container? By default, the container uses bridge networking, which shares the IP address with the host. diff --git a/src/mido.sh b/src/mido.sh index e17f52f5..7a959b2b 100644 --- a/src/mido.sh +++ b/src/mido.sh @@ -333,10 +333,13 @@ downloadWindowsEval() { local lang="$2" local desc="$3" - local culture compare type - local agent language winVer + local culture language agent winVer + local compare compare_name link_name type case "${id,,}" in + "win10${PLATFORM,,}-enterprise-eval" ) + type="enterprise" + winVer="windows-10-enterprise" ;; "win11${PLATFORM,,}-enterprise-eval" ) type="enterprise" winVer="windows-11-enterprise" ;; @@ -692,7 +695,7 @@ getWindows() { case "${version,,}" in "win2008r2"* | \ "win81${PLATFORM,,}"* | \ - "win10${PLATFORM,,}-enterprise"* | \ + "win10${PLATFORM,,}-enterprise-ltsc-eval" | \ "win11${PLATFORM,,}-enterprise-iot-eval" ) if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then error "No download in the $language language available for $edition!" @@ -730,6 +733,7 @@ getWindows() { downloadWindowsLtsc "$version" "$lang" "$edition" && return 0 ;; + "win10${PLATFORM,,}-enterprise-eval" | \ "win11${PLATFORM,,}-enterprise"* ) if downloadWindowsEval "$version" "$lang" "$edition"; then @@ -889,8 +893,6 @@ parseESD() { # Microsoft catalogs may use different XML namespaces, tag casing, and checksum # algorithms. Flatten the catalog once so all selection logic remains in Bash. - local upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ" - local lower="abcdefghijklmnopqrstuvwxyz" local lname="translate(local-name(), '$upper', '$lower')" if ! records=$(xmlstarlet sel -T -t \ @@ -1295,9 +1297,9 @@ tryDownload() { local url="$2" local sum="$3" local size="$4" - local desc="$6" - local seconds="$7" - local web_desc="$8" + local desc="$5" + local seconds="$6" + local web_desc="$7" local total minimum="104857600" @@ -1361,9 +1363,8 @@ fallbackEnglish() { local version="$2" local lang="$3" local desc="$4" - local web_desc="$5" - local culture web_msg + local culture local msg="No working download method was found for $desc, falling back to English..." info "$msg" @@ -1419,7 +1420,7 @@ downloadImage() { desc=$(fromFile "$base") web_desc="$desc" - tryDownload "$iso" "$version" "" "" "" "$desc" "$seconds" "$web_desc" || return 1 + tryDownload "$iso" "$version" "" "" "$desc" "$seconds" "$web_desc" || return 1 return 0 fi @@ -1438,7 +1439,7 @@ downloadImage() { web_desc=$(printEdition "$version" "$web_desc") desc+=" in $language" - fallbackEnglish "$iso" "$version" "$lang" "$desc" "$web_desc" || return 1 + fallbackEnglish "$iso" "$version" "$lang" "$desc" || return 1 return 0 fi @@ -1480,7 +1481,7 @@ downloadImage() { download_desc+=" using a static link" fi - if tryDownload "$iso" "$MIDO_URL" "$sum" "$size" "$lang" "$download_desc" "$seconds" "$web_desc"; then + if tryDownload "$iso" "$MIDO_URL" "$sum" "$size" "$download_desc" "$seconds" "$web_desc"; then # Commit the candidate only after the image was downloaded and verified. DETECTED="$detected" return 0 @@ -1530,7 +1531,7 @@ downloadImage() { # its real extension through the active ISO variable. ISO="${ISO%.*}.esd" - if tryDownload "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$lang" "$desc" "$seconds" "$web_desc"; then + if tryDownload "$ISO" "$ESD" "$ESD_SUM" "$ESD_SIZE" "$desc" "$seconds" "$web_desc"; then return 0 fi @@ -1553,14 +1554,14 @@ downloadImage() { size=$(getSize "$i" "$version" "$lang") sum=$(getHash "$i" "$version" "$lang") - tryDownload "$iso" "$url" "$sum" "$size" "$lang" "$desc" "$seconds" "$web_desc" && return 0 + tryDownload "$iso" "$url" "$sum" "$size" "$desc" "$seconds" "$web_desc" && return 0 fi done if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then - fallbackEnglish "$iso" "$requested" "$lang" "$desc" "$web_desc" || return 1 + fallbackEnglish "$iso" "$requested" "$lang" "$desc" || return 1 return 0 fi