diff --git a/src/answer.sh b/src/answer.sh
index 87127fb9..27eb2fe2 100644
--- a/src/answer.sh
+++ b/src/answer.sh
@@ -440,6 +440,11 @@ updateXML() {
sed -i -E "s|[^<]*|$HEIGHT|g" "$asset" || return 1
sed -i -E "s|[^<]*|$WIDTH|g" "$asset" || return 1
+ if [ -n "$HOST" ]; then
+ host=$(escapeXMLSed "$HOST") || return 1
+ sed -i -E "s|[^<]*|$host|g" "$asset" || return 1
+ fi
+
culture=$(getLanguage "$language" "culture") || return 1
if [ -n "$culture" ] && [[ "${culture,,}" != "en-us" ]]; then
@@ -465,11 +470,6 @@ updateXML() {
sed -i "s|0409:00000409|$value|g" "$asset" || return 1
fi
- if [ -n "$HOST" ]; then
- host=$(escapeXMLSed "$HOST") || return 1
- sed -i -E "s|[^<]*|$host|g" "$asset" || return 1
- fi
-
domain="$DOMAIN"
workgroup="$WORKGROUP"
@@ -544,19 +544,16 @@ updateXML() {
sed -i "s|Docker|$user_xml|g" "$asset" || return 1
fi
- fi
-
- if [ -n "$domain" ]; then
- pass="admin"
- else
[ -n "$PASSWORD" ] && pass="$PASSWORD" || pass="admin"
+
+ pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
+ admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
+
+ sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$pw#g" "$asset" || return 1
+ sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$admin#g" "$asset" || return 1
+
fi
- pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
- admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0) || return 1
-
- sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$pw#g" "$asset" || return 1
- sed -i -z -E "s#([[:space:]]*|>[^<]*)#\1>$admin#g" "$asset" || return 1
sed -i -E "s|[^<]*|false|g" "$asset" || return 1
if [ -n "$domain" ]; then
@@ -569,6 +566,14 @@ updateXML() {
return 1
fi
+ if ! sed -i -E \
+ -e '/^[[:space:]]*])/,/^[[:space:]]*<\/LocalAccounts>[[:space:]]*$/d' \
+ -e '/^[[:space:]]*])/,/^[[:space:]]*<\/AdministratorPassword>[[:space:]]*$/d' \
+ "$asset"; then
+ error "Failed to remove local account configuration from answer file!"
+ return 1
+ fi
+
elif [ -n "$workgroup" ]; then
if ! updateWorkgroup "$asset" "$workgroup"; then
@@ -697,6 +702,8 @@ detectLegacy() {
local dir="$1"
local find
+ [[ "${PLATFORM,,}" != "x64" ]] && return 1
+
find=$(find "$dir" -maxdepth 1 -type d -iname WIN95 -print -quit)
[ -n "$find" ] && DETECTED="win95" && return 0