【发布时间】:2011-11-16 10:49:53
【问题描述】:
美好的一天! 我正在开发安装程序,它使用 Process.Start 为我的软件安装额外的依赖项。
foreach dependency:
var process = System.Diagnostics.Process.Start(processStartInfo);
process.WaitForExit();
问题是当另一个 msi 安装运行时,WaitForExit 挂起(当我关闭另一个 msi 安装时,WaitForExit 也退出)。
我不能使用超时,因为安装时间不同,依赖项也不同。
有什么方法可以处理这种情况并正确终止进程(实际上我想知道依赖项是安装还是挂起)? 非常感谢。
解决方案:在我的情况下,通过检查“msiexec”进程是否正在运行来解决问题。
【问题讨论】:
-
您有什么理由不使用 VS 的安装程序项目并在其中包含所有相关依赖项?或者只是将它们嵌入到你的 EXE/DLL 中(假设它们是 .NET,你甚至可以从内存中运行它们)?
-
并不是所有的都是.NET,依赖可以从网上下载。安装程序非常庞大且复杂。反正关于挂WaitForExit的问题。
-
仍然 - 来自 VS 的安装程序项目可以安装依赖项...无需自己编写...
-
我不需要重写安装程序的架构,只需要修复错误;)
-
为什么你认为它是“挂起”而不是等待进程退出?听起来它正在做你要求它做的事情,即
WaitForExit
标签: c# .net-4.0 waitforexit