监视进程在自定义操作中退出

时间:2012-10-15 15:41:05

标签: c# windows-installer custom-action system.diagnostics

全部 -

我需要通过自定义操作以静默方式执行多项任务。基本上,在我放下自己的位之后,我需要安装并许可第三方应用程序:

  1. 我将我的位安装到应用程序文件夹
  2. 我通过FooSetup.exe启动自定义操作以安装第三方应用
  3. 我启动了另一项自定义操作,通过在步骤2中安装的FooLicense.exe许可第三方应用。
  4. 在安装程序的提交阶段,我触发此代码以启动第三方应用程序的静默设置:

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Commit(IDictionary savedState)
    {
      base.Commit(savedState);
    
      ProcessStartInfo startInfo = new ProcessStartInfo();
      startInfo.Arguments = "/verysilent";
      startInfo.FileName = Context.Parameters["TARGETDIR"].ToString() + "fooSetup.exe";
      Process myProcess = System.Diagnostics.Process.Start(startInfo);
    }
    

    它运行正常 - 但是,在fooSetup.exe实际完成之前,我无法开始“第3阶段”(许可第三方应用程序)。

    处理此方案的最佳做法是什么?我猜我将不得不在myProcess上设置一个事件处理程序来监视fooSetup.exe的退出? (我已经验证FooSetup.exe确实在静默模式下退出完成后)

    那里有什么例子吗? 我是商业智能人员而不是C#骑师,所以你推动我的任何样品/指针都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

我猜Process.WaitForExit()就是你想要的。 http://msdn.microsoft.com/en-us/library/fb4aw7b8.aspx