2011-04-21 54 views
0

目前我有一個包含類庫,安裝程序和安裝項目的C#解決方案。安裝項目生成一個MSI來安裝我的類庫(dll),這是註冊的vsdrfCOM,在最終用戶客戶端上由第三方應用程序安裝後引用。我無法控制第三方應用程序。這一切都按預期工作,我的類庫沒有問題引用,可以通過部署的MSI進行安裝/重新安裝。如何更新部署的類庫(DLL)?

不幸的是,我試圖解決的問題是如何將更新應用到類庫(dll),而不需要最終用戶通過MSI卸載,下載新的MSI並運行它。此外,還有我想要維護的用戶狀態文件夾/文件。基本上,只是覆蓋類庫(DLL)。我最初拍攝的內容是初始化庫,打到遠程位置,檢查版本,並根據需要下載新的dll。然後通知用戶他們需要重新啓動第三方應用程序。

  1. 只要下載一個新的DLL和paisting覆蓋舊的不會出現,即使CLSID的保持,因爲它出現在註冊表中不順心的事工作。受到位於此處的自動更新項目的啓發,http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx

  2. ClickOnce似乎無法與類庫一起使用,除非您有一個與其綁定的Forms/Console應用程序。

  3. 不知道是否可以下載新的MSI,並在不覆蓋上述用戶狀態文件的情況下以被動方式運行舊的。

那麼,有沒有辦法更新在上述條件下安裝了MSI的dll?

謝謝。

回答

0

如果你的類庫由兩個.DLL文件組成,假設庫A和B.庫

圖書館暴露出的接口,第三方應用程序,但推遲實際的邏輯庫B.每次加載庫A時,它都會先加載庫B,然後在線檢查新版本,並在可用時下載它。你的MSI理論上只能安裝庫A,並且依靠庫B在運行時下載。 (雖然這可能是一個好主意,以防萬一網絡連接中斷)

+0

我想我理解這個概念。接口可能在我的情況下非常廣泛,但我可以嘗試對某些方法進行有限的測試,看看我是否能夠獲得預期的結果。 – user719541 2011-04-21 21:09:01