Archive: Concerns with NSIS Development


I am concerned about the way NSIS dev is going.

Why, you ask. Well it's complicated.

Once upon a time, long ago in a galaxy far away, I noticed that winamp's install had changed, it now used superPIMP technology. I had used PiMP for my plugins, and needed something more meaty for installing Skinmaster. Unfortunatley I was broke, so I wasn't going to fork out for something huge, bloated, overpowered and hard to learn like InstallShield. I found some shit to make my own system and started work, it was hard, so I gave up, I found an open source system, and that was hard to use too.

So I mentioned to Cody (Used to do Denny's job, and provided me hosting for Skinmaster) to ask Justin if he was gonna release SuperPIMP. Justin said it sounded like a good idea (thro Cody), and nothing happened.

Then one day Cody mailed me to say NSIS .9 (or someother early version was out) and I fell in luv. It rocked.

What was NSIS at this time? "NSIS tries to be a scriptable win32 installer/uninstaller system that doesn't suck and isn't huge." It didn't suck. It was a little limited, but the learning curve for scripting it was WAY short.

Good things about 1.0x and 1.1x was it was simple to write a script, it wasn't overfeatured, it rocked. It did enough. If you wanted more, write a tiny exe to go in one of the sections to do the power stuff. Version Beta 18 of Skinmaster I think had an exe in to do stuff NSIS couldn't do at that time. It may still have (it's months since I touched that project)

Yeah there are loads of great things going in (I'm using 1.2x right now cos I haven't been able to keep up with the updates!) but the more that goes in the harder it is for a newbie, it's gonna get to the point it's as inpenetrable as Install Shield, perhaps more so as Install Shield has wizards and stuff.

This is a plea for restraint! Keep NSIS as an easy to use, simple to script installer, don't give it so many bells and whistles that it will be beyond mere mortals use.

Or if you want to add all this in, then do 2 versions perhaps, a lite and a beasty version. Lite should be enough for most people I think.


Yeah I agree with Mike .. as he has said NSIS is getting complicated day by day. It is a very good idea to provide 2 different versions .. lite and superheavy (As it will soon become!)

-Deep


i agree
I agree with Deep-Trouble.


that feature you are asking for, already exists.
if there is a feature you don't need, just comment it in CONFIG.H and rebuild the project. it will create your "lite" version.


I agree with RM. If you don't want to use new features because you think it makes it "too complicated", then just stick with the version you are using now and don't go download a new release. Just edit the CONFIG.H file and be done with it. I don't think you should be criticizing people who want to spend their own time adding features that they think are useful to open source code.

In the future, I hope NSIS becomes even more robust than any of the commercial installers out there, with a myriad of GUI's and ways of doing things that are all optional and open source. In the future, NSIS will probably be very easy for a casual user to use by running a simple wizard or using some GUI not unlike that of some of the commercial installers. The difference is that it will still be open source, and that you aren't forced to use any one particular way of doing something. If you want to still edit the script directly, you will be able to. If you want to just create a quick no-nonsense install with a wizard, you will be able to. And if you just have to have some additional feature that the installer does not possess, then you can even add to the source code of the installer. That is the beauty of the NSIS.

And if you just want the features that are out now without any future updates, nothing is stopping you from just using the current installer without ever downloading a new version... although I doubt you will do that.


I don't mind new features - as long as they are useful and don't make NSIS too big. A web update checker is nice, but shouldn't be in by default - seperate exe's is the way to go. But I don't have any objections against optional component in the CONFIG.H. OK, I haven't built my own NSIS yet, but that will come.

I just hope someday someone integrates my VPatch into NSIS (see another thread for VPatch v1.00).


I appreciate your points on commenting out stuff in the config.h.

But I don't have C++ compiler, or the cash to buy one to build it. I am not a C Programmer.

The issue is that is an advanced skill. Sure you can do that. Take this scenario, I'm looking for something like NSIS is now (NSIS is close to perfect for a lite easy to use system), but NSIS has evolved and has a bucket load of features. The problem is I have this complex full bespoke scripting language to learn (NSIS script) before I can figure out what features I can just not use, and what features I need to comment out and re-build the compiler.

Sure I can stick with 1.2, and I may do that if it goes too far, but I can do that cos I learnt NSIS on v0.x. A newbie in a year is going to have a way hard time. That is my concern.


The scripting language is no more complex than it was before. The only major changes to the format is that you have to end the sections. What exactly has gotten so complicated? Since NSIS is written for developers to publish their programs/plugins, these people should have no problem learning NSIS.

I looked at the examples included with NSIS and it took about 10 minutes to figure it out. Its one of the simplest installer scripting languages you will ever see.


just dont include the info you dont want.
or you should use an older version. currently i use 1.1j i think. works for me

but it is getting very complicated.


people that wants a basic install script.. stick to the lastest 1.0 version of NSIS... that's it that's all... people who wants more, just download the lastest version. that's the point of keeping all the older versions online...

peace


I understand your concerns, Mike, about how complicated NSIS may be in a year or so, but I'm also sure that many of the people on this forum are going to come up with a neat little GUI or wizard that will contain all of the basic features you like now, but still be able to run on top of the very latest NSIS engine. And even if you still write the script directly, I doubt that many of the current commands and functions are going to change so that you would have to re-learn how to do them.

In other words, your current scripts that you are writing now should always be able to compile under that latest NSIS compiler (barring a few changes that are supposedly for our own good... :))

I also understand that you may want the very smallest NSIS engine, and that you don't have a C++ compiler, but I'm sure many people on this forum, including myself, would be willing to compile a version with just the features you want and make it available to you somehow.

I, for one, enjoy the opportunity to look at the source code of a well written program and the opportunity to hone my programming skills by *trying* to add features myself.


You should be able to compile it using Borlands compiler 5.5 (its free). If you want, I can create you a makefile that will let you compile it using borland.


People are already writing front ends for NSIS it is only logical more will come out thus the process of making a advanced script will be pretty easy. I like all the features they added keep em coming!


I know that NSIS is straightforeward enough for now.

And I know that people who are using it are going to be programmers. I'm a programmer, all modesty aside I am a damn good web developer. I am not concerned for myself, I'll be following NSIS as the versions clock up and will stay upskilled.

Yeah people are writting wizards and tools, but that just turns NSIS into an open source InstallShield (has my hatred for that product come thro enough yet?).

As it is now, NSIS is fast to learn, and there isn't a lot to learn. In the future, the way it's going NSIS is going to be far more confusing, for newbie's it's gonna be third party wizard time, and then they won't see what's hidden in the depths, the good shit that they may only be able to do manually.

I don't think I'm expressing my concern too clearly.

Ok, NSIS due 75% to Justin's abilities as a programmer, 20% to the support of the community writting tools, and 5% to the fact it's open source has the ability to turn into InstallShield.

This is a big project. There are people who's whole job is to write InstallShield routines. There is so much in there that figuring out how to create a simple small install (the kind of things you can do with NSIS in seconds) is a major task.

If NSIS gets to this state, it's defeated it's point.

Best case is that this doesn't happen.

If this does start to happen, we need an NSIS 1.x preservation society, and the NSIS pages need to make clear that there exists this older, small lite system just the thing for the job NSIS does now.

NSIS hasn't yet started to worry me. Itself. But I see what people want to see go in there, and I see more and more suggestions coming forth that would end up with NSInstallShield so I wanted people to sit back for a minute and think of the costs of going so far.


Rainwater:
Yeah I'd love it if you could!

I have an old Borland C++ tool at home from when I was at uni. So if you can set up the NSIS code for that, it would rule.

My coding skills:
Delphi, Pascal, TCL/TK, Vignette, ASP, VBS, VB, PHP, SML and some very rusty C. If anyone is reading this from the UK, I wrote parts of the Paypoint system, and LTPass that you see in newsagents for paying utility bills and getting underground tickets respectivly in C, but it was 2+ years ago...


I though I'd just weigh in on this (since I'm awake today, more, after getting my wisdom teeth out).


