mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-18 12:19:18 -05:00
00f1f18abb
- 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
170 lines
5.2 KiB
Batchfile
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
|