我正在为我的应用程序编写更新系统,我需要关闭应用程序以覆盖exe,但在关闭后我需要运行更新可执行文件,我该怎么做?
答案 0 :(得分:3)
反过来做。使用旧应用程序(暂时存储它)获取整个更新文件,然后使用进程启动启动更新程序应用程序。所有更新必须做的是将新文件复制到旧文件上并重新启动应用程序。
更新程序可以捕获拒绝访问的异常并等待应用程序可用于复制。复制完成后 - 它会删除临时新文件并在关闭之前再次启动应用程序。
然后,如果需要,可以更新更新程序(使用普通应用程序)。
答案 1 :(得分:2)
您是否可以使用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 :(得分:0)
我猜你需要另一个小的更新应用程序。你用Process.Start()启动它,让这个帮助程序进程替换可执行文件并用Process.Start()再次启动它。
答案 3 :(得分:-2)
在关闭应用程序之前运行update可执行文件。