Я разрабатываю приложение, которое должно запустить настройку, а затем записывать файлы конфигурации в определенных папках. Проблема о настройке. Это старая настройка, которая устанавливает через серию команды REXX ряд компонентов программного обеспечения. Одним из этих компонентов является установка InstallShield. Чтобы запустить команду REXX, я делаю следующее: < /p>
public static void Run(string fileName, string arguments)
{
StreamWriter executeProcessLog = new(@"c:\setups\_log\ExecuteProcess.log", true);
executeProcessLog.WriteLine("FileName: " + fileName);
executeProcessLog.WriteLine("Arguments: " + arguments);
Process? proc = new()
{
StartInfo =
{
FileName=fileName,
Arguments=arguments,
UseShellExecute=false,
RedirectStandardOutput=true,
RedirectStandardError=true,
}
};
proc.OutputDataReceived += (sender, e) =>
{
executeProcessLog.Write("Process: " + proc.ProcessName + "Output: " + e.Data);
};
proc.ErrorDataReceived += (sender, e) =>
{
executeProcessLog.Write("Process: " + proc.ProcessName + "Error: " + e.Data);
};
proc.Start();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();
executeProcessLog.WriteLine(proc?.ExitCode == 0 ? "Process completed successfully." : "Process failed with exit code: " + proc?.ExitCode);
executeProcessLog.Close();
}
< /code>
случается, что все устанавливается, но когда это происходит время установки InstallShield, оно остается неопределенным, пока я не закрываю свое приложение. Затем он завершается. Мне кажется, что настройка не завершается до тех пор, пока процесс «подключен» к вызывающему.
Подробнее здесь: https://stackoverflow.com/questions/796 ... -a-process