我正在为我的应用编写一个小更新程序。 我的流程是这样的: app.exe - >调用进程(updater.exe) - > app.close() 然后,更新程序检查应用程序是否已关闭,然后覆盖app.exe和其他附属程序集。
所以我需要做这样的事情:启动我的C#exe应用程序,为updater.exe启动一个进程,然后关闭应用程序,但不关闭子进程。
有一种方法可以在.NET中构建这种即发即弃的过程吗?
谢谢你, 南多
答案 0 :(得分:3)
查看Process对象。您只需调用Process.Start:
System.Diagnostics.Process.Start("updater.exe");
答案 1 :(得分:0)
是的,我这样做了,但似乎Process没有开始......
我做了一个名为Updater的小助手类:
Updater.CheckUpdates()
- >启动一个调用“updater.exe -check”的进程,该方法有效(当进程完成时,控制返回到我的主应用程序)。我评估进程的返回代码,如果需要,我设置Updater.UpdatesAvalilable bool标志。
Updater.ApplyUpdates()
- >启动一个调用“updater.exe -update”的进程,进行更新工作。
所以,我的代码是这样的:
Updater.CheckUpdates();
if (Updater.UpdatesAvailable)
{
Updater.ApplyUpdates();
System.Environment.Exit(0);
}
Updater.ApplyUpdates()中的进程永远不会运行。 我知道,代码不是很优雅,但我不知道如何实现我的目标。 : - )
谢谢! 南多
答案 2 :(得分:0)
早上好。 看来,我找到了一种让它起作用的方法。 在我的帮助器类中,我连接了用于获取stdIO和stdError的事件,只是为了记录某些东西;删除那些,我完成了我的工作:流程启动和主要退出! : - )
只是为了让所有人都知道它:我的流程声明现在是这样的:
Process process = new Process();
process.EnableRaisingEvents = true;
process.StartInfo = new ProcessStartInfo();
process.StartInfo.Arguments = "-update";
process.StartInfo.CreateNoWindow = true;
process.StartInfo.ErrorDialog = false;
process.StartInfo.FileName = "updater.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
process.Start();
谢谢大家! 南多