Having said that, I must weigh in my views on an InstallShield type wizard or whatnot. Other people are welcome to do such things, but I personally don't see that as the direction.

"NSIS tries to be a scriptable win32 installer/uninstaller system that doesn't suck and isn't huge."

I don't say anything about learning curves in there, and that's for a reason. NSIS should be powerful. NSIS should be relatively easy to use, once you get the hang of it. Perhaps the documentation needs massive updates to help people get started faster. I am in big favor of this.

To finalize what I mean
Anyway, my head hurts, my mouth is sore, I go lay down now.

-Justin

Hey I don't have a problem with 1.4!

It's not gone too far, or even far enough yet.

I'm just trying to sit down and say don't go too far is all. No web update, no over complexity.


Oh and I forgot to say, coming to a web site near you as soon as my ISP pull their finger out:
http://nsis.skinmaster.co.uk - the Learning Curve.


Speaking of documentation. How about setting up a wiki documentation site. Its an open source documentation site that lets users edit the pages themselves. There are lots are different versions of wiki out there. One examples is at http://www.webmacro.org.


After reading all of the comments I think I agree with Justin. NSIS is a very neat program that certainly doesn't suck, and isn't bloated (!)

I'm relatively new to using NSIS, and I believe that it should be possible for a novice to use, provided samples and thorough documentation are available- like I did myself. I don't think it needs any gui frontend by default, though of-course third party ones would benefit some people.

