Files
inno-installers/ShopfloorConnect/SERVICE_VALIDATION.md
cproudlock 28541cd3ed 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>
2025-12-30 13:15:54 -05:00

10 KiB

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

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

// 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

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

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

sc start SFCMTCService

or

net start SFCMTCService

Stop Service

sc stop SFCMTCService

or

net stop SFCMTCService

Delete Service (Uninstall)

sc delete SFCMTCService

or

cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
SFC_MTC_Tomcat_service.bat remove

View Service Configuration

sc qc SFCMTCService

Manual Service Registration

If the installer fails to register the service, you can do it manually:

cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
SFC_MTC_Tomcat_service.bat install SFCMTCService delayed

Method 2: Using Service Wrapper Directly

cd C:\ShopFloorConnect\FIT-MI_Server\Tomcat 5.0\bin
SFCMTCService.exe //IS//SFCMTCService --DisplayName="Shop Floor Connect MTC Service" --Startup=delayed

Verify Registration

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:
    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:

    echo %TCFITDIR%
    

    Should output: C:\ShopFloorConnect

  2. Verify Java runtime exists:

    "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:

    netstat -ano | findstr ":8090"
    netstat -ano | findstr ":8493"
    
  2. Verify mi_server.ini configuration:

    notepad "C:\ShopFloorConnect\FIT-MI_Server\webapps\wut\WEB-INF\conf\mi_server.ini"
    
  3. Check Tomcat configuration:

    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


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)