完善 DiscWorker 打包路径与产品命名,底部展示前后端版本,生产环境隐藏默认菜单。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
# 构建 Linux arm64 deb,并保证安装路径与 productName/executableName=DiscWorker 一致
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
|
||||
EXE="DiscWorker"
|
||||
SANITIZED="DiscWorker"
|
||||
OPT_DIR="/opt/${SANITIZED}"
|
||||
BIN_LINK="/usr/bin/${EXE}"
|
||||
|
||||
echo "[build-deb-arm64] executable: ${EXE}"
|
||||
echo "[build-deb-arm64] opt dir: ${OPT_DIR}"
|
||||
|
||||
node .electron-vue/build.js
|
||||
npx electron-builder --linux deb --arm64
|
||||
|
||||
shopt -s nullglob
|
||||
mapfile -t DEBS < <(ls -t build/*.deb 2>/dev/null || true)
|
||||
if [[ ${#DEBS[@]} -eq 0 ]]; then
|
||||
echo "[build-deb-arm64] 未找到 build/*.deb" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEB="${DEBS[0]}"
|
||||
WORK="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
echo "[build-deb-arm64] patching: $DEB"
|
||||
dpkg-deb -R "$DEB" "$WORK/pkg"
|
||||
CONTROL_DIR="$WORK/pkg/DEBIAN"
|
||||
mkdir -p "$CONTROL_DIR"
|
||||
|
||||
# 若 builder 已生成钩子,把旧小写路径替换为 DiscWorker;否则写入默认钩子
|
||||
patch_or_write() {
|
||||
local file="$1"
|
||||
local kind="$2"
|
||||
if [[ -f "$file" ]]; then
|
||||
sed -i \
|
||||
-e "s|/opt/discworker|/opt/${SANITIZED}|g" \
|
||||
-e "s|/usr/bin/discworker|/usr/bin/${EXE}|g" \
|
||||
-e "s|discworker/chrome-sandbox|${SANITIZED}/chrome-sandbox|g" \
|
||||
-e "s|/opt/discworker/discworker|${OPT_DIR}/${EXE}|g" \
|
||||
"$file"
|
||||
chmod 755 "$file"
|
||||
echo "[build-deb-arm64] patched existing ${kind}"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ "$kind" == "postinst" ]]; then
|
||||
cat > "$file" <<EOF
|
||||
#!/bin/bash
|
||||
set -e
|
||||
if [ -f ${OPT_DIR}/chrome-sandbox ]; then
|
||||
chown root:root ${OPT_DIR}/chrome-sandbox
|
||||
chmod 4755 ${OPT_DIR}/chrome-sandbox
|
||||
fi
|
||||
if [ -x ${OPT_DIR}/${EXE} ]; then
|
||||
ln -sfn ${OPT_DIR}/${EXE} ${BIN_LINK}
|
||||
fi
|
||||
exit 0
|
||||
EOF
|
||||
else
|
||||
cat > "$file" <<EOF
|
||||
#!/bin/bash
|
||||
set -e
|
||||
if [ "\$1" = "remove" ] || [ "\$1" = "purge" ]; then
|
||||
rm -f ${BIN_LINK}
|
||||
fi
|
||||
exit 0
|
||||
EOF
|
||||
fi
|
||||
chmod 755 "$file"
|
||||
echo "[build-deb-arm64] wrote default ${kind}"
|
||||
}
|
||||
|
||||
patch_or_write "$CONTROL_DIR/postinst" "postinst"
|
||||
patch_or_write "$CONTROL_DIR/postrm" "postrm"
|
||||
|
||||
OUT="build/${SANITIZED}-arm64-patched.deb"
|
||||
dpkg-deb -b "$WORK/pkg" "$OUT"
|
||||
echo "[build-deb-arm64] done: $OUT"
|
||||
Reference in New Issue
Block a user