Another thought that struck me was that any user of NSIS is likely to have written their own program that requires distributing in the first instance, so wouldn't actually be a *real* novice and so should be able to handle the learning curve of using a complex installer.

Just my 2d's worth!


I think that NSIS is one of the simpler installers to use around and does it's job very well (and I'd much rather see more commands than less - I've seen other installers with plug in interfaces anyone considered plus in commands / extensions?).

Taking about directions, Microsoft is going to force the use of MSI packages in place of EXEs for install packages. It is doing this for Windows 2000 certification and you can bet for XP this will be the case as well. These packages are reasonably complex to build and the tools are as well...

If you want a simpler interface to NSIS, you might want to try my "text based" wizard. It takes care of most uninstall issues (I don't specify any uninstall stuff in most of my packages as it will automatically correctly uninstall) and makes it simpler to use. It also gives you access to a much more powerful preprocessor. I have set up a common "style" that applies to all my install packages so individual packages only contain the things that make package "a" different to package "b".

If you want to see what it can do download NSIS_HDR from my ppwizard download page.

Bye
Dennis


I've used most of the commercial and several of the
free installers. NSIS does not suck. The extensions
have all made sense. I like the direction it is going
so far.

I think you are perceiving complexity because the rate
of new features has been incredible the last two months.
We seemed to be getting a new version every other day
for awhile there. Justin is a machine.

Anyone building an installer should be able to figure
it out from the existing docs and examples. A beginners
guide might be nice but I like examples.


Yes, some nice things for a guide could be:
- How to install a DLL correctly (check the version, date, etc), some kind of standard function maybe?
- How to add it to the Windows Add/Remove software list

Just things like these with an example. It would be nice to have such an overview (so you can see if you're doing it the same way yourself).


I always wonder why the teachers at school never realized it was best to learn by examples when I was a kid-

you'd sit there through an hour or so of theory about how the binomial theorem works (for example), and your eyes would glaze over, when really all it needed was a few examples to get you started.

It's the same with programming, I'd die at the thought of massive file outlining each individual feature and use (though it's undoubtably useful as a reference afterwards), but the best way is to see the code working.


Well I did intend to spend the bank holiday here with the general overview pages. And I got a fair way into it.

Then I decided it was time to install Linux on a partition. And killed my machine.

I only lost a bit of stuff but spent the rest of the time re-building, and trying to recover some stuff.

I looked at wiki, well a PHP port, and didn't think too much of it.

I'll see if I can get some more interesting stuff up soon.

Mike