Install and configure runtime components.

Reference  Solution  Deployment Runtime | Server | Client Types | Container | Redundancy | Security


Runtime Installation (Reference): Deploying FrameworX runtime components for production environments.


Deploying in production? This page covers runtime installation options and startup parameters in detail. For the end-to-end IT workflow (silent install switches, exit codes, service install, monitoring, update, uninstall, automation patterns), see IT Deployment RunBook.

Deployment Scenarios

Windows Runtime Deployment

For Windows-only solutions targeting .NET Framework 4.8:

  • Install the complete FrameworX platform (same as Designer)
  • No separate runtime-only installer exists
  • Configure to use only runtime components in production
  • Disable Designer access if needed for security

Multiplatform Runtime Deployment (.NET 10)

For solutions targeting Linux, Docker, or edge devices, or for web-based clients using WebAssembly:

OptionComponentsSizeUse Case
Runtime-OnlyTServer.exe, drivers, minimal files~100 MBProduction edge devices
Full PlatformAll files including Designer~900 MB+Enable remote ClickOnce Designer
TWebServices-OnlyCommunication server onlyMinimalDevelopment/testing

Silent Install and Exit Codes

The Windows installer is an Inno Setup package. For unattended deployment (SCCM, Intune, Ansible, PowerShell DSC):

Start-Process -FilePath "FrameworX-10.1.5-Setup.exe" `
  -ArgumentList "/VERYSILENT", "/SUPPRESSMSGBOXES", "/NORESTART", `
                "/LOG=C:\Logs\frameworx-install.log", `
                "/DIR=C:\Program Files\Tatsoft\FrameworX" `
  -Wait -PassThru

Installer exit codes (Inno Setup standard):

CodeMeaning
0Success
1Setup failed to initialize or user aborted
2User cancelled during preparation
5Install aborted during copy
3010Success — reboot required to complete

For full automation patterns including SCCM/Intune packaging and rollback, see IT Deployment RunBook.


Solution Startup Configuration

TStartup.exe Overview

TStartup.exe is the executable that runs FrameworX solutions. It supports various parameters for debugging, redundancy, and advanced configuration.

Basic Startup Methods

Manual Start:

  • From SolutionCenter: Select solution → Runtime Startup
  • From Designer: Runtime → Startup → Run Startup
  • Using Windows shortcut with parameters

Windows Service:

  • Runs on computer startup
  • No user login required
  • Configure at Runtime → Startup

Command Line/Batch File:

cd "C:\Program Files\Tatsoft\FrameworX\10.1"
TStartup.exe /Solution:"C:\Solutions\MySolution.tproj"

Startup Shortcuts in the User Utilities Folder

StartRuntime and StartRichClient are not executables. They are .bat shortcuts created in the user Utilities folder the first time the product runs, both for an installed copy and for a copy started directly from the binaries package:

<User>\Documents\FrameworX\Utilities\StartRuntime.bat
<User>\Documents\FrameworX\Utilities\StartRichClient.bat

Each shortcut calls the real executable in the product folder, with the full installation path already written into the file, so it runs from any working directory:

ShortcutStartsPurpose

StartRuntime.bat

fx-10\TStartup.exe

Starts the solution runtime on this machine.

StartRichClient.bat

fx-10\TRichClient.exe

Starts the Rich Client.

The same folder holds the other shortcuts generated for the installed components, for example StartWebServices.bat, SolutionCreator.bat, TDatabaseBuilder.bat, UpgradeSolution.bat, RemoveAllServices.bat, and the AI listener shortcuts StartDesignerMCPHttp.bat, StartRuntimeMCPHttp.bat and StartConsoleMCPHttp.bat. The exact set depends on the components installed.

There are two folders named Utilities and they hold different things. <User>\Documents\FrameworX\Utilities\ holds the generated shortcuts described here. The product folder fx-10\Utilities\ holds the stand-alone utilities themselves, AutoStartClient.exe and CertificateConverter.exe. Command-line tools such as SolutionCreator.exe and TDatabaseBuilder.exe are in the product folder root. See Installation Folders and Utilities Reference.

Required Parameters

The minimum parameter needed:

/Solution:"C:\Solutions\Solution.tproj"

Solution Merging on Startup

The platform supports modular project design by automatically merging multiple project files at runtime based on naming conventions.

How It Works:

When launching a main solution (e.g., MyProject), FrameworX automatically merges any projects with names following the pattern:

  • Base name + double underscore + suffix + double underscore
  • Example: MyProject__ModuleName__

Example Structure:

MyProject.tproj                    → Main solution
MyProject__DeviceConfig__.tproj    → Device configurations
MyProject__DBTest__.tproj          → Test database settings
MyProject__CustomerA__.tproj       → Customer customizations

Runtime Behavior:

  • Detects all matching MyProject__*__.tproj files
  • Merges contents (tags, scripts, displays, connections)
  • Creates unified runtime environment
  • Maintains modular development structure

Windows Service Configuration

Install the service with AutoStartup in Runtime → Startup (see Runtime Startup Reference, Enabling AutoStartup), or from a script with TManageServices CLI.

Service Security Settings

Log On Configuration:

  • Default: Local System account
  • Custom: Domain user for external resources
  • Configure in Windows Services console

Start Type:

  • Automatic (Delayed Start) is the installer default and the recommended start type. The delay gives the machine time to complete the network link, negotiation and address assignment before the runtime starts.
  • Keep the Windows default delay of 120 seconds. It applies to the whole machine and is not a per-service setting.
  • On a redundant node this is not optional: the node resolves its Primary or Secondary role from the local addresses of the machine at startup, so a service that starts before the network is ready starts as a standalone node. See Redundancy Reference.

