У меня есть модуль, который должен запустить небольшую программу командной строки .Net для проверки обновлений. Все работает отлично, однако у меня возникают проблемы с отображением вывода командной строки.
Приложение имеет собственную форму Windows, которая появляется при обнаружении обновления. Обновление должно выполняться как отдельное приложение из-за того, что оно требует контекста выполнения, отличного от DLL, из которой оно запускается.
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\" + AUTO_UPDATE_EXENAME;
updater.StartInfo.FileName = path;
updater.StartInfo.Arguments = AUTO_UPDATE_PARAMETERS;
updater.StartInfo.CreateNoWindow = false;
updater.StartInfo.UseShellExecute = false;
updater.StartInfo.RedirectStandardOutput = true;
updater.StartInfo.WorkingDirectory = path;
updater.Start();
Я перепробовал большинство всех рабочих комбинаций CreateNoWindow
, UseShellExecute
и RedirectStandardOutput
, и каждая из них приводила к появлению этого раздражающего черного ящика. Приложение выполняет запись в стандартный вывод, но я использую его только для отладки, и пользователь не должен видеть текст, который оно генерирует.
Предположительно CreateNoWindow
и / или RedirectStandardOutput
должны предотвращать всплывающее окно, но не имеет значения, как я устанавливаю эти переменные.