Log in

View Full Version : FMXBridge — Modern FireMonkey UI for Inno Setup (Announcement)


audiofeel
07-04-2026, 22:29
40759

FMXBridge - Modern FireMonkey UI for Inno Setup

I’d like to introduce "FMXBridge" - a DLL bridge between "Inno Setup" and "FireMonkey (FMX)" that lets you build a modern installer interface (Mica / Acrylic / Tabbed, animations, effects, custom controls) while keeping your existing Inno Setup scripting workflow.

What it is
"FMXBridge" is a library that exports a wide set of FMX interfaces and helper utilities for use from an external host. The typical use case is: Inno Setup handles installation logic, while FMXBridge provides the visual UI layer and rich controls.

What it can do
1) Installer-ready windows and forms

- Create base forms with different background/system material styles:
- "Mica"
- "Tabbed"
- "Acrylic"
- "Blur / Gradient / Image / Blank"
- Control dark/light theme, corner rounding, border color, style updates, and property animations.
- Use dedicated message forms and splash screens.


2) Large FMX control set

- Standard controls: buttons, checkboxes, list/tree controls, memo/edit, progress, menus, toolbars, image lists, etc.
- Layout containers: grid/flow/scroll/scaled/buffered layouts.
- Extra/custom controls: SVG, HTMLText, GIF, rating bar, marquee, checkbox tree, custom titlebar components.


3) Effects and animations

- FMX animations (float/color/rect/gradient/bitmap).
- A broad set of visual and transition effects (blur, bloom, sepia, swipe, dissolve, wave, and more).


4) System and utility features

- File/folder dialogs (browse/open/save).
- Window operations (hide/restore/close), basic file operations, and text read/write/append helpers.
- System information (OS/GPU/CPU/RAM, drives, user info, etc.).


5) 2D/3D and optional extensions

- 2D shapes + an extended RadiantShapes set.
- 3D components (Viewport3D, Camera, Light, primitive/mesh objects, etc.).
- Optional "Skia4Delphi" integration (when built with "SKIA").


What this gives you together with Inno Setup
In short: "you keep the reliable Inno Setup installation engine, but get a desktop-grade UI experience".

In practice, this means:

- You can hide/minimize the default Inno window and show your own FMX form over the setup flow.
- You can build a branded installer UI with custom backgrounds, animated transitions, and non-standard controls.
- You can create a multi-step modern wizard UX while preserving standard Inno Setup logic for files, tasks, and sections.
- Great fit for launchers/updaters/installers where visual quality and interaction matter.


Technical snapshot

- DLL: "FMXBridge.dll"
- Architecture: "Win32"
- Host: "Inno Setup 7.0.0.0 or Higher"
- Compiler: "RAD Studio 13.1"
- Project version: "0.5.0.0"


:o

audiofeel
07-04-2026, 22:32
Key Differences from Similar Projects
Text caret support
Input controls (e.g., FEdit) include a proper blinking text cursor (caret), improving usability and editing clarity.

No startup white flash
The application initializes without the typical white flicker before rendering the UI.

Dynamic style color modification
Styled controls support runtime color changes, even when colors are predefined in the style resources (colors are overridden directly within the style).

Modern DWM window effects
Integration with advanced Desktop Window Manager effects such as Mica, Acrylic, and Tabbed window styles.

Pseudo-modal dialogs
Dialog windows simulate modal behavior without fully blocking the main thread or message loop.

Localized popup support for FEdit
Popup elements associated with FEdit can be localized independently.

Improved Windows 10 blur window
Enhanced blur implementation without the typical limitations during window dragging or movement.

Proper minimize animation
Window minimize behavior uses native-like animation instead of abrupt disappearance.

Taskbar thumbnail rendering
Custom rendering of window previews (thumbnails) in the taskbar.

