在C++Builder中安装Indy 10.2.3详细步骤
作者:Tuuzed(土仔)
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://www.cppblog.com/tuuzed/archive/2008/06/17/53771.html
一直想自己制作一个通过SMTP协议发送邮件的小程序,打开BCB才知道BCB6中自带有NMSMTP和IdSMTP两种控件。NMSMTP只支持比较老的RFC821协议,通俗来说就是不支持目前SMTP服务器所需要的EHLO命令(具体可参考RFC1869和RFC2554);而InSMTP是支持较新的RFC协议的。无奈的是BCB6原来自带的是Indy8套件?好老了,在Indy网页中都已经到Indy9和Indy10了。目前网上关于Indy10的讨论渐渐多了起来(英文网站讨论的比较多些),但总体说来是不够,例如在BCB6中如何安装等等。通过上网搜索和自己半天的摸索,终于在BCB6中安装好了最新的Indy 10.2.3版本。
第一步:下载Indy 10源代码 。
Indy是开源的项目,是由SubVersion来管理版本信息。主页中有给出链接地址:http://www.indyproject.org:8080/svn,进去后一定要注意:不要一个一个文件下载,要通过SubVersion系统的打包程序来打包源代码,防止遗漏或弄错成了测试代码;并只用选择trunk这个目录即可,其他的目录是给调试或测试的人员使用的(主页http://www.indyproject.org/Sockets/Download/IndyviaSubversion.EN.aspx上有说明),见图:
首先在trunk目录前打勾,在toggle右边的下拉框中选择“Download as zip”,按Go!下载源代码,保证是最新的了(看右边目录的时间。
第二步:编译Indy 10源代码。
废话一句,这一步首要的是确保你安装了BCB或DELPHI。解压下载来的ZIP文件,进入trunk\Lib,这里能看到有一些bat文件和目录。其中“Fullc6.bat”是我们需要运行的安装文件(C6表示BCB6版本,D6表示DELPHI6等等),以前网上说需要对Indy10的安装文件Fullc6.bat和某个.hpp文件进行改进(见ccrun网站上的Indy10源代码)。可能是这个版本比较新,我运行了一下,只是在最后会提示“系统找不到指定的文件。”,分析一下bat文件内容,是“copy *.rsp ..\..\C6”语句引起的错误,我找遍了整个trunk都没有.rsp文件,估计是以前的版本遗留下来的语句。不放心的话,可以注释掉bat中的这句语句,编译一样能通过,并且成功完成。不出意外,trunk下应该就有一个C6目录了,这就是我们需要的控件代码了。
第三步:卸载BCB6自带的Indy8控件。
刚开始我没有卸载原来的版本,安装后进行测试竟然出错了,后来上网搜索,发现要卸载原来的Indy8控件。卸载很简单:
1、进入BCB6 IDE-关闭所有项目“File-Close All”-Component-Install Packages,Remove掉有Indy字样的控件包,OK退出,再关闭BCB 6。
2、将BCB6安装目录下的文件删除或移走。有以下一些文件:\bin\dclindy60.bpl \lib\obj\dclindy.dcp;\lib\obj\dclindy.dcu;\lib\obj\id*.dcu ;\lib\obj\indy.dcp;\lib\obj\indy.dcu;\include\vcl\id*.* 。为了对INDY8做个备份,我写了一个Uninstall的bat文件,先找地方建立一个目录,运行它就行了,它会原样把目录建起来:
1REM %1=BCB installtion dir
2mkdir bin
3mkdir lib
4cd lib
5mkdir obj
6mkdir Debug
7mkdir Release
8cd ..\
9mkdir include
10cd include
11mkdir vcl
12cd ..\
13MOVE %1\bin\dclindy60.bpl bin\
14MOVE %1\lib\obj\dclindy.dcp lib\obj\
15MOVE %1\lib\obj\dclindy.dcu lib\obj\
16MOVE %1\lib\obj\id*.dcu lib\obj\
17MOVE %1\lib\obj\indy.dcp lib\obj\
18MOVE %1\lib\obj\indy.dcu lib\obj\
19MOVE %1\lib\Debug\indy.* lib\Debug\
20MOVE %1\lib\Release\indy.* lib\Release\
21MOVE %1\include\vcl\id*.* include\vcl\
3、将BCB6安装目录下CBuilder6\Source\indy改个名字吧,加个.old,表示这是老的Indy控件了。
第四步:安装Indy10到BCB6 IDE。
1、Copy 源代码trunk\C6目录到BCB6安装目录下,我还是放在Source下,把C6改名为Indy10。
2、运行BCB6-关闭所有项目“File-Close All”-Component-Install Packages-Add,把刚才改名的indy10目录下的dclIndyCore60.bpl和dclIndyProtocols60.bpl项目加进来。保存设置后,再选择Project-Options-Directories/Conditionals-include path和Library path中将indy10的目录添加进来,保存设置。
※以下为2008年08月03日增加※
3、拷贝IndyProtocols60.bpl,IndyProtocols60.bpi,IndyCore60.bpl,IndyCore60.bpi,IndySystem60.bpl,IndySystem60.bpi共6个文件到WINDOWS安装目录的system32下。
※增加结束※
第五步:安装结束和测试。
重启BCB看看,是不是有Indy10图标出来了?没有的话,可能是漏了哪一部了。再重做一遍看看。如果不出意外,在控件列表最后已经有最新的idny控件出来了,图标好看了很多(仅仅是给设计人员看的图标)。新建一个项目,然后拖一个控件进来,在控件上鼠标右键,可以看看版本号,build项目一下,如果没有error,那就证明安装成功了。
额外提示:
1、Indy是一个开源的项目,不可能保证你的项目它能完全兼容,时刻注意Indy项目的发展和更新代码是关键;
2、开源项目的文档比较少,主要还是靠网上高人的支持和其他一些开发人员的测试,主页上有文档下载URL: http://www.projectindy.org/downloads/IndyDocs_10.1.5.0_HtmlHelp.zip。看了一下,是indy10.1.5的,和10.2.3还是有些差别,而且有些方法和属性不详细,如果想要进一步的支持,好像可以买项目组出的技术书,具体看主页吧。
3、学习无止境,实践出真知。感谢网上所有给我提供参考和帮助的人。