Command-line utility for installing and uninstalling the FrameworX Windows services from scripts.

Reference → Installation Folders and Utilities → TManageServices CLI

Version 10.1.5+


TManageServices.exe ships in the FrameworX product root, the installation folder itself, alongside FrameworX.exe. It wraps the install, uninstall, and start logic for every Windows service delivered by the product.

Use it directly from PowerShell, SCCM, Intune, Ansible, or any other automation pipeline. The Designer Runtime Startup tab calls the same utility through its AutoStartup button.


Syntax

TManageServices.exe <command> [options]
      

Running the utility with no arguments, /?, /help, --help, or -h prints the full help text and exits with code 0. (Help-flag dispatch is new in 10.1.5.)

All service install and uninstall commands require elevated privileges. Launch the shell as Administrator.


Commands

TStartup

CommandEffect
/installtstartup /solution:"<path>" [/profile:<n>]Creates the Windows service TStartup-<SolutionName> for the named solution file. <SolutionName> is the file name without its extension.
/uninstalltstartup /solution:"<name>"Removes the TStartup service bound to the named solution.

TStartup service changes in 10.1.6

From FrameworX 10.1.6:

  • /uninstalltstartup reports a real failure instead of claiming success.
  • When the TStartup service to remove is not installed, the command succeeds (exit code 0) and prints Service <name> is not installed; nothing to uninstall.
  • Solution names containing a dot are handled correctly. For /uninstalltstartup, /solution accepts the solution name, the name with the .dbsln extension, or the solution file path.
  • A missing /solution argument stops with a usage message and counts as one failure.
  • An unknown install or uninstall command prints Unknown command: /<command>. Run TManageServices.exe /help for the list of commands. and counts as one failure.

The installed TStartup service runs under the LocalSystem account with startup type Automatic (Delayed Start). Installing registers the service and does not start it. Creating or removing the service still requires an elevated prompt.

Other Services

CommandEffect
/installtwebservices / /uninstalltwebservicesInstalls or removes TWebServices.
/installtsecuregateway / /uninstalltsecuregatewayInstalls or removes TSecureGateway.
/installthardkey / /uninstallthardkeyInstalls or removes THardkey (license daemon).
/installtmqttbroker / /uninstalltmqttbrokerInstalls or removes TMQTTBroker.
/installruntimemcphttp / /uninstallruntimemcphttp (New in 10.1.5)Installs or removes the .NET 10 RuntimeMCPHttp service. The registered command line is dotnet "<path>\net10.0\RuntimeMCPHttpService.dll".
/removeallservicesUninstalls every FrameworX service in one call. See the note in Exit Codes below.
/installModbusRTUSimCreates and populates registry keys under HKLM\SOFTWARE[\WOW6432Node]\Adroit Technologies\Adroit\Simulators\ModbusRTUSim and the matching HKCR\VirtualStore\MACHINE\SOFTWARE paths.

Run a Solution as a Windows Service from the Command Line

Create, start, stop and remove the runtime service for a solution from a script. The result is the same as AutoStart in Solution Center.

Run elevated. Every command that creates or removes a service needs an Administrator shell.

Service name. The service is named TStartup-<SolutionName>, where <SolutionName> is the solution file name without its extension (Plant1.dbsln → TStartup-Plant1).

Install. TManageServices.exe /installtstartup /solution:"C:\Solutions\Plant1.dbsln" /silent registers the service as LocalSystem, Automatic (Delayed Start), and does not start it.

Install result. From FrameworX 10.1.6a, when Windows cannot create the service, the command prints the service name with the reason Windows gives and exits with code 1. Scripts and deployment pipelines read the reason from the output.

Start. Start-Service TStartup-Plant1 (or sc.exe start TStartup-Plant1) starts the runtime.

Status. Get-Service TStartup-Plant1 (or sc.exe query TStartup-Plant1) shows whether it is running.

Stop. Stop-Service TStartup-Plant1 stops the runtime.

