Я добавляю Custom Action в мой проект установки VS2008 (установщик MSI).почему WaitForExit() не ждет?
Я вызываю командный файл для создания базы данных и хочу удалить эти файлы после. У меня есть 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 для вопросов. но это действие удаления произошло до ввода. И у меня есть пауза в конце командного файла. Я могу наблюдать за процессом пакетного файла.
EDIT: Я тестировал более 10 раз, это не сработало. После обеда я поставил еще один waitForExit и цикл while с проверкой HasExited. он будет спать внутри цикла while. Я нашел, что это сработало. Затем я удалил этот дополнительный код, вернувшись к одному WaitForExit. Кажется, сейчас работает.
Ваш обработчик обработчика '// что-то?' - это плохо. Если при запуске процесса возникает исключение, вы об этом не узнаете. –
будет что-то там позже – 5YrsLaterDBA
Ну что ж, поставьте там что-то * сейчас *, так что вы * знаете *, является ли это причиной. –