Question

Until now I've been using Indy 10 without issues but after recent problem with installation of TMS component pack I am looking for alternative way to upgrade Indy. TMS installs fine on clean system with CB2010 but when I upgrade Indy using the procedure below I get errors when starting IDE and right after TMS installation - the error is: The procedure entry point @Idhttp@TidCustomHTTP@GetRequestHeaders$qqrv could not be located in the dynamic link library IndyProtocols140.bpl. Obviously some problem on my side as TMS does install on clean installation without Indy upgrade.

So perhaps it might install properly if I overwrite Indy files with newer versions.

Here is installation procedure for Indy upgrade I use right now (and which has been working until TMS installation):

  1. Start IDE and remove Indy10 Protocols Design Time and Indy10 Core Design Time packages

  2. Run this script which removes old Indy files:

    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\Indy10\*.*"
    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\Indy10\*.*"
    del /q "c:\Program Files\Embarcadero\RAD Studio\7.0\include\Indy10\*.*"
    del /q /s "c:\Program Files\Embarcadero\RAD Studio\7.0\source\Indy\Indy10\*.*"
    
    
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyCore.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyCore.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyProtocols.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndyProtocols.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndySystem.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\debug\IndySystem.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyCore.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyCore.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyProtocols.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndyProtocols.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndySystem.bpi"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\lib\release\IndySystem.lib"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndyCore140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndyProtocols140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\IndySystem140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\dclIndyCore140.bpl"
    del "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\dclIndyProtocols140.bpl"
    
  3. Unpack new Indy installation in "c:\code\indy" and open IndySystem140.dpk, IndyCore140.dpk, IndyProtocols140.dpk, dclIndyCore140.dpk, dclIndyProtocols140.dpk in that order.

  4. Modify compile options to Generate all C++ Builder files (including package libs) for each of above packages.

  5. Set all packages to Release and build them in above order.

  6. Also Install for last two

  7. Add Include and Library paths to "c:\code\indy\Core" (and same for Protocols and System)

I also messed around with FullC140.bat script that comes with Indy but didn't quite install it properly like with above.

Has anyone successfully updated Indy and installed TMS on top of it?

Does my batch script delete some files which it shouldn't?

Was it helpful?

Solution

The TMS package that is erroring was compiled to link against the Indy packages that were pre-installed with the IDE. Your Indy upgrade breaks that TMS package because of an interface change in Indy's IdHTTP.pas unit (specifically, the GetRequestHeaders() method of TIdCustomHTTP was renamed to GetRequest()). To address the error, either the failing TMS package will have to be recompiled to link against the upgraded Indy packages, or you will have to revert that change in IdHTTP.pas and recompile Indy again.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top