63 lines
2.1 KiB
Bash
Executable File
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)"
|