繁体   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