Startup Parameters Reference

Main Parameters

ParameterDescriptionExample
/SolutionSolution path (required)/Solution:"C:\Solutions\Solution.tproj"
/usernameRuntime user/username:Administrator
/passwordUser password/password:SecurePass123
/waWindows Authentication/wa:true
/ip1Primary server IP/ip1:192.168.1.100
/port1Primary server port/port1:3101
/viewonlyRead-only mode/viewonly
/CloseSplashCloses the TStartup splash dialog once the solution has finished starting, instead of leaving it on screen. Set it from the CloseSplash checkbox in Runtime / Startup, next to the Startup Command field, which adds it to the generated command line. Distinct from /nosplash on the client, which suppresses the client splash altogether./CloseSplash

Redundancy Parameters

ParameterDescriptionDefault
/redundancyEnable redundancy-
/autoswitchAuto-switch to primary-
/timeautoswitchSwitch delay (seconds)60
/ip2Secondary server IP-
/port2Secondary server port3101
/connectiontimeoutRedundancy watchdog timeout, in seconds. Command-line form of the Timeout field of the redundancy dialog.3
/connectionretryRetry attempts1
/redundancywaittimeoutSeconds to wait for the network stack when the runtime starts as a Windows Service with /redundancy and neither configured address is local yet. The startup re-checks every 5 seconds and continues with redundancy enabled as soon as one of the addresses becomes local. With the default of 0 it does not wait. Available from FrameworX 10.1.5e.0
/SolutionIPPathRemote solution path-

Redundancy Example:

TStartup.exe /Solution:"C:\Solutions\Solution.tproj" 
  /redundancy 
  /ip1:192.168.1.1 /port1:3101 
  /ip2:192.168.1.2 /port2:3101
  /autoswitch /timeautoswitch:60

Diagnostic Parameters

ParameterDescriptionOutput Location
/SaveLog:3Debug loggingC:\Users\Public\Documents\FrameworX\TraceLogs
/AutoRunDiagnostics:30Auto diagnostics (minutes)C:\ProgramData\FrameworX
/LogDeviceWriteStartupDevice write loggingC:\ProgramData\FrameworX\Device

Advanced Parameters

ParameterDescriptionDefault
/NumberOfDevicesAtSameTimeConcurrent device startup3
/TimeBetweenModulesModule start delay (seconds)0
/AutoCheckWatchDogAuto-restart frozen channelsDisabled
/nocacheDisable cache (SmartClient)false
/port1WAWindows Auth port-

Per-Process Log File Configuration

Each runtime process (TServer, TStartup, TRunModule, TRichClient) can size-limit its active log file and control retention of daily compressed archives, directly from that process's JSON configuration file (e.g. TServer.json).

Configuration

Add a Logging section under appSettings:

{
  "appSettings": {
    "Logging": {
      "MaxFileSizeMB": 10,
      "KeepAllZips": false
    }
  }
}

Omitting the Logging section entirely preserves prior (legacy) behavior — no size cap, and the daily archive compaction described below is unaffected.

MaxFileSizeMB

Caps the size of the process's active log file, in megabytes. When the limit is reached, the process stops writing to that log file and records a notice ("Log file size limit of <N> MB exceeded; logging to this file is stopped.").

  • Integer values only, minimum effective value 1. Fractional or sub-1 values (e.g. 0.5) are truncated to 0, which disables the size limit — no warning is logged when this happens. Sub-1 MB caps are not supported.
  • A value of 0 or an omitted setting means no limit.

KeepAllZips — daily archive retention

On each day change, the runtime compacts the previous day's per-process log: every non-current log file for that process is compressed into a same-named .zip archive, then the original text log is deleted. This daily compaction always runs, independent of KeepAllZips. The currently-active log file is never touched.

KeepAllZips controls only how many of those daily archives are retained afterward:

ValueBehavior
trueAll daily .zip archives are kept — they accumulate day after day with no automatic pruning. Use when full log history retention is required.
falseOnly the single most recent .zip archive is kept per process (determined by file last-write time); older archives are deleted at each rollover. Use to keep disk usage bounded.

Retention is evaluated independently per process log (TServer, TStartup, TRunModule, TRichClient are each pruned separately), and pruning only runs when more than one archive is present — the newest archive is never at risk. KeepAllZips is independent of MaxFileSizeMB: the size cap governs the active log within a day, while KeepAllZips governs retention of the compressed archives across days.


Linux/Docker Startup

systemd Service

Create /etc/systemd/system/frameworx.service:

[Unit]
Description=FrameworX Runtime
After=network.target

[Service]
Type=simple
ExecStart=/opt/frameworx/TStartup.exe /Solution:/opt/solutions/Solution.tproj
Restart=always
User=frameworx

[Install]
WantedBy=multi-user.target

Docker Entrypoint

ENTRYPOINT ["./TStartup.exe"]
CMD ["/Solution:/app/solutions/Solution.tproj"]

Client Display Considerations

A runtime running as a Windows Service has no user interface. To start clients at boot, see Installation Folders and Utilities Reference, AutoStartClient.exe.

Auto-Start Configuration

TWebServices Auto-Start

Configure TWebServicesRunPrograms.json:

{
  "appSettings": {
    "RunPrograms": {
      "MainSolution": "/opt/frameworx/solutions/Main.tproj",
      "BackupSolution": "/opt/frameworx/solutions/Backup.tproj"
    }
  }
}



In this section...