From 5e736c71e4c99c700da0229833ae61a8d3f47d08 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 2 Sep 2026 03:35:54 +0000 Subject: [PATCH] release: sync public installer asset install.sh --- install.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index d5c2c1c..bf5a3d3 100644 --- a/install.sh +++ b/install.sh @@ -570,15 +570,27 @@ with tarfile.open(archive, 'r:*') as tf: PY rm -f "$tarball" } +install_controller_binary() { + local source=$1 target="$INSTALL_DIR/controller/xymedia-edge" staged + mkdir -p "$INSTALL_DIR/controller" + staged=$(mktemp "$INSTALL_DIR/controller/.xymedia-edge.XXXXXX") || die '无法准备控制器更新文件' + chmod 600 "$staged" + if ! cp "$source" "$staged"; then rm -f "$staged"; die '控制器文件复制失败'; fi + chmod 755 "$staged" + if [[ -e $target ]] && docker container inspect xymedia-controller >/dev/null 2>&1; then + run_logged "${COMPOSE[@]}" --project-directory "$INSTALL_DIR" --env-file "$INSTALL_DIR/.env" -f "$INSTALL_DIR/compose.yaml" stop xiaoya-control || { rm -f "$staged"; die '无法停止旧的小雅控制器'; } + fi + [[ ! -L $target ]] || { rm -f "$staged"; die '控制器文件不能是符号链接'; } + if ! mv -f "$staged" "$target"; then rm -f "$staged"; die '控制器文件替换失败'; fi + chmod 755 "$target" +} if (( CONTROLLER_ONLY )); then IFS=$'\t' read -r controller_version controller_url < <(artifact controller "$PLATFORM") || die '公开目录没有当前架构的 controller 制品' progress "下载小雅控制器 $controller_version ($PLATFORM)" download_extract controller "$controller_version" "$controller_url" "$INSTALL_DIR/controller-stage" edge=$(find "$INSTALL_DIR/controller-stage" -type f -name xymedia-edge -perm -u+x -print -quit) [[ -n $edge ]] || die 'controller archive lacks executable xymedia-edge' - mkdir -p "$INSTALL_DIR/controller" - cp "$edge" "$INSTALL_DIR/controller/xymedia-edge" - chmod 755 "$INSTALL_DIR/controller/xymedia-edge" + install_controller_binary "$edge" [[ -s "$INSTALL_DIR/secrets/xiaoya-controller-token" ]] || write_controller_token cp "$COMPOSE_TEMPLATE" "$INSTALL_DIR/compose.yaml" progress '启动小雅控制器' @@ -593,9 +605,7 @@ download_extract app "$APP_VERSION" "$APP_URL" "$APP_STAGE" APP_ROOT="$APP_STAGE/xymediavault-$APP_VERSION-$PLATFORM" [[ -x $APP_ROOT/bin/xymediavault && -x $APP_ROOT/bin/xymedia-supervisor && -d $APP_ROOT/web/dist && -f $APP_ROOT/release.json ]] || die "app package $APP_VERSION lacks the required xymedia-supervisor; use a newer public app package" if [[ -x $APP_ROOT/bin/xymedia-edge ]]; then - mkdir -p "$INSTALL_DIR/controller" - cp "$APP_ROOT/bin/xymedia-edge" "$INSTALL_DIR/controller/xymedia-edge" - chmod 755 "$INSTALL_DIR/controller/xymedia-edge" + install_controller_binary "$APP_ROOT/bin/xymedia-edge" fi mkdir -p "$INSTALL_DIR/releases/releases" [[ ! -e "$INSTALL_DIR/releases/releases/$APP_VERSION" ]] && mv "$APP_ROOT" "$INSTALL_DIR/releases/releases/$APP_VERSION"