簡體   English   中英

我的更新程序無法關閉我的主程序(C#)

[英]My updater is failing to close my main program (C#)

我有一個更新程序,一旦檢測到更新(從遠程XML文件)通過主程序調用,首先它檢查進程是否打開

if (clsProcess.ProcessName.ToLower().Contains("conkinator-bot.exe"))
{

    clsProcess.CloseMainWindow();
    return true;

}

(這會在每個進程中運行,直到找到它為止(foreach循環))

更新程序然后下載文件:

client.DownloadFile(url, "Conkinator-Bot-new.exe");

然后它嘗試刪除當前的一個並重命名它:

File.Delete("Conkinator-Bot.exe");
File.Move("Conkinator-Bot-new.exe", "Conkinator-Bot.exe");

但是發生這種情況時我得到的錯誤如下:

未處理的異常:System.UnauthorizedAccessException:拒絕訪問路徑'D:\\ Conkinator的Skype Tool \\ Conkinator-Bot.exe'。

然而,該程序的新版本下載。

僅僅因為主窗口關閉並不意味着過程已經結束。 關閉主窗口后,需要等待進程退出:

clsProcess.WaitForExit();

理想情況下,您會使用超時 - 可能會阻止窗口關閉,或者進程可能有錯誤的退出機制。

從主程序本身內部關閉主程序要容易得多。

  string msg = "To update the application we need to close it. Do you want to continue?";
  if (DialogResult.Yes == MessageBox.Show(msg, title, MessageBoxButtons.YesNo))
  {
     ProcessStartInfo psi = new ProcessStartInfo();
     psi.FileName = "YourUpdaterFile.exe";           
     psi.WindowStyle = ProcessWindowStyle.Normal;
     // Assuming a lot here but to just show the options available....
     psi.WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath);
     Process.Start(psi);
     Application.Exit();
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM