我正在爲我的應用程序編寫一個小型更新程序。 我的流程如下: app.exe - >調用進程(updater.exe) - > app.close() 然後,更新程序檢查app是否關閉,然後覆蓋app.exe和其他衛星程序集。所以我需要做這樣的事情:啓動我的C#exe應用程序,啓動updater.exe進程,然後關閉應用程序,但不關閉子進程。控制檯應用程序觸發一個進程然後關閉自己
有一種方法可以在.NET中構建這種「即忘即用」過程嗎?
謝謝 南多
我正在爲我的應用程序編寫一個小型更新程序。 我的流程如下: app.exe - >調用進程(updater.exe) - > app.close() 然後,更新程序檢查app是否關閉,然後覆蓋app.exe和其他衛星程序集。所以我需要做這樣的事情:啓動我的C#exe應用程序,啓動updater.exe進程,然後關閉應用程序,但不關閉子進程。控制檯應用程序觸發一個進程然後關閉自己
有一種方法可以在.NET中構建這種「即忘即用」過程嗎?
謝謝 南多
看那Process對象。您只需調用的Process.Start像這樣:
System.Diagnostics.Process.Start("updater.exe");
是的,我這樣做,但目前看來,過程中不要啓動......
我做了一個小的輔助類,稱爲更新:
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
早上好男人。 我發現了一種使它工作的方法,看來。 在我的幫助器類中,我爲獲取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
謝謝,請閱讀下面的答案。 – 2010-08-19 16:37:55