Mise à niveau d'Indy10 avec le pack de composants TMS (C++ Builder)
-
13-11-2019 - |
Question
Jusqu'à présent, j'utilisais Indy 10 sans problème, mais après un récent problème avec l'installation du pack de composants TMS, je recherche un autre moyen de mettre à niveau Indy.TMS s'installe correctement sur un système propre avec CB2010, mais lorsque je mets à niveau Indy en utilisant la procédure ci-dessous, j'obtiens des erreurs au démarrage de l'IDE et juste après l'installation de TMS - l'erreur est : The procedure entry point @Idhttp@TidCustomHTTP@GetRequestHeaders$qqrv could not be located in the dynamic link library IndyProtocols140.bpl
.Évidemment, il y a un problème de mon côté car TMS s'installe sur une installation propre sans mise à niveau Indy.
Alors peut-être qu'il pourrait s'installer correctement si j'écrase les fichiers Indy par des versions plus récentes.
Voici la procédure d'installation pour la mise à niveau Indy que j'utilise actuellement (et qui a fonctionné jusqu'à l'installation de TMS) :
Démarrez l'IDE et supprimez
Indy10 Protocols Design Time
etIndy10 Core Design Time
paquetsExécutez ce script qui supprime les anciens fichiers Indy :
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"
Décompressez la nouvelle installation d'Indy dans "c:\code\indy" et ouvrez
IndySystem140.dpk
,IndyCore140.dpk
,IndyProtocols140.dpk
,dclIndyCore140.dpk
,dclIndyProtocols140.dpk
dans cet ordre.Modifier les options de compilation pour
Generate all C++ Builder files (including package libs)
pour chacun des packages ci-dessus.Définissez tous les packages sur
Release
et construisez-les dans l’ordre ci-dessus.Installez également pour les deux derniers
Ajoutez les chemins d'inclusion et de bibliothèque à "c:\code\indy\Core" (et même pour les protocoles et le système)
J'ai également joué avec le script FullC140.bat fourni avec Indy, mais je ne l'ai pas tout à fait installé correctement comme ci-dessus.
Quelqu'un a-t-il réussi à mettre à jour Indy et à installer TMS par-dessus ?
Mon script batch supprime-t-il certains fichiers alors qu'il ne devrait pas le faire ?
La solution
Le package TMS erroné a été compilé pour établir un lien avec les packages Indy préinstallés avec l'EDI.Votre mise à niveau d'Indy rompt ce package TMS en raison d'un changement d'interface dans l'unité IdHTTP.pas d'Indy (en particulier, le GetRequestHeaders()
méthode de TIdCustomHTTP
a été renommé en GetRequest()
).Pour résoudre l'erreur, soit le package TMS défaillant devra être recompilé pour établir un lien avec les packages Indy mis à niveau, soit vous devrez annuler cette modification dans IdHTTP.pas et recompiler à nouveau Indy.