Harner
30th August 2011 11:24 UTC
Uninstaller execution doesn´t wait
Hey there!
During my installation I´m executing other nsis installer write by myself. Those create silent uninstaller in my INSTDIR. The main uninstaller is in the INSTDIR as well.
The installation works fine, the main installer waits until the silent installer executables are finished. BUT when I uninstall after on, then the nsexec:exectolog doesn´t wait. The silent uninstaller are executed but if you interupt them like with a reboot after uninstall they will abort.
I don´t know what I´m doing wrong with my uninstaller that nsexec doesn´t wait!
Any suggestions out there?
Edit:
Installer execution looks like this:
SetOutPath "$INSTDIR"
CopyFiles /silent "$EXEDIR\content\Program.exe" "$INSTDIR" "57600"
nsExec::ExecToLog '"$INSTDIR\Program.exe" /S'
Delete "$INSTDIR\Program.exe"
Uninstaller execution looks like this:
nsExec::ExecToLog '"$INSTDIR\removeProgram.exe" /S'
jpderuiter
30th August 2011 12:39 UTC
http://nsis.sourceforge.net/When_I_use_ExecWait_uninstaller.exe_it_doesn%27t_wait_for_the_uninstaller
Harner
30th August 2011 12:43 UTC
Thanks for the fast reply!
This command should work to make it silent and disable the temporary copying am I right?
ExecWait '"$INSTDIR\uninstall.exe" _?=$INSTDIR /S'
Edit: Just for myself, Execwait doesn´t wait because the uninstaller seems for the exec command to be finished because it changes it´s location right?
Afrow UK
30th August 2011 13:03 UTC
_?= needs to be last. ExecWait doesn't wait because the uninstall executable copies itself to a temp folder and runs itself from there (while the original instance exits). _?= stops this behaviour.
Stu
Anders
30th August 2011 21:48 UTC
ExecWait ALWAYS waits for its child process, the problem is the child process, not ExecWait (This is true for all the "does not wait" threads on this forum)
Step1: Make sure the command line is correct: '"c:\path\app.exe" param[s]'
Step2: Figure out why the child process is terminating early
Step3: Profit?