From 8c148ebbf1a0c446f17f6896b312440da19ba54f Mon Sep 17 00:00:00 2001 From: Kroese Date: Fri, 16 Feb 2024 14:38:00 +0100 Subject: [PATCH] feat: Match files case insensitive (#172) --- src/install.sh | 81 ++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 49 deletions(-) diff --git a/src/install.sh b/src/install.sh index bf1db33..911a547 100644 --- a/src/install.sh +++ b/src/install.sh @@ -90,15 +90,9 @@ if [[ "${VERSION,,}" == "tiny10" ]]; then VERSION="https://archive.org/download/tiny-10-23-h2/tiny10%20x64%2023h2.iso" fi -CUSTOM="custom.iso" - -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="Custom.iso" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="custom.ISO" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="CUSTOM.ISO" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="custom.img" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="Custom.img" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="custom.IMG" -[ ! -f "$STORAGE/$CUSTOM" ] && CUSTOM="CUSTOM.IMG" +CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.iso -printf "%f\n" | head -n 1) +[ -z "$CUSTOM" ] && CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname boot.iso -printf "%f\n" | head -n 1) +[ -z "$CUSTOM" ] && CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.img -printf "%f\n" | head -n 1) ESD_URL="" MACHINE="q35" @@ -205,31 +199,6 @@ getVersion() { return 0 } -replaceXML() { - - local dir="$1" - local asset="$2" - - local path="$dir/autounattend.xml" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/Autounattend.xml" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/AutoUnattend.xml" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/autounattend.XML" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/Autounattend.XML" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/AutoUnattend.XML" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/AUTOUNATTEND.xml" - [ -f "$path" ] && cp "$asset" "$path" - path="$dir/AUTOUNATTEND.XML" - [ -f "$path" ] && cp "$asset" "$path" - - return 0 -} - hasDisk() { [ -b "${DEVICE:-}" ] && return 0 @@ -313,6 +282,7 @@ startInstall() { fi + [[ "${BASE,,}" == "boot."* ]] && BASE="windows.iso" [[ "${BASE,,}" == "custom."* ]] && BASE="windows.iso" fi @@ -681,12 +651,19 @@ detectImage() { return 0 fi + local src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1) + + if [ ! -d "$src" ]; then + warn "failed to locate 'sources' folder in ISO image, $FB" + BOOT_MODE="windows_legacy" + return 1 + fi + local tag result name name2 desc - local loc="$dir/sources/install.wim" - [ ! -f "$loc" ] && loc="$dir/sources/install.esd" + local loc=$(find "$src" -maxdepth 1 -type f -iname install.wim | head -n 1) + [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname install.esd | head -n 1) if [ ! -f "$loc" ]; then - warn "failed to locate 'install.wim' or 'install.esd' in ISO image, $FB" BOOT_MODE="windows_legacy" return 1 @@ -786,17 +763,10 @@ prepareXP() { sed -i '/^\[SCSI\]/s/$/\niaStor=\"Intel\(R\) SATA RAID\/AHCI Controller\"/' "$target/TXTSETUP.SIF" sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_8086\&DEV_2922\&CC_0106=\"iaStor\"/' "$target/TXTSETUP.SIF" - rm -f "$target/winnt.sif" - rm -f "$target/Winnt.sif" - rm -f "$target/winnt.SIF" - rm -f "$target/WinNT.sif" - rm -f "$target/WINNT.sif" - rm -f "$target/WINNT.SIF" - local key="M6TF9-8XQ2M-YQK9F-7TBB2-XGG88" [[ "${arch,,}" == "amd64" ]] && key="B66VY-4D94T-TPPD4-43F72-8X4FY" - local sif="$target/WINNT.SIF" + find "$target" -maxdepth 1 -type f -iname winnt.sif -exec rm {} \; { echo "[Data]" echo "AutoPartition=1" @@ -851,8 +821,9 @@ prepareXP() { echo "" echo "[TerminalServices]" echo "AllowConnections=1" - } | unix2dos > "$sif" + } | unix2dos > "$target/WINNT.SIF" + rm -rf "$drivers" return 0 } @@ -864,6 +835,8 @@ prepareLegacy() { ETFS="boot.img" BOOT_MODE="windows_legacy" + rm -f "$dir/$ETFS" + local len offset len=$(isoinfo -d -i "$iso" | grep "Nsect " | grep -o "[^ ]*$") offset=$(isoinfo -d -i "$iso" | grep "Bootoff " | grep -o "[^ ]*$") @@ -922,10 +895,20 @@ updateImage() { local index result [ ! -f "$asset" ] && return 0 - replaceXML "$dir" "$asset" - local loc="$dir/sources/boot.wim" - [ ! -f "$loc" ] && loc="$dir/sources/boot.esd" + local path=$(find "$dir" -maxdepth 1 -type f -iname autounattend.xml | head -n 1) + [ -n "$path" ] && cp "$asset" "$path" + + local src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1) + + if [ ! -d "$src" ]; then + warn "failed to locate 'sources' folder in ISO image, $FB" + BOOT_MODE="windows_legacy" + return 1 + fi + + local loc=$(find "$src" -maxdepth 1 -type f -iname boot.wim | head -n 1) + [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname boot.esd | head -n 1) if [ ! -f "$loc" ]; then warn "failed to locate 'boot.wim' or 'boot.esd' in ISO image, $FB"