From da2ab9ab0dcf69b9a0331bb13f5b8e36dd24d542 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 28 May 2024 11:08:47 +0200 Subject: [PATCH] Update define.sh --- src/define.sh | 143 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 94 insertions(+), 49 deletions(-) diff --git a/src/define.sh b/src/define.sh index dbf1481..ed89746 100644 --- a/src/define.sh +++ b/src/define.sh @@ -1977,55 +1977,6 @@ migrateFiles() { return 0 } -skipVersion() { - - local version="$1" - - case "${version,,}" in - "win2003"* | "win2k"* | "winxp"* | "win9"* ) - return 0 - ;; - esac - - return 1 -} - -detectLegacy() { - - local dir="$1" - local find find2 - - find=$(find "$dir" -maxdepth 1 -type d -iname win95 | head -n 1) - [ -n "$find" ] && DETECTED="win95" && return 0 - - find=$(find "$dir" -maxdepth 1 -type d -iname win98 | head -n 1) - [ -n "$find" ] && DETECTED="win98" && return 0 - - find=$(find "$dir" -maxdepth 1 -type d -iname win9x | head -n 1) - [ -n "$find" ] && DETECTED="win9x" && return 0 - - find=$(find "$dir" -maxdepth 1 -type f -iname cdrom_nt.5 | head -n 1) - [ -n "$find" ] && DETECTED="win2k" && return 0 - - find=$(find "$dir" -maxdepth 1 -type d -iname win51 | head -n 1) - find2=$(find "$dir" -maxdepth 1 -type f -iname setupxp.htm | head -n 1) - - if [ -n "$find" ] || [ -n "$find2" ] || [ -f "$dir/WIN51AP" ] || [ -f "$dir/WIN51IC" ]; then - [ -d "$dir/AMD64" ] && DETECTED="winxpx64" && return 0 - DETECTED="winxpx86" && return 0 - fi - - if [ -f "$dir/WIN51IA" ] || [ -f "$dir/WIN51IB" ] || [ -f "$dir/WIN51ID" ] || [ -f "$dir/WIN51IL" ] || [ -f "$dir/WIN51IS" ]; then - DETECTED="win2003r2" && return 0 - fi - - if [ -f "$dir/WIN51AA" ] || [ -f "$dir/WIN51AD" ] || [ -f "$dir/WIN51AS" ] || [ -f "$dir/WIN51MA" ] || [ -f "$dir/WIN51MD" ]; then - DETECTED="win2003r2" && return 0 - fi - - return 1 -} - prepareInstall() { local dir="$2" @@ -2340,4 +2291,98 @@ prepareLegacy() { return 1 } +detectLegacy() { + + local dir="$1" + local find find2 + + find=$(find "$dir" -maxdepth 1 -type d -iname win95 | head -n 1) + [ -n "$find" ] && DETECTED="win95" && return 0 + + find=$(find "$dir" -maxdepth 1 -type d -iname win98 | head -n 1) + [ -n "$find" ] && DETECTED="win98" && return 0 + + find=$(find "$dir" -maxdepth 1 -type d -iname win9x | head -n 1) + [ -n "$find" ] && DETECTED="win9x" && return 0 + + find=$(find "$dir" -maxdepth 1 -type f -iname cdrom_nt.5 | head -n 1) + [ -n "$find" ] && DETECTED="win2k" && return 0 + + find=$(find "$dir" -maxdepth 1 -type d -iname win51 | head -n 1) + find2=$(find "$dir" -maxdepth 1 -type f -iname setupxp.htm | head -n 1) + + if [ -n "$find" ] || [ -n "$find2" ] || [ -f "$dir/WIN51AP" ] || [ -f "$dir/WIN51IC" ]; then + [ -d "$dir/AMD64" ] && DETECTED="winxpx64" && return 0 + DETECTED="winxpx86" && return 0 + fi + + if [ -f "$dir/WIN51IA" ] || [ -f "$dir/WIN51IB" ] || [ -f "$dir/WIN51ID" ] || [ -f "$dir/WIN51IL" ] || [ -f "$dir/WIN51IS" ]; then + DETECTED="win2003r2" && return 0 + fi + + if [ -f "$dir/WIN51AA" ] || [ -f "$dir/WIN51AD" ] || [ -f "$dir/WIN51AS" ] || [ -f "$dir/WIN51MA" ] || [ -f "$dir/WIN51MD" ]; then + DETECTED="win2003r2" && return 0 + fi + + return 1 +} + +skipVersion() { + + local id="$1" + + case "${id,,}" in + "win9"* | "winxp"* | "win2k"* | "win2003"* ) + return 0 ;; + esac + + return 1 +} + +setMachine() { + + local id="$1" + local iso="$2" + local dir="$3" + local desc="" + + desc=$(printVersion "$id" "$id") + + case "${id,,}" in + "win9"* | "win2k"* ) + MACHINE="pc-i440fx-2.4" ;; + "winxp"* | "win2003"* | "winvistax86"* | "win7x86"* ) + MACHINE="pc-q35-2.10" ;; + esac + + case "${id,,}" in + "win9"* | "win2k"* | "winxp"* | "win2003"* ) + HV="N" + BOOT_MODE="windows_legacy" ;; + "winvista"* | "win7"* | "win2008"* ) + BOOT_MODE="windows_legacy" ;; + esac + + case "${id,,}" in + "win9"* ) + DISK_TYPE="auto" + ETFS="[BOOT]/Boot-1.44M.img" ;; + "win2k"* ) + DISK_TYPE="auto" + ETFS="[BOOT]/Boot-NoEmul.img" ;; + "winxp"* ) + DISK_TYPE="blk" + if ! prepareXP "$iso" "$dir" "$desc"; then + error "Failed to prepare $desc ISO!" && return 1 + fi ;; + "win2003"* ) + DISK_TYPE="blk" + if ! prepare2k3 "$iso" "$dir" "$desc"; then + error "Failed to prepare $desc ISO!" && return 1 + fi ;; + esac + + return 0 +} + return 0