diff --git a/src/install.sh b/src/install.sh index 9b74d66..4d6ca50 100644 --- a/src/install.sh +++ b/src/install.sh @@ -355,18 +355,25 @@ extractESD() { local iso="$1" local dir="$2" - local size desc + local size size_gb space space_gb desc desc=$(printVersion "$VERSION") local msg="Extracting $desc bootdisk..." info "$msg" && html "$msg" - size=$(stat -c%s "$iso") + size=16106127360 + size_gb=$(( (size + 1073741823)/1073741824 )) + space=$(df --output=avail -B 1 "$TMP" | tail -n 1) + space_gb=$(( (space + 1073741823)/1073741824 )) if ((size<10000000)); then error "Invalid ESD file: Size is smaller than 10 MB" && exit 62 fi + if (( size > space )); then + error "Not enough free space in $STORAGE, have $space_gb GB available but need at least $size_gb GB." && exit 63 + fi + rm -rf "$dir" mkdir -p "$dir" @@ -375,7 +382,7 @@ extractESD() { wimlib-imagex apply "$iso" 1 "${dir}" --quiet 2>/dev/null || { retVal=$? - error "Extract of boot files failed" && return $retVal + error "Extracting bootdisk failed" && return $retVal } local bootWimFile="${dir}/sources/boot.wim" @@ -386,7 +393,7 @@ extractESD() { wimlib-imagex export "${iso}" 2 "${bootWimFile}" --compress=LZX --chunk-size 32K --quiet || { retVal=$? - error "Add of WinPE failed" && return ${retVal} + error "Adding WinPE failed" && return ${retVal} } local msg="Extracting $desc setup..." @@ -394,7 +401,7 @@ extractESD() { wimlib-imagex export "${iso}" 3 "$bootWimFile" --compress=LZX --chunk-size 32K --boot --quiet || { retVal=$? - error "Add of Windows Setup failed" && return ${retVal} + error "Adding Windows Setup failed" && return ${retVal} } local msg="Extracting $desc image..." @@ -414,7 +421,7 @@ extractESD() { return 1 ;; esac - + for (( imageIndex=4; imageIndex<=esdImageCount; imageIndex++ )); do imageEdition=$(wimlib-imagex info "${iso}" ${imageIndex} | grep '^Description:' | sed 's/Description:[ \t]*//') [[ "${imageEdition,,}" != *"$edition"* ]] && continue @@ -422,10 +429,11 @@ extractESD() { retVal=$? error "Addition of ${imageIndex} to the image failed" && return $retVal } - break + return 0 done - return 0 + error "Failed to find product in install.wim!" + return 1 } extractImage() {