livetrace/installer/build-installer.sh
2026-09-09 17:23:01 +03:00

63 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# build-installer.sh
# Builds livetrace-3.3.2-setup.exe on Linux — natively or via Docker.
#
# Usage:
# ./installer/build-installer.sh # requires: apt install nsis
# ./installer/build-installer.sh --docker # requires: docker
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
VERSION="3.3.2"
OUTPUT="livetrace-${VERSION}-setup.exe"
# ── Docker build ───────────────────────────────────────────────────────────
if [[ "${1:-}" == "--docker" ]]; then
echo ">>> Building installer via Docker …"
docker build \
-f "${SCRIPT_DIR}/Dockerfile.installer" \
-t livetrace-installer \
"${PROJECT_ROOT}"
docker run --rm \
-v "${PROJECT_ROOT}/dist":/out \
livetrace-installer
echo ""
echo "✓ Done: ${PROJECT_ROOT}/dist/${OUTPUT}"
exit 0
fi
# ── Native build ───────────────────────────────────────────────────────────
if ! command -v makensis &>/dev/null; then
echo "ERROR: makensis not found."
echo " Install: sudo apt install nsis"
echo " Or run: $0 --docker"
exit 1
fi
SRC_EXE="${PROJECT_ROOT}/dist/livetrace-windows-amd64.exe"
if [[ ! -f "${SRC_EXE}" ]]; then
echo "ERROR: ${SRC_EXE} not found."
echo " Run your Go build first, e.g.:"
echo " GOOS=windows GOARCH=amd64 go build -o dist/livetrace-windows-amd64.exe ./src"
exit 1
fi
echo ">>> Building installer with makensis …"
# Copy binary next to the .nsi script so NSIS can find it
cp "${SRC_EXE}" "${SCRIPT_DIR}/livetrace-windows-amd64.exe"
cd "${SCRIPT_DIR}"
makensis livetrace-installer.nsi
# Move the output to dist/
mv "${SCRIPT_DIR}/${OUTPUT}" "${PROJECT_ROOT}/dist/${OUTPUT}"
rm -f "${SCRIPT_DIR}/livetrace-windows-amd64.exe"
echo ""
echo "✓ Done: ${PROJECT_ROOT}/dist/${OUTPUT}"
echo " Size: $(du -sh "${PROJECT_ROOT}/dist/${OUTPUT}" | cut -f1)"