Estoy tratando de poner en marcha una aplicación de actualización externa para una plataforma que he desarrollado. La razón por la que me gustaría iniciar esta actualización es porque mi utilidad de configuración, que maneja las actualizaciones y la configuración de la licencia para la plataforma, ha compartido dependencias con otros ensambles en la carpeta donde se implementará la actualización. Entonces, aunque puedo cambiar el nombre de la utilidad de configuración y sobrescribirla al implementar la actualización, no puedo cambiar el nombre ni sobrescribir las DLL de las que depende. Por lo tanto, la aplicación de actualización externa.Cómo crear un proceso que sobrevive a su matriz
estoy manejando toda la lógica de la recolección de actualización en la utilidad de configuración, a continuación, intentar iniciar el programa de actualización para manejar la copia del archivo actual/operaciones de sobreescritura. Obviamente, debido a los problemas de archivos en uso, necesito que la utilidad de configuración se cierre justo después de que comience el actualizador.
El problema que tengo es que estoy usando el método estándar Process.Start para iniciar el actualizador, y tan pronto como se cierra la utilidad de configuración, también se elimina el proceso del actualizador.
¿Hay alguna manera de que pueda crear un proceso que sobrevive a su padre, o lanzar una aplicación externa que puede funcionar más allá del programa que lo lanzó?
EDIT:
Al parecer, en mi aplicación de actualización, que calcularon mal el número de argumentos de línea de comandos que se pasan a la misma. Debido a esto, el actualizador se cerraría inmediatamente. Interpreté erróneamente que esto significa que la aplicación lanzadora estaba matando el proceso "hijo", cuando en realidad no era así.
Las respuestas a continuación son correctas.
Sé que es un tipo de pensamiento retrógrado, pero ¿podría tener un proceso que todo su trabajo es administrar a partir de la utilidad de configuración y su aplicación? De esta forma, podría actualizar tanto la aplicación como la utilidad de configuración (si fuera necesario) por separado y no tendría que preocuparse por los procesos secundarios que mueren con sus padres (ya que el padre siempre se ejecutará). –
Tuve un error en mi código de actualización que lo obligó a salir de inmediato. Supuse que esto era del proceso de "lanzamiento" cerrándolo. He actualizado mi mensaje en consecuencia. ¿Hay alguna forma de darme un representante negativo como autocastigo por cometer un error tan ridículo? –
¿Podemos suponer que estás usando C#/.net/Win32 y no C#/Mono/* nix? No sé si Process funciona de forma idéntica en todos los entornos. – quillbreaker