2011-04-21 29 views
0

目前我有一个包含类库,安装程序和安装项目的C#解决方案。安装项目生成一个MSI来安装我的类库(dll),这是注册的vsdrfCOM,在最终用户客户端上由第三方应用程序安装后引用。我无法控制第三方应用程序。这一切都按预期工作,我的类库没有问题引用,可以通过部署的MSI进行安装/重新安装。如何更新部署的类库(DLL)?

不幸的是,我试图解决的问题是如何将更新应用到类库(dll),而不需要最终用户通过MSI卸载,下载新的MSI并运行它。此外,还有我想要维护的用户状态文件夹/文件。基本上,只是覆盖类库(DLL)。我最初拍摄的内容是初始化库,打到远程位置,检查版本,并根据需要下载新的dll。然后通知用户他们需要重新启动第三方应用程序。

  1. 只要下载一个新的DLL和paisting覆盖旧的不会出现,即使CLSID的保持,因为它出现在注册表中不顺心的事工作。受到位于此处的自动更新项目的启发,http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx

  2. ClickOnce似乎无法与类库一起使用,除非您有一个与其绑定的Forms/Console应用程序。

  3. 不知道是否可以下载新的MSI,并在不覆盖上述用户状态文件的情况下以被动方式运行旧的。

那么,有没有办法更新在上述条件下安装了MSI的dll?

谢谢。

回答

0

如果你的类库由两个.DLL文件组成,假设库A和B.库

图书馆暴露出的接口,第三方应用程序,但推迟实际的逻辑库B.每次加载库A时,它都会先加载库B,然后在线检查新版本,并在可用时下载它。你的MSI理论上只能安装库A,并且依靠库B在运行时下载。 (虽然这可能是一个好主意,以防万一网络连接中断)

+0

我想我理解这个概念。接口可能在我的情况下非常广泛,但我可以尝试对某些方法进行有限的测试,看看我是否能够获得预期的结果。 – user719541 2011-04-21 21:09:01