簡體   English   中英

用C#安裝項目注銷COM dll

[英]Unregistering COM dll with a C# Setup Project

我已經堅持了一段時間。 我將盡我所能嘗試用最簡單的術語進行解釋。 我將竭盡所能。

我有一個C#項目,該項目使用我不斷更新的VB6編譯的ActiveX DLL。 我編譯安裝項目,將其發送到客戶端,然后他們運行安裝程序。 在構建更新的安裝項目時,我將增加安裝項目的“版本”,以免被“已安裝另一個版本”所困擾。

幾次更新后開始發生的事情我開始注意到DLL不會在安裝程序中更新為新版本。 客戶端計算機已安裝並注冊了原始DLL。 第一個症狀:從客戶端C#代碼找不到方法異常。

這不是共享的DLL,僅此應用程序需要它。

我注意到,(通過常規過程)卸載應用程序時,雖然我會將此文件的屬性“ Permanent”設置為false,但DLL也並未從應用程序文件夾中刪除。 注冊表中的注冊條目也將保留。

我確實在VS6.0中更新DLL的版本(通常會增加內部版本號),然后再進行構建。 然后在VS2008中,我將其從“引用”中刪除,然后從“瀏覽”選項卡中再次添加,而無需在我的開發機上重新注冊它並從“ COM”選項卡中添加它。

我想到了這些選擇。

  • 卸載時在Setup項目中將regsvr32.exe / u'我的dll的硬編碼路徑'中的自定義步驟(丑陋)
  • 不知不覺中發現了“隔離”屬性如何為我工作而無需注冊
  • 了解如何執行安裝程序“條件”,該條件將實際檢查庫的版本並在每次安裝時相應地更新文件)

任何幫助都將受到極大歡迎。

出於好奇? 為什么不嘗試使用WiX? http://wixtoolset.org/

這對於構建安裝程序非常有用,您可以像以下操作一樣輕松地進行操作:

<File Id="guifreak3" Name="Guifreaks.NavigationBar.XmlSerializers.dll" Source="$(var.Plex.MobileHub.Client.Interface.TargetDir)Guifreaks.NavigationBar.XmlSerializers.dll"/>

卸載后,Wix會自動刪除該dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM