Delphi BPL包安裝講解


我們知道在delphi IDE中,分為開發包和運行包,所謂開發包是指那些需要在開發環境中依賴的包,這些包的功能包括可以提供用戶可視化的控件設計等.這些開發包一般用於安裝組件的.而運行包則是那些軟件運行時動態引用所依賴的包.其實有的bpl是可以同時具有這兩種功能的,(但是我見過的大多數都是作為開發包使用的,如果不特殊聲明的話).他即可以作為開發包進行安裝組件,但是注意就是如果安裝組件的開發包,那么一定要在delphi的project里放入這個bpl,以便開發時引用,又因為這只是安裝,在運行的時候不是直接調用這個bpl,而是連接這些組件的dcu,所以要加入dcu的路徑.也就是我們經常說的LIB.這樣就完全可以解釋上面的問題了.

      有人說bpl是delphi特有的dll,一開始,還有些不明白,但是現在似乎有些眉目了,開發包的bpl是IDE的dll,而運行包則是應用程序的dll,其實運行包的bpl是完全可以用作dll使用的,例如如果我們在project的option里選擇with runtime package,那么你所生成的exe文件將會成倍的減小,但是這時候的exe文件運行時需要system32下的bpl作為動態連接庫.否則將會出錯,相反,如果不采用動態連接,IDE編譯環境就會把所有的dcu連接到exe文件中,造成exe的變大.

      我們現在介紹一些文件后綴的意思.dpr是工程文件,pas是單元文件,dfm是單元文件的窗體資源文件.dcu是pas文件編譯后的文件.dpk是多個組件包組成的源文件,編譯后就會生成bpl文件和dcp文件,bpl就是安裝包也就是開發包,dcp則可以理解為一些描述性信息.

      我們再介紹關於安裝組件的問題.安裝開發包的本質就是添加bpl的路徑,並且運行他的某個注冊pas文件.通常來說安裝的過程是通過dpk編譯后再install,編譯就是把bpl文件釋放到delphi的project bpl中,剩下的就變成了安裝bpl包了,添加bpl路徑和運行注冊類文件(通過IDE中的install package).但是,我們通常會遇到下面兩種情況,第一:,編譯不成功,也就是不能生成bpl文件,這通常是因為這個包由於引用了其他的包,而其他的包還沒有安裝,所以對他的引用不能成功,也就不能正常編譯了.第二,編譯成功,也就是生成了bpl文件,但是卻無法安裝,這時候首先要根據提示判斷這個包是不是開發包,因為運行包是不能安裝的.有的安裝包帶有相對應的運行包,這時候必須要編譯這兩個包,然后把運行包放入到system32目錄下(不然會提示找不到運行包),以供用戶動態連接時使用,另外一個就是正常的安裝.也就是說開發包需要再delphi的bpl目錄中,而運行包是在系統目錄下的.當然這個運行包在編譯的時候是必須的(不管你用不用動態連接),因為他為你提供了動態連接的選擇,但是有的開發包,不給你提供運行包,你只能進行靜態連接.但是一旦生成靜態連接的程序,就完全可以拋棄這個運行包了,但是如果是動態連接,必須在system32目錄下有這個包.總之一句話,一旦第三方給你提供了運行包,你必須把他編譯放到系統目錄下,因為在他的開發包中描述中包含了運行包的信息,在安裝開發包會主動搜索運行包的存在,當然他不會去delphi
的bpl下尋找,而會搜索環境變量,system32, system等路徑.

 

轉載:https://www.xuebuyuan.com/3194224.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM