Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does building with runtime packages make the EXE file smaller?

I have a query about the option in Delphi to build with or without runtime packages (Project->Option->Packages).
The executable file size seem to be smaller (389KB) when I checked the box "Build with runtime packages" compared to when I uncheck the box (3,521KB). Why is that the case?

I am having so much trouble building an installation disk for it and can't figure out what files should be included in the installation. I wonder if this might have anything to do with it, but I have tried both options already.

like image 277
Snackmoore Avatar asked Dec 14 '09 01:12

Snackmoore


People also ask

What is the runtimebroker installer's task?

The installer's task is to ensure that all correct verifications have been made before installing and placing RuntimeBroker.exe and all other EXE files for Windows. An incorrectly installed EXE file may create system instability and could cause your program or operating system to stop functioning altogether.

How big is the final EXE file for NET Framework?

Since. NET Framework is installed on every Windows machine, you can expect your small single-file. exe program to work everywhere. (If you want to be sure about older versions of Windows, you need to choose an older version of. NET Framework.) This means that your final. exe file can be even 1 MB or 2 MB in size.

What does runtimebroker Exe bad image mean?

Most of these RuntimeBroker.exe error messages mean that Windows was either unable to locate this file on startup, or the file is corrupt, resulting in a prematurely-aborted startup process. Generally, Windows will be unable to start without resolving these errors. RuntimeBroker.exe - Bad Image. RuntimeBroker.exe Application Error.

What are the advantages of using al runtime packages?

Runtime packages thereby allow you to protect the intellectual property represented by your AL source code. When the runtime package is generated on the server, the developer license is checked for permissions to the used extension IDs.


2 Answers

When you build with runtime packages, the VCL and RTL are loaded from the packages and so their code doesn't have to be linked into your EXE. So the EXE gets smaller, but the total installation gets larger since you can't use smart linking to reduce the size of the packages.

As you've already noticed, using packages causes trouble for memory leak tracing, and it also causes trouble for debuggging. It's generally only worthwhile to use them if you're using plugins that will also need runtime packages.

like image 196
Mason Wheeler Avatar answered Nov 15 '22 22:11

Mason Wheeler


The answers so far miss one crucial point: Runtime packages are useful in the same way as DLLs are useful if you have a suite of applications that work together and are installed together. You could of course link the VCL and third party libraries into all of them by building them without packages, but depending on the number of applications and used libraries the size of these applications combined will be larger than the size of them built with runtime packages plus the size of those runtime packages. This will make for larger setup packages, which isn't the big issue it once was.

But using all these applications at the same time will also bring a much higher load for the system. Since every application uses its own copy of the VCL and the other libraries all these need to be loaded from disc into memory, which causes more I/O. And then there will be several copies of them in memory, each taking up space for the code. When runtime packages are used each application will have its own memory area for data, but they will all share the same copy of the packages' code in memory.

For a single self-contained application without any special needs definitely build without packages.

like image 29
mghie Avatar answered Nov 15 '22 20:11

mghie