1

The old Delphi 7, uncheck runtime packages and build all trick doesn't seem to work anymore so I can't restore whatever would be a good set of runtime BPL's for my Delphi project.

I've got a problem, which I will probably ask another question about and link here, which I think might be solved by including a particular BPL that contains VCL.CheckLst.pas.

The reason I don't just know the answer to this is when I start a new VCL forms project, there are no VCL BPLs in the runtime packages by default, there's RTL and some firemonkey stuff and good old MadExcept and Indy, but no VCL, what's the deal with that? is my Delphi misconfigured?

David Heffernan
  • 601,492
  • 42
  • 1,072
  • 1,490
Peter Turner
  • 11,199
  • 10
  • 68
  • 109

1 Answers1

5

There are no VCL. (note the . after VCL) runtime packages. There are the standard RTL packages you've been used to before; the VCL namespaces are contained in them.

To find out exactly what runtime packages you need to distribute, you might find this useful.

Go to the Project Options/Packages/Runtime Packages dialog (image below to help explain).

Expand the Link with runtime packages node, check True, and clear the three Value node checkmarks. You can also open the nodes below Runtime packages and clear the lists for the three entries there. Save the changes and close the dialog. (The IDE will repopulate the list and store it in the .dproj file; you'll see it if you reopen the Project Options dialog after building.)

Use Project|Build <yourproject>. Once it builds, use Project|Information for <yourproject>; the right side panel will show you the BPLs you'll be required to distribute. (VCL.CheckLst is in vc1x60.bpl, BTW, according to Sertac's comment below.) Make sure you build and don't just compile; you need to make sure all the dcu's are rebuilt so the package list can be determined.

XE2 Project Options Packages Dialog

Ken White
  • 123,280
  • 14
  • 225
  • 444
  • Just to be sure I checked with the exports from both rtl160 and vclx160. It's in vclx160.bpl. Being an api control it wouldn't make sense to put it into rtl either. – Sertac Akyuz Dec 22 '11 at 02:26
  • Oops. I think you're right (it made sense earlier). It must be compiling the VCL stuff in instead of using the packages, because I only specified `rtl160`. The exe is still 5MB, though. The form or component didn't pull in `vcl160`; I can't figure out why, but it must be my error (as usual, not yours ). Rolling back my last edit and deleting my last comment. Thanks, Sertac. – Ken White Dec 22 '11 at 02:32
  • Dunno, it's confusing.. Will check to put only 'rtl'. (I wish I were usually right!! ). – Sertac Akyuz Dec 22 '11 at 02:38
  • @Sertac: I'm still confused. Like I said, a new VCL application built in XE2 and copied to a `Win7 Virtual XP Mode VM` that only has D7 installed, copying only the `testapp.exe` and `rtl160.bpl` into a new folder, works. The app runs without any errors, and the form displays with the `CheckListBox` displaying properly. (I even confirmed that the path statement only referred to folders in that VM, and searched for any `*160.bpl` files - it found only the one I copied into the new folder.) – Ken White Dec 22 '11 at 02:46
  • You're right, I'm quite surprised. So it's possible to use rtl in a package and other stuff linked in. It doesn't work the other way around though, once you refer vcl, vclx runtime packages, you have to deploy rtl160. Must have got to do something with the dependancy hierarchy. – Sertac Akyuz Dec 22 '11 at 02:50
  • @Sertac: I knew it worked that way the other way around as well, but I didn't know you could use only `rtl`. I guess I learned something today. Thanks! :) – Ken White Dec 22 '11 at 02:57
  • Thanks to you!, it would never occur to me :). ..  Some meaningless stats: no packages -> 6.84Mb, only rtl package -> 5.7Mb, rtl, vcl, vclx pagkages -> 2.2Mb. – Sertac Akyuz Dec 22 '11 at 03:02
  • Thanks, I did the `project information` thing for all my projects and tabulated the perfect runtime package configuration. When I added them all to all the DLL's I stopped getting my horrible annoying very bad TCheckListBox crash that didn't make any sense and was officially [ignored by Embarcadero](http://qc.embarcadero.com/wc/qcmain.aspx?d=101022) – Peter Turner Dec 22 '11 at 18:23
  • Glad I could help. :) Just for the record, though: Embarcadero didn't ignore the problem. More info was requested on 11/15/2011, it ws promoted to the internal DB that same day, and it was marked as "fixed" 3 days ago (12/19/2011). How is that "officially ignored"? :) – Ken White Dec 22 '11 at 19:03
  • @Ken, I guess I misunderstood that, I just figured they marked something 'fixed' that they couldn't replicate like I always do. I'm actually glad this bug was in there because it gave me the impetus to figure out exactly which runtime packages I needed. – Peter Turner Dec 22 '11 at 20:48