Archive: NSIS 1.43


OK guys I put together NSIS v1.43.
It is on http://firehose.net/free/nsis and http://www.nullsoft.com/free/nsis .

Changes:
- Cleaned up the way lines ending with \ are concatenated.
- Made $\r and $\n converted before parsing, so that you can use them anywhere (even in header attributes)
- Added GetParent instruction which lets you get the parent directory of a directory.
- Added /ifempty switch to DeleteRegKey

I'm going to start working on NSIS 1.5 shortly. Features I'm planning on adding:
- support for defining symbols and having <symbol> be replaced in the source file
- support for !undefine
- having a reboot flagging system, and a reboot instruction
- more options for uninstaller (including callbacks and silent mode)
- enumregkey/enumregvalue instructions (maybe).

I have some other things I've been thinking about, but I'm trying to weigh in which things I will do, and which ones I won't, because I don't want to bloat the exe header. Compiler improvements (like the !define features) will most definately get in, since they really don't cost anything.

A lot of people have been emailing me with their custom functions for doing things like checking whether or not the current user is the administrator, what version of windows/ie you are running, and what not. At this time none of these seem general enough to add to the installer directly -- you can do pretty much all of this just by looking at (and attempting to write to) the registry. If people want, I will make an official NSIS page with example functions to do these things. Send your contributions to justin@nullsoft.com. :)

-Justin

P.S. The NSIS page on nullsoft.com will now be no more than 24 hours behind the firehose.net address. Thanks, Tom. :)
P.P.S. Check out http://java.sun.com/products/javawebstart/ .. Guess what Sun uses to distribute their Java distribution system?


DOH I just got done writing my Installer in 1.4 but I don't think anything drastic has changed in 1.5.

Keep up the good work!


Justin's back :D

A page with information on how to do all those things is a great idea. You can have all sorts of functions there... for Admin checking, DLL installing, etc.

There is one 'feature' which should be considered ading as an 'extra' compiler option in NSIS: adding extra installation screens. This makes the installer a lot bigger, but some people really need to get some user input.
Or maybe it should be a seperate app which takes user input and returns an ini file which NSIS can read - hint for someone?


hi,

i wrote some functions and uploaded them to the 'function archive' on my tripod account (s. Sig). feel free to use them (on the forthcoming official page).

the features thing:

koen, justin, maybe it could be done by making patches and apply them to makensis.exe to en-/disable a feature.

so the standard version could be downloadable on the nsis page and the special features as extrapage etc. are available as separate downloads in patchform, for the guys who don't have a c compiler.

what do you think?

cu yzo


Can NSIS be made to accept more than one
"patch"? Don't most patchers look for a
specific location in a file, which may change
after the first patch? Anyhow it would be really
cool if that could work somehow...

Another way to do it would be a plug-ins
system...how much bloat would that add to the
core .exe? The compiler-guys could make a
.dll out of their function, input screens,
what-have-you, and provide calling instructions,
and it *could* be scripted in like such

CALLDLL plugin.dll C_FUNCTION_NAME (PARAMETERS)


or however c functions get called.
Then, the .dll would get rolled into the .exe and be extracted JIT.

Perhaps two versions of MakeNSIS.exe could be distro'd...
one plugged in :)
and one unplugged :)


Thoughts?

-=Gonzotek=-


Patching isn't very handy, but it is possible. The problem is that you need a patch for every single combination of options, which, with 6 options at the moment I believe, gives you 6*5*4*3*2=720 combinations with patches.
A plugin system with 2 different versions is handier, I think.