我的更新程序无法关闭我的主程序(C#)
本文关键字:我的 主程序 更新 程序 | 更新日期: 2023-09-27 17:59:07
我有一个更新程序,一旦检测到更新(来自远程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''ConkinatorBot.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();
}