Skip to content

Build Project

Jean-Pierre LESUEUR (Microsoft MVP) edited this page Feb 26, 2026 · 5 revisions

Introduction

No pre-built binaries are provided. The goal of this page is to help you compile your own version of the software. It includes instructions on how to install the necessary components in the IDE and how to compile the project.

The project is guaranteed to compile with the latest Delphi Community Edition (currently version 12). This version is free for open-source projects and is more than enough for this project.

While I use the latest version of Delphi (currently version 13 Professional) during development, I avoid using the newest language features until they are available in the Community Edition. This usually happens about 18 months after a new Professional version is released.

If you have a Professional version of Delphi (Licensed User), please ensure it is at least as recent as the current Community Edition. You can use the Dist.bat script (located in the project root) to compile all different parts without openning the IDE.

Build Project Manually

This guide will walk you through setting up the development environment for Optix Gate. Even if you have never used the Delphi IDE before, following these steps sequentially will ensure all necessary components are correctly installed and configured.

Install the Latest Version of the Free Delphi Community Edition

To get started with Delphi Community Edition, follow these steps:

  1. Visit the Official Website: Go to the Embarcadero website where you can download the Delphi Community Edition for free.
  2. Create an Account: You'll need to sign up for an Embarcadero account. If you don't have one, simply create a new account.
  3. Download the Installer: Once logged in, download the Delphi Community Edition installer from the website.
  4. Run the Installer: After the download completes, run the installer and follow the on-screen instructions (keep all default)
  5. Activate the License: During installation, you'll be prompted to enter your account details to activate the free license. The activation serial will be sent to your Embarcadero email account immediately after you download the installer. Retrieve the serial from your email and enter it when prompted to complete the activation process.
  6. Complete Installation: After activation, the installation process will continue. Once finished, you can begin configuring the Delphi environment to build Optix.

Clone The Repository

First, you need to get the source code onto your local machine. Open your terminal or command prompt and run:

git clone https://github.com/DarkCoderSc/OptixGate.git

Install Required Components

Before building Optix Gate, the environment requires two core component libraries. These extend the standard Delphi capabilities to provide the specific look and functionality of the application:

  • NeoFlat (Internal): A custom component developed specifically for this project. It handles the retro "flat" user interface (UI) design, giving the application its unique oldschool aesthetic.
  • Virtual Treeview (External): Developed by JAM Software, this is an industry-standard library that replaces the basic Windows list and tree views. It allows OptixGate to handle large amounts of data with high performance and advanced visual customization.

Install NeoFlat

  1. Navigate to: PROJECT_ROOT\Core\VCL\NeoFlat
NeoFlat Components Folder (Explorer)
  1. Open the file NeoFlatComponents.dpk in the Delphi IDE (you can double-click it or use File > Open)
  2. Look at the Project Manager pane (usually on the top right of your screen)
  3. Right-click on NeoFlatComponents.bpl
  4. Select Install from the context menu
Install NeoFlat Components from Project Context Menu

A confirmation message box should appear to indicate that the components have been successfully installed in the IDE:

Package Installation Confirmation
  1. Once the build is successful, Close the IDE. If prompted to save changes, click Yes

Since version 2.0.1, the external component OMultiPanel has been integrated directly into the NeoFlat package for convenience, reducing the need for additional configuration, particularly for those unfamiliar with the Delphi environment. As OMultiPanel has not been maintained for several years, I plan to update it in the near future, although it is not my top priority. My goal is to port the component's code to a more modern Delphi version, eliminating the compilation warnings (which are currently hidden in the unit via {$WARNINGS OFF}) and optimizing its performance.


Install Virtual TreeView Using the GetIt Package Manager

Virtual TreeView can be easily installed through the integrated GetIt Package Manager, eliminating the need to manually download the component's source code, compile various package parts, or adjust the library paths in the Delphi IDE. This streamlined process ensures that everything is handled automatically.

  1. Open GetIt Package Manager: In the Delphi IDE, navigate to the top menu and select Tools > GetIt Package Manager.
Open GetIt Package Manager
  1. Search and Install: In the search bar at the top right of the GetIt window, type Virtual TreeView. Locate the Virtual TreeView package (usually provided by JAM Software) AND Click the Install button.
Locate and Install Virtual Treeview

A license agreement will appear; click Agree All to proceed.

Delphi will automatically download, compile, and register the components. It will also handle the Library Paths for both 32-bit and 64-bit platforms automatically.

Package Installed

Note: Once the installation is complete, you may restart the IDE.

Build Server and Client (GUI)

Definitions

The public version of Optix consists of two distinct applications, each available in two different flavors. These applications are designed to work together, allowing communication and control between a client and server. Here’s an in-depth look at each component:

Optix Server

Optix Server Main Window

Optix Server is the core component that enables you to access and manage remote machines. It acts as the central control hub, providing administrators with the ability to manage multiple client devices remotely. This is the "command and control" part of the system, responsible for initiating and handling connections to the client applications.

Optix Client

Optix Client Main Window

Optix Client is the counterpart to Optix Server. It is the application that receives control commands from the server, allowing remote management and interaction with the machine. The client securely* connects to an Optix Server, and it is crucial that both the client and server are running the same version to ensure compatibility and proper communication.

Flavors of Optix: With or Without OpenSSL Support

