Installation
FoxBridge is not installed: it is copied. No installer, no COM registration and nothing written to the Windows registry. What you do have to do is copy the whole folder and activate the license.
FoxBridge is digitally signed
Since 1.0.1, FoxBridge.dll, FoxBridgeNE.dll and Nexum.dll (x86 and x64), the tutorial's MiLogica.dll and the installer carry a publisher signature in the name of Irwin Alfredo Rodriguez Gimenez, with a timestamp. To see it: right-click the file → Properties → Digital Signatures, or run Get-AuthenticodeSignature in PowerShell, which must say Valid.
- SmartScreen: the certificate is new and Windows may still warn for a while. If “Windows protected your PC” appears, click More info: it must say Publisher: Irwin Alfredo Rodriguez Gimenez. If it does, Run anyway; if it says “Unknown publisher”, that file is not ours: do not run it.
Before you install
The FoxBridge installer is signed, but the certificate is new and Windows may still warn you the first time you run it. Here is what you will see, how to continue, and how to check for yourself that the file you downloaded is exactly the one we published.
File downloaded from the internet, and SmartScreen
If Windows complains when you extract or use the files, that is the mark of the web: the .zip came from the internet and Windows flags it as such. And if you run the .bat that registers the components without unblocking it first, SmartScreen (“Windows protected your PC”) may appear as well: there the way out is two clicks, “More info” and “Run anyway”.
- Right-click the .zip → Properties.
- At the bottom, tick Unblock and confirm.
- Extract after unblocking: the other way round, the mark stays on every extracted file.
You can also do it from PowerShell: Unblock-File on the downloaded .zip.
If your antivirus stops it
Some antivirus products quarantine freshly downloaded files. If that happens, add an exclusion for the folder where you keep the FoxBridge files inside your application, because FoxBridge has no fixed installation folder: its files live next to your project.
If the antivirus belongs to your company and you cannot change its rules, give the SHA-256 below to whoever administers it: that is what they need to clear the file.
Check what you downloaded
These are the details of the current version and the day it was published. The hash is computed on the file exactly as the portal serves it:
| File | Version | Published | Size | SHA-256 |
|---|---|---|---|---|
FoxBridge-1.0.1.zip | 1.0.1 | 15 Sept 2026 | 7.6 MB | A37C09B7ACEA26343107D51B015E4A60BE8AA0344BC6B7665C2ADF4CBE59DF1D |
To check it, open PowerShell in your downloads folder and run:
Get-FileHash -Algorithm SHA256 "$HOME\Downloads\FoxBridge-1.0.1.zip"If the value matches the table, the file is ours and intact. If it does not match, do not run it: download it again and, if it still does not match, write to soporte@irwinrodriguez.dev.
Hashes are measured again for every published version. If you downloaded an earlier version, its hash will not necessarily match this table.
1. Copy the files
From the package, copy FoxBridge.prg and the architecture subfolder into your project, keeping the structure:
MiApp\
libs\
FoxBridge.prg <- la API que usas desde VFP
x86\ <- VFP 9 y VFPA x86
FoxBridgeNE.dll
FoxBridge.dll
Nexum.dll
FoxBridge.runtimeconfig.json
FoxBridge.deps.json
x64\ <- solo si usas VFP Advanced x64All five files in x86\ are needed. FoxBridgeNE.dll is the way in, but FoxBridge.dll holds the logic, Nexum.dll validates the license and the two .json files tell the .NET runtime what to load. And they have to sit below the folder of the .prg, in x86\: that is where it looks for them. Copying just the DLL "next to the .prg" gives "FoxBridge: FoxBridgeNE.dll not found".
x86\. The x64\ folder only comes into play with 64-bit VFP Advanced. FoxBridge.prg looks at the architecture of the process and picks on its own; you can ship both folders and forget about it. 2. Check the .NET runtime
FoxBridge needs the .NET 8 or later runtime in the architecture of the process: with VFP 9, the x86 one. And dotnet --version does not tell you that: it shows the SDK, and almost always the 64-bit one. What you want is the list of runtimes:
dotnet --list-runtimes
REM Look for a Microsoft.NETCore.App 8.x (or later) line whose path
REM is the 32-bit one:
REM C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.AppIf it is not there, install the .NET Desktop Runtime x86 (8 or later) from https://dot.net. With the wrong runtime, initialization fails with an HRESULT and the message tells you which architecture it expected.
3. Initialize and activate
Two lines at application start-up. The second one is not optional: without Activate() nothing works, neither in the IDE nor in the EXE. Any call before activating answers "FoxBridge is not activated".
LOCAL loBridge, lcKey
* Option A: FoxBridge.prg in the same directory
loBridge = NEWOBJECT("FoxBridge", "FoxBridge.prg")
* Option B: with the full path
* loBridge = NEWOBJECT("FoxBridge", "C:\MyApp\libs\FoxBridge.prg")
* Option C: with SET PROCEDURE TO, once at start-up
* SET PROCEDURE TO "C:\MyApp\libs\FoxBridge.prg" ADDITIVE
* loBridge = NEWOBJECT("FoxBridge")
* The key is your license JWT. Activate() returns .F. if it is not
* valid and leaves the reason in GetLastError(); it does not raise a
* VFP ERROR.
lcKey = MySystem_GetLicense()
IF !loBridge.Activate(lcKey)
MESSAGEBOX("FoxBridge license not valid: " + ;
loBridge.GetLastError(), 16, "FoxBridge")
RETURN .F.
ENDIFStringBuilder. Keep the JWT wherever you keep your secrets and hand it to Activate(); FoxBridge does not read it from any file on its own. 4. Check that it loaded
With the bridge activated, either of these two lines confirms it:
? loBridge.Version()
&& FoxBridge Runtime 1.0.0 / Core ...
? loBridge.TypeExists("System.Text.StringBuilder")
&& .T.Next: Quick Start ->