【问题标题】:Monitoring Process Exits in a Custom Action在自定义操作中监控进程退出
【发布时间】:2012-10-15 15:41:04
【问题描述】:

全部——

我需要通过自定义操作静默执行多项任务。从本质上讲,我需要在自己准备好之后安装和许可第 3 方应用程序:

  1. 我将我的位安装到应用程序文件夹中
  2. 我启动了一个自定义操作以通过 FooSetup.exe 安装第 3 方应用程序
  3. 我启动了另一个自定义操作,以通过步骤 2 中安装的 FooLicense.exe 许可第三方应用程序。

在安装程序的提交阶段,我触发此代码以启动 3rd 方应用程序的静默设置:

[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# 骑师,因此您向我推荐的任何示例/指针都将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我刚刚意识到第 3 方应用程序安装了 C+= 运行时...除非我使用 Visual Studio 滚动的 Setup.exe 必须完整,否则它不会在机器上运行,否则它将引发错误。回到绘图板!
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    相关资源
    最近更新 更多