1

I am trying to install BDE Engine by executing the following command line from my installation program as follows.

ShellExecute(0, nil, 'regsvr32.exe', 'BdeInst.dll', nil, SW_SHOW);

It pops up with a message requesting permission to install BDE Engine at a particular location. When you click okay button, it pops up another a message as follows.

enter image description here

I did verify that I have plenty of free space in my hardrive. When you click on Yes button, it installs the BDE engine successfully.

I don't know why. Plus, there is not much information online about this.

Any input will be greatly appreciated.

TLama
  • 75,147
  • 17
  • 214
  • 392
ThN
  • 3,235
  • 3
  • 57
  • 115
  • How much space (MB) do you believe you have on the hard drive - available? What version of Windows are you running (if you're running Windows). – Patrick Moloney Jun 22 '12 at 12:26
  • @PatrickMoloney Like I have over 80GB. The Installation program is being developed under Windows 7 and tested the installation on Windows 8, Windows 7 and even on XP. They all raises the same error. – ThN Jun 22 '12 at 18:50
  • The problem is that the bde installer uses GetDiskFreeSpace, and not GetDiskFreeSpaceEx - http://support.microsoft.com/kb/202455 – Anya Shenanigans Jun 24 '12 at 11:12

3 Answers3

2

The BDE is an old piece of software that has now been deprecated for a few years. While people do still have it running, I believe it was originally 16bit software and may never have been changed. I have a feeling the message is coming from some piece of software that can not understand your large hard drive. I don't recall if BDEInst.dll is the BDE installer from Borland, but the message may be coming from that. You also mention an "Installation program is being developed ...".

It should install to XP, and I would get it working there first. Win 7 and 8 introduce more issues. However, if at all possible, reconsider if you want to install BDE at this point in time.

Patrick Moloney
  • 642
  • 5
  • 14
  • BDE is old, but the version shipped with Delphi 2 and up is a pure 32 bit solution which works with XP, Vista or Seven, even on 64 bit revision. Its installer has issues, but it is working. In all cases, BDE is deprecated, but it is impressive that it still work with today's OS (even on Windows 2008 Server R2 64 bit). – Arnaud Bouchez Jun 24 '12 at 15:25
2

First of all, the BDE is deprecated, and you should better avoid using it, even with other versions of Delphi.

You have third party components around able to connect directly to DBs without using the BDE. See e.g. DevArt, SQLDirect, DASoft (its FreeDAC is free), and a lot of other components like Zeos or our SynDB Open Source libraries.

You reached the well known "2GB rounding error". The BDE installer suffers from it, but applications using BDE also.

BDE installer is buggy.

It just does not work with newer versions of Windows.

You have other installers around, like interbase and BDE on windows 7 or Bde Installer on these Embarcadero days

BDE used in applications will suffer from the same 2GB limitation, linked to the GetDiskFreeSpace improper use.

There is a work around available on Embarcadero CodeCentral which is worth to be included in your application code.

Community
  • 1
  • 1
Arnaud Bouchez
  • 42,305
  • 3
  • 71
  • 159
1

The bdeinst.dll uses the Win32 API function GetDiskFreeSpace, which can report a completely misleading value when executed against a drive that is larger than 2GB - see http://support.microsoft.com/kb/202455 for a developer-based workaround.

The reason I know this is because I've been hit by it before and examined the imports for the bdeinst.dll binary which indicates that it uses GetDiskFreeSpaceA (this is the ascii version of function).

If you have to use the BDE, then you just have to accept that you may see this error when you attempt to install the app

Anya Shenanigans
  • 91,618
  • 3
  • 107
  • 122
  • 1
    No, you don't have to passively accept it and pass you way, leaving your customers crying... There are several solution around to get rid of this limitation at runtime, by patching either the BDE, either the applications themselves. – Arnaud Bouchez Jun 24 '12 at 15:57