在C++Builder中安裝Indy 10.2.3詳細步驟
作者:Tuuzed(土仔)
版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明。
http://www.shnenglu.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文件,先找地方建立一個目錄,運行它就行了,它會原樣把目錄建起來:
1
REM %1=BCB installtion dir
2
mkdir bin
3
mkdir lib
4
cd lib
5
mkdir obj
6
mkdir Debug
7
mkdir Release
8
cd ..\
9
mkdir include
10
cd include
11
mkdir vcl
12
cd ..\
13
MOVE %1\bin\dclindy60.bpl bin\
14
MOVE %1\lib\obj\dclindy.dcp lib\obj\
15
MOVE %1\lib\obj\dclindy.dcu lib\obj\
16
MOVE %1\lib\obj\id*.dcu lib\obj\
17
MOVE %1\lib\obj\indy.dcp lib\obj\
18
MOVE %1\lib\obj\indy.dcu lib\obj\
19
MOVE %1\lib\Debug\indy.* lib\Debug\
20
MOVE %1\lib\Release\indy.* lib\Release\
21
MOVE %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、學習無止境,實踐出真知。感謝網上所有給我提供參考和幫助的人。