Tengo un instalador, un script compilado de NSIS y primero comprueba si otra versión de mi aplicación se está ejecutando en el sistema. Si existe otra instancia, primero desencadena la desinstalación silenciosa y luego continúa con la instalación de la nueva intancia.¿Cómo ejecutar un desinstalador de NSIS desde otro instalador de NSIS y esperar a que termine?
Uso ExecWait para activar el unistaller en el modo silencioso, pero mi proceso de instalador principal no espera y continúa con el proceso de instalación.
¿Cómo forzo al instalador principal a esperar a que se complete primero la desinstalación silenciosa?
+1: Creo que esto no responde a la pregunta, funciona de todos modos para aplicaciones pequeñas. Por lo tanto, +1 para la solución :-). En realidad, ExecWait aún no espera al final del desinstalador, pero el desinstalador ahora se ejecuta silenciosamente (/ S) en segundo plano. Si el desinstalador lleva mucho tiempo, desinstalaría también los datos instalados actualmente. Por lo tanto, desinstalador e instalador funcionarían en paralelo. ¡Así que pon atención! –
@Valentin: ¿Qué te hace pensar que ExecWait no espera? Hace WaitForSingleObject (hChildProcess, INFINITE); – Anders
+1 Consulte [aquí] (http://nsis.sourceforge.net/Auto-uninstall_old_before_installing_new) para saber cómo implementar esto en una función '.onInit'. –