2010-08-19 85 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

相關問題