56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
||
# ============================================================
|
||
# OpenDance Studio —— Windows 客户端发布打包
|
||
#
|
||
# 产物(文档 §5.3):
|
||
# opendance-windows-v0.1.0.zip
|
||
# ├── OpenDance.exe
|
||
# ├── OpenDance.pck
|
||
# ├── THIRD_PARTY.md
|
||
# ├── README.txt
|
||
# └── contracts/ 契约快照
|
||
#
|
||
# 用法:bash build/package-release.sh [版本号]
|
||
# ============================================================
|
||
set -euo pipefail
|
||
|
||
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||
cd "$PROJECT_DIR"
|
||
|
||
VERSION="${1:-0.1.0}"
|
||
NAME="opendance-windows-v${VERSION}"
|
||
OUT_DIR="$PROJECT_DIR/dist-release"
|
||
STAGE="$OUT_DIR/$NAME"
|
||
|
||
log() { printf '\033[1;34m[package]\033[0m %s\n' "$*"; }
|
||
die() { printf '\033[1;31m[error]\033[0m %s\n' "$*" >&2; exit 1; }
|
||
|
||
EXE="$PROJECT_DIR/build/windows/OpenDance.exe"
|
||
PCK="$PROJECT_DIR/build/windows/OpenDance.pck"
|
||
|
||
[ -f "$EXE" ] || die "未找到 $EXE,请先执行 bash build/export-windows.sh release"
|
||
[ -f "$PCK" ] || die "未找到 $PCK,请先执行 bash build/export-windows.sh release"
|
||
|
||
# 校验 PE 头
|
||
MAGIC=$(head -c 2 "$EXE" | od -An -tx1 | tr -d ' \n')
|
||
[ "$MAGIC" = "4d5a" ] || die "$EXE 不是合法的 Windows PE 文件(头 $MAGIC)"
|
||
|
||
log "整理产物到 $STAGE …"
|
||
rm -rf "$STAGE"
|
||
mkdir -p "$STAGE"
|
||
|
||
cp "$EXE" "$STAGE/OpenDance.exe"
|
||
cp "$PCK" "$STAGE/OpenDance.pck"
|
||
cp THIRD_PARTY.md README.txt "$STAGE/"
|
||
cp -r contracts "$STAGE/contracts"
|
||
|
||
log "生成压缩包…"
|
||
( cd "$OUT_DIR" && zip -qr "$NAME.zip" "$NAME" )
|
||
|
||
log "完成:$OUT_DIR/$NAME.zip($(du -h "$OUT_DIR/$NAME.zip" | cut -f1))"
|
||
echo ""
|
||
echo "产物内容:"
|
||
unzip -l "$OUT_DIR/$NAME.zip" | sed -n '4,20p'
|
||
echo ""
|
||
echo "分发:把 zip 交给 Windows 用户,解压后运行 OpenDance.exe(.pck 必须同目录)。"
|