目前我有一个包含类库,安装程序和安装项目的C#解决方案。安装项目生成一个MSI来安装我的类库(dll),注册的vsdrfCOM,在最终用户客户端上由第三方应用程序安装后引用。我对第三方应用程序没有任何控制权。这一切都按预期工作,我的类库被引用没有问题,可以通过部署的MSI安装/重新安装。
不幸的是,我试图解决的问题是如何将更新应用到类库(dll),而不期望最终用户通过MSI卸载,下载新的MSI并运行它。此外,还有我想要维护的用户状态文件夹/文件。基本上,只需覆盖类库(dll)。我最初拍摄的是初始化库,打到远程位置,检查版本,并在需要时下载新的dll。然后通知用户他们需要重新启动第三方应用程序。
只是下载一个新的dll并且对旧版本进行保护即使保留了CLSID也不会起作用,因为看起来注册表不喜欢某些内容。灵感来自此处的自动更新项目http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx
ClickOnce似乎不适用于类库,除非您有与之关联的Forms / Console应用程序。
那么,有没有办法在上述条件下更新已安装MSI的dll?
感谢。
答案 0 :(得分:0)
如果您的类库由两个.dll组成,那么假设库A和库B。
库A将接口暴露给第三方应用程序,但是将实际逻辑推迟到库B.每次加载库A时,它首先在线检查新版本并在可用时下载它来加载库B.理论上,您的MSI只能安装库A,并指望库B在运行时下载。 (尽管在互联网连接失效的情况下包括两者可能是一个好主意)