3 ms·
Hi there, I created NSIS originally and maintained it through the 1.x series (a mirror of the original web site is here: http://1014.org/code/nullsoft/nsis/ ht
by justinfrankel 10y ago
Hi there,
I created NSIS originally and maintained it through the 1.x series (a mirror of the original web site is here: http://1014.org/code/nullsoft/nsis/ http://1014.org/code/nullsoft/nsis/ ), before Kichik gracefully took over the project. I use NSIS extensively for my own projects.
Given some of the comments here I thought I would mention a few things:
When NSIS was first created (ca 2000), MSI did not yet exist and installers were big, fragile, and typically had many files. I made a custom installer for Winamp at some point, and then an installer-generator for Winamp plug-ins (PiMP), and later generalized that into NSIS.
The script design: originally there was a list of files which would be extracted, shortcuts created, directories created, etc. The list would be processed in order. At some point Vinny from BearShare suggested (via a trivial patch) that we add conditional execution and/or looping. So that's how it ended up as "like assembly", since it was a bunch of instructions being executed. The string formatting was already there, so you don't have to manage strings, so in effect a very high level assembly.
The point of writing NSIS installers is that you're really just programming a program, and the language you're using is very good at moving data around. It's not transactional, sure, but ideally if you write an NSIS installer, you can have it look at what's installed and make the correct decisions about upgrading/removing components as necessary.
You can also automate the installers for network installs, plenty of system administrators do it now (/S and /D= options, in particular).
The mentioned security bug in NSIS 2.1 was fixed in 2.51.
Finally: last I checked with LZMA enabled, NSIS installers are very size efficient. If you program them well, they can be very robust.
Anyway...
- networked 10y agoThank you for creating NSIS! While we may complain about its assembly-like language, over the years NSIS has proved incredibly useful to countless people, including myself, both as developers and as users. And that goes beyond installers. When I was a university student I got a lot of mileage out of the PortableApps launcher, which was made with NSIS, and used NSIS to develop small, self-contained utilities in a short span of time. For the latter, few things can compare. It is interesting that the declarative vs. imperative configuration divide comes up again and again: in installers, GUI toolkits, configuration management systems, etc. Considering how many times imperative scripting gets reimplemented/hacked on top of a supposedly declarative system, I suspect NSIS made the right choice early on. Things like the PortableApps launcher would not have been possible to make with it otherwise.