如何实现类似操作系统补丁更新的功能?
比如:微软经常发布的补丁,这个补丁肯定更新的是某一个组件或模块而不是整个安装程序。
还有一些其他的软件也是如此,只下载一个新的安装包,只要安装这个安装包即可,而不是安装整个程序。问题:
1.实现这个功能的原理是什么?是用DLL文件吗?
2.在C#中如何实现这个功能(C#里没有模块的概念).

解决方案 »

  1.   

    如果你去下载微软的补丁,就会发现都是KB打头的exe文件,你要打补丁的时候直接使用C#去调用这些可执行文件即可,调用的时候可以加入参数不让其显示界面补订的修正方式有多种模式,例如替换某些dll文件,修改注册表,更新可执行文件,卸载老旧版本,很复杂的,要根据不同的补订来确定,而微软的补丁的安装程序都帮你做到了这些
      

  2.   

    写一个windows服务,检查服务器的xml列表,下载对应的dll,覆盖本地dll,覆盖应该是更改旧文件的名字然后copy新文件,这样即便程序开着也可以更新,等重起应用程序可以生效
      

  3.   

    或者使用clickonce部署
    http://msdn2.microsoft.com/zh-cn/library/142dbbz4(VS.80).aspx
      

  4.   

    谢谢各位使用clickonce导致程序不能运行。
    可能是我的程序中包含了一个启动需要的文件夹,这个文件夹中包含两个文件,clickonce部署后不能将这两个文件复制到客户机中,导致程序不能运行。使用DLL可能是最好的方法
    但C#里用哪种方式生成DLL文件最好呢,用类库吗?