代码之家  ›  专栏  ›  技术社区  ›  UnkwnTech

关闭应用程序并运行外部应用程序

c#
  •  2
  • UnkwnTech  · 技术社区  · 15 年前

    我正在为我的应用程序编写更新系统,我需要关闭应用程序以覆盖exe,但在它关闭后,我需要运行更新可执行文件,我如何才能这样做?

    4 回复  |  直到 15 年前
        1
  •  2
  •   Samuel    15 年前

    你能不能用 Process.Start 让它等到你的主程序关闭?我认为这是最简单的解决办法。

    或者您可以有一个单独的启动程序,在启动主应用程序之前检查更新和更新。但如果必须更新启动程序,这也会导致同样的问题。


    沿着这条线:

    static void Main(string[] args)
    {
      var haveToUpdate = ...;
      if (haveToUpdate)
      {
        Process.Start("update.exe");
        Environment.Exit(0);
      }
    }
    
    static void Main(string[] args)
    {
      var processes = Process.GetProcessesByName("program.exe");
    
      if (processes.Length > 1)
        throw new Exception("More than one program.exe running");
      else if (processes.Length == 0)
        Update();
      else
        processes[0].Exited += new EventHandler(Program_Exited);
    }
    
    static void Program_Exited(object sender, EventArgs e)
    {
      Update();
    }
    
    static void Update()
    {
      // ...
    }
    
        2
  •  3
  •   Brody    15 年前

    倒着做。使用旧应用程序(临时存储)获取整个更新的文件,然后使用process start启动更新程序应用程序。所有的更新都需要将新文件复制到旧文件上,然后重新启动应用程序。

    更新程序可以捕获拒绝访问的异常,并等待应用程序变为可供复制。复制完成后-它将删除临时新文件,并在关闭前重新启动应用程序。

    然后,如果需要,可以更新更新程序(使用普通应用程序)。

        3
  •  0
  •   Daniel Brückner Pradip    15 年前

    我想你需要另一个小的更新应用程序。用process.start()启动它,让这个助手进程替换可执行文件,并用process.start()再次启动新的可执行文件。

        4
  •  -2
  •   Shane    15 年前

    在关闭应用程序之前运行更新可执行文件。