Optix comes in two versions, allowing you to decide whether or not to include OpenSSL support.

  • With OpenSSL Support: This version provides full encryption and mutual authentication between the Optix Client and Optix Server. It ensures secure communication by encrypting network traffic, preventing it from being exposed to potential eavesdropping or tampering by malicious actors. This is the recommended version for most use cases, especially in production environments, as it guarantees the integrity and confidentiality of your data.
  • Without OpenSSL Support: This version does not include OpenSSL, meaning that network traffic is transmitted in clear text (no encryption). Additionally, mutual authentication between the client and server is not supported. This leaves the connection vulnerable to attacks such as server takeover or man-in-the-middle (MITM), where a malicious actor could intercept, modify, or eavesdrop on the communication.

Optix without OpenSSL support is primarily intended for use in isolated lab environments where encryption and authentication is not a concern. It is useful if you need a 100% standalone client application and do not want to distribute or rely on external OpenSSL DLLs.

It is important to note that Optix Server with OpenSSL support cannot work with Optix Client without OpenSSL support, and vice versa.

Building Optix from Delphi IDE

The Optix project consists of two flavors (with and without OpenSSL support) and is organized into Delphi Project Group files. These files are used to manage and compile the entire project correctly, so it is important not to open individual Delphi project files directly.

Opening the Project Group Files

To open the project, locate the corresponding Project Group file (Client or Server) and open it in Delphi. The files are named with the .groupproj extension and can be opened either by double-clicking the file or through the Delphi IDE.

Optix Server: The project group file for the server is located in PROJECT_ROOT\Server\OptixGateGroup.groupproj.

Optix Server Project Group

Optix Client: The project group file for the client is located in PROJECT_ROOT\Client GUI\Client_GUIGroup.groupproj.

Optix Client Project Group

When you open the project group file (Server or Client) in Delphi, you will see multiple project configurations. Each configuration has a flavor that is suffixed with _OpenSSL, indicating it is compiled with OpenSSL support.

Example for Server:

Optix Gate Server Flavors

Choosing the Target Platform (32-bit or 64-bit)

For each project flavor (Optix Server or Optix Client), you can choose to compile the version for either the Windows 64-bit or Windows 32-bit platform. The default platform is typically Windows 64-bit, but if you need to compile for 32-bit, here's how to do it:

  1. In Delphi IDE, go to the Project Manager pane.
  2. Locate Target Platforms and expand it by clicking on the small arrow next to it.
  3. Double-click on the platform you wish to activate (either Windows 32-bit or Windows 64-bit). The active platform will be displayed in bold.

Change Protect Architecture

To build the entire Optix project (whether Server or Client), the easiest way is to use the Build All Projects option. In Delphi IDE, go to the main menu and select Project > Build All Projects.

Example for Server: Build All

Delphi will compile all the projects in the group, including both flavors (OpenSSL and NoSSL), and output the binaries to the respective folders.

The compiled binaries will be placed in the following directories based on the target platform:

  • For 64-bit Windows

    • Optix Server with OpenSSL : PROJECT_ROOT\Server\bins\OpenSSL\Win64\Release\
    • Optix Client with OpenSSL : PROJECT_ROOT\Client GUI\bins\OpenSSL\Win64\Release\
    • Optix Server NoSSL : PROJECT_ROOT\Server\bins\NoSSL\Win64\Release\
    • Optix Client NoSSL : PROJECT_ROOT\Client GUI\bins\NoSSL\Win64\Release\
  • For 32-bit Windows

    • Optix Server with OpenSSL : PROJECT_ROOT\Server\bins\OpenSSL\Win32\Release\
    • Optix Client with OpenSSL : PROJECT_ROOT\Client GUI\bins\OpenSSL\Win32\Release\
    • Optix Server NoSSL : PROJECT_ROOT\Server\bins\NoSSL\Win32\Release\
    • Optix Client NoSSL : PROJECT_ROOT\Client GUI\bins\NoSSL\Win32\Release\

Handling OpenSSL DLLs

For the Optix version compiled with OpenSSL support, you must include the corresponding OpenSSL DLLs in the same directory as the compiled binaries. These DLLs are required for the application to function properly when using OpenSSL for secure communication.

  • For 32-bit Optix: Copy the OpenSSL DLLs from PROJECT_ROOT\Libraries\OpenSSL\x32\ to the Win32\Release\ folder where the Optix binaries are located.
  • For 64-bit Optix: Copy the OpenSSL DLLs from PROJECT_ROOT\Libraries\OpenSSL\x64\ to the Win64\Release\ folder.

Ensure the correct DLLs are placed in the correct location for the respective platform (32-bit or 64-bit). Without these DLLs, the application will not be able to launch properly.

Example for Server with OpenSSL support: Compiled Binaries for Server (OpenSSL)


Automated Process

For those with a professional license of Delphi (minimum Delphi version matching the latest Community Edition up to the latest available professional version), you can use the Dist.bat script to build both the Server and Client in all available flavors. This includes:

  • OpenSSL and NoSSL versions
  • 32-bit and 64-bit versions

The script also ensures that the correct file structure is created by placing the appropriate OpenSSL library files in the correct location for each architecture. As a result, both the Server and the Client will be ready for use.

All output files are placed in the Dist folder, located at the root of the project.

Important Note

One manual step is required:

Normally, this step would be done automatically by the Dist script, but there is a known bug in the command-line version of GetIt that prevents the installation of Virtual Treeview via the command-line tool. You must install it manually before proceeding with the build process.