2010-08-19 32 views
1

我正在为我的应用程序编写一个小型更新程序。 我的流程如下: app.exe - >调用进程(updater.exe) - > app.close() 然后,更新程序检查app是否关闭,然后覆盖app.exe和其他卫星程序集。所以我需要做这样的事情:启动我的C#exe应用程序,启动updater.exe进程,然后关闭应用程序,但不关闭子进程。控制台应用程序触发一个进程然后关闭自己

有一种方法可以在.NET中构建这种“即忘即用”过程吗?

谢谢 南多

回答

3

看那Process对象。您只需调用的Process.Start像这样:

System.Diagnostics.Process.Start("updater.exe"); 
+0

谢谢,请阅读下面的答案。 – 2010-08-19 16:37:55

0

是的,我这样做,但目前看来,过程中不要启动......

我做了一个小的辅助类,称为更新:

Updater.CheckUpdates() 

- >开始谁打电话“updater.exe - 检查”的处理,而工作(当完成程序后,控制返回到我的主要应用程序)。我评估过程的返回代码,如果需要,我设置Updater.UpdatesAvalilable布尔标志。

Updater.ApplyUpdates() 

- >启动进程调用“updater.exe -update”,进行更新工作。

所以,我的代码是这样的:在Updater.ApplyUpdates

Updater.CheckUpdates(); 
    if (Updater.UpdatesAvailable) 
    { 
     Updater.ApplyUpdates(); 
     System.Environment.Exit(0); 
    } 

过程()永远不会运行。 我知道,不是优雅的代码,但我不知道如何实现我的目标。 :-)

谢谢! Nando

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(); 

谢谢大家! Nando

相关问题