Przeglądaj źródła

feat: Display Windows version (#109)

Kroese 1 rok temu
rodzic
commit
6b31a9d943
1 zmienionych plików z 61 dodań i 26 usunięć
  1. 61 26
      src/install.sh

+ 61 - 26
src/install.sh

@@ -79,6 +79,25 @@ FB="falling back to manual installation!"
 ETFS="boot/etfsboot.com"
 EFISYS="efi/microsoft/boot/efisys_noprompt.bin"
 
+printVersion() {
+
+  local id="$1"
+  local desc=""
+
+  [[ "$id" == "win7"* ]] && desc="Windows 7"
+  [[ "$id" == "win8"* ]] && desc="Windows 8"
+  [[ "$id" == "win10"* ]] && desc="Windows 10"
+  [[ "$id" == "win11"* ]] && desc="Windows 11"
+  [[ "$id" == "winvista"* ]] && desc="Windows Vista"
+  [[ "$id" == "win2022"* ]] && desc="Windows Server 2022"
+  [[ "$id" == "win2019"* ]] && desc="Windows Server 2019"
+  [[ "$id" == "win2016"* ]] && desc="Windows Server 2016"
+  [[ "$id" == "win10x64-ltsc" ]] && desc="Windows 10 LTSC"
+
+  echo "$desc"
+  return 0
+}
+
 replaceXML() {
 
   local dir="$1"
@@ -158,7 +177,7 @@ abortInstall() {
 
 startInstall() {
 
-  local magic
+  local magic desc
   local msg="Windows is being started, please wait..."
 
   if [ -f "$STORAGE/$CUSTOM" ]; then
@@ -181,7 +200,10 @@ startInstall() {
       BASE="$VERSION.iso"
 
       if ! skipInstall && [ ! -f "$STORAGE/$BASE" ]; then
-        msg="Windows is being downloaded, please wait..."
+      
+        desc=$(printVersion "$VERSION")
+        [ -z "$desc" ] && desc="Windows"
+        msg="$desc is being downloaded, please wait..."
       fi
 
     else
@@ -282,9 +304,15 @@ extractImage() {
 
   local iso="$1"
   local dir="$2"
+  local desc="downloaded ISO"
   local size size_gb space space_gb
 
-  local msg="Extracting downloaded ISO image..."
+  if [[ "$EXTERNAL" != [Yy1]* ]] && [ -z "$CUSTOM" ]; then
+    desc=$(printVersion "$VERSION")
+    [ -z "$desc" ] && desc="downloaded ISO"
+  fi
+
+  local msg="Extracting $desc image..."
   [ -n "$CUSTOM" ] && msg="Extracting local ISO image..."
   info "$msg" && html "$msg"
 
@@ -311,14 +339,14 @@ extractImage() {
   return 0
 }
 
-findVersion() {
+getVersion() {
 
   local name="$1"
   local detected=""
 
-  [[ "${name,,}" == *"windows 11"* ]] && detected="win11x64"
-  [[ "${name,,}" == *"windows 8"* ]] && detected="win81x64"
   [[ "${name,,}" == *"windows 7"* ]] && detected="win7x64"
+  [[ "${name,,}" == *"windows 8"* ]] && detected="win81x64"
+  [[ "${name,,}" == *"windows 11"* ]] && detected="win11x64"
   [[ "${name,,}" == *"windows vista"* ]] && detected="winvistax64"
   [[ "${name,,}" == *"server 2022"* ]] && detected="win2022-eval"
   [[ "${name,,}" == *"server 2019"* ]] && detected="win2019-eval"
@@ -349,18 +377,24 @@ detectImage() {
   fi
 
   if [ -n "$DETECTED" ]; then
+
     if [ -f "/run/assets/$DETECTED.xml" ]; then
       [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
       return 0
     fi
-    warn "image type is '$DETECTED', but no matching XML file exists!"
+
+    local dsc
+    dsc=$(printVersion "$DETECTED")
+    [ -z "$dsc" ] && dsc="$DETECTED"
+
+    warn "got $desc, but no matching XML file exists, $FB."
     return 0
   fi
 
   info "Detecting Windows version from ISO image..."
 
   local dir="$1"
-  local tag result name name2
+  local tag result name name2 desc
   local loc="$dir/sources/install.wim"
   [ ! -f "$loc" ] && loc="$dir/sources/install.esd"
 
@@ -373,35 +407,33 @@ detectImage() {
   tag="DISPLAYNAME"
   result=$(wimlib-imagex info -xml "$loc" | tr -d '\000')
   name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$result")
-  DETECTED=$(findVersion "$name")
+  DETECTED=$(getVersion "$name")
 
   if [ -z "$DETECTED" ]; then
 
     tag="PRODUCTNAME"
     name2=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$result")
     [ -z "$name" ] && name="$name2"
-    DETECTED=$(findVersion "$name2")
+    DETECTED=$(getVersion "$name2")
 
   fi
 
-  if [ -n "$DETECTED" ]; then
+  if [ -z "$DETECTED" ]; then
+    warn "failed to determine Windows version from string '$name', $FB"
+    return 0
+  fi
 
-    if [ -f "/run/assets/$DETECTED.xml" ]; then
-      [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
-      info "Detected image of type: '$DETECTED'"
-    else
-      warn "detected image of type '$DETECTED', but no matching XML file exists, $FB."
-    fi
+  desc=$(printVersion "$DETECTED")
+  [ -z "$desc" ] && desc="$DETECTED"
 
+  if [ -f "/run/assets/$DETECTED.xml" ]; then
+    [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
+    info "Detected: $desc"
   else
-
-    if [ -z "$name" ]; then
-      warn "failed to determine Windows version from image, $FB"
-    else
-      warn "failed to determine Windows version from string '$name', $FB"
-    fi
-
+    warn "detected $desc, but no matching XML file exists, $FB."
   fi
+
+  return 0
 }
 
 prepareImage() {
@@ -482,13 +514,16 @@ buildImage() {
   local cat="BOOT.CAT"
   local label="${BASE%.*}"
   local log="/run/shm/iso.log"
-  local size size_gb space space_gb
+  local size size_gb space space_gb desc
 
   label="${label::30}"
   local out="$TMP/$label.tmp"
   rm -f "$out"
 
-  local msg="Updating ISO image..."
+  desc=$(printVersion "$DETECTED")
+  [ -z "$desc" ] && desc="ISO"
+
+  local msg="Building $desc image..."
   info "$msg" && html "$msg"
 
   size=$(du -h -b --max-depth=0 "$dir" | cut -f1)