1

我已经坚持了一段时间了。我将尽我所能用最简单的术语进行解释。我会尊重任何帮助。

我有一个 C# 项目,它使用我不断更新的 VB6 编译的 ActiveX DLL。我编译设置项目,将其发送给客户端,然后他们运行设置。在构建更新的安装项目时,我会增加安装项目的“版本”,这样它就不会因为“已安装另一个版本”而烦恼。

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

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

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

我会在 VS6.0 中更新 DLL 的版本(通常会增加内部版本号),然后再构建它。然后在 VS2008 中,我将其从“参考”中删除,然后从“浏览选项卡”中再次添加,而无需在我的开发机器上重新注册并从 COM 选项卡中添加它。

我已经想到了这些选项。

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

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

4

1 回答 1

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 会在卸载时自动删除 dll。

于 2014-05-29T17:52:49.260 回答