2015-04-02 7 views
0

Я пытаюсь запустить tomcat из моего приложения C# wpf с помощью startup.bat и после развертывания файлов войны, я хочу его закрыть. Вот как я это делал, и это, казалось, работало нормально.C# System.Diagnostics.Process как обрабатывать несколько командных файлов

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
      proc.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\startup.bat"; 
      proc.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\"; 
      proc.StartInfo.RedirectStandardError = true; 
      proc.StartInfo.RedirectStandardOutput = true; 
      proc.StartInfo.UseShellExecute = false; 
      proc.StartInfo.CreateNoWindow = true; 
      proc.Start(); 
      // do some bla bla 
      //Close Tomcat 
      proc.StartInfo.Filename = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat"; 
      proc.Start(); 
      proc.WaitForExit(); 

Теперь я думал, что, хотя он работает, это не совсем верно? приложение Tomcat запускается никогда не останавливается, если я не говорю об этом, неправильно использовать тот же процесс, чтобы его также отключить?

То, что я вниз теперь что-то вроде этого: Хранится процесс для запуска Tomcat, и создал еще один, который призывает к остановке:

//Close tomcat    
      System.Diagnostics.Process proc_shutdown = new System.Diagnostics.Process();    
      proc_shutdown.StartInfo.WorkingDirectory = Tomcat_DIR_tbox.Text + @"\bin\"; 
      proc_shutdown.StartInfo.FileName = Tomcat_DIR_tbox.Text + @"\bin\shutdown.bat"; 
      proc_shutdown.StartInfo.CreateNoWindow = true; 
      proc_shutdown.Start(); 
      proc_shutdown.WaitForExit(); 

Единственное, что мне не нравится об этом метод заключается в том, что он приносит сообщение, которое спрашивает меня, разрешаю ли вы вызывать shutdown.bat из моего приложения, и я могу снять флажок «Не спрашивайте меня снова для этого файла», но мне все еще не нравится, когда пользователь это испытывает обеспечивает.

Я также пробовал напрямую обращаться к proc.Close() вместо того, чтобы делать proc.Filename = path_to_shutdown и proc.Start(), но он, казалось, повесил приложение и никогда не закрывал tomcat.

Итак, что является лучшим способом начать tomcat, сделать что-то, а затем закрыть его? Спасибо, Разван.

ответ

0

Основываясь на моем наблюдении, то, что вы делаете, хорошо, чтобы запустить и остановить сервер tomcat из приложения WPF. Но, если вы хотите скрыть предупреждение о безопасности, затем откройте Internet Explorer. Откройте «Инструменты» - «Свойства обозревателя», а затем выберите вкладку «Безопасность», затем выберите (Пользовательский уровень ..) .. В том, что в группе «Разное» появится опция

«Запуск приложений и небезопасных файлов» -> Выберите «Включить радио». Затем он не покажет вам всплывающее окно «Разрешить shutdown.bat».

Надеюсь, это помогает.

Смежные вопросы