This guide outlines the setup process for running FrameworX on Linux, tested on Ubuntu 22.04, Debian 12 (interface) and Debian 10.13 (no interface). FrameworX Runtime requires the cross-platform .NET Desktop Runtime: .NET 8 for FrameworX 10.1.4 and earlier, .NET 10 for FrameworX 10.1.5 and later. The setup involves installing the matching .NET runtime if it is not already available, importing necessary files, and configuring a connection between a Windows and Linux environment. It includes running web services on Linux, allowing Windows to connect via the platform, where additional features can be installed on Linux as needed. This approach facilitates a multi-project configuration, enabling seamless integration and functionality across both operating systems.
To install the cross-platform .NET runtime on a Linux machine, follow the steps below. Choose the version that matches your FrameworX release: .NET 8 for FrameworX 10.1.4 and earlier, .NET 10 for FrameworX 10.1.5 and later. The instructions are based on the Ubuntu distribution, but can be adapted for other distributions.
Update existing packages:
sudo apt update sudo apt upgrade -y
Install the required packages:
sudo apt install -y wget apt-transport-https
Add the Microsoft Package Signing key:
wget https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
Notes on Version Handling
Ubuntu versions ending with zero:
The lsb_release portion of your wget command may fail when the Ubuntu version ends with a zero (e.g., 20.10, 18.10). This happens because lsb_release drops the trailing zero, resulting in an incorrect version string for the Microsoft package URL. To ensure the correct format (e.g., 20.10 instead of 20.1), use the printf formatting shown below.
wget https://packages.microsoft.com/config/ubuntu/$(printf "%.2f" $(lsb_release -rs))/packages-microsoft-prod.deb
Linux Mint and similar distributions:
For distributions such as Linux Mint, the Ubuntu base version cannot be obtained directly using lsb_release. The correct base version must instead be extracted from /etc/upstream-release/lsb-release, as demonstrated in the example below.
wget https://packages.microsoft.com/config/ubuntu/$(awk -F= '/DISTRIB_RELEASE/{print $2}' /etc/upstream-release/lsb-release)/packages-microsoft-prod.deb
Update the repositories:
sudo apt update
Install the .NET SDK that matches your FrameworX version.
For FrameworX 10.1.4 and earlier — install .NET 8:
sudo apt install -y dotnet-sdk-8.0
For FrameworX 10.1.5 and later — install .NET 10:
sudo apt install -y dotnet-sdk-10.0
10.1.4 and 10.1.5 can be installed side-by-side on the same machine as isolated runtimes.
Verify the installation:
dotnet --version
The UBUNTU version used for testing was 22.04. It was also tested with Debian 12. Other Linux distributions that support the matching .NET runtime should work as well, but there may be differences in how you install .NET.
Step 1
The cross-platform .NET runtime should already be installed on Linux — .NET 8 for FrameworX 10.1.4 and earlier, .NET 10 for FrameworX 10.1.5 and later. If not, go back to the section "Steps to Install .NET on Linux (Ubuntu)."
Step 2
Here we will import the necessary files to open the connection between your computer and Linux. We recommend you import the files in the path "/Home/FrameworX/". If the folder does not exist, you should create it.
git clone https://github.com/tatsoftdocs/FrameworX-v10.git
If you don’t have github installed, use the following command:
sudo apt install git
If that doesn’t work for you, you have a secondary option below:
Copy the files and subdirectories from the Windows installation directory to the Linux directory "/Home/FrameworX". The Windows source folder depends on your FrameworX version: "<Install Path>\FrameworX\net8.0" for 10.1.4 and earlier, "<Install Path>\FrameworX\net10.0" for 10.1.5 and later.
Step 3
On Linux, we will run the WebServices to connect to the windows computer. Inside the directory "/Home/FrameworX/", run the following command:
sudo dotnet TWebServices.dll
After you run this command, it should show you in the terminal that it is running and what is the IP and Port.
Step 4
After that, simply run FrameworX.exe on Windows, connect to Linux in “Server Information” > “Remote Server” > add the IP and port (it will be shown when you do the command in step 3), “Upgrade Product…” with the options you want to install on Linux (for example: HTML5, Designer/Remote, Protocol Drivers, etc.). Here you import the product installation to Linux.
Step 5
Finally, click “Upload File…”, and upload the file you will use in the Linux environment. It is important to notice that the project has to be created with the multi-platform option.
If Python scripts are to be used, pythonnet is essential. There are two options from this point: installing it globally or inside a virtual environment. Follow the steps below for both options:
Run the following command in the terminal to create the virtual environment (venv) in the current folder:
python3 -m venv ./venv_pythonnet
Once created, activate the virtual environment with the command below
source ./venv_pythonnet/bin/activate
After activation, upgrade pip to ensure compatibility and access to the latest packages:
pip install --upgrade pip
With the environment active and pip upgraded, install pythonnet:
pip install pythonnet
If you choose this option, you must run TWebServices.dll within the same virtual environment. Otherwise, FrameworX will not be able to locate the pythonnet module.
Check your python version
python3 --version
Based on your Python version, install the following packages to ensure that pythonnet can compile and run correctly:
sudo apt update && sudo apt install -y \
python3-pip \
python3.12-dev \
build-essential \
clang \
libpython3.12 \
libpython3.12-dev
Now install pythonnet using the following command.
sudo pip3 install pythonnet --break-system-packages
Note: The --break-system-packages flag is required due to recent changes introduced by python.org. [More information can be found here.]