почему WaitForExit () не ждет? - PullRequest
       18

почему WaitForExit () не ждет?

3 голосов
/ 29 сентября 2010

Я добавляю 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. Кажется, работа сейчас.

1 Ответ

0 голосов
/ 29 сентября 2010

Это, вероятно, вызывает исключение, потому что вы не можете выполнить файл .bat.Вы, вероятно, намереваетесь выполнить cmd.exe, передав файл .bat в качестве аргумента командной строки.

...