mirror of
https://github.com/dockur/windows.git
synced 2025-10-29 04:05:50 +00:00
Update install.sh
This commit is contained in:
parent
b1ef535b87
commit
face13d3de
1 changed files with 47 additions and 54 deletions
101
src/install.sh
101
src/install.sh
|
|
@ -540,6 +540,20 @@ extractImage() {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setXML() {
|
||||||
|
|
||||||
|
[[ "$MANUAL" == [Yy1]* ]] && return 0
|
||||||
|
|
||||||
|
local file="$STORAGE/custom.xml"
|
||||||
|
[ -f "$file" ] && XML="$file" && return 0
|
||||||
|
|
||||||
|
file="$1"
|
||||||
|
[ -z "$file" ] && file="/run/assets/$DETECTED.xml"
|
||||||
|
[ -f "$file" ] && XML="$file" && return 0
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
detectVersion() {
|
detectVersion() {
|
||||||
|
|
||||||
local xml="$1"
|
local xml="$1"
|
||||||
|
|
@ -564,18 +578,19 @@ detectVersion() {
|
||||||
DETECTED=$(getVersion "$name3")
|
DETECTED=$(getVersion "$name3")
|
||||||
[ -n "$DETECTED" ] && return 0
|
[ -n "$DETECTED" ] && return 0
|
||||||
|
|
||||||
[ -n "$name3" ] && info "Unknown name: '$name3'"
|
[ -n "$name3" ] && warn "unknown name: '$name3'"
|
||||||
[ -n "$name" ] && info "Unknown displayname: '$name'"
|
[ -n "$name" ] && warn "unknown displayname: '$name'"
|
||||||
[ -n "$name2" ] && info "Unknown productname: '$name2'"
|
[ -n "$name2" ] && warn "unknown productname: '$name2'"
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
detectImage() {
|
detectImage() {
|
||||||
|
|
||||||
XML=""
|
|
||||||
local dsc
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
|
local desc msg
|
||||||
|
|
||||||
|
XML=""
|
||||||
|
|
||||||
if [ -n "$CUSTOM" ]; then
|
if [ -n "$CUSTOM" ]; then
|
||||||
DETECTED=""
|
DETECTED=""
|
||||||
|
|
@ -587,42 +602,25 @@ detectImage() {
|
||||||
|
|
||||||
if [ -n "$DETECTED" ]; then
|
if [ -n "$DETECTED" ]; then
|
||||||
|
|
||||||
[[ "$MANUAL" == [Yy1]* ]] && return 0
|
[[ "${DETECTED,,}" == "winxp"* ]] && return 0
|
||||||
|
|
||||||
if [ -f "$STORAGE/custom.xml" ]; then
|
|
||||||
XML="$STORAGE/custom.xml"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "/run/assets/$DETECTED.xml" ]; then
|
setXML "" && return 0
|
||||||
XML="/run/assets/$DETECTED.xml"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${DETECTED,,}" != "winxp"* ]]; then
|
|
||||||
dsc=$(printVersion "$DETECTED" "$DETECTED")
|
|
||||||
warn "detected $dsc, but its answer file does not exist ($DETECTED.xml), $FB."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
desc=$(printVersion "$DETECTED" "$DETECTED")
|
||||||
|
warn "no answer file exists for this version ($DETECTED.xml), $FB."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Detecting Windows version from ISO image..."
|
info "Detecting Windows version from ISO image..."
|
||||||
|
|
||||||
if [[ "${PLATFORM,,}" == "x64" ]]; then
|
if [ -f "$dir/WIN51" ] || [ -f "$dir/SETUPXP.HTM" ]; then
|
||||||
if [ -f "$dir/WIN51" ] || [ -f "$dir/SETUPXP.HTM" ]; then
|
[ -d "$dir/AMD64" ] && DETECTED="winxpx64" || DETECTED="winxpx86"
|
||||||
if [ -d "$dir/AMD64" ]; then
|
desc=$(printVersion "$DETECTED" "Windows XP")
|
||||||
DETECTED="winxpx64"
|
info "Detected: $desc"
|
||||||
else
|
return 0
|
||||||
DETECTED="winxpx86"
|
|
||||||
fi
|
|
||||||
dsc=$(printVersion "$DETECTED" "Windows XP")
|
|
||||||
info "Detected: $dsc"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local src loc result desc
|
local src loc result
|
||||||
src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1)
|
src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1)
|
||||||
|
|
||||||
if [ ! -d "$src" ]; then
|
if [ ! -d "$src" ]; then
|
||||||
|
|
@ -641,23 +639,20 @@ detectImage() {
|
||||||
result=$(wimlib-imagex info -xml "$loc" | tr -d '\000')
|
result=$(wimlib-imagex info -xml "$loc" | tr -d '\000')
|
||||||
|
|
||||||
if ! detectVersion "$result"; then
|
if ! detectVersion "$result"; then
|
||||||
if [ -f "$STORAGE/custom.xml" ]; then
|
msg="failed to determine Windows version from image"
|
||||||
XML="$STORAGE/custom.xml"
|
setXML "" && info "${msg}!" || warn "${msg}, $FB"
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
warn "failed to determine Windows version from image, $FB"
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
desc=$(printVersion "$DETECTED" "$DETECTED")
|
desc=$(printVersion "$DETECTED" "$DETECTED")
|
||||||
|
|
||||||
if [ -f "/run/assets/$DETECTED.xml" ]; then
|
info "Detected: $desc"
|
||||||
[[ "$MANUAL" != [Yy1]* ]] && XML="/run/assets/$DETECTED.xml"
|
setXML "" && return 0
|
||||||
info "Detected: $desc"
|
|
||||||
else
|
|
||||||
warn "detected $desc, but no answer file exists for its edition ($DETECTED.xml), $FB."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
msg="no answer file exists for this version ($DETECTED.xml)"
|
||||||
|
local fallback="/run/assets/${DETECTED%%-*}.xml"
|
||||||
|
|
||||||
|
setXML "$fallback" && warn "${msg/version/edition}." || warn "${msg}, $FB."
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -668,27 +663,25 @@ prepareImage() {
|
||||||
local missing
|
local missing
|
||||||
|
|
||||||
case "${DETECTED,,}" in
|
case "${DETECTED,,}" in
|
||||||
"winxp"* | "winvista"* | "win7"* | "win2008"*)
|
"winxp"* )
|
||||||
[[ "${PLATFORM,,}" == "arm64" ]] && return 1
|
BOOT_MODE="windows_legacy"
|
||||||
|
prepareXP "$iso" "$dir" && return 0
|
||||||
|
error "Failed to prepare Windows XP ISO!" && return 1
|
||||||
|
;;
|
||||||
|
"winvista"* | "win7"* | "win2008"* )
|
||||||
BOOT_MODE="windows_legacy" ;;
|
BOOT_MODE="windows_legacy" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then
|
if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then
|
||||||
|
|
||||||
[ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ] && return 0
|
[ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ] && return 0
|
||||||
|
|
||||||
missing=$(basename "$dir/$EFISYS")
|
missing=$(basename "$dir/$EFISYS")
|
||||||
[ ! -f "$dir/$ETFS" ] && missing=$(basename "$dir/$ETFS")
|
[ ! -f "$dir/$ETFS" ] && missing=$(basename "$dir/$ETFS")
|
||||||
warn "failed to locate file '${missing,,}' in ISO image!"
|
warn "failed to locate file '${missing,,}' in ISO image!"
|
||||||
|
|
||||||
fi
|
[[ "${PLATFORM,,}" == "arm64" ]] && return 1
|
||||||
|
BOOT_MODE="windows_legacy"
|
||||||
[[ "${PLATFORM,,}" == "arm64" ]] && return 1
|
|
||||||
BOOT_MODE="windows_legacy"
|
|
||||||
|
|
||||||
if [[ "${DETECTED,,}" == "winxp"* ]]; then
|
|
||||||
prepareXP "$iso" "$dir" && return 0
|
|
||||||
error "Failed to prepare Windows XP ISO!" && return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prepareLegacy "$iso" "$dir" && return 0
|
prepareLegacy "$iso" "$dir" && return 0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue