none
How can I know the process status during the process.start()? RRS feed

  • 問題

  • hi,各位大大,

    Have any way to know the process status during the process.start ( ) ?

    The program is as follows:

    private void button1_Click(object sender, EventArgs e)
    {
                   Process installer = new Process();
                   installer.StartInfo.FileName = "dotnetfx.exe";
                   installer.Start();
          
    }

    The installer is exe.

    When I STOP running the process immediately during the process.start(), I want to CHECK and MAKE SURE wether the exe. is installed into the C DRIVE or not.

    Also,

    Once the process is finished, want to CHECK and MAKE SURE wether the exe. is installed into the C DRIVE or not as well.

    thx for your help.
    2008年8月27日 上午 07:28

解答

  • 你可以檢查註冊機碼

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 底下的字串值

    2008年8月27日 上午 09:01
  • 參考: Process..::.Exited 事件

    Exited 事件,指出相關的處理序結束了。這個項目表示處理序結束 (中止) 或成功關閉。只有當 EnableRaisingEvents 屬性的值為 true 時,才會發生這個事件。


    相關處理序結束時,有兩種告知方式:同步和非同步。同步告知要靠呼叫 WaitForExit 方法去暫停應用程式的處理,直到相關的元件結束為止。非同步告知則要靠 Exited 事件。不論是那一種情況,EnableRaisingEvents 都必須設定為 trueProcess 元件才能夠接到處理序已經結束的告知。


    2008年8月28日 上午 03:52

所有回覆

  • 你是要檢查用戶端是否有安裝某個版本的 .Net Framework ?

    2008年8月27日 上午 08:44
  • hi,

    係,我想知在執行過程中, 及過程完結後,用戶端是否有安裝某個版本的 .Net Framework

    thx a lot!
    2008年8月27日 上午 08:56
  • 你可以檢查註冊機碼

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 底下的字串值

    2008年8月27日 上午 09:01
  • 你先把這篇弟二頁看一遍吧~

    http://forums.microsoft.com/msdn-cht/showpost.aspx?postid=3687905&siteid=14&sb=0&d=1&at=7&ft=11&tf=0&pageid=1

     

    你的程式碼基本上沒啥意義,因為沒安裝 .Net 的 .Net 程式根本就不能跑,讓一個不能跑的程式碼來安裝 .Net 是不可能做到的。

     

    2008年8月27日 上午 11:50
  • HI, 謝謝你,

    我已經有.Net 的 .Net 程式, 如果不透過 c# , 只放起C -DRIVE, .Net 的 .Net 程式也可以安裝到的.


    簡單的說,我自己本身程式是一個deployment project, project 已經有
    .Net 的 .Net 程式,一個.Net 的 .Net 程式捷徑on Start MENU 及一個windows application,

    windows application 作為主輸出;

    通過自己本身
    windows application program,

    The program is as follows:

    private void button1_Click(object sender, EventArgs e)
    {
                   Process installer = new Process();
                   installer.StartInfo.FileName = "dotnetfx.exe";
                   installer.Start();
    }

    dotnetfx.exe 可以completely install.

    但是,

    當我STOP
    執行dotnetfx.exe immediately during the process.start(),我想 CHECK and MAKE SURE dotnetfx.exe. 是否儲存起C -DRIVE 內, 然後可以彈個Messagebox”已經停止安裝”

    同樣,

    一旦
    dotnetfx.exe 已經完成安裝,我想 CHECK and MAKE SURE  dotnetfx.exe. 是否儲存起C -DRIVE 內,然後可以彈個Messagebox”已經完成安裝”


    thx a lot.


    2008年8月28日 上午 03:33
  • 參考: Process..::.Exited 事件

    Exited 事件,指出相關的處理序結束了。這個項目表示處理序結束 (中止) 或成功關閉。只有當 EnableRaisingEvents 屬性的值為 true 時,才會發生這個事件。


    相關處理序結束時,有兩種告知方式:同步和非同步。同步告知要靠呼叫 WaitForExit 方法去暫停應用程式的處理,直到相關的元件結束為止。非同步告知則要靠 Exited 事件。不論是那一種情況,EnableRaisingEvents 都必須設定為 trueProcess 元件才能夠接到處理序已經結束的告知。


    2008年8月28日 上午 03:52
  • hi

    這個方法我有用過,但是否能保證dotnetfx.exe有安裝到C-drive?

    Exited 事件
    未必
    保證dotnetfx.exe有安裝到C-drive, 只代表process exit only.
    正常情況,
    process exit 己代表dotnetfx.exe已經安裝到C-drive.

    我都知道這條問題好(調)轉,但我老闆叫我咁做.

    有冇辦法呢?

    thx a lot!




    2008年8月28日 上午 04:03
  • 事件裡面你要自己寫檢查的方法囉...

    假設你的安裝程式是 2.0 版本的,那就可以去檢查 Registry 看看有沒有安裝 2.0 SP1、3.0、 3.5 等等 Framework 被寫入。

    PS. 就像是
    心冷熱情熄 所講的,如果你用 .Net 2.0 的程式去檢查 .Net 2.0 Framework 有沒有安裝,不是很詭異嗎....

    2008年8月28日 上午 04:23
  • 其實他寫的我看不懂... 看起來像是繞口令...

     

    ExitCode 為 0 時表示正常結束,非 0 值為異常結束。

    2008年8月28日 上午 05:21
  • 謝謝兩位, 兩位的意思我都明白.

    thx a lot!!!!
    2008年8月29日 上午 09:35