Escribo un código C# que inicia un instalador y espera a que vuelva antes de continuar con otras cosas.C# Detección de procesos engendrados
Tengo problemas con ciertos instaladores que generan otros procesos devolviendo el proceso original antes de que la instalación haya finalizado. ¿Hay alguna manera de que pueda esperar hasta que todos los procesos hayan terminado?
Para aclarar Este es el escenario que estoy teniendo problemas con:
- lanzamiento Installer1
- Installer1 genera/lanza otro instalador (Installer2)
- Instalador 1 vuelve
- Aplicación piensa instalar tiene terminado, pero Installer2 aún se está ejecutando. Esto causa problemas con el flujo de trabajo en la aplicación.
Aquí está el código que estoy usando en la actualidad
// launch installer
Process process = windowsApplicationLauncher.LaunchApplication(_localFilePath);
// wait for process to return
do
{
if (!process.HasExited)
{
}
}
while (!process.WaitForExit(1000));
if (process.ExitCode == 0)
{
_fileService.MoveFile(_localFilePath, _postInstallFilePath);
_notification.SetComplete(false);
return true;
}
return false;
¿Eres el propietario de los procesos engendrados? P.ej. ¿Puedes modificar Installer2 si eso te ayuda a detectar la finalización? ¿O el instalador2 es suministrado por otra persona, o usted ni siquiera sabe qué procesos adicionales podrían engendrarse y necesita manejar procesos engendrados arbitrarios? – itowlson
Tenemos el instalador particular en cuestión. Sin embargo, también nos gustaría poder manejar procesos generados arbitrariamente. – tjjjohnson