Add proxy/VPN/telegram launchd and emergency runbooks; reorganize apps docs; document JA3 CrossOver runbook and Wine troubleshooting; add GOG/HoMM game scripts, disk cleanup guides, and gitea push-via-proxy helper. Ignore temp/. Co-authored-by: Cursor <cursoragent@cursor.com>
110 lines
4.1 KiB
Bash
Executable File
110 lines
4.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# GOG Galaxy 2.0: скачать официальный установщик и поставить в bottle HoMM-OldenEra.
|
|
set -euo pipefail
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
# shellcheck source=config.sh
|
|
source "${SCRIPT_DIR}/config.sh"
|
|
|
|
SILENT="${GOG_INSTALL_SILENT:-0}"
|
|
|
|
if [[ ! -d "${BOTTLE_DIR}/drive_c" ]]; then
|
|
echo "Bottle ещё не инициализирован."
|
|
echo "1) open -a Whisky"
|
|
echo "2) Откройте bottle «${BOTTLE_NAME}»"
|
|
echo "3) Запустите этот скрипт снова"
|
|
open -a Whisky
|
|
exit 1
|
|
fi
|
|
|
|
if exe="$(homm_gog_exe)"; [[ -n "${exe}" ]]; then
|
|
echo "GOG Galaxy уже установлен: ${exe}"
|
|
echo "Запуск: bash ${SCRIPT_DIR}/start.sh gog"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p "${GAMES_CACHE_DIR}"
|
|
|
|
homm_gog_setup_url() {
|
|
if [[ -n "${GOG_SETUP_URL:-}" ]]; then
|
|
echo "${GOG_SETUP_URL}"
|
|
return 0
|
|
fi
|
|
local json url
|
|
json="$(curl -fsSL "https://remote-config.gog.com/components/webinstaller?component_version=2.0.0")"
|
|
url="$(python3 -c 'import json,sys; d=json.load(sys.stdin); print(d["content"]["windows"]["downloadLink"])' <<<"${json}" 2>/dev/null)" || true
|
|
if [[ -z "${url}" ]]; then
|
|
url="https://content-system.gog.com/open_link/download?path=/open/galaxy/client/setup_galaxy_2.0.100.1.exe"
|
|
fi
|
|
echo "${url}"
|
|
}
|
|
|
|
if [[ ! -f "${GOG_SETUP}" ]]; then
|
|
dl_url="$(homm_gog_setup_url)"
|
|
echo "Скачиваю полный установщик GOG Galaxy (~290 MB)…"
|
|
echo " ${dl_url}"
|
|
curl -L --fail --retry 3 -C - -o "${GOG_SETUP}" "${dl_url}"
|
|
fi
|
|
|
|
echo "Размер установщика: $(du -sh "${GOG_SETUP}" | awk '{print $1}')"
|
|
min_gb="${HOMM_DISK_MIN_GB:-3}"
|
|
min_kb=$((min_gb * 1024 * 1024))
|
|
if [[ "$(homm_disk_free_kb)" -lt "${min_kb}" ]]; then
|
|
echo "❌ Мало места на диске (<${min_gb} GB). GOG Galaxy ~300+ MB."
|
|
exit 1
|
|
fi
|
|
|
|
homm_gog_install_from_extract() {
|
|
local extract_dir="${GAMES_CACHE_DIR}/gog-galaxy-extract"
|
|
local gog_pf="${BOTTLE_DIR}/drive_c/Program Files (x86)/GOG Galaxy"
|
|
local gog_pd="${BOTTLE_DIR}/drive_c/ProgramData/GOG.com/Galaxy"
|
|
if ! command -v innoextract >/dev/null 2>&1; then
|
|
echo "Нужен innoextract: brew install innoextract"
|
|
return 1
|
|
fi
|
|
echo "Распаковка установщика (innoextract) — обход gdi32 в Wine-инсталляторе…"
|
|
rm -rf "${extract_dir}"
|
|
mkdir -p "${extract_dir}"
|
|
innoextract -e -d "${extract_dir}" "${GOG_SETUP}"
|
|
mkdir -p "${gog_pf}" "${gog_pd}"
|
|
cp -R "${extract_dir}/app/." "${gog_pf}/"
|
|
local pd_src
|
|
pd_src="$(find "${extract_dir}" -type d -path '*/GOG.com/Galaxy' 2>/dev/null | head -1)"
|
|
if [[ -n "${pd_src}" ]]; then
|
|
cp -R "${pd_src}/." "${gog_pd}/"
|
|
fi
|
|
homm_gog_exe >/dev/null
|
|
}
|
|
|
|
export_wine_env_steam
|
|
|
|
# Wine Inno Setup часто падает на gdi32 в /VERYSILENT; по умолчанию — распаковка.
|
|
if [[ "${GOG_INSTALL_WINE:-0}" == "1" && "${SILENT}" == "1" ]]; then
|
|
echo "Тихая установка через Wine (эксперимент)…"
|
|
cp -f "${GOG_SETUP}" "${BOTTLE_DIR}/drive_c/setup_galaxy.exe" 2>/dev/null || true
|
|
"${WINE64}" 'C:\\setup_galaxy.exe' /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /FORCECLOSEAPPLICATIONS /SP- || true
|
|
sleep 10
|
|
elif [[ "${SILENT}" == "1" ]]; then
|
|
homm_gog_install_from_extract || exit 1
|
|
else
|
|
echo "Запуск GUI-установщика GOG Galaxy в bottle «${BOTTLE_NAME}»…"
|
|
echo "Дождитесь завершения мастера установки, затем:"
|
|
echo " bash ${SCRIPT_DIR}/start.sh gog"
|
|
if command -v whisky >/dev/null 2>&1; then
|
|
whisky run "${BOTTLE_NAME}" "${GOG_SETUP}"
|
|
else
|
|
"${WINE64}" "${GOG_SETUP}"
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if exe="$(homm_gog_exe)"; [[ -n "${exe}" ]]; then
|
|
echo "OK: GOG Galaxy → ${exe}"
|
|
bash "${SCRIPT_DIR}/pin-gog-whisky.sh" 2>/dev/null || true
|
|
echo "Запуск: bash ${SCRIPT_DIR}/start.sh gog"
|
|
else
|
|
echo "GalaxyClient.exe не найден."
|
|
echo " GUI: GOG_INSTALL_SILENT=0 bash ${SCRIPT_DIR}/install-gog-galaxy.sh"
|
|
echo " Wine silent (часто ломается): GOG_INSTALL_WINE=1 GOG_INSTALL_SILENT=1 …"
|
|
exit 1
|
|
fi
|