Files
LinedanceAfspiller/linedance-app/build.bat
2026-04-22 12:59:13 +02:00

142 lines
5.5 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
echo.
echo ================================================
echo LineDance Player - Windows Build + Installer
echo ================================================
echo.
:: ── Aktiver venv ──────────────────────────────────────────────────────────────
if exist "venv\Scripts\activate.bat" (
call venv\Scripts\activate.bat
) else (
echo ADVARSEL: venv ikke fundet - bruger system Python
)
:: ── Tjek Python ───────────────────────────────────────────────────────────────
python --version >nul 2>&1
if errorlevel 1 (
echo FEJL: Python ikke fundet
pause & exit /b 1
)
:: ── Installer/opdater PyInstaller ─────────────────────────────────────────────
echo [1/4] Installerer PyInstaller...
pip install pyinstaller --quiet
:: ── Ryd gamle builds ──────────────────────────────────────────────────────────
echo [2/4] Rydder gamle builds...
if exist "dist\LineDancePlayer" rmdir /s /q "dist\LineDancePlayer"
if exist "build\LineDancePlayer" rmdir /s /q "build\LineDancePlayer"
:: ── PyInstaller build ─────────────────────────────────────────────────────────
echo [3/4] Bygger med PyInstaller (2-5 minutter)...
echo.
pyinstaller build_windows.spec --clean --noconfirm
if errorlevel 1 (
echo.
echo FEJL: PyInstaller fejlede - se fejlbesked ovenfor
pause & exit /b 1
)
echo.
echo OK: dist\LineDancePlayer\ er klar
echo.
:: ── Kopiér VLC DLL-filer ind i app-mappen ─────────────────────────────────────
echo Kopierer VLC DLL-filer...
set "VLC_PATH="
if exist "C:\Program Files\VideoLAN\VLC\libvlc.dll" set "VLC_PATH=C:\Program Files\VideoLAN\VLC"
if exist "C:\Program Files (x86)\VideoLAN\VLC\libvlc.dll" set "VLC_PATH=C:\Program Files (x86)\VideoLAN\VLC"
if defined VLC_PATH (
copy /Y "!VLC_PATH!\libvlc.dll" "dist\LineDancePlayer\libvlc.dll" >nul
copy /Y "!VLC_PATH!\libvlccore.dll" "dist\LineDancePlayer\libvlccore.dll" >nul
:: Kopiér også plugins-mappen som VLC kræver
if exist "!VLC_PATH!\plugins" (
xcopy /E /I /Y /Q "!VLC_PATH!\plugins" "dist\LineDancePlayer\plugins" >nul
)
echo OK: VLC DLL-filer kopieret fra !VLC_PATH!
) else (
echo ADVARSEL: VLC ikke fundet - brugere skal have VLC installeret selv
)
echo.
:: ── NSIS installer ────────────────────────────────────────────────────────────
echo [4/4] Bygger NSIS installer...
echo.
:: Find NSIS
set "NSIS="
if exist "C:\Program Files (x86)\NSIS\makensis.exe" set "NSIS=C:\Program Files (x86)\NSIS\makensis.exe"
if exist "C:\Program Files\NSIS\makensis.exe" set "NSIS=C:\Program Files\NSIS\makensis.exe"
if not defined NSIS (
echo ADVARSEL: NSIS ikke fundet.
echo.
echo Download NSIS fra https://nsis.sourceforge.io/Download
echo og koer derefter: makensis installer.nsi
echo.
echo PyInstaller-buildet ligger klar i dist\LineDancePlayer\
goto :done
)
:: Tjek installer-mappe og billeder
if not exist "installer" mkdir installer
:: Generer et simpelt .ico hvis det mangler (kræver PowerShell)
if not exist "installer\icon.ico" (
echo Genererer standard ikon...
powershell -NoProfile -Command ^
"$bmp = New-Object System.Drawing.Bitmap(64,64); " ^
"$g = [System.Drawing.Graphics]::FromImage($bmp); " ^
"$g.Clear([System.Drawing.Color]::FromArgb(14,15,17)); " ^
"$b = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::FromArgb(232,160,32)); " ^
"$g.FillEllipse($b, 8, 8, 48, 48); " ^
"$bmp.Save('installer\icon.png'); " ^
"$g.Dispose(); $bmp.Dispose()" 2>nul
echo (Sæt et rigtigt icon.ico i installer\ for bedre resultat)
)
:: Byg NSIS — uden ikon-linjer hvis .ico mangler
if exist "installer\icon.ico" (
"%NSIS%" /V2 installer.nsi
) else (
:: Lav midlertidig .nsi uden ikon
powershell -NoProfile -Command ^
"(Get-Content installer.nsi) | " ^
"Where-Object { $_ -notmatch 'MUI_ICON|MUI_UNICON|MUI_HEADERIMAGE' } | " ^
"Set-Content installer_tmp.nsi"
"%NSIS%" /V2 installer_tmp.nsi
del installer_tmp.nsi
)
if errorlevel 1 (
echo.
echo FEJL: NSIS fejlede - se fejlbesked ovenfor
pause & exit /b 1
)
:done
echo.
echo ================================================
echo FAERDIG!
echo ================================================
if exist "dist\LineDancePlayer-Setup.exe" (
echo.
echo Installer: dist\LineDancePlayer-Setup.exe
for %%A in ("dist\LineDancePlayer-Setup.exe") do (
set /a SIZEMB=%%~zA / 1048576
echo Stoerrelse: !SIZEMB! MB
)
echo.
echo Upload til server:
echo scp dist\LineDancePlayer-Setup.exe bruger@linedanceplayer.dk:/opt/docker/linedanceafspiller/linedance-api/web/public/download/
) else (
echo.
echo PyInstaller-build: dist\LineDancePlayer\
echo Kør makensis installer.nsi manuelt naar NSIS er installeret
)
echo.
pause