feat: Restore Windows 10 Enterprise mirror (#2092)

This commit is contained in:
Kroese
2026-08-07 05:38:21 +02:00
committed by GitHub
parent 976c22fcc2
commit 248c9e9314
3 changed files with 17 additions and 28 deletions
-1
View File
@@ -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
-11
View File
@@ -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.
+17 -16
View File
@@ -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