I'm was trying to solve a BPL issue that I'm having, and I stumbled upon an option in the settings called "Link with runtime packages" which is a Boolean. It can either be true or false.
Mine was set to true, but what does it actually mean? I set it to false and it solved my problem, but I do not really understand it.
What exactly is the difference between true and false?
Why would I want to have true over false or vice versa?
The "Link with runtime packages" option controls whether your application depends on external .BPL (Borland Package Library) files at runtime, or whether everything is compiled directly into your executable.
True: Your EXE is built to use runtime packages. Instead of embedding all the code from the RTL, VCL, or third‑party components, the compiler links against .BPL files. At runtime, those .BPL files must be present on the target machine.
False: Your EXE is built as a standalone application. All required code is compiled directly into the executable, so no external .BPL files are needed.
| True (Link with runtime packages) | False (Don't link with runtime packages) |
|---|---|
EXE depends on external .BPL files at runtime |
EXE is fully self‑contained, no .BPL needed |
| Smaller executable size | Larger executable size |
| Multiple apps can share the same runtime packages | Each app includes its own copy of the runtime code |
| Easier to update shared libraries without recompiling all apps | Updating requires recompiling the EXE |
Useful for plugin systems that load .BPL files dynamically |
Simpler deployment, just ship one EXE |
In my opinion, unless you specifically need runtime packages for a certain reason, it's usually best to just set "Link with runtime packages" to False and have all the code be compiled directly into your EXE. This makes deployment much easier.