Archive: replacing old nsis.exe with nsis20.exe


replacing old nsis.exe with nsis20.exe
In the previous makensis.exe, I had uncommented NSIS_CONFIG_LOG in config.h and recompiled the makensis.exe and I got my logging and everything. Well, people can't leave things alone so someone wrote more nullsoft stuff and downloaded the new nsis 2.0 and now the makensis.exe doesn't like my old script.
Complaints about unused functions (stubs) indicated that maybe we don't like stubs anymore but eliminating them didn't stop the following message when I try to compile my installer:

"The instruction at "0x0041bb81" referenced memory at 0x00d713f9". The memory could not be "written".

Click OK to terminate program
Click CANCEL to debug the program

[ok] [cancel]"

which comes at the following point in the command line compilation:

"Adding plug-ins initializing function... Done!
Processing pages... Done!
Removing unused resources... Done!
Generating language tables... Done!
warning: Variable "MUI_TEMP2" not referenced, wasting memory!
Generating uninstaller..."

I dont have a MUI_TEMP2 variable (that I can find anyway)...any suggestions?

thanks,
mdm


So you are using an old NSIS 2.0 development version?

As you might understand, many things change in development versions, so you will have to upgrade your script to be compatible with NSIS 2.0. See the NSIS Users Manaul / Modern UI Readme for details.

The compiler should not crash on an invalid script, so please attach your script anyway so we can have a look at it.


So I found the error, I think:
In Section Uninstall, there is a call for File /r "<directory>\*.*" and once I removed it the compiler error went away.

My question is why load files to the $OUTDIR in the uninstall section. Makes sense to me that you would only do that if you were using them (copy somewhere, write, etc..). If I am only deleting files in $INSTDIR, decrementing dll counts in the registry, doing ExecWait calls and DeleteRegKey calls, there is no call for loading files to $OUTDIR, right?

This was coded by someone else and it looks like a mistake, it also reduces the executable's size by 40%.


He probably wanted a recursive directory removal. Use RMDir /r.