release: sync public installer asset install.sh

This commit is contained in:
2026-09-02 03:35:54 +00:00
parent bc54aad7e6
commit 5e736c71e4
+16 -6
View File
@@ -570,15 +570,27 @@ with tarfile.open(archive, 'r:*') as tf:
PY PY
rm -f "$tarball" 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 if (( CONTROLLER_ONLY )); then
IFS=$'\t' read -r controller_version controller_url < <(artifact controller "$PLATFORM") || die '公开目录没有当前架构的 controller 制品' IFS=$'\t' read -r controller_version controller_url < <(artifact controller "$PLATFORM") || die '公开目录没有当前架构的 controller 制品'
progress "下载小雅控制器 $controller_version ($PLATFORM)" progress "下载小雅控制器 $controller_version ($PLATFORM)"
download_extract controller "$controller_version" "$controller_url" "$INSTALL_DIR/controller-stage" 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) 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' [[ -n $edge ]] || die 'controller archive lacks executable xymedia-edge'
mkdir -p "$INSTALL_DIR/controller" install_controller_binary "$edge"
cp "$edge" "$INSTALL_DIR/controller/xymedia-edge"
chmod 755 "$INSTALL_DIR/controller/xymedia-edge"
[[ -s "$INSTALL_DIR/secrets/xiaoya-controller-token" ]] || write_controller_token [[ -s "$INSTALL_DIR/secrets/xiaoya-controller-token" ]] || write_controller_token
cp "$COMPOSE_TEMPLATE" "$INSTALL_DIR/compose.yaml" cp "$COMPOSE_TEMPLATE" "$INSTALL_DIR/compose.yaml"
progress '启动小雅控制器' progress '启动小雅控制器'
@@ -593,9 +605,7 @@ download_extract app "$APP_VERSION" "$APP_URL" "$APP_STAGE"
APP_ROOT="$APP_STAGE/xymediavault-$APP_VERSION-$PLATFORM" 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" [[ -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 if [[ -x $APP_ROOT/bin/xymedia-edge ]]; then
mkdir -p "$INSTALL_DIR/controller" install_controller_binary "$APP_ROOT/bin/xymedia-edge"
cp "$APP_ROOT/bin/xymedia-edge" "$INSTALL_DIR/controller/xymedia-edge"
chmod 755 "$INSTALL_DIR/controller/xymedia-edge"
fi fi
mkdir -p "$INSTALL_DIR/releases/releases" mkdir -p "$INSTALL_DIR/releases/releases"
[[ ! -e "$INSTALL_DIR/releases/releases/$APP_VERSION" ]] && mv "$APP_ROOT" "$INSTALL_DIR/releases/releases/$APP_VERSION" [[ ! -e "$INSTALL_DIR/releases/releases/$APP_VERSION" ]] && mv "$APP_ROOT" "$INSTALL_DIR/releases/releases/$APP_VERSION"