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. | | `ESD` | `Y` | Enables downloading Windows through the ESD-based installation method. |
| `VERIFY` | `N` | Verifies downloaded installation media against predefined checksums. | | `VERIFY` | `N` | Verifies downloaded installation media against predefined checksums. |
| `REMOVE` | `Y` | Deletes the downloaded Windows ISO after installation to save space. | | `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. | | `COMMAND` | | Command to be executed during the final step of automatic installation. |
## 🔌 Shutdown ## 🔌 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. 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? ### 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. 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 lang="$2"
local desc="$3" local desc="$3"
local culture compare type local culture language agent winVer
local agent language winVer local compare compare_name link_name type
case "${id,,}" in case "${id,,}" in
"win10${PLATFORM,,}-enterprise-eval" )
type="enterprise"
winVer="windows-10-enterprise" ;;
"win11${PLATFORM,,}-enterprise-eval" ) "win11${PLATFORM,,}-enterprise-eval" )
type="enterprise" type="enterprise"
winVer="windows-11-enterprise" ;; winVer="windows-11-enterprise" ;;
@@ -692,7 +695,7 @@ getWindows() {
case "${version,,}" in case "${version,,}" in
"win2008r2"* | \ "win2008r2"* | \
"win81${PLATFORM,,}"* | \ "win81${PLATFORM,,}"* | \
"win10${PLATFORM,,}-enterprise"* | \ "win10${PLATFORM,,}-enterprise-ltsc-eval" | \
"win11${PLATFORM,,}-enterprise-iot-eval" ) "win11${PLATFORM,,}-enterprise-iot-eval" )
if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then
error "No download in the $language language available for $edition!" error "No download in the $language language available for $edition!"
@@ -730,6 +733,7 @@ getWindows() {
downloadWindowsLtsc "$version" "$lang" "$edition" && return 0 ;; downloadWindowsLtsc "$version" "$lang" "$edition" && return 0 ;;
"win10${PLATFORM,,}-enterprise-eval" | \
"win11${PLATFORM,,}-enterprise"* ) "win11${PLATFORM,,}-enterprise"* )
if downloadWindowsEval "$version" "$lang" "$edition"; then if downloadWindowsEval "$version" "$lang" "$edition"; then
@@ -889,8 +893,6 @@ parseESD() {
# Microsoft catalogs may use different XML namespaces, tag casing, and checksum # Microsoft catalogs may use different XML namespaces, tag casing, and checksum
# algorithms. Flatten the catalog once so all selection logic remains in Bash. # 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')" local lname="translate(local-name(), '$upper', '$lower')"
if ! records=$(xmlstarlet sel -T -t \ if ! records=$(xmlstarlet sel -T -t \
@@ -1295,9 +1297,9 @@ tryDownload() {
local url="$2" local url="$2"
local sum="$3" local sum="$3"
local size="$4" local size="$4"
local desc="$6" local desc="$5"
local seconds="$7" local seconds="$6"
local web_desc="$8" local web_desc="$7"
local total minimum="104857600" local total minimum="104857600"
@@ -1361,9 +1363,8 @@ fallbackEnglish() {
local version="$2" local version="$2"
local lang="$3" local lang="$3"
local desc="$4" 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..." local msg="No working download method was found for $desc, falling back to English..."
info "$msg" info "$msg"
@@ -1419,7 +1420,7 @@ downloadImage() {
desc=$(fromFile "$base") desc=$(fromFile "$base")
web_desc="$desc" web_desc="$desc"
tryDownload "$iso" "$version" "" "" "" "$desc" "$seconds" "$web_desc" || return 1 tryDownload "$iso" "$version" "" "" "$desc" "$seconds" "$web_desc" || return 1
return 0 return 0
fi fi
@@ -1438,7 +1439,7 @@ downloadImage() {
web_desc=$(printEdition "$version" "$web_desc") web_desc=$(printEdition "$version" "$web_desc")
desc+=" in $language" desc+=" in $language"
fallbackEnglish "$iso" "$version" "$lang" "$desc" "$web_desc" || return 1 fallbackEnglish "$iso" "$version" "$lang" "$desc" || return 1
return 0 return 0
fi fi
@@ -1480,7 +1481,7 @@ downloadImage() {
download_desc+=" using a static link" download_desc+=" using a static link"
fi 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. # Commit the candidate only after the image was downloaded and verified.
DETECTED="$detected" DETECTED="$detected"
return 0 return 0
@@ -1530,7 +1531,7 @@ downloadImage() {
# its real extension through the active ISO variable. # its real extension through the active ISO variable.
ISO="${ISO%.*}.esd" 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 return 0
fi fi
@@ -1553,14 +1554,14 @@ downloadImage() {
size=$(getSize "$i" "$version" "$lang") size=$(getSize "$i" "$version" "$lang")
sum=$(getHash "$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 fi
done done
if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then if [[ "${lang,,}" != "en" && "${lang,,}" != "en-"* ]]; then
fallbackEnglish "$iso" "$requested" "$lang" "$desc" "$web_desc" || return 1 fallbackEnglish "$iso" "$requested" "$lang" "$desc" || return 1
return 0 return 0
fi fi