Enhance Acronis installer with advanced/custom mode and better token handling

Added option 5 "Advanced/Custom installation" to installer with:

Interactive Option Builder:
- Unattended mode toggle (auto-accept prompts)
- Registration options:
  * Register with token during install
  * Skip registration (register later)
  * Interactive (let installer prompt)
- Verbose logging flag
- Custom flags input for any additional options
  (proxy, language, bandwidth throttling, etc.)

Improved Token Input:
- Better instructions for obtaining token from web console
- Automatic whitespace/linebreak removal for pasted tokens
- Works with copy-paste from web console
- Handles multi-line paste gracefully

Enhanced Service URL Selection:
- Shows common regions with examples:
  * us5-cloud.acronis.com (US)
  * eu2-cloud.acronis.com (Europe)
  * ap1-cloud.acronis.com (Asia Pacific)
  * ca1-cloud.acronis.com (Canada)
- Only prompts for URL when registration is enabled

Installation Modes Now Available:
1. Interactive installation - guided with prompts
2. Unattended installation - auto-accepts all
3. Install and register with token - one-step setup
4. Install without registration - defer registration
5. Advanced/Custom - build custom flag combination

Example Advanced Mode Usage:
- Select unattended: y
- Registration: option 1 (with token)
- Paste token: [automatically strips spaces]
- Verbose logging: y
- Custom flags: --proxy=http://proxy:8080

All flags are shown in summary before installation proceeds.
This commit is contained in:
cschantz
2025-11-05 21:39:57 -05:00
parent f18e92a48d
commit 95f9253302
+98 -5
View File
@@ -51,6 +51,7 @@ echo " 1) Interactive installation (default)"
echo " 2) Unattended installation (auto-accept)" echo " 2) Unattended installation (auto-accept)"
echo " 3) Install and register with token" echo " 3) Install and register with token"
echo " 4) Install without registration" echo " 4) Install without registration"
echo " 5) Advanced/Custom installation (specify all flags)"
echo "" echo ""
echo -n "Select installation mode [1]: " echo -n "Select installation mode [1]: "
read -r install_mode read -r install_mode
@@ -70,8 +71,20 @@ case "$install_mode" in
3) 3)
INSTALL_FLAGS="-a" INSTALL_FLAGS="-a"
echo "" echo ""
echo -n "Enter registration token: " echo -e "${BOLD}Register During Installation${NC}"
echo ""
echo "Paste your Acronis registration token below."
echo "To get a token:"
echo " 1. Log in to Acronis web console"
echo " 2. Go to: Settings → Registration tokens"
echo " 3. Create token or copy existing one"
echo ""
echo -n "Registration token: "
read -r REGISTRATION_TOKEN read -r REGISTRATION_TOKEN
# Allow pasting multi-line or trimming whitespace
REGISTRATION_TOKEN=$(echo "$REGISTRATION_TOKEN" | tr -d '[:space:]')
if [ -z "$REGISTRATION_TOKEN" ]; then if [ -z "$REGISTRATION_TOKEN" ]; then
print_error "Token is required for this mode" print_error "Token is required for this mode"
press_enter press_enter
@@ -86,22 +99,102 @@ case "$install_mode" in
echo "" echo ""
echo "Mode: Install without registration" echo "Mode: Install without registration"
;; ;;
5)
# Advanced/Custom mode
echo ""
echo -e "${BOLD}Advanced Installation${NC}"
echo ""
echo "Build custom installation flags by selecting options."
echo ""
# Unattended mode
echo -n "Unattended install (auto-accept)? (y/n) [y]: "
read -r use_unattended
use_unattended="${use_unattended:-y}"
if [ "$use_unattended" = "y" ]; then
INSTALL_FLAGS="$INSTALL_FLAGS -a"
fi
# Registration options
echo ""
echo "Registration:"
echo " 1) Register with token during install"
echo " 2) Skip registration (register later)"
echo " 3) Interactive (installer will prompt)"
echo -n "Select [3]: "
read -r reg_choice
reg_choice="${reg_choice:-3}"
if [ "$reg_choice" = "1" ]; then
echo ""
echo "Paste your Acronis registration token:"
echo "(Spaces and line breaks will be automatically removed)"
echo ""
read -r REGISTRATION_TOKEN
REGISTRATION_TOKEN=$(echo "$REGISTRATION_TOKEN" | tr -d '[:space:]')
if [ -n "$REGISTRATION_TOKEN" ]; then
INSTALL_FLAGS="$INSTALL_FLAGS --token=$REGISTRATION_TOKEN"
else
print_error "Token cannot be empty"
press_enter
exit 1
fi
elif [ "$reg_choice" = "2" ]; then
INSTALL_FLAGS="$INSTALL_FLAGS --skip-registration"
fi
# Additional flags
echo ""
echo -e "${BOLD}Additional Options:${NC}"
echo ""
# Verbose logging
echo -n "Enable verbose logging? (y/n) [n]: "
read -r use_verbose
if [ "$use_verbose" = "y" ]; then
INSTALL_FLAGS="$INSTALL_FLAGS --verbose"
fi
# Custom flags
echo ""
echo "Enter any additional custom flags (or press Enter to skip):"
echo "Examples: --proxy=http://proxy:8080, --language=en, etc."
echo ""
echo -n "Custom flags: "
read -r custom_flags
if [ -n "$custom_flags" ]; then
INSTALL_FLAGS="$INSTALL_FLAGS $custom_flags"
fi
echo ""
echo "Mode: Advanced/Custom installation"
;;
*) *)
echo "" echo ""
echo "Mode: Interactive installation" echo "Mode: Interactive installation"
;; ;;
esac esac
# Ask for service URL if not using token # Ask for service URL (for all modes except skip-registration)
if [ "$install_mode" != "4" ]; then if [[ "$INSTALL_FLAGS" != *"--skip-registration"* ]]; then
echo "" echo ""
echo -n "Acronis Cloud region [us5-cloud.acronis.com]: " echo -e "${BOLD}Acronis Cloud Region${NC}"
echo ""
echo "Common regions:"
echo " • us5-cloud.acronis.com (US - Default)"
echo " • eu2-cloud.acronis.com (Europe)"
echo " • ap1-cloud.acronis.com (Asia Pacific)"
echo " • ca1-cloud.acronis.com (Canada)"
echo ""
echo -n "Enter service URL [us5-cloud.acronis.com]: "
read -r input_url read -r input_url
if [ -n "$input_url" ]; then if [ -n "$input_url" ]; then
SERVICE_URL="$input_url" SERVICE_URL="$input_url"
fi fi
if [ "$install_mode" = "3" ]; then # Add --rain flag if token is being used
if [[ "$INSTALL_FLAGS" == *"--token"* ]]; then
INSTALL_FLAGS="$INSTALL_FLAGS --rain=$SERVICE_URL" INSTALL_FLAGS="$INSTALL_FLAGS --rain=$SERVICE_URL"
fi fi
fi fi