0

目前我有一个包含类库、安装程序和设置项目的 C# 解决方案。安装项目生成一个 MSI 来安装我的类库 (dll),注册 vsdrfCOM,在最终用户客户端上的第三方应用程序安装后引用该类库。我无法控制第三方应用程序。这一切都按预期工作,并且可以毫无问题地引用我的类库,并且可以通过部署的 MSI 安装/重新安装。

不幸的是,我要解决的问题是如何将更新应用到类库 (dll),而不期望最终用户通过 MSI 卸载、下载新的 MSI 并运行它。此外,还有一些我想维护的用户状态文件夹/文件。基本上,只需覆盖类库(dll)。我最初的目标是初始化库,点击远程位置,检查版本,并在需要时下载新的 dll。然后通知用户他们需要重新启动第三方应用程序。

  1. 只是下载一个新的 dll 并在旧的上粘贴似乎不起作用,即使 CLSID 得到维护,因为它看起来注册表不喜欢某些东西。受位于此处的自动更新项目的启发,http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx

  2. ClickOnce 似乎不适用于类库,除非您有一个与之绑定的 Forms/Console 应用程序。

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

那么,在上述情况下,有没有办法更新已经安装了MSI的dll呢?

谢谢。

4

1 回答 1

0

如果你的类库是由两个 .dll 组成的,比如说库 A 和库 B。

库 A 向第三方应用程序公开接口,但将实际逻辑推迟到库 B。每次加载库 A 时,它首先通过在线检查更新版本来加载库 B,如果可用则下载它。您的 MSI 理论上只能安装库 A,并依靠库 B 在运行时下载。(尽管在互联网连接中断的情况下同时包含两者可能是个好主意)

于 2011-04-21T20:27:24.560 回答