我正在将自定义操作添加到我的VS2008安装项目(MSI安装程序)中。
我正在调用一个批处理文件来创建数据库,并希望在之后删除这些文件。我有WaitForExit(),但它不会等待。为什么?
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = false;
string tempDir = @"C:\Temp\";
startInfo.FileName = tempDir + "sybaseDB\\en_AllInOne_installDB.bat";
startInfo.Arguments = tempDir + "sybaseDB\\";
try
{
Process startDB = Process.Start(startInfo);
startDB.WaitForExit();
}
catch (Exception e)
{
//do something?
}
finally {
System.IO.File.Delete(tempDir);
}与startInfo.UseShellExecute = true没有区别;批处理的执行没有任何问题,因为它需要用户输入,而我输入y和n来回答问题。但删除操作发生在我输入之前。我在批处理文件的末尾暂停了一下。我可以观察批处理文件的过程。
编辑:我测试了10多次,但没有成功。午饭后,我又放了一个waitForExit和一个带HasExited检查的while循环。它将睡在will循环中。我发现它起作用了。然后,我删除了这些额外的代码,返回到一个WaitForExit。看来现在起作用了。
发布于 2010-09-29 17:42:21
这可能是因为无法执行.bat文件而引发异常。您可能打算通过将cmd.exe文件作为命令行参数来执行.bat。
https://stackoverflow.com/questions/3824174
复制相似问题