From f7d9923b00148a206640584b9d0ab33240d7d7c4 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 3 Sep 2026 03:44:40 +0000 Subject: [PATCH] release: sync public installer asset install.sh --- install.sh | 56 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/install.sh b/install.sh index a5660f9..5acbca0 100644 --- a/install.sh +++ b/install.sh @@ -343,6 +343,37 @@ run_visible_logged() { "$@" 2>&1 | tee -a "$INSTALL_LOG" return "${PIPESTATUS[0]}" } +start_app_after_migration() { + local helper="$INSTALL_TMP_DIR/start-app-after-migration.sh" + cat >"$helper" <<'START_APP_HELPER' +#!/usr/bin/env bash +set +e + +install_dir=$1 +install_log=$2 +shift 2 +tty_out=${XYMEDIA_INSTALL_TEST_TTY_OUTPUT:-/dev/tty} +emit() { + printf '%s\n' "$1" + printf '%s\n' "$1" >>"$install_log" 2>/dev/null || true + printf '%s\n' "$1" >>"$tty_out" 2>/dev/null || true +} + +emit '正在启动 XyMediaVault 应用...' + +if "$@" >>"$install_log" 2>&1; then + app_rc=0 +else + app_rc=$? +fi +emit "应用启动命令退出码:$app_rc" +return_code=$app_rc +exit "$return_code" +START_APP_HELPER + chmod 700 "$helper" 2>/dev/null || true + bash "$helper" "$INSTALL_DIR" "$INSTALL_LOG" "$@" + return $? +} if [[ ${XYMEDIA_INSTALL_TEST_POST_MIGRATION_ONLY:-0} == 1 ]]; then INSTALL_DIR=${XYMEDIA_INSTALL_DIR:-$PWD} mkdir -p "$INSTALL_DIR" @@ -355,17 +386,13 @@ if [[ ${XYMEDIA_INSTALL_TEST_POST_MIGRATION_ONLY:-0} == 1 ]]; then migration_rc=0 printf '数据库迁移退出码:%s\n' "$migration_rc" printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG" + printf '[安装流程] 已完成数据库迁移,继续启动应用\n' + printf '[安装流程] 已完成数据库迁移,继续启动应用\n' >>"$INSTALL_LOG" printf '数据库初始化完成\n' printf '数据库初始化完成\n' >>"$INSTALL_LOG" - printf '正在启动 XyMediaVault 应用...\n' progress '启动 XyMediaVault 服务' || true - if "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app; then - app_start_rc=0 - else - app_start_rc=$? - fi - printf '应用启动命令退出码:%s\n' "$app_start_rc" - printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG" + start_app_after_migration "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app + app_start_rc=$? if (( app_start_rc != 0 )); then persist_installer_log || true printf 'XyMediaVault 启动失败(退出码:%s)\n' "$app_start_rc" >&2 @@ -1107,7 +1134,6 @@ if [[ -n $MENU_PROFILES ]]; then if [[ $MENU_PROFILES == *xiaoya-control* ]]; then controller_state=$(docker inspect --format '{{.State.Status}}' xymedia-controller 2>>"$INSTALL_LOG" || true) [[ $controller_state == running ]] || die '本机小雅控制器未正常运行' - printf '小雅控制器已启动:xymedia-controller:19090;管理平台配置将在数据库初始化完成后自动写入。\n' fi fi progress '下载 bootstrap runtime' @@ -1221,6 +1247,8 @@ run_migration migration_rc=$? printf '数据库迁移退出码:%s\n' "$migration_rc" printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG" +printf '[安装流程] 已完成数据库迁移,继续启动应用\n' +printf '[安装流程] 已完成数据库迁移,继续启动应用\n' >>"$INSTALL_LOG" if [[ $migration_rc -ne 0 ]]; then exit_code=1 persist_installer_log || true @@ -1233,15 +1261,9 @@ if [[ $migration_rc -ne 0 ]]; then fi printf '数据库初始化完成\n' printf '数据库初始化完成\n' >>"$INSTALL_LOG" -printf '正在启动 XyMediaVault 应用...\n' progress '启动 XyMediaVault 服务' || true -if "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app; then - app_start_rc=0 -else - app_start_rc=$? -fi -printf '应用启动命令退出码:%s\n' "$app_start_rc" -printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG" +start_app_after_migration "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" "${COMPOSE_FUSE[@]}" up -d app +app_start_rc=$? if (( app_start_rc != 0 )); then exit_code=1 persist_installer_log || true