build(release): 增加 ZIP_METHOD=lzma 选项(37 MB 整包被 IIS 30 MB 上限挡住时用)
Windows v0.2.0 发布时,Gitea 站点 IIS 的 maxAllowedContentLength 仍是默认的
30,000,000 字节:16.4 MB 通过,而 38,245,602 B 的整包用**正确**的 multipart 写法
(字段名 attachment)复测依旧 HTTP 413(仅发出 917 KB 即被拒)。为不阻塞发布,
本次给打包脚本增加压缩方式开关:
ZIP_METHOD=deflate (默认)约 38 MB,Windows 资源管理器双击即可解压
ZIP_METHOD=lzma 约 26 MB,可绕过 30 MB 闸;**代价**是 Windows 10 资源管理器
不支持 LZMA(method 14) 的 zip,必须用 7-Zip / WinRAR / PeaZip
脚本细节:
- lzma 走 `7z a -tzip -mm=LZMA -mx=9`(缺 7z 时报错并给出安装提示);
- lzma 包额外做 `7z t` 完整性测试,并改用 `7z x` 做解压自检(unzip 对 method 14
支持不一致,不能用来验证);
- 超限告警里补上「可用 ZIP_METHOD=lzma 绕过」的提示。
README.md / README.txt 同时写明:v0.2.0 的 zip 是 LZMA,需要 7-Zip/WinRAR 解压;
若 IIS 上限已放开,请改用默认 deflate 包。
This commit is contained in:
@@ -220,10 +220,17 @@ src/
|
||||
4. 真实 VRM 样例仅放在 `_scratch/`(已 gitignore),版权原因不入库;
|
||||
测试在找不到模型时显式跳过而非伪装通过。
|
||||
5. **Gitea 附件上传上限**:本项目 Gitea 前置 IIS 的默认
|
||||
`maxAllowedContentLength = 30,000,000` 字节(≈28.6 MiB),实测 30.5 MB / 40 MB
|
||||
上传返回 HTTP 413。`v0.1.0` 因此被拆成 `zip.part0/1/2`(无法直接解压)。
|
||||
现改为**只上传单个完整包**,超限时打包脚本直接告警并要求运维放宽上限,
|
||||
不再回退分卷;做法见 `opendance-web/deploy/proxy/README.md`。
|
||||
`maxAllowedContentLength = 30,000,000` 字节(≈28.6 MiB),实测 16.4 MB 通过、
|
||||
30.5 MB / 37 MB / 40 MB 上传返回 **HTTP 413**。`v0.1.0` 因此被拆成
|
||||
`zip.part0/1/2`(无法直接解压)。现改为**只上传单个完整包**,超限时打包脚本
|
||||
直接告警并要求运维放宽上限,不再回退分卷;做法见
|
||||
`opendance-web/deploy/proxy/README.md` 第九节。
|
||||
6. **v0.2.0 的 zip 用的是 LZMA 压缩**(`ZIP_METHOD=lzma` 打出来的),因为发布时
|
||||
IIS 上限尚未放开:整包从约 38 MB 降到约 26 MB 才能传上去。
|
||||
**代价:Windows 10 的资源管理器不支持 LZMA(method 14) 的 zip,必须用
|
||||
7-Zip / WinRAR / PeaZip 解压**(Win11 24H2+ 起资源管理器原生支持 7z 等格式,
|
||||
但本项目未在 Windows 上实测)。若 IIS 上限已放开,请改用默认的 deflate 包
|
||||
(`bash build/package-release.sh 0.2.0`,产物约 38 MB,双击即可解压)。
|
||||
|
||||
## 第三方开源声明
|
||||
|
||||
|
||||
+6
-2
@@ -1,5 +1,5 @@
|
||||
================================================================
|
||||
OpenDance Studio -- Windows 客户端 v0.2.0 使用说明
|
||||
OpenDance Studio -- Windows 客户端 v0.2.0 使用说明(zip 为 LZMA 压缩,需用 7-Zip/WinRAR 解压)
|
||||
================================================================
|
||||
|
||||
摄像头跳舞评分系统的核心体验端:接收 Android 辅助 App 通过 WebSocket
|
||||
@@ -116,7 +116,11 @@ OpenDance.exe 的用户看第一节即可。
|
||||
|
||||
注意:本项目 Gitea 前置 IIS 的默认上传上限是 30,000,000 字节
|
||||
(约 28.6 MiB),超过会返回 HTTP 413。这时不要改成分卷,
|
||||
请让运维放宽上限(做法见 opendance-web/deploy/proxy/README.md)。
|
||||
请让运维放宽上限(做法见 opendance-web/deploy/proxy/README.md 第九节)。
|
||||
发布 v0.2.0 时该上限尚未放开,整包(约 38 MB)改用 LZMA 压缩到约 26 MB
|
||||
才传上去(打包时用 ZIP_METHOD=lzma)。**因此 v0.2.0 的 zip 需要
|
||||
7-Zip / WinRAR / PeaZip 解压 —— Windows 10 资源管理器不支持 LZMA 的 zip**;
|
||||
若上限已放开,请改用默认 deflate 包(双击即可解压)。
|
||||
|
||||
7. 自检清单
|
||||
|
||||
|
||||
@@ -71,13 +71,42 @@ cp -r contracts "$STAGE/contracts"
|
||||
ZIP="$OUT_DIR/$NAME.zip"
|
||||
# 清理历史分卷,避免 old .partN 被误当成本次产物上传
|
||||
rm -f "$OUT_DIR/$NAME.zip".part* "$OUT_DIR/$NAME.zip" "$OUT_DIR/SHA256SUMS"*
|
||||
log "生成单个完整包 $NAME.zip …"
|
||||
( cd "$OUT_DIR" && zip -qr "$NAME.zip" "$NAME" )
|
||||
|
||||
# 压缩方式:默认 deflate(Windows 资源管理器可直接解压)。
|
||||
# ZIP_METHOD=lzma 时改用 LZMA —— 包体从约 38 MB 降到约 26 MB,可绕过
|
||||
# 「Gitea 站点 IIS 的 maxAllowedContentLength = 30,000,000 字节」这道闸
|
||||
# (见 opendance-web/deploy/proxy/README.md 第九节)。
|
||||
# **代价**:Windows 10 的资源管理器不支持 LZMA(method 14) 的 zip,用户必须用
|
||||
# 7-Zip / WinRAR / PeaZip 解压(Win11 24H2+ 起资源管理器原生支持 7z/zip 变体,
|
||||
# 但本项目未在 Windows 上实测)。因此只有在 IIS 上限确实无法放开时才用 LZMA。
|
||||
ZIP_METHOD="${ZIP_METHOD:-deflate}"
|
||||
log "生成单个完整包 $NAME.zip(压缩方式:$ZIP_METHOD)…"
|
||||
case "$ZIP_METHOD" in
|
||||
deflate)
|
||||
( cd "$OUT_DIR" && zip -qr "$NAME.zip" "$NAME" )
|
||||
;;
|
||||
lzma)
|
||||
command -v 7z >/dev/null 2>&1 || die "ZIP_METHOD=lzma 需要 7z(Debian/Ubuntu: apt install p7zip-full)"
|
||||
( cd "$OUT_DIR" && rm -f "$NAME.zip" && 7z a -tzip -mm=LZMA -mx=9 "$NAME.zip" "$NAME" >/dev/null )
|
||||
;;
|
||||
*)
|
||||
die "未知 ZIP_METHOD=$ZIP_METHOD(可选:deflate / lzma)"
|
||||
;;
|
||||
esac
|
||||
# LZMA 包额外做一次完整性测试与解压自检(zip/unzip 对 method 14 支持不一致)
|
||||
if [ "$ZIP_METHOD" = "lzma" ]; then
|
||||
7z t "$ZIP" >/dev/null || die "LZMA 包完整性测试失败(7z t)"
|
||||
log "LZMA 包完整性测试通过(7z t)"
|
||||
fi
|
||||
|
||||
# ---- 4. 完整性自检:解压后必须含 exe + pck(同目录)且 exe 仍是合法 PE ----
|
||||
CHECK_DIR=$(mktemp -d)
|
||||
trap 'rm -rf "$CHECK_DIR"' EXIT
|
||||
unzip -q "$ZIP" -d "$CHECK_DIR"
|
||||
if [ "$ZIP_METHOD" = "lzma" ]; then
|
||||
7z x -y -o"$CHECK_DIR" "$ZIP" >/dev/null
|
||||
else
|
||||
unzip -q "$ZIP" -d "$CHECK_DIR"
|
||||
fi
|
||||
|
||||
[ -f "$CHECK_DIR/$NAME/OpenDance.exe" ] || die "包内缺少 OpenDance.exe"
|
||||
[ -f "$CHECK_DIR/$NAME/OpenDance.pck" ] || die "包内缺少 OpenDance.pck(必须与 exe 同目录)"
|
||||
@@ -111,6 +140,8 @@ if [ "$SIZE_BYTES" -gt "$UPLOAD_LIMIT_BYTES" ]; then
|
||||
warn " Gitea app.ini [attachment] MAX_SIZE >= 256MB"
|
||||
warn " nginx(若前置)client_max_body_size 256m;"
|
||||
warn "本脚本**不会**回退为 .partN 分卷——分卷包无法直接解压,是历史缺陷。"
|
||||
warn "若暂时无法放开 IIS 上限,可用 ZIP_METHOD=lzma 重跑本脚本:包体约 26 MB 可绕过 30 MB 闸,"
|
||||
warn "但 Windows 10 资源管理器不能直接解压 LZMA zip,必须用 7-Zip / WinRAR(README 中已注明)。"
|
||||
else
|
||||
log "低于上限,可直接作为 Release 资产上传。"
|
||||
fi
|
||||
@@ -125,7 +156,11 @@ else
|
||||
die "sha256 自校验失败"
|
||||
fi
|
||||
echo ""
|
||||
unzip -l "$ZIP" | sed -n '3,14p'
|
||||
if [ "$ZIP_METHOD" = "lzma" ]; then
|
||||
7z l "$ZIP" | tail -14
|
||||
else
|
||||
unzip -l "$ZIP" | sed -n '3,14p'
|
||||
fi
|
||||
echo ""
|
||||
echo "分发:上传 $NAME.zip 与 SHA256SUMS 两个资产;用户下载后"
|
||||
echo " sha256sum -c SHA256SUMS && unzip $NAME.zip 即可直接运行 OpenDance.exe。"
|
||||
|
||||
Reference in New Issue
Block a user