本帖最后由 codeck 于 2014-01-23 15:08:08 编辑

解决方案 »

  1.   

    一般更新程序的方法是这样的。源程序A和更新程序B
    如果A需要升级,就启动B,B关闭A,并且将更新包覆盖到B,然后重新启动A,并关闭B
      

  2.   


    主程序每次执行时加载另外一个文件,这个没有问题,这就是动态加载dll并且调用dll里的方法。加载完后主程序就开启了此文件所有功能,这个做不到,dll里的东西是需要你主程序去调用的
      

  3.   

    楼上说得没错,我之前开发的一个自动更新的软件就是这样的
    B程序可以调用事先写好的更新服务(可以用WebService等)进行更新
    A程序的Program类里面Main方法中启用B程序
    static void Main()
    {
    ……
    System.Diagnostics.Process.Start("B.exe");
    Application.Run(new frmMain());
    }B程序打开后检查版本
     if (有新版本) 
     {                
      //关掉主程序
     System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcessesByName("A");
      foreach (System.Diagnostics.Process pro in proc)
      {
            pro.Kill();
        }
       调用服务下载文件();
     }
      

  4.   


    主程序每次执行时加载另外一个文件,这个没有问题,这就是动态加载dll并且调用dll里的方法。加载完后主程序就开启了此文件所有功能,这个做不到,dll里的东西是需要你主程序去调用的
    谢谢
      

  5.   

    那么如果B关闭A后,没成功启动A,那电脑就完全失去控制了,有办法保证成功性吗?非常感谢