我在写一个在线更新的组件,用C#.
现在我有个问题.就是如果我将要更新的文件下载完毕后,如何用下载后的文件替换正在执行的主应用程序呢?我看有很多软件是这样的:运行主程序,发现新版本后,下载新版本.然后提示你需要重新启动应用程序来进行更新..等你重新启动后,就发现主程序以及其他的程序被更新了..红色部分是如何实现的呢??

解决方案 »

  1.   

    可以用另外一个更新程序,此程序只是用于覆盖主程序文件
    写入注册表RunOnce部分,下次启动计算机并且用户登陆时执行
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/run_and_runonce_registry_keys.asp
      

  2.   

    <退出主程序并执行更新模块>楼上.这一部分如何执行??我试了.不好用.因为我要从主程序中启动更新程序啊.我是用Process.start()来执行的.结果不行.我的更新模块是可以运行.当将下载后的新版本覆盖旧版本的时候,无法覆盖主程序和更新模块的Dll文件,因为这两个都在运行..问题是:我如何能在主程序中启动更新模块,并且立刻退出主程序.保证只有更新模块本身在运行.我尝试用kill process的方法kill主程序.发现还是不行...