0

不确定这是否是好的做法,但请耐心等待。

我有一个带有新版本应用程序的 url,我不想使用任何更新工具来执行此操作。

我有 2 个应用程序。1 应用程序下载最新版本的应用程序,将其称为“更新程序”控制台应用程序。另一个应用程序是“MainApp”。我想从 MainApp 调用 Updater 应用程序以用下载的应用程序替换 MainApp。

  MessageBox.Show("We need to update the application. This might take a short while");

  System.Diagnostics.Process updateProcess = new System.Diagnostics.Process();
  updateProcess.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "Updater.exe";
  updateProcess.StartInfo.Arguments = AppDomain.CurrentDomain.BaseDirectory;
  updateProcess.Start();
  Process.GetCurrentProcess().Kill();
  //Application.Exit();

Updater 应用程序从传递给 MainApp 工作目录的 args 中获取文件的新版本并保存,代码如下

        client.BaseUrl = base_url + "MainApp.exe";
        var request = new RestRequest(Method.GET);
        byte[]  responseData = client.DownloadData(request);
        System.IO.File.WriteAllBytes(args[0] + "MainApp.exe", responseData);

这似乎不太奏效。它不会覆盖应用程序!

有什么建议么?

4

1 回答 1

0

我通过在主应用程序中使用“重新启动以更新”按钮来完成此操作,该按钮执行以下步骤:

  1. 使用包含主进程 PID 的开关启动更新程序。
  2. 主进程开始关闭。
  3. 更新程序找到具有给定 PID 的进程并等待它退出。
  4. 更新程序用新版本覆盖主应用程序。
  5. 更新程序启动主应用程序。
  6. 更新程序关闭。
于 2013-08-29T17:30:14.810 回答