rwadurian/backend/mpc-system/services/service-party-app/build-windows.bat

169 lines
4.2 KiB
Batchfile

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo ============================================
echo Service Party App - Windows Build Script
echo ============================================
echo.
cd /d "%~dp0"
:: Parse command line arguments
set "DO_CLEAN=0"
set "DO_CLEAN_ALL=0"
if "%1"=="clean" set "DO_CLEAN=1"
if "%1"=="--clean" set "DO_CLEAN=1"
if "%1"=="-c" set "DO_CLEAN=1"
if "%1"=="cleanall" set "DO_CLEAN_ALL=1"
if "%1"=="--clean-all" set "DO_CLEAN_ALL=1"
:: Clean all (includes node_modules)
if "%DO_CLEAN_ALL%"=="1" (
echo [CLEAN] Performing full clean...
if exist "dist" rmdir /s /q "dist"
if exist "dist-electron" rmdir /s /q "dist-electron"
if exist "release" rmdir /s /q "release"
if exist "node_modules" rmdir /s /q "node_modules"
if exist "package-lock.json" del /q "package-lock.json"
if exist "node_modules\.cache" rmdir /s /q "node_modules\.cache"
echo [OK] Full clean completed
echo.
)
:: Clean build artifacts only
if "%DO_CLEAN%"=="1" (
echo [CLEAN] Cleaning build artifacts...
if exist "dist" rmdir /s /q "dist"
if exist "dist-electron" rmdir /s /q "dist-electron"
if exist "release" rmdir /s /q "release"
if exist "node_modules\.cache" rmdir /s /q "node_modules\.cache"
echo [OK] Clean completed
echo.
)
:: Check Node.js
where node >nul 2>nul
if %errorlevel% neq 0 (
echo [ERROR] Node.js not found. Please install Node.js 18+
echo Download: https://nodejs.org/
goto :error
)
:: Check Go
where go >nul 2>nul
if %errorlevel% neq 0 (
echo [ERROR] Go not found. Please install Go 1.21+
echo Download: https://go.dev/dl/
goto :error
)
:: Show versions
echo [INFO] Node.js version:
node --version
echo [INFO] Go version:
go version
echo.
:: Step 1: Build TSS subprocess
echo ============================================
echo [1/4] Building TSS subprocess (Go)...
echo ============================================
cd tss-party
if not exist "..\bin\win32-x64" mkdir "..\bin\win32-x64"
echo Building tss-party.exe...
go build -ldflags="-s -w" -o ..\bin\win32-x64\tss-party.exe .
if %errorlevel% neq 0 (
echo [ERROR] TSS subprocess build failed
goto :error
)
echo [OK] tss-party.exe created
cd ..
echo.
:: Step 2: Install dependencies
echo ============================================
echo [2/4] Installing npm dependencies...
echo ============================================
if exist "node_modules" (
if "%DO_CLEAN_ALL%"=="0" (
echo Dependencies exist, skipping install
) else (
call npm install
if %errorlevel% neq 0 (
echo [ERROR] npm install failed
goto :error
)
)
) else (
call npm install
if %errorlevel% neq 0 (
echo [ERROR] npm install failed
goto :error
)
)
echo [OK] Dependencies installed
echo.
:: Step 3: Check resources
echo ============================================
echo [3/4] Checking resources...
echo ============================================
if not exist "build" mkdir "build"
if not exist "build\icon.ico" echo [WARN] build\icon.ico not found, using default icon
echo.
:: Step 4: Build Electron app
echo ============================================
echo [4/4] Building Windows application...
echo ============================================
echo Building frontend code...
call npm run build:win
if %errorlevel% neq 0 (
echo [ERROR] Application build failed
goto :error
)
echo.
echo ============================================
echo Build Complete!
echo ============================================
echo.
echo Output directory: %cd%\release\
echo.
:: List generated files
if exist "release" (
echo Generated files:
dir /b release\*.exe 2>nul
)
echo.
echo ============================================
echo Usage Tips
echo ============================================
echo.
echo build-windows.bat Normal build
echo build-windows.bat clean Clean and rebuild
echo build-windows.bat cleanall Full clean (delete node_modules) and rebuild
echo.
echo Press any key to exit...
pause >nul
exit /b 0
:error
echo.
echo Build failed. Please check error messages.
echo.
echo If you encounter module/type errors, try:
echo build-windows.bat cleanall
echo.
pause
exit /b 1