audiofeel
07-04-2026, 22:37
Project Foundation
Based on existing solutions
The project is built upon a ISFMXFW (https://github.com/Jivanewstone/ISFMXFW)-based codebase and FMXInno, with substantial refactoring and adaptation to meet specific real-world requirements.

audiofeel
07-04-2026, 22:42
Example Use Cases
Ready-to-use implementation scenarios demonstrating how the components and features can be applied in real projects.

audiofeel
07-04-2026, 22:43
Requirements
Inno Setup 7 required
For better or worse, compilation requires Inno Setup 7. No additional tools are necessary.
https://github.com/jrsoftware/issrc/releases

audiofeel
09-04-2026, 06:14
Win!!!

audiofeel
13-04-2026, 06:23
Example Use Cases
Ready-to-use implementation scenarios demonstrating how the components and features can be applied in real projects.
:o

audiofeel
14-04-2026, 20:13
Example Use Cases
Ready-to-use implementation scenarios demonstrating how the components and features can be applied in real projects.
:o

audiofeel
17-04-2026, 05:59
Example Use Cases
Ready-to-use implementation scenarios demonstrating how the components and features can be applied in real projects.

audiofeel
19-04-2026, 23:29
Example Use Cases
Ready-to-use implementation scenarios demonstrating how the components and features can be applied in real projects.

audiofeel
23-04-2026, 00:42
Small update

Added component: FUWPTiles
Main features:

Creation and management of a tile container
Full control over layout and sizing
Adding and configuring tile elements
Style, text, and image management
Support for click events and user interaction

Demo example: Example_UWPTiles.iss

New features added:

FComboBox

StyledSettings method
FontSetting method (configuration of font and color for ComboBox items)

Demo example: Example_ComboBox.iss

panker1992
24-04-2026, 07:10
Hey, i created Archiver, have some fun with it, since you also code in Delphi.

Unarc.dll is 64bit

audiofeel
27-04-2026, 13:13
A small update with new features and expanded capabilities.

Windows 11 detection feature has been added
function IsWindows11: Boolean;
external 'IsWindows11@files:FMXBridge.dll stdcall delayload';

if IsWindows11 then
begin
FMXForm.FCreateTabbedForm(WizardForm.Handle, IsWinDark, True);
end
else
begin
if IsWinDark then
FMXForm.FCreateBlurForm(WizardForm.Handle, ColorSetOpacity($FF000000, 0.7), True)
else
FMXForm.FCreateBlurForm(WizardForm.Handle, ColorSetOpacity($FFFFFFFF, 0.7), True);
end;

if IsWinDark then
FMXForm.LoadStyleFromFile(ExtractAndLoad('dark.sty le'), GetWinAccentColor)
else
FMXForm.LoadStyleFromFile(ExtractAndLoad('light.st yle'), GetWinAccentColor);

A new FNumberBox component has been added
numeric wrapper with advanced settings:

Basic methods:
procedure DecimalDigits(FDigits: Integer);
procedure HorzIncrement(FValue: Single);
procedure VertIncrement(FValue: Single);
procedure VerticalMode(FEnabled: Boolean);
procedure Max(FMax: Single);
procedure Min(FMin: Single);
procedure Value(FValue: Single);
procedure ValueType(FFloat: Boolean);

function GetHorzIncrement: Single;
function GetVertIncrement: Single;
function IsVerticalMode: Boolean;
function GetValue: Single;

Extended FUserInfo wrapper
The user interface has been updated: (upon request, account type localization was required)

type
FUserInfo = interface(IUnknown)
'{FF655E8A-2C5A-4DF4-80EB-81CBAFD100C1}'
function Name: WideString;
function Domain: WideString;
function ProfilePath: WideString;
function UserType: TUserType;
function IsElevated: Boolean;
end;

TUserType = (utUnknown, utUser, utAdmin, utGuest, utSystem);

function UserTypeToStr(AType: TUserType): string;
begin
case AType of
utUser: Result := 'User';
utAdmin: Result := 'Admin';
utGuest: Result := 'Guest';
utSystem: Result := 'System';
else
Result := 'Unknown';
end;
end;

Other changes
Minor internal edits and stabilization of component operation.

audiofeel
05-05-2026, 16:04
Small update

Fixed the display of the window thumbnail in the taskbar on Windows 11 - previously, the image could appear "blurred"/"compressed" due to incorrect calculation of the client area. Added processing adjustments based on the system window boundaries, which eliminates distortion and provides a clearer preview.
WM_NCCALCSIZE

The application of the accent color to the window title in Windows 11 has been disabled. Previously, the top bar was automatically colored with the system color. Now, the title remains neutral.

DwmSetWindowAttribute(DWMWA_CAPTION_COLOR)

The loading and display of icons in the FTitleBar has been improved. Previously, when using large icons, they could appear "compressed" and pixelated.
Now, the most appropriate frame size is selected from the .ico file, taking into account the DPI, which results in a clear and correct display without distortion in most cases.
Factory: IWICImagingFactory;
Decoder: IWICBitmapDecoder;
Frame: IWICBitmapFrameDecode;
Converter: IWICFormatConverter;

audiofeel
11-06-2026, 07:22
Small update

1) Added a new FTile interface for working with tiles.
Supported features:

- creating and deleting tiles;
- positioning and alignment;
- size and margin configuration;
- background images;
- color, borders, and corner radius;
- text and font settings;
- opacity and rotation;
- mouse event handling;
- tags and hints support.

This interface had been requested by users for quite some time, but I only recently got around to implementing it.

2) Added mouse capture support for FMX controls.

procedure TFForm.SetCaptured(FControl: NativeInt);
begin
if FControl = 0 then
Exit;

TControlAccess(Pointer(FControl)).Capture;
end;

Once dragging begins, the control continues to receive mouse events even when the cursor moves outside its bounds.
This makes it possible to move panels, forms, and other UI elements without losing mouse tracking.
For example, you can now create your own draggable pseudo-windows inside the main application window and freely move them around the workspace.

audiofeel
11-06-2026, 07:30
CPI v7.0


- Dark/Light UI Overlay
- Customizable Accent Color
- Customizable Text and Shadow Colors
- Background Music (optional)
- Autorun Interface (can be disabled)
- Lockscreen (can be disabled)
- FMX-based Installer and Uninstaller UI
- File Hash Verification
- Extraction powered by ISArcEx.dll 0.5.0.0