# ShopfloorConnect Installer Improvements **Date**: 2025-10-10 **Version**: 1.1 ## Changes Made ### 1. Fixed Output Directory Path (Line 16) **Before**: ```pascal OutputDir=C:\Users\570005354\Downloads\Output ``` **After**: ```pascal OutputDir=.\Output ``` **Reason**: The hardcoded user path would fail when building on different machines. Using a relative path `.\Output` creates the output directory next to the `.iss` script file. --- ### 2. Added Comprehensive Error Handling **Before**: - No error checking on `Exec()` calls - No validation of result codes - Installation continued even if steps failed - No feedback if something went wrong **After**: - ✅ Checks both `Exec()` return value AND `ResultCode` - ✅ Shows detailed error messages with error codes - ✅ Exits installation on failure (prevents cascading errors) - ✅ Provides remediation steps in error messages - ✅ Validates that configuration file was created --- ### 3. Fixed Batch File Pause Issue (Line 61) **Problem**: The `install.bat` file has a `pause` command at the end (line 93), which would hang the installer waiting for user input. **Solution**: Added `echo. |` to pipe a newline to the batch file, automatically responding to the pause: ```pascal // Before Exec('cmd.exe', '/c cd /d "C:\ShopFloorConnect\MachineToolClient_Service" && call install.bat', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); // After Exec('cmd.exe', '/c cd /d "C:\ShopFloorConnect\MachineToolClient_Service" && echo. | call install.bat', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); ``` --- ### 4. Added Comprehensive Installation Validation (Lines 73-130) **New Features**: After running installation steps, the installer now performs multiple validation checks: #### 4a. Verify FIT-MI_Server Folder Created (Lines 73-85) ```pascal if not DirExists('C:\ShopFloorConnect\FIT-MI_Server') then begin MsgBox('Installation Error: FIT-MI_Server folder not created!' + ...); Exit; end; ``` This checks that the Ant build script successfully created the service folder structure. #### 4b. Verify Windows Service Registration (Lines 87-106) ```pascal // Query the Windows service if not Exec('cmd.exe', '/c sc query SFCMTCService', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then begin MsgBox('Warning: Unable to query Windows service!' + ...); Exit; end; if ResultCode <> 0 then begin MsgBox('Service Registration Failed!' + ...); Exit; end; ``` This verifies that the Windows service "SFCMTCService" was actually registered and is queryable. #### 4c. Verify Configuration File Created (Lines 121-130) ```pascal if not FileExists('C:\ShopFloorConnect\FIT-MI_Server\webapps\wut\WEB-INF\conf\mi_server.ini') then begin MsgBox('Configuration Error: mi_server.ini not found!' + ...); Exit; end; ``` This ensures the critical configuration file was created and populated. **Why These Checks Matter**: These validations catch installation failures early and provide specific error messages with remediation steps, preventing the "Installation Complete!" message from showing when installation actually failed. --- ### 5. Enhanced Error Messages and Success Confirmation All error messages now include: - Clear description of what failed - Error codes when available - Specific file paths involved - Remediation steps (what to do manually) **Example Error**: ``` Service Registration Failed! The Windows service "SFCMTCService" was not created. Error Code: 1060 The installation may have completed, but the service was not registered. You may need to manually register the service by running: C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin\SFC_MTC_Tomcat_service.bat install ``` **Enhanced Success Message** (Lines 132-145): The completion message now includes service details and instructions: ``` Installation Complete! The ShopfloorConnect MTC Service has been installed and configured. Windows Service: SFCMTCService (Registered) Startup Type: Delayed Automatic Site Configuration: West Jefferson CA-LR Teamcenter Server: 10.233.113.141 Shop Floor PC FQDN: Auto-detected Config file: C:\ShopFloorConnect\FIT-MI_Server\webapps\wut\WEB-INF\conf\mi_server.ini To start the service: 1. Open Services (services.msc) 2. Find "SFCMTCService" 3. Right-click → Start Or run: sc start SFCMTCService ``` --- ## Installation Flow (Updated) ``` ┌─────────────────────────────────────┐ │ 1. Copy files to C:\ShopFloorConnect│ │ (169MB - Java + MTC Service) │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 2. Set Environment Variable │ │ setx /m TCFITDIR=C:\ShopFloorConnect │ ✓ Error check: Exit if failed │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 3. Install MTC Service │ │ cd MachineToolClient_Service │ │ echo. | call install.bat │ │ (Ant build creates FIT-MI_Server)│ │ (Registers SFCMTCService) │ │ ✓ Error check: Exit if failed │ │ ✓ Auto-respond to pause │ └──────────────┬──────────────────────┘ │ ▼ (Sleep 3 seconds) │ ┌─────────────────────────────────────┐ │ 3a. Verify FIT-MI_Server Created │ │ Check folder exists │ │ ✓ Error: Exit if not found │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 3b. Verify Service Registration │ │ sc query SFCMTCService │ │ ✓ Error: Exit if not registered │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 4. Configure Site Settings │ │ cd C:\ShopFloorConnect │ │ call 3 - West_Jeff_CA_LR_Update_ini_File.bat │ ✓ Error check: Exit if failed │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 4a. Verify Configuration File │ │ Check mi_server.ini exists │ │ ✓ Error: Exit if not found │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ ✓ Installation Complete! │ │ Show success message with: │ │ - Service name and status │ │ - Configuration details │ │ - Instructions to start service │ └─────────────────────────────────────┘ ``` --- ## Testing Recommendations ### Test Case 1: Successful Installation 1. Run installer on clean Windows PC with admin rights 2. Verify all 3 steps execute without errors 3. Confirm success message appears 4. Check that `mi_server.ini` file exists and contains correct settings ### Test Case 2: Missing Admin Rights 1. Run installer without admin rights 2. Should fail at Step 2 (setx /m) 3. Should show error: "Failed to set TCFITDIR environment variable!" ### Test Case 3: Installation Failure Recovery 1. Simulate failure by renaming `install.bat` temporarily 2. Run installer 3. Should fail at Step 3 with error message 4. Should NOT show "Installation Complete!" message 5. Should provide manual remediation steps ### Test Case 4: Configuration File Verification 1. Run installer normally 2. If `install.bat` fails silently (doesn't create FIT-MI_Server folder) 3. Should catch this at Step 5 (file validation) 4. Should show: "Configuration file not found" --- ## Compatibility Notes - **Inno Setup Version**: Requires Inno Setup 6 or later - **Windows**: Windows 7 and later (x64) - **Admin Rights**: Required for `setx /m` and Windows service installation - **Dependencies**: None (all files included in installer) --- ## Known Limitations 1. **Site-Specific**: Hardcoded for West Jefferson CA-LR - To change sites, must edit line 59 and rebuild installer - Future: Could add wizard page for site selection 2. **Single Installation Path**: Fixed to `C:\ShopFloorConnect` - Cannot be changed by user during installation - This is intentional (service expects this path) 3. **No Rollback**: If installation fails mid-way - Files remain in C:\ShopFloorConnect - Environment variable may be set - User must manually clean up or re-run installer --- ## Files Modified - `ShopfloorConnect.iss` - Main installer script (improved error handling) - `README.md` - Enhanced troubleshooting section - `IMPROVEMENTS.md` - This file (new) ## Files Unchanged - `Run_ShopfloorConnect_Installer.bat` - Batch launcher (still valid) - `ShopFloorConnect/` - Source files (no changes needed) - `*.bmp`, `*.ico` - Image assets (no changes) --- ## Next Steps (Optional Enhancements) 1. **Add Site Selection Wizard Page** - Let user choose between West Jeff / Rotating Parts / Wilmington - Eliminates need to rebuild installer for different sites 2. **Add Installation Logging** - Create `C:\ShopFloorConnect\install.log` with timestamps - Log each step and result code - Helpful for troubleshooting 3. **Add Pre-Installation Checks** - Verify Windows version - Check available disk space (needs ~200MB) - Detect if service already installed 4. **Add Uninstaller Enhancements** - Stop service before uninstalling - Remove environment variable - Prompt to keep configuration files --- **Reviewed By**: Claude Code **Status**: Ready for testing and deployment