Archive: NSIS is not releasing dll after a Sytem::Call


NSIS is not releasing dll after a Sytem::Call
During my setup I am calling a dll function, to check if a hardware driver is installed, if not I install the driver.
Problem appears when I click on the previous button just after the driver installation. In the previsous test I am calling a second time my dll function, and then I have a blue screen refering to a driver file.
But just after installing the driver if I call this dll function outside the setup or I I start a second setup, everything works fine.
So I think that the DLL is still in memory for the setup, and I have not clue on how to remove it.
Here is my script:

SetPluginUnload alwaysoff
SetOutPath $EXEDIR
System::Call '$DLLFILE.dll::function()'

; unload dll
SetPluginUnload manual
; do nothing (but let the installer unload the System dll)
System::Free 0

Same thing is also working fine with installshield.


Use the `u` modifier.

System::Call 'something::something() ?u'