Initial commit: Inno Setup installer packages
Installer packages for GE manufacturing tools: - BlueSSOFix: Blue SSO authentication fix - HIDCardPrinter: HID card printer setup - HPOfflineInstaller: HP printer offline installer - MappedDrive: Network drive mapping - PrinterInstaller: General printer installer - ShopfloorConnect: Shopfloor connectivity tool - XeroxOfflineInstaller: Xerox printer offline installer 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
401
ShopfloorConnect/SERVICE_VALIDATION.md
Normal file
401
ShopfloorConnect/SERVICE_VALIDATION.md
Normal file
@@ -0,0 +1,401 @@
|
||||
# Windows Service Validation in ShopfloorConnect Installer
|
||||
|
||||
**Date**: 2025-10-10
|
||||
**Feature**: Automated Windows Service Registration Verification
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
The ShopfloorConnect installer now includes comprehensive validation to ensure the Windows service `SFCMTCService` is properly registered during installation.
|
||||
|
||||
---
|
||||
|
||||
## What Service Gets Installed?
|
||||
|
||||
### Service Details
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **Service Name** | `SFCMTCService` |
|
||||
| **Display Name** | Shop Floor Connect MTC Service |
|
||||
| **Description** | Machine Tool Client Service for Teamcenter integration |
|
||||
| **Executable** | `C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin\SFCMTCService.exe` |
|
||||
| **Startup Type** | Delayed Automatic |
|
||||
| **Account** | Local System (default) |
|
||||
| **Dependencies** | None |
|
||||
|
||||
### Service Architecture
|
||||
|
||||
The service is based on **Apache Tomcat 5.0** wrapped as a Windows service:
|
||||
- Uses `tomcat8_64.exe` service wrapper (renamed to `SFCMTCService.exe`)
|
||||
- Hosts the MTC web application (`wut.war`)
|
||||
- Communicates with Teamcenter PLM server (10.233.113.141)
|
||||
- Listens on local ports:
|
||||
- HTTP: 8090
|
||||
- HTTPS: 8493
|
||||
- Shutdown: 8006
|
||||
|
||||
---
|
||||
|
||||
## How Service Registration Works
|
||||
|
||||
### Installation Chain
|
||||
|
||||
```
|
||||
ShopfloorConnect.iss
|
||||
│
|
||||
└─► Step 2: install.bat
|
||||
│
|
||||
├─► Sets TCFITDIR environment variable
|
||||
│
|
||||
└─► Calls: Java + Apache Ant + ant_install.xml
|
||||
│
|
||||
├─► Extracts mi_server.jar
|
||||
├─► Copies Tomcat files to FIT-MI_Server/
|
||||
├─► Renames tomcat8_64.exe → SFCMTCService.exe
|
||||
├─► Creates setenv.bat with paths
|
||||
│
|
||||
└─► Executes: SFC_MTC_Tomcat_service.bat install SFCMTCService delayed
|
||||
│
|
||||
└─► Registers Windows Service using Tomcat wrapper
|
||||
✓ Service: SFCMTCService
|
||||
✓ Startup: Delayed Automatic
|
||||
✓ Status: Stopped (installed but not started)
|
||||
```
|
||||
|
||||
### Key Files Involved
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `install.bat` | Detects TCFITDIR, calls Ant build |
|
||||
| `ant_install.xml` | Apache Ant build script (588 lines) |
|
||||
| `mi_server.jar` | Contains Tomcat server and web app |
|
||||
| `tomcat8_64.exe` | Apache Tomcat service wrapper |
|
||||
| `SFC_MTC_Tomcat_service.bat` | Service registration script |
|
||||
| `mi_server.ini` | MTC configuration (created by Ant) |
|
||||
|
||||
---
|
||||
|
||||
## Validation Checks in Installer
|
||||
|
||||
The installer performs **three validation checks** after running `install.bat`:
|
||||
|
||||
### Check 1: FIT-MI_Server Folder Exists
|
||||
```pascal
|
||||
if not DirExists('C:\ShopFloorConnect\FIT-MI_Server') then
|
||||
begin
|
||||
MsgBox('Installation Error: FIT-MI_Server folder not created!');
|
||||
Exit;
|
||||
end;
|
||||
```
|
||||
|
||||
**What it validates**:
|
||||
- The Ant build script successfully extracted and copied files
|
||||
- The folder structure was created
|
||||
|
||||
**Typical failure reasons**:
|
||||
- TCFITDIR not set before running install.bat
|
||||
- Java runtime not found
|
||||
- Disk write permissions issue
|
||||
|
||||
---
|
||||
|
||||
### Check 2: Windows Service Registered
|
||||
```pascal
|
||||
// Query the service using sc.exe
|
||||
if not Exec('cmd.exe', '/c sc query SFCMTCService', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
|
||||
begin
|
||||
MsgBox('Warning: Unable to query Windows service!');
|
||||
Exit;
|
||||
end;
|
||||
|
||||
// Check if service exists
|
||||
if ResultCode <> 0 then
|
||||
begin
|
||||
MsgBox('Service Registration Failed!');
|
||||
Exit;
|
||||
end;
|
||||
```
|
||||
|
||||
**What it validates**:
|
||||
- Windows service `SFCMTCService` is registered in Service Control Manager
|
||||
- Service is queryable via `sc.exe`
|
||||
|
||||
**Typical failure reasons**:
|
||||
- SFC_MTC_Tomcat_service.bat failed to execute
|
||||
- Insufficient admin privileges
|
||||
- Service wrapper executable missing
|
||||
- Service name conflict (service already exists with different config)
|
||||
|
||||
**Return Codes**:
|
||||
- `0` = Service exists and is queryable ✓
|
||||
- `1060` = Service does not exist (ERROR_SERVICE_DOES_NOT_EXIST)
|
||||
- `5` = Access denied (not admin)
|
||||
|
||||
---
|
||||
|
||||
### Check 3: Configuration File Created
|
||||
```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;
|
||||
```
|
||||
|
||||
**What it validates**:
|
||||
- The Ant script completed successfully
|
||||
- Configuration file was created from template
|
||||
- Web application structure is intact
|
||||
|
||||
**Typical failure reasons**:
|
||||
- Ant build interrupted or failed
|
||||
- Template file missing in mi_server.jar
|
||||
- Web app deployment failed
|
||||
|
||||
---
|
||||
|
||||
## Service Commands
|
||||
|
||||
### Query Service Status
|
||||
```cmd
|
||||
sc query SFCMTCService
|
||||
```
|
||||
|
||||
**Sample Output (Stopped)**:
|
||||
```
|
||||
SERVICE_NAME: SFCMTCService
|
||||
TYPE : 10 WIN32_OWN_PROCESS
|
||||
STATE : 1 STOPPED
|
||||
WIN32_EXIT_CODE : 1077 (0x435)
|
||||
SERVICE_EXIT_CODE : 0 (0x0)
|
||||
CHECKPOINT : 0x0
|
||||
WAIT_HINT : 0x0
|
||||
```
|
||||
|
||||
**Sample Output (Running)**:
|
||||
```
|
||||
SERVICE_NAME: SFCMTCService
|
||||
TYPE : 10 WIN32_OWN_PROCESS
|
||||
STATE : 4 RUNNING
|
||||
WIN32_EXIT_CODE : 0 (0x0)
|
||||
SERVICE_EXIT_CODE : 0 (0x0)
|
||||
CHECKPOINT : 0x0
|
||||
WAIT_HINT : 0x0
|
||||
```
|
||||
|
||||
### Start Service
|
||||
```cmd
|
||||
sc start SFCMTCService
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```cmd
|
||||
net start SFCMTCService
|
||||
```
|
||||
|
||||
### Stop Service
|
||||
```cmd
|
||||
sc stop SFCMTCService
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```cmd
|
||||
net stop SFCMTCService
|
||||
```
|
||||
|
||||
### Delete Service (Uninstall)
|
||||
```cmd
|
||||
sc delete SFCMTCService
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```cmd
|
||||
cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
|
||||
SFC_MTC_Tomcat_service.bat remove
|
||||
```
|
||||
|
||||
### View Service Configuration
|
||||
```cmd
|
||||
sc qc SFCMTCService
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Manual Service Registration
|
||||
|
||||
If the installer fails to register the service, you can do it manually:
|
||||
|
||||
### Method 1: Using Batch File (Recommended)
|
||||
```cmd
|
||||
cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
|
||||
SFC_MTC_Tomcat_service.bat install SFCMTCService delayed
|
||||
```
|
||||
|
||||
### Method 2: Using Service Wrapper Directly
|
||||
```cmd
|
||||
cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
|
||||
SFCMTCService.exe //IS//SFCMTCService --DisplayName="Shop Floor Connect MTC Service" --Startup=delayed
|
||||
```
|
||||
|
||||
### Verify Registration
|
||||
```cmd
|
||||
sc query SFCMTCService
|
||||
```
|
||||
|
||||
Should return service information (not error 1060).
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting Service Issues
|
||||
|
||||
### Service Shows "Error 1060" (Not Found)
|
||||
**Cause**: Service was not registered
|
||||
|
||||
**Solutions**:
|
||||
1. Check installer error messages for clues
|
||||
2. Manually register using batch file (see above)
|
||||
3. Verify service executable exists:
|
||||
```cmd
|
||||
dir "C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin\SFCMTCService.exe"
|
||||
```
|
||||
|
||||
### Service Won't Start (Error 1053)
|
||||
**Cause**: Service failed to start within timeout period
|
||||
|
||||
**Solutions**:
|
||||
1. Check TCFITDIR environment variable is set:
|
||||
```cmd
|
||||
echo %TCFITDIR%
|
||||
```
|
||||
Should output: `C:\ShopFloorConnect`
|
||||
|
||||
2. Verify Java runtime exists:
|
||||
```cmd
|
||||
"C:\ShopFloorConnect\Java\j2sdk\jre\bin\java.exe" -version
|
||||
```
|
||||
|
||||
3. Check Windows Event Viewer:
|
||||
- Windows Logs → Application
|
||||
- Look for errors from "SFCMTCService" or "Apache Tomcat"
|
||||
|
||||
4. Check service logs:
|
||||
```
|
||||
C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\logs\
|
||||
```
|
||||
|
||||
### Service Installed but Not Visible in Services GUI
|
||||
**Cause**: Services console needs refresh
|
||||
|
||||
**Solution**:
|
||||
1. Close Services console (services.msc)
|
||||
2. Reopen it
|
||||
3. Or use `sc query SFCMTCService` from command line
|
||||
|
||||
### Service Starts but Immediately Stops
|
||||
**Cause**: Configuration error or port conflict
|
||||
|
||||
**Solutions**:
|
||||
1. Check if ports are already in use:
|
||||
```cmd
|
||||
netstat -ano | findstr ":8090"
|
||||
netstat -ano | findstr ":8493"
|
||||
```
|
||||
|
||||
2. Verify `mi_server.ini` configuration:
|
||||
```cmd
|
||||
notepad "C:\ShopFloorConnect\FIT-MI_Server\webapps\wut\WEB-INF\conf\mi_server.ini"
|
||||
```
|
||||
|
||||
3. Check Tomcat configuration:
|
||||
```cmd
|
||||
notepad "C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\conf\server.xml"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Service Startup Process
|
||||
|
||||
When the service starts:
|
||||
|
||||
1. **Windows Service Manager** launches `SFCMTCService.exe`
|
||||
2. **Service Wrapper** reads configuration from registry
|
||||
3. **Wrapper** sets environment variables from `setenv.bat`:
|
||||
- `TCFITDIR=C:\ShopFloorConnect`
|
||||
- `JAVA_HOME=C:\ShopFloorConnect\Java\j2sdk`
|
||||
4. **Wrapper** launches Java process with Tomcat
|
||||
5. **Tomcat** starts and deploys `wut.war` web application
|
||||
6. **MTC Application** reads `mi_server.ini` configuration
|
||||
7. **MTC** connects to Teamcenter server at 10.233.113.141
|
||||
8. **Service** reports "Running" status to Service Control Manager
|
||||
|
||||
**Total startup time**: ~30-60 seconds (delayed start adds additional delay)
|
||||
|
||||
---
|
||||
|
||||
## Registry Locations
|
||||
|
||||
Service configuration is stored in Windows Registry:
|
||||
|
||||
### Service Definition
|
||||
```
|
||||
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SFCMTCService
|
||||
```
|
||||
|
||||
### Service Parameters
|
||||
```
|
||||
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SFCMTCService\Parameters
|
||||
```
|
||||
|
||||
**Key Values**:
|
||||
- `ImagePath`: Path to SFCMTCService.exe
|
||||
- `DisplayName`: "Shop Floor Connect MTC Service"
|
||||
- `Start`: 2 (Automatic - Delayed)
|
||||
- `Type`: 16 (SERVICE_WIN32_OWN_PROCESS)
|
||||
|
||||
---
|
||||
|
||||
## Comparison: Before vs After Validation
|
||||
|
||||
### Before (Original Installer)
|
||||
```
|
||||
install.bat runs → [unknown if successful] → Show "Installation Complete!"
|
||||
```
|
||||
|
||||
❌ No validation
|
||||
❌ Silent failures
|
||||
❌ No service verification
|
||||
❌ User discovers issues later when trying to start service
|
||||
|
||||
### After (Improved Installer)
|
||||
```
|
||||
install.bat runs → Validate folder → Validate service → Validate config → Success
|
||||
↓ ↓ ↓
|
||||
Show error Show error Show error
|
||||
```
|
||||
|
||||
✓ Comprehensive validation
|
||||
✓ Early error detection
|
||||
✓ Specific error messages
|
||||
✓ Remediation guidance
|
||||
✓ Only shows success when truly successful
|
||||
|
||||
---
|
||||
|
||||
## Related Files
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `ShopfloorConnect.iss` | Main installer script with validation |
|
||||
| `IMPROVEMENTS.md` | Full list of installer improvements |
|
||||
| `README.md` | User documentation with troubleshooting |
|
||||
| `SERVICE_VALIDATION.md` | This file |
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-10-10
|
||||
**Version**: 1.1 (with service validation)
|
||||
Reference in New Issue
Block a user