#!/usr/bin/env bash # JA3 из GOG offline backup: setup_*.exe + setup_*-1.bin … -4.bin в одной папке. # Galaxy не нужен. Установщик читает .bin рядом с .exe (не копируем 15 GB в bottle). set -euo pipefail GOG_DIR="$(cd "$(dirname "$0")" && pwd)" # shellcheck source=config.sh source "${GOG_DIR}/config.sh" JA3_GAMES_DIR="${JA3_GAMES_DIR:-${HOME}/Games}" JA3_SETUP_EXE="${JA3_SETUP_EXE:-}" LOG="/tmp/ja3-multipart-install-${BOTTLE_NAME}.log" # Имена GOG v1.5.2 (80730); при другой версии задайте JA3_SETUP_EXE. JA3_EXE_DEFAULT="${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730).exe" JA3_BINS=( "${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-1.bin" "${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-2.bin" "${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-3.bin" "${JA3_GAMES_DIR}/setup_jagged_alliance_3_1.5.2_(80730)-4.bin" ) gog_unix_to_win() { local u="$1" if [[ -x "${WINEPATH_BIN}" ]]; then "${WINEPATH_BIN}" -w "${u}" else # fallback: Z: = / local rest="${u#/}" echo "Z:\\\\${rest//\//\\\\}" fi } find_setup_exe() { if [[ -n "${JA3_SETUP_EXE}" && -f "${JA3_SETUP_EXE}" ]]; then echo "${JA3_SETUP_EXE}" return 0 fi if [[ -f "${JA3_EXE_DEFAULT}" ]]; then echo "${JA3_EXE_DEFAULT}" return 0 fi local f f="$(find "${JA3_GAMES_DIR}" -maxdepth 1 -iname 'setup*jagged*alliance*3*.exe' -print -quit 2>/dev/null || true)" [[ -n "${f}" && -f "${f}" ]] && echo "${f}" && return 0 return 1 } usage() { cat <"${LOG}" # Inno ищет .bin в каталоге установщика — запуск из JA3_GAMES_DIR cd "${JA3_GAMES_DIR}" if ! "${WINE64}" "${win_exe}" "${SILENT[@]}" >>"${LOG}" 2>&1; then echo "⚠️ Wine-Inno не прошёл — пробуем innoextract (без botva2/gdi32)…" if command -v innoextract >/dev/null 2>&1; then exec bash "${GOG_DIR}/install-ja3-innoextract.sh" fi echo "❌ Установщик завершился с ошибкой:" strings "${LOG}" 2>/dev/null | tail -20 || tail -20 "${LOG}" exit 1 fi if [[ -f "${BOTTLE_DIR}/drive_c/GOG Games/Jagged Alliance 3/JA3.exe" ]]; then date -u +"%Y-%m-%dT%H:%M:%SZ" >"${BOTTLE_DIR}/.ja3_installed" echo "" echo "OK: JA3 установлен." echo " Запуск: bash ${GOG_DIR}/run-ja3.sh" echo " После проверки игры можно удалить .bin в ${JA3_GAMES_DIR} (~15 GB)." else echo "⚠️ JA3.exe не найден в bottle — tail лога:" tail -40 "${LOG}" exit 1 fi } main "$@"