release: sync public installer asset install.sh

This commit is contained in:
2026-09-03 03:44:40 +00:00
parent 76beca50ac
commit f7d9923b00
+39 -17
View File
@@ -343,6 +343,37 @@ run_visible_logged() {
"$@" 2>&1 | tee -a "$INSTALL_LOG" "$@" 2>&1 | tee -a "$INSTALL_LOG"
return "${PIPESTATUS[0]}" 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 if [[ ${XYMEDIA_INSTALL_TEST_POST_MIGRATION_ONLY:-0} == 1 ]]; then
INSTALL_DIR=${XYMEDIA_INSTALL_DIR:-$PWD} INSTALL_DIR=${XYMEDIA_INSTALL_DIR:-$PWD}
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
@@ -355,17 +386,13 @@ if [[ ${XYMEDIA_INSTALL_TEST_POST_MIGRATION_ONLY:-0} == 1 ]]; then
migration_rc=0 migration_rc=0
printf '数据库迁移退出码:%s\n' "$migration_rc" printf '数据库迁移退出码:%s\n' "$migration_rc"
printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG" printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG"
printf '[安装流程] 已完成数据库迁移,继续启动应用\n'
printf '[安装流程] 已完成数据库迁移,继续启动应用\n' >>"$INSTALL_LOG"
printf '数据库初始化完成\n' printf '数据库初始化完成\n'
printf '数据库初始化完成\n' >>"$INSTALL_LOG" printf '数据库初始化完成\n' >>"$INSTALL_LOG"
printf '正在启动 XyMediaVault 应用...\n'
progress '启动 XyMediaVault 服务' || true 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 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=0 app_start_rc=$?
else
app_start_rc=$?
fi
printf '应用启动命令退出码:%s\n' "$app_start_rc"
printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG"
if (( app_start_rc != 0 )); then if (( app_start_rc != 0 )); then
persist_installer_log || true persist_installer_log || true
printf 'XyMediaVault 启动失败(退出码:%s\n' "$app_start_rc" >&2 printf 'XyMediaVault 启动失败(退出码:%s\n' "$app_start_rc" >&2
@@ -1107,7 +1134,6 @@ if [[ -n $MENU_PROFILES ]]; then
if [[ $MENU_PROFILES == *xiaoya-control* ]]; then if [[ $MENU_PROFILES == *xiaoya-control* ]]; then
controller_state=$(docker inspect --format '{{.State.Status}}' xymedia-controller 2>>"$INSTALL_LOG" || true) controller_state=$(docker inspect --format '{{.State.Status}}' xymedia-controller 2>>"$INSTALL_LOG" || true)
[[ $controller_state == running ]] || die '本机小雅控制器未正常运行' [[ $controller_state == running ]] || die '本机小雅控制器未正常运行'
printf '小雅控制器已启动:xymedia-controller:19090;管理平台配置将在数据库初始化完成后自动写入。\n'
fi fi
fi fi
progress '下载 bootstrap runtime' progress '下载 bootstrap runtime'
@@ -1221,6 +1247,8 @@ run_migration
migration_rc=$? migration_rc=$?
printf '数据库迁移退出码:%s\n' "$migration_rc" printf '数据库迁移退出码:%s\n' "$migration_rc"
printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG" printf '数据库迁移退出码:%s\n' "$migration_rc" >>"$INSTALL_LOG"
printf '[安装流程] 已完成数据库迁移,继续启动应用\n'
printf '[安装流程] 已完成数据库迁移,继续启动应用\n' >>"$INSTALL_LOG"
if [[ $migration_rc -ne 0 ]]; then if [[ $migration_rc -ne 0 ]]; then
exit_code=1 exit_code=1
persist_installer_log || true persist_installer_log || true
@@ -1233,15 +1261,9 @@ if [[ $migration_rc -ne 0 ]]; then
fi fi
printf '数据库初始化完成\n' printf '数据库初始化完成\n'
printf '数据库初始化完成\n' >>"$INSTALL_LOG" printf '数据库初始化完成\n' >>"$INSTALL_LOG"
printf '正在启动 XyMediaVault 应用...\n'
progress '启动 XyMediaVault 服务' || true 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 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=0 app_start_rc=$?
else
app_start_rc=$?
fi
printf '应用启动命令退出码:%s\n' "$app_start_rc"
printf '应用启动命令退出码:%s\n' "$app_start_rc" >>"$INSTALL_LOG"
if (( app_start_rc != 0 )); then if (( app_start_rc != 0 )); then
exit_code=1 exit_code=1
persist_installer_log || true persist_installer_log || true