Files
TimeTracker/scripts/build-desktop.bat
T
Dries Peeters 00f1f18abb Improve build scripts and CI/CD workflows
- Enhance build scripts with better error handling and Windows support
- Add Windows-specific build scripts and PowerShell utilities
- Add asset preparation and verification scripts
- Update GitHub Actions workflows for desktop and mobile builds
- Add build configuration and troubleshooting utilities
- Improve cross-platform build compatibility
2026-01-11 20:51:13 +01:00

170 lines
5.2 KiB
Batchfile

@echo off
REM Build script for TimeTracker Desktop App (Electron) - Windows
setlocal enabledelayedexpansion
set SCRIPT_DIR=%~dp0
set PROJECT_ROOT=%SCRIPT_DIR%..
set DESKTOP_DIR=%PROJECT_ROOT%\desktop
cd /d "%PROJECT_ROOT%"
REM Sync version from setup.py to package.json
echo Syncing version from setup.py...
python "%SCRIPT_DIR%sync-desktop-version.py"
if errorlevel 1 (
echo ERROR: Failed to sync version
exit /b 1
)
echo.
cd /d "%DESKTOP_DIR%"
echo Building TimeTracker Desktop App...
echo.
REM Check Node.js
where node >nul 2>&1
if errorlevel 1 (
echo ERROR: Node.js is not installed or not in PATH
exit /b 1
)
echo Node.js version:
node --version
echo npm version:
npm --version
echo.
echo Checking node_modules...
REM Check if node_modules exists and is valid
set SKIP_INSTALL=0
if exist "node_modules\electron\package.json" (
if exist "node_modules\electron-builder\package.json" (
REM Try a quick test
node -e "require('electron')" >nul 2>&1
if not errorlevel 1 (
set SKIP_INSTALL=1
echo [OK] node_modules appears valid, skipping install
echo.
)
)
)
REM Install dependencies
echo SKIP_INSTALL = %SKIP_INSTALL%
if "%SKIP_INSTALL%"=="0" (
echo Installing dependencies...
if not exist "node_modules" (
echo Installing dependencies (first time)...
call npm install --prefer-offline --no-audit --loglevel=warn
if errorlevel 1 (
echo.
echo ERROR: npm install failed
echo.
echo This is a common issue on Windows, especially with OneDrive:
echo - OneDrive file locking prevents npm from working properly
echo - Antivirus may be scanning files during install
echo - File permissions may be restricted
echo.
echo Solutions:
echo 1. Exclude node_modules from OneDrive sync (MOST IMPORTANT!)
echo - Right-click desktop\node_modules folder
echo - Choose "Always keep on this device"
echo 2. Run: scripts\fix-windows-build.bat
echo 3. Run this script as Administrator
echo 4. Move project outside OneDrive folder
echo 5. Use WSL instead of Command Prompt
echo.
exit /b 1
)
) else (
echo Updating dependencies...
call npm ci --prefer-offline --no-audit --loglevel=warn
if errorlevel 1 (
echo npm ci failed, trying npm install...
call npm install --prefer-offline --no-audit --loglevel=warn
if errorlevel 1 (
echo.
echo ERROR: npm install failed
echo.
echo Windows/OneDrive specific solutions:
echo 1. Close all programs that might be using node_modules
echo 2. Exclude desktop\node_modules from OneDrive sync
echo 3. Run Command Prompt as Administrator and try again
echo 4. Delete node_modules and try: npm install
echo 5. Move project outside OneDrive
echo.
exit /b 1
)
)
)
echo.
)
REM Verify electron-builder is available
echo Checking npx...
where npx >nul 2>&1
if errorlevel 1 (
echo ERROR: npx is not available
echo Make sure Node.js is installed and npm is in PATH
exit /b 1
)
echo [OK] npx found
echo.
REM Set environment variable to disable code signing completely
set CSC_IDENTITY_AUTO_DISCOVERY=false
REM Clear electron-builder cache if symlink errors occurred
if exist "%LOCALAPPDATA%\electron-builder\Cache\winCodeSign" (
echo Clearing winCodeSign cache (prevents symlink errors)...
rmdir /s /q "%LOCALAPPDATA%\electron-builder\Cache\winCodeSign" 2>nul
echo.
)
REM Build
echo ========================================
echo Starting build process...
echo ========================================
echo.
echo NOTE: Code signing is disabled (sign: null, CSC_IDENTITY_AUTO_DISCOVERY=false)
echo If you still get symbolic link errors:
echo 1. Enable Developer Mode: Win+I ^> Privacy ^& Security ^> For developers
echo 2. Or run PowerShell/CMD as Administrator
echo 3. Or run: scripts\clear-all-electron-cache.bat
echo.
set PLATFORM=%1
if "%PLATFORM%"=="" set PLATFORM=win
if /i "%PLATFORM%"=="win" (
echo Building Windows installer...
call npx --yes electron-builder --win
if errorlevel 1 (
echo ERROR: Windows build failed
echo.
echo Common issues:
echo - Missing icon.ico file (generate with: node scripts\generate-icons.js)
echo - Insufficient permissions
echo - Antivirus blocking the build
echo - Symbolic link errors (enable Developer Mode or run as Admin)
echo.
exit /b 1
)
) else if /i "%PLATFORM%"=="all" (
echo Building for all supported platforms...
echo Note: Will automatically build for platforms supported on your OS
call npx --yes electron-builder --win --mac --linux
if errorlevel 1 (
echo ERROR: Build failed
exit /b 1
)
) else (
echo Usage: %0 [win^|all]
exit /b 1
)
echo.
echo Build complete!
echo Outputs: %DESKTOP_DIR%\dist\
endlocal