2008-10-14 104 views
11

有沒有一種方法可以在項目庫中選擇designtime包?在項目庫中加載Delphi designtime包

軟件包在大型項目中非常有用,可以保證構建時間的可接受性,但它們在這些大型項目中也是真正的皮塔餅。當一個開發人員添加一個新軟件包時,它會爲所有其他開發人員打好基礎,直到他們在他們的機器上安裝新軟件包。然後是版本的包...

所以有任何人有適當的解決方案呢? (它現在一直困擾着我多年)

回答

8

在我以前的工作中,我寫了一個小工具來幫助我們使用版本控制軟件包。我真的應該在業餘時間重新創建這個工具並使其可用。該工具雖然不難編寫,但也可以自己實現。

基本上它的工作是這樣的:

  • 顛覆回購與子文件夾中的所有包。回購庫中的每個包文件夾都具有相同的子文件夾:Lib(用於DCU),源,幫助(如果需要)
  • 在回購站的根文件夾中,將工具與XML文件一起放置。
  • XML文件指定了每個軟件包的所有必需信息:哪個文件夾包含DCU,哪個文件夾包含源,需要運行哪個命令才能獲得幫助。
  • 該工具讀取XML並顯示所有可用軟件包的清單框。已安裝的軟件包(從BDS註冊表讀取)被標記爲選中。
  • 用戶可以選擇安裝/卸載哪些軟件包。
  • 該工具在BDS註冊表中添加/刪除必要的密鑰。它將DCU/Lib文件夾添加到IDE的搜索路徑中,它將源文件夾添加到IDE瀏覽路徑,並將其註冊到自定義IDE專家的幫助命令中(該專家提供了默認幫助菜單的擴展以啓動幫助所有已安裝的軟件包)
  • 該工具甚至可以檢查軟件包之間的衝突和依賴關係。例如Raize Components的第3版和第4版都是可用的,它們不能同時處於活動狀態。依賴檢查是有用的,從TurboPower公司AsyncPro衍生(很多內部組件的依賴於經由AsyncPro串行通信)在內部部件

一種可能的擴展將是能夠保存/加載的選擇打包並存儲每個項目的選擇,以便只能加載特定項目所需的軟件包。

我實現這一切的時候,公司從德爾福5/7移動到德爾福2007年,我們有很多的問題,之前包的版本,想一些辦法版本的所有不同的包。

這種方法提供了一些很好的優點:

  • 錯誤修正時必須做出或第三方軟件包的新版本發佈,一個人不得不更改提交到顛覆。所有其他的開發者都可以從顛覆中做出更新,並且擁有最新版本,而不會有任何問題。
  • 當新的組件包將被添加到環境中,一個人必須提交所有文件,修改XML軟件包列表,然後其他的開發者可以做的顛覆更新和運行包輕鬆集成的工具。
  • 所有第三方和定製的內部成分現在版本容易。
  • 通過包含的DCU(和其他二進制文件)在顛覆回購,我們保證所有開發者使用相同的編譯版本。在可能的情況下,不同的編譯使用不同的設置,導致某些組件的行爲不同。
  • 當所有其他開發者終於裝德爾福2007年,他們的包是在安裝不到10分鐘(大部分的時間花在下載一切從顛覆回購;工具本身可以在不到2秒鐘安裝20包)。之前,通過手動安裝Delphi5/7的所有軟件包,最多可能需要2天才能安裝所有軟件。

這不僅僅用於一些內部組件,還包括一些大型組件包:Raize組件,JCL/JVCL(使用他們的安裝程序代替工具),DevExpress Quantum電網3和4,TurboPower公司AsyncPro

+0

這聽起來非常有用!請確保它可用。 。 。 – 2008-10-14 15:58:55

6

這太不容易了。你可以做到這一點,雖然,使用自定義註冊表破解的,而且每個配置特定BDS快捷方式,你有興趣:

使用,只需創建一個新的快捷方式, 修改命令行例如通過 -rMyAlternateBDSReg。然後啓動一次,註冊條目是 創建,他們可以配置 備用註冊表所有他們想要的, 刪除包等,沒有 擔心搞亂默認 安裝。

codegear

如果你設置了一個配置爲每一個項目,你就可以開始爲給定的項目相應的快捷方式。它不是自動的,但它總比那裏的一切都好。

一個不錯的副作用是加載時間將得到改善。

0

我們把源爲我們包中的源代碼控制與重建他們一個批處理文件一起。如果包中的樹發生更改,那麼我們重建它們。這並沒有解決安裝新軟件包的問題,​​但有些註冊表點擊可以解決這個問題,所以我們可能會包含.reg代碼段來處理這個問題。