@echo off REM Windows Print Service - ENHANCED INSTALLER - Fixes Error 1053 REM This installer addresses the most common causes of Windows Service startup failures setlocal enabledelayedexpansion echo ========================================= echo Quality Print Service - ENHANCED INSTALLER echo Fixes Windows Service Error 1053 echo ========================================= echo. echo This installer includes multiple methods to ensure service starts: echo ✅ Windows SC Service (preferred) echo ✅ Task Scheduler Service (fallback) echo ✅ Startup Script (manual fallback) echo ✅ Enhanced error detection and recovery echo. REM Check for administrator privileges net session >nul 2>&1 if %errorLevel% neq 0 ( echo ❌ ERROR: Administrator privileges required echo Please right-click this file and select "Run as administrator" echo. pause exit /b 1 ) echo [1/8] Administrator privileges confirmed ✅ echo. REM Set variables set CURRENT_DIR=%~dp0 set SERVICE_NAME=QualityPrintService set SERVICE_DISPLAY_NAME=Quality Print Service set INSTALL_DIR=C:\QualityPrintService set LOG_DIR=%USERPROFILE%\PrintService\logs REM Detect Python executable echo [2/8] Detecting Python installation... set PYTHON_EXE= set PYTHON_SCRIPT=%INSTALL_DIR%\print_service_complete.py REM Check for embedded Python first if exist "%INSTALL_DIR%\python_embedded\python.exe" ( set PYTHON_EXE=%INSTALL_DIR%\python_embedded\python.exe echo Found embedded Python: !PYTHON_EXE! ✅ ) else if exist "%CURRENT_DIR%python_embedded\python.exe" ( set PYTHON_EXE=%CURRENT_DIR%python_embedded\python.exe echo Found embedded Python in installer: !PYTHON_EXE! ✅ ) else ( REM Check system Python python --version >nul 2>&1 if !errorLevel! equ 0 ( set PYTHON_EXE=python echo Found system Python ✅ ) else ( echo ❌ ERROR: Python not found echo Please ensure Python 3.7+ is installed or use the zero-dependency package pause exit /b 1 ) ) echo. REM Stop existing service echo [3/8] Stopping existing service (if any)... sc query "%SERVICE_NAME%" >nul 2>&1 if %errorLevel% equ 0 ( echo Stopping existing service... net stop "%SERVICE_NAME%" >nul 2>&1 sc delete "%SERVICE_NAME%" >nul 2>&1 timeout /t 3 >nul ) REM Stop any existing task schtasks /end /tn "%SERVICE_NAME%" >nul 2>&1 schtasks /delete /tn "%SERVICE_NAME%" /f >nul 2>&1 echo Service cleanup completed ✅ echo. REM Create installation directory echo [4/8] Creating installation directory... if exist "%INSTALL_DIR%" ( echo Removing old installation... rmdir /s /q "%INSTALL_DIR%" >nul 2>&1 ) mkdir "%INSTALL_DIR%" >nul 2>&1 REM Create log directory mkdir "%LOG_DIR%" >nul 2>&1 echo Installation directory: %INSTALL_DIR% ✅ echo Log directory: %LOG_DIR% ✅ echo. REM Copy service files echo [5/8] Installing service files... REM Copy Python embedded if available if exist "%CURRENT_DIR%python_embedded\" ( echo Copying embedded Python distribution... xcopy "%CURRENT_DIR%python_embedded" "%INSTALL_DIR%\python_embedded\" /E /I /Y >nul set PYTHON_EXE=%INSTALL_DIR%\python_embedded\python.exe echo Embedded Python installed ✅ ) REM Copy service scripts copy "%CURRENT_DIR%print_service_complete.py" "%INSTALL_DIR%\" >nul copy "%CURRENT_DIR%service_wrapper.py" "%INSTALL_DIR%\" >nul 2>&1 copy "%CURRENT_DIR%service_installer.py" "%INSTALL_DIR%\" >nul 2>&1 echo Service files installed ✅ echo. REM Test service before installing echo [6/8] Testing service functionality... cd /d "%INSTALL_DIR%" echo Testing Python and service script... "%PYTHON_EXE%" "%PYTHON_SCRIPT%" --test >nul 2>&1 if %errorLevel% equ 0 ( echo Service test passed ✅ ) else ( echo ⚠️ Service test failed - continuing with installation ) REM Check port availability echo Testing port 8765 availability... netstat -an | findstr :8765 >nul 2>&1 if %errorLevel% equ 0 ( echo ⚠️ Port 8765 is in use - service may conflict ) else ( echo Port 8765 available ✅ ) echo. REM Install service - Multiple methods echo [7/8] Installing Windows service with multiple fallback methods... REM Create enhanced service wrapper set WRAPPER_BAT=%INSTALL_DIR%\enhanced_service_wrapper.bat echo @echo off > "%WRAPPER_BAT%" echo REM Enhanced Windows Service Wrapper - Error 1053 Fix >> "%WRAPPER_BAT%" echo cd /d "%INSTALL_DIR%" >> "%WRAPPER_BAT%" echo. >> "%WRAPPER_BAT%" echo REM Log service start attempt >> "%WRAPPER_BAT%" echo echo %%date%% %%time%% - Service wrapper starting... ^>^> "%LOG_DIR%\service_wrapper.log" >> "%WRAPPER_BAT%" echo. >> "%WRAPPER_BAT%" echo REM Verify files exist >> "%WRAPPER_BAT%" echo if not exist "%PYTHON_EXE%" ( >> "%WRAPPER_BAT%" echo echo ERROR: Python not found at %PYTHON_EXE% ^>^> "%LOG_DIR%\service_wrapper.log" >> "%WRAPPER_BAT%" echo exit /b 1 >> "%WRAPPER_BAT%" echo ^) >> "%WRAPPER_BAT%" echo. >> "%WRAPPER_BAT%" echo if not exist "%PYTHON_SCRIPT%" ( >> "%WRAPPER_BAT%" echo echo ERROR: Service script not found ^>^> "%LOG_DIR%\service_wrapper.log" >> "%WRAPPER_BAT%" echo exit /b 1 >> "%WRAPPER_BAT%" echo ^) >> "%WRAPPER_BAT%" echo. >> "%WRAPPER_BAT%" echo REM Start service with error handling >> "%WRAPPER_BAT%" echo echo Starting service process... ^>^> "%LOG_DIR%\service_wrapper.log" >> "%WRAPPER_BAT%" echo "%PYTHON_EXE%" "%PYTHON_SCRIPT%" --service >> "%WRAPPER_BAT%" echo. >> "%WRAPPER_BAT%" echo REM Log exit code >> "%WRAPPER_BAT%" echo echo Service exited with code %%errorlevel%% ^>^> "%LOG_DIR%\service_wrapper.log" >> "%WRAPPER_BAT%" REM Method 1: Windows SC Service echo Installing as Windows SC Service... sc create "%SERVICE_NAME%" binPath= "\"%WRAPPER_BAT%\"" DisplayName= "%SERVICE_DISPLAY_NAME%" start= auto >nul 2>&1 if %errorLevel% equ 0 ( echo Windows SC Service created ✅ REM Configure recovery sc failure "%SERVICE_NAME%" reset= 86400 actions= restart/5000/restart/5000/restart/5000 >nul 2>&1 REM Try to start service echo Starting SC service... net start "%SERVICE_NAME%" >nul 2>&1 if !errorLevel! equ 0 ( echo SC Service started successfully ✅ set SERVICE_METHOD=SC_SERVICE goto :service_installed ) else ( echo ⚠️ SC Service created but failed to start - trying Task Scheduler... ) ) else ( echo ❌ SC Service creation failed - trying Task Scheduler... ) REM Method 2: Task Scheduler Service echo Installing as Task Scheduler Service... REM Create task XML set TASK_XML=%INSTALL_DIR%\%SERVICE_NAME%_task.xml echo ^ > "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^Quality Print Service - Automatic Label Printing^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^true^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^S-1-5-18^ >> "%TASK_XML%" echo ^HighestAvailable^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^IgnoreNew^ >> "%TASK_XML%" echo ^false^ >> "%TASK_XML%" echo ^false^ >> "%TASK_XML%" echo ^true^ >> "%TASK_XML%" echo ^true^ >> "%TASK_XML%" echo ^false^ >> "%TASK_XML%" echo ^true^ >> "%TASK_XML%" echo ^true^ >> "%TASK_XML%" echo ^false^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^PT5M^ >> "%TASK_XML%" echo ^3^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^"%PYTHON_EXE%"^ >> "%TASK_XML%" echo ^"%PYTHON_SCRIPT%" --service^ >> "%TASK_XML%" echo ^%INSTALL_DIR%^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" echo ^ >> "%TASK_XML%" schtasks /create /tn "%SERVICE_NAME%" /xml "%TASK_XML%" >nul 2>&1 if %errorLevel% equ 0 ( echo Task Scheduler service created ✅ REM Start task schtasks /run /tn "%SERVICE_NAME%" >nul 2>&1 if !errorLevel! equ 0 ( echo Task Scheduler service started ✅ set SERVICE_METHOD=TASK_SCHEDULER goto :service_installed ) else ( echo ⚠️ Task created but failed to start ) ) else ( echo ❌ Task Scheduler creation failed ) REM Method 3: Startup Script Fallback echo Installing as Startup Script... set STARTUP_DIR=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup set STARTUP_SCRIPT=%STARTUP_DIR%\QualityPrintService.bat echo @echo off > "%STARTUP_SCRIPT%" echo REM Quality Print Service - Startup Script >> "%STARTUP_SCRIPT%" echo cd /d "%INSTALL_DIR%" >> "%STARTUP_SCRIPT%" echo start /min "Quality Print Service" "%PYTHON_EXE%" "%PYTHON_SCRIPT%" --service >> "%STARTUP_SCRIPT%" if exist "%STARTUP_SCRIPT%" ( echo Startup script created ✅ REM Start immediately start /min "" "%STARTUP_SCRIPT%" echo Service started via startup script ✅ set SERVICE_METHOD=STARTUP_SCRIPT goto :service_installed ) REM If we get here, all methods failed echo ❌ All installation methods failed goto :installation_failed :service_installed echo. REM Verification echo [8/8] Verifying installation... echo Waiting for service to start... timeout /t 5 >nul REM Test service connection echo Testing service connection... for /L %%i in (1,1,10) do ( curl -s http://localhost:8765/health >nul 2>&1 if !errorLevel! equ 0 ( echo Service is responding ✅ goto :success ) powershell -Command "try { Invoke-WebRequest -Uri 'http://localhost:8765/health' -UseBasicParsing } catch { exit 1 }" >nul 2>&1 if !errorLevel! equ 0 ( echo Service is responding ✅ goto :success ) echo Attempt %%i failed, retrying... timeout /t 2 >nul ) echo ⚠️ Service installed but not responding goto :partial_success :success echo. echo ======================================== echo INSTALLATION SUCCESSFUL! 🎉 echo ======================================== echo. echo ✅ Service Method: !SERVICE_METHOD! echo ✅ Service URL: http://localhost:8765 echo ✅ Health Check: http://localhost:8765/health echo ✅ Service will start automatically on boot echo. echo 📋 NEXT STEPS: echo 1. Install Chrome extension from 'chrome_extension' folder echo 2. Test printing from the web application echo 3. Configure printer settings if needed echo. echo 📊 Service Management: if "!SERVICE_METHOD!"=="SC_SERVICE" ( echo - Start: net start %SERVICE_NAME% echo - Stop: net stop %SERVICE_NAME% echo - Status: sc query %SERVICE_NAME% ) else if "!SERVICE_METHOD!"=="TASK_SCHEDULER" ( echo - Start: schtasks /run /tn %SERVICE_NAME% echo - Stop: schtasks /end /tn %SERVICE_NAME% echo - Status: schtasks /query /tn %SERVICE_NAME% ) else ( echo - Start: Run startup script manually echo - Stop: End process in Task Manager ) echo. echo 📁 Logs: %LOG_DIR% echo. goto :end :partial_success echo. echo ======================================== echo INSTALLATION COMPLETED echo ======================================== echo. echo ⚠️ Service installed but verification failed echo 📋 Manual verification steps: echo. echo 1. Check if service is running: if "!SERVICE_METHOD!"=="SC_SERVICE" ( echo sc query %SERVICE_NAME% ) else if "!SERVICE_METHOD!"=="TASK_SCHEDULER" ( echo schtasks /query /tn %SERVICE_NAME% ) else ( echo Check Task Manager for python.exe process ) echo. echo 2. Test service manually: echo http://localhost:8765/health echo. echo 3. Check logs: echo %LOG_DIR%\service_wrapper.log echo. echo 4. Manual start if needed: if "!SERVICE_METHOD!"=="SC_SERVICE" ( echo net start %SERVICE_NAME% ) else if "!SERVICE_METHOD!"=="TASK_SCHEDULER" ( echo schtasks /run /tn %SERVICE_NAME% ) else ( echo Run: %STARTUP_SCRIPT% ) echo. goto :end :installation_failed echo. echo ======================================== echo INSTALLATION FAILED echo ======================================== echo. echo ❌ All service installation methods failed echo. echo 📋 Troubleshooting steps: echo 1. Verify Administrator privileges echo 2. Check Python installation echo 3. Ensure port 8765 is available echo 4. Review logs in: %LOG_DIR% echo 5. Try manual service start echo. echo 🔧 Manual installation: echo cd /d "%INSTALL_DIR%" echo "%PYTHON_EXE%" "%PYTHON_SCRIPT%" --standalone echo. pause exit /b 1 :end echo Press any key to exit... pause >nul