我一直堅持這一段時間。我會盡我最大的努力盡我所能解釋。我會尊重任何幫助。使用C#安裝項目取消註冊COM DLL
我有一個C#項目,它使用了我不斷更新的VB6編譯的ActiveX DLL。 我編譯安裝項目,發送給客戶端,他們運行安裝程序。在構建更新的安裝項目時,我會增加安裝項目的'版本',以免它'已安裝另一個版本'。
幾個更新後開始發生什麼我開始注意到DLL不會更新到安裝程序中的新版本。客戶端計算機安裝並註冊了原始DLL。第一個症狀:方法找不到客戶端C#代碼的異常。
這不是一個共享的DLL,只有這個應用程序需要它。
我注意到,卸載應用程序(通過通常的過程)時,DLL也不會從應用程序文件夾中刪除,雖然我將該文件的屬性'永久'設置爲false。註冊表中的註冊條目也得到了遵守。
在構建它之前,我會在VS6.0中更新DLL的版本(通常會增加內部版本號)。然後在VS2008中,我將它從引用中移除,然後從「瀏覽選項卡」中再次添加它,而無需在我的開發機器上重新註冊並從COM選項卡添加它。
我想到了這些選項。在安裝項目
- 定製步驟的regsvr32.exe/U「我的DLL的硬編碼路徑」,在卸載(醜陋的)
- 不知怎的,找出如何在「隔離」屬性可以爲我工作,而無需註冊
- 瞭解如何執行安裝項目「條件」,以便實際檢查庫的版本並在每次安裝時相應地更新文件)
任何幫助都將非常受歡迎。
爲什麼你用來創建安裝程序? ClickOnce的?的InstallShield?自定義安裝程序? – 2010-05-14 04:06:17
這不是一個大產品,我也想獲得一些經驗。我也相信我想要做的是基本的。我將來會尋找一種產品,但現在這是我的選擇。感謝您的評論。 – 2010-05-14 04:30:01
我試過設置'Isolated'的引用屬性,並將設置項目中的Register屬性設置爲registerRelativePath(類似的東西)。我在構建安裝項目時收到警告,但似乎沒有註冊DLL並正在工作。儘管如此,仍然不會在卸載時將其刪除。 – 2010-05-14 05:08:57