Remove. TManageServices.exe /uninstalltstartup /solution:"Plant1" /silent stops and removes the service, and succeeds when the service is not installed. Use it rather than sc.exe delete, which leaves the service's event-log source behind.

Reinstall. Running /installtstartup again for the same solution replaces the existing service.

Profile. Add /profile:<n> (1 Development, 2 Validation, 3 Custom) to run that profile as the service. Without it the service runs Production, as Solution Center does.

Other startup parameters. Any TStartup parameter you add, such as /redundancy, is stored in the service command line and applied at every start.

Passwords. Do not pass /password on this command line. The service command line is stored in the registry as plain text.

PowerShell. Install-FrameworXRuntime and Uninstall-FrameworXRuntime run the same commands. See Tatsoft.FrameworX PowerShell Module Reference.

Multiplatform solutions on Windows. Use the same commands. The service starts the .NET 10 runtime for a Multiplatform solution.

Linux and macOS. There is no per-solution service. Run TWebServices as a systemd service and turn on AutoStart for the solution. See Linux/Docker Startup in Runtime Installation Reference.

Full Sequence

$fx = 'C:\Program Files\Tatsoft\FrameworX'

& "$fx\TManageServices.exe" /installtstartup /solution:"C:\Solutions\Plant1.dbsln" /silent
if ($LASTEXITCODE -ne 0) { throw "Service install failed ($LASTEXITCODE)." }

Start-Service TStartup-Plant1
Get-Service   TStartup-Plant1
Stop-Service  TStartup-Plant1

& "$fx\TManageServices.exe" /uninstalltstartup /solution:"Plant1" /silent
      

Options (New in 10.1.5)

OptionDescription
/silent, /unattended, /quiet (New in 10.1.5)Force unattended mode. The utility skips the "Press Enter to continue" prompt on error and always returns to the caller.
/solution:"<value>"Required for /installtstartup and /uninstalltstartup. Install takes the solution file path. From FrameworX 10.1.6, uninstall takes the solution name, the name with the .dbsln extension, or the file path.
/profile:<n>Optional, for /installtstartup. Stored in the service command line and selects the execution profile the service runs: 1 Development, 2 Validation, 3 Custom. Without it the service runs Production, as AutoStart in Solution Center does.
/?, /help, --help, -h (New in 10.1.5)Print the help text and exit with code 0.

When stdin is redirected (piped input from a script), the utility treats the session as unattended automatically, even without an explicit /silent flag. (Auto-detection is new in 10.1.5.)

The /silent, /unattended, and /quiet flags never appear in the registered service ImagePath. All other arguments pass through to the service install step.


Exit Codes (New in 10.1.5)

CodeMeaning
0All requested operations succeeded.
NNumber of failed operations in the invocation. The utility aggregates failures across TSecureGateway, TStartup, and the TWebServices / THardkey / TMQTTBroker / RuntimeMCPHttp loop.

In PowerShell, read $LASTEXITCODE after the call to branch your pipeline.

Exception: /removeallservices always returns exit code 0, even when individual uninstalls fail. Error messages from that command appear on stdout only. For scripted failure detection, issue individual /uninstall* commands and read $LASTEXITCODE after each.


Examples

PowerShell Install

& "C:\Program Files\Tatsoft\FrameworX\TManageServices.exe" `
    /installtstartup `
    /solution:"C:\Solutions\Plant1.dbsln" `
    /silent

if ($LASTEXITCODE -ne 0) { throw "TStartup install failed with $LASTEXITCODE errors." }
      

Uninstall a Single Service

TManageServices.exe /uninstalltstartup /solution:"Plant1" /silent
      

Remove Every FrameworX Service

TManageServices.exe /removeallservices /silent
      

Capture Help to a File

TManageServices.exe /? | Out-File help.txt
      

Interactive vs Unattended (New in 10.1.5)

ModeBehavior on Error
Interactive (no /silent, stdin not redirected)Prints Press Enter to continue... and waits.
Unattended (/silent present or stdin redirected)Exits immediately with a non-zero code equal to the number of failures.

In this section...