bambou51
12th May 2006 11:39 UTC
Difference between Installshield and NSIS for execwait
I am creating an NSIS setup to act like our previous installshield setup.
Everything is fine except for a driver installation.
I just have a driver to install (using setup.exe)
SetOutPath "$EXEDIR\DRIVERS\"
ClearErrors
ExecWait '"SETUP.EXE"' $0
IfErrors 0 +2
MessageBox MB_Ok "Error during Driver installation: $0"
...
It is working fine, but on the next use of the driver (if I go back to the previous step of my setup for example), I got the f?*%ing blue screen of windows because of a file of my driver.
Problem is, that doing the exact same thing with installshield or by hand everything is working fine.
Afrow UK
12th May 2006 18:52 UTC
You may need to pass extra parameters to the executable to make it wait.
-Stu
Comperio
13th May 2006 01:05 UTC
Or some other thoughts:
Perhaps the intial 'setup.exe' could be launching another EXE to do some additional work. In this case, setup.exe could be closing before the actual 'install' is finished.
Try running the original InstallShield install while you are viewing the Windows processes to see if you find another process might be launching during the install.
Or:
SETUP.EXE might not be returning errors unless the EXE itself crashes. Unfortunately, there's probably no easy way to tell if this is happening. :confused:
bambou51
15th May 2006 11:14 UTC
I just restart my script, and wait like 2 minutes between the installation of the driver and the next step and I still have the Blue screen...
This driver is installing a .sys file in windows system folder, and I need to call this file later on during the setup. Any suggestions ?
bambou51
15th May 2006 14:28 UTC
I also try to start my setup a first time in order to install the driver, than I abort the installation, restart the setup, and everything works fine.
So I must have a problem with NSIS not releasing dll or something similar.
Even when using:
SetPluginUnload alwaysoff
SetOutPath $EXEDIR
System::Call ...
; unload dll
SetPluginUnload manual
; do nothing (but let the installer unload the System dll)
System::Free 0
OldGrumpy
17th May 2006 11:39 UTC
BSOD in a driver due to a locked file is definitely a driver broken by design. You should fix your driver in the first place. :)