Я добавляю Custom Action в мой проект установки 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 для вопросов. но это действие удаления произошло до моего ввода. И у меня есть пауза в конце командного файла. Я могу наблюдать за процессом отправки командного файла.
EDIT:
Я тестировал более 10 раз, это не сработало. После обеда я поставил еще один waitForExit и цикл while с проверкой HasExited. он будет спать внутри цикла while. Я нашел это сработало. Затем я удалил эти лишние коды обратно в один WaitForExit. Кажется, работа сейчас.