使用C#安装项目取消注册COM dll

时间:2010-05-14 03:19:46

标签: c# installation project setup-deployment dllregistration

我已经坚持了一段时间。我将尝试用最简单的术语和我所知的解释。我会尊重任何帮助。

我有一个C#项目,它使用VB6编译的ActiveX DLL,我不断更新。 我编译安装项目,将其发送到客户端,然后运行安装程序。在构建更新的安装项目时,我会增加安装项目的“版本”,这样就不会打扰“已经安装了另一个版本”。

在几次更新后我开始注意到DLL不会更新到安装程序中的新版本。客户端计算机已安装并注册了原始DLL。第一个症状:从客户端C#代码中找不到方法。

这不是共享DLL,只有这个应用程序需要它。

我注意到在卸载应用程序时(通过常规程序),DLL也没有从应用程序文件夹中删除,尽管我将此文件的属性“Permanent”设置为false。注册表中的注册条目也被保留。

在构建它之前,我确实在VS6.0中更新了DLL的版本(通常会增加内部版本号)。然后在VS2008中,我从References中删除它,然后从'Browse选项卡'再次添加它,而不是在我的开发机器上重新注册它并从COM选项卡添加它。

我已经考虑过这些选择。

  • 安装项目中的自定义步骤到regsvr32.exe / u'我的dll的硬编码路径'在卸载时(丑陋)
  • 以某种方式了解'Isolate'属性如何在没有注册的情况下为我工作
  • 了解如何执行安装项目'条件',实际检查库的版本并在每次安装时相应地更新文件)

任何帮助都会非常受欢迎。

1 个答案:

答案 0 :(得分:0)

出于好奇心?为什么不尝试使用WiX? http://wixtoolset.org/

这对于构建安装程序非常有用,您可以像以下一样轻松地完成这些工作:

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

Wix会在卸载时自动删除它。