Upgrading Indy10 with TMS component pack (C++ Builder)
-
13-11-2019 - |
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):
Start IDE and remove
Indy10 Protocols Design Time
andIndy10 Core Design Time
packagesRun 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"
Unpack new Indy installation in "c:\code\indy" and open
IndySystem140.dpk
,IndyCore140.dpk
,IndyProtocols140.dpk
,dclIndyCore140.dpk
,dclIndyProtocols140.dpk
in that order.Modify compile options to
Generate all C++ Builder files (including package libs)
for each of above packages.Set all packages to
Release
and build them in above order.Also Install for last two
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?
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.