我正在創建一個需要先決條件的wpf應用程序。如果沒有滿足這些先決條件,那麼我會詢問用戶他是否願意安裝前提條件:Microsoft Visual C++ 2010 SP1 Redistributable Package。無提示執行進程/程序
因此,如果用戶選擇安裝先決條件,我將執行vcredist_x86.exe(即從我提供的第一個鏈接下載的文件)。
然後在我的應用程序將能夠告訴安裝是通過做一些像完成時:
ProcessStartInfo psi = new ProcessStartInfo(@"vcredist_x86.exe");
var p = new Process(); p.StartInfo = psi;
p.Start(); //start the process
p.WaitForExit(); // wait for the installation to finish
// installation should be done now
好一切的偉大工程至今。 問題是我在我的wpf應用程序中有一個進度條,我希望在那裏顯示進度。
我已經能夠這樣做,顯示安裝進度如下:
有一個名爲AutoIt,這是偉大的,簡單的自動化任務的程序。例如,我可以很容易地通過使用類似的東西檢測窗口是否存在自動存儲:
然後,我可以編譯該腳本並創建一個非常小的可執行文件。 在該可執行文件中,如果指定的窗口存在,則返回1,否則返回0。
當用戶移動到下一個窗口時,我的腳本可能會返回2,因爲這是一個不同的窗口。 AutoIt還可以查看窗口進度條的進度!所以如果該腳本返回80例如,那麼我會例如更新我的進度到80%。
我這樣做,這樣做是這樣的:
// start the autoitExecutable....
// wait for executable to exit usually takes 10 miliseconds it is fast
if (autoitProcess.ExitCode == 1)
{
// do somthing
}else if(autoitProcess.ExitCode == 2)
{
// do something else
} //etc....
正如你可以看到我有執行該腳本每隔1秒,以檢測哪些變化,以更新WPF我的進度條已經完成。這一工程,但我每次執行該可執行文件用C#我得到:
光標約500毫秒然後在其上再次出現下一秒。即使沒有窗戶出現,這變得令人討厭。如果我能擺脫那個遊標並以某種方式默默執行那個可執行文件,那將會很好。當我執行autoit可執行文件時,沒有窗口顯示,也沒有別的。
P.S.
我知道我可以使用c#來檢查窗口的存在,也許看到其他窗口的處理程序的值就像autoit能夠做到這一點,但它是如此簡單,使用AutoIt創建這些程序,它會是如果漂亮,我可以爲這種TAKS
對於安裝程序項目(prereq檢查+安裝)免費提供的東西,這看起來像是一大堆努力工作。 – spender 2012-02-14 22:14:48
在你的p.WaitForExit()我知道有一種方法可以在While循環中做到這一點你試過..? – MethodMan 2012-02-14 22:16:20
在另一個線程中將安裝關閉,並在顯示動畫時顯示。僞進度條,加侖.. – 2012-02-14 22:20:39