Dll hell, WinSXS monster, and Delphi paradise
A funny and honest article on Dr Dobbs told the story of the "DLL hell" on windows.
Writing Delphi applications, in respect to needed libraries to be redistributed along with, is just paradise.
What I like very much in this article, is the conclusion:
To avoid DLL-Hell in 2010, the best way is:
- Don't use public DLLs or assemblies at all.
- Don't use the Side-by-side manager.
- Include all DLLs privately in the applications bin-directory and use private assemblies as far as possible if assemblies can not be avoided.
And I like also this very honest notice:
It is worth noting that DLLs no longer save disk space. In fact, the opposite is the case. If you have a look into the side-by-side repository (found in Windows' WinSXS directory), you will find, that its 5 GB on Windows 7 and even 7 GB on Windows Server 2008, containing 40.000 files with numerous versions of roughly all Microsoft Libraries. That's about 50% of the disk space used by Windows in total. We were needing solution, but we created a monster.
Microsoft created a monster... WinSXS directory is indeed one big waste of disk space!
Since the beginning, Delphi executables could perhaps appear a bit bigger
than plain MFC applications. 300 KB for a form with some buttons (you can have
the same with only 30 KB with our LVCL units).
Delphi 2010 and XE produce bigger executables, perhaps 800 KB for the same form with buttons, due to the new RTTI content added, and some RTL rewrite.
But 800 KB is nothing nowadays, compared to the disk space needed for installing the Dot Net framework on your computer.
In all our applications, we try to avoid dll usage.
For example, the SQLite3 engine or the zlib library are linked to the exe, with tiny .obj files. No external dll required. No version to check. No manifest to write. No error message at startup. No pollution of the Windows registry.
And if it was difficult to get rid of an external dll, we found out a clean way, by embedding the .dll into the executable, as .zip resource, extracted on request. Nice and easy solution. See http://synopse.info/forum/viewtopic.php?pid=314#p314
One of our former projects (4 years ago, already!), for the French Army, included a "like-thin client", i.e. a stand-alone Delphi application, without any installation step required, running from Windows 2000 to Seven, in just a 300 KB executable (after UPX packing), with a full GIS and secure database client included. 300 KB is less than most todays AJAX application bandwidth usage... See http://bouchez.info/roc.html
I really like the fact that Delphi executables are self-contained.
Programming Delphi can be sometimes like being in paradise.
Comments and feedback are welcome on our forum.