Archive: Execution of an installer from another installer

Execution of an installer from another installer

I have the following problem. An year ago I made an installer that installs company specific tools. It is made with NSIS script. Now I made another installer (again with NSIS) and I need the tools from the installer that I made before. So in my new script I simply extract it to the temp folder and call with (with ExecWait). But it never runs. When the installation is finished and I try to execute it manually, all works fine, but not until my new installer runs. Probably my explanation became complicated, but I simply want to execute NSIS installer from another NSIS installer and this didn't work. Is there any explanation about it?

- Put a messagebox with the execution path before your ExecWait command, to show the exact path NSIS is trying to execute.
- check the return code, or launch a dummy exe with only a messagebox, to see if the execwait command is succesful.

I found the problem. In all my scripts in .onInit function I check for running instance of the installer like this:

System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e'
Pop $R0
${If} $R0 != 1

So if another installer is already running, the embedded in it installer simply exits without to make any actions.
Probably I can use a command line parameter to disable this feature when I want to.