Slashdot Mirror


NSIS 2.0 Final Released

nandhp writes "The NSIS (Nullsoft Scriptable Install System) project has finally released version 2.0 final. NSIS is a powerful open-source install system for Windows that is based on scripts. It was invented by Nullsoft for the distribution of WinAmp. You can get it here"

36 comments

  1. "install scripts" by Anonymous Coward · · Score: 2, Interesting

    You mean you don't just drag a folder somewhere and call it done?

    Seriously, why don't apps just look at their environment, fix whatever is missing, and not require any install script at all?

    1. Re:"install scripts" by Anonymous Coward · · Score: 0

      What's stopping you from creating one?

    2. Re:"install scripts" by RzUpAnmsCwrds · · Score: 5, Insightful

      Many apps do, but they usually provide an installer because it is more convenient. It is a single executable package which installs the application in the proper place (under Program Files if the application is half-ass decent) and adds a shortcut to the Start menu.

      Compare this to the folder method. You have to download a compressed archive, extract it, drag it to the proper folder, and create a shortcut (or alias or symbolic link) to the proper executable or executables (if the application has more than one program, such as a game and a level editor) in the proper location.

      Executable installers are generally very easy to work with:

      - Click on download link
      - Click "open"
      - App downloads to temporary location (WWW cache)
      - When download is complete, installer automtically opens
      - Click next a few times, click "I agree", click finish
      - App is installed

      This works 98% of the time.

    3. Re:"install scripts" by Anonymous Coward · · Score: 0

      Damn, my last 2 mod points expired last night. Otherwise you'd have a +1 Insightful there. Good work!

    4. Re:"install scripts" by Anonymous Coward · · Score: 1, Informative

      Ever used a Mac?

      You click the thing you want to download.

      A few moments later a window appears with a single icon and maybe a readme. Drag the icon somewhere, double click it and it runs.

      All libraries (DLLs), all run-time files, etc, are hidden inside that icon (because it's really a directory with a special flag set that conceals the contents).

      Install scripts are left for system files, kernel drivers, non-app stuff.

      Or at least, that's how it is supposed to work, a lot of software ported from Windows doesn't quite work that smoothly! :-)

    5. Re:"install scripts" by aled · · Score: 2, Funny

      I would like about how YOUR apps register their COM objects, DLLs, etc and repair themself, Mr. AC.

      --

      "I think this line is mostly filler"
    6. Re:"install scripts" by spitefulcrow · · Score: 1

      There's one of the major flaws in the construction of Windows. The entire registry system is horrible and needs to be thrown out.

      --
      Sorry, my karma just ran over your dogma.
    7. Re:"install scripts" by aled · · Score: 1

      May be but if you distribute windows apps that use those features you have to live with it. Those installers are your friend here.

      --

      "I think this line is mostly filler"
    8. Re:"install scripts" by thentil · · Score: 2

      It is a single executable package which installs the application in the proper place (under Program Files if the application is half-ass decent)

      No. If the application is "half-ass decent", it allows me to specify where I want it installed in, and *defaults* to Program Files. There are some programs that I do not want installed under the program files directory (fortunately, most 'half-ass decent' programs do allow me to specify where I want it installed). The other thing I would like to see an end to is the spewing of dll's all over the place; they should, unless absolutely necessary, be contained within the application's directory...

    9. Re:"install scripts" by Chacham · · Score: 1

      The registry was actually there to fix INI issues. It was a wonderful fix. A central location for most settings was and is a good idea. It does not need to be thrown out. Reworked, yes. Thrown out, absolutely not.

    10. Re:"install scripts" by Chacham · · Score: 4, Informative

      Seriously, why don't apps just look at their environment, fix whatever is missing, and not require any install script at all?

      There are so many things involved in installation that makes your question one of sheer ignorance. Having worked at a Windows Installation software company, i'll mention a few.

      1) DLLs. In order for a DLL to be properly used in a system it must be registered. If it uses OLE, it must be "self-registered". That is, the DLL itself has a subroutine called OLESelf-Register, and it must be called in order to work so the OLE system knows where it is. For a quick example, find ComDlg32.ocx on a system (System or System32 directory) and choose proeprties. On the Version tab, in the list, you will see OLESelfRegister. To selfregister it (it doesn't hurt) go to start run and type regsvr32 ComDlg32.ocx. A dialog box then reports success.

      Common DLLs must be marked on the system as to how many program claim to use it. This is so it is deleted only after the very last program stops using it.

      Since the DLLs must be placed in the system directory, and the Windows directory is not always known, a system call to get the Windows directory is required.

      2) BDE. For those programs using the BDE, the installation process is under an NDA.

      3) Uninstall. Creating an uninstall can be painful. An automated system is nice.

      4) Installing ODBC. This takes various system calls to be done properly.

      5) INI writes. If an INI file is used, the official way to write to it is with as system call. (So NT can divert it to the registry).

      6) Temporary files. Creating a temporary files for the installation requires a unique name, and automatic deletion.

      There's so much more it's amazing, A very simple project does not need much other than a folder copy (assuming the user can make his own shortcuts). Most programs need some knowledge of Windows, and there is no reason for the programmers to waste their time there.

      Also, note, that a great deal of programmers are absolute morons. They having the slightest idea what to do. They can do VB, but when it comes to windows they haven't a clue. For them, an instllation system is a must.

      Also, now, with Windows Installer, the installation file must be a specific format. An installation system can make that for you easily.

    11. Re:"install scripts" by RzUpAnmsCwrds · · Score: 2, Interesting

      "Install scripts are left for system files, kernel drivers, non-app stuff."

      Than why did iTunes have a version whose install script deleted your hard drive in some cases?

      "A few moments later a window appears with a single icon and maybe a readme. Drag the icon somewhere, double click it and it runs."

      Somewhere? Oh, so you mean that you open your hard drive, find the applications folder, drag the icon in, and make an alias in the Dock.

      Thanks, but I'll take the Windows style.

    12. Re:"install scripts" by Anonymous Coward · · Score: 1, Informative

      Than why did iTunes have a version whose install script deleted your hard drive in some cases?

      You wrote that backwards. What you should have said was, "Buggy install scripts are why we don't use them any more."

      Somewhere? Oh, so you mean that you open your hard drive, find the applications folder, drag the icon in, and make an alias in the Dock.

      Wow. You really haven't used a Mac. The "applications folder" is an icon in the window sidebar. You already have a window open, obviously, because you're looking at the program you want to install. All you do is drag the program icon to the Applications icon.

      If you want to put the program in your dock, do. Point is, it's up to you. There's no annoying installer to put it there for you.

      Thanks, but I'll take the Windows style.

      Sure, 'cause ignorance is bliss.

    13. Re:"install scripts" by Anonymous Coward · · Score: 0

      or i could just...

      # emerge whatever_the_hell_i_want

      That works too.

    14. Re:"install scripts" by Anonymous Coward · · Score: 0

      I wouldn't say easily.

      My experience with IntallSheild developer at least is that it's several times more difficult.

      On the other hand, it wasn't exactly rocket science in the first place.

    15. Re:"install scripts" by Anonymous Coward · · Score: 0

      The other thing I would like to see an end to is the spewing of dll's all over the place; they should, unless absolutely necessary, be contained within the application's directory...

      The WHOLE POINT of a DLL is that it can be used by more than one application.

    16. Re:"install scripts" by Lord+Omlette · · Score: 1

      What Mr. AC is describing is the "XCOPY install" thingee that Microsoft wants your .NET Windows Forms apps to conform to.

      --
      [o]_O
    17. Re:"install scripts" by Brandybuck · · Score: 1

      You mean you don't just drag a folder somewhere and call it done?

      Hah! Reminds me of a UI epiphany I had a few years ago. I was trying to get a Windows application bundled up ready to go. I was struggling with InstallShield. This was supposed to be the professional version, but I guess I still had to pay extra for the full functionality. So I was planning to just put everything in a zip archive and distribute it like that. Unzip-and-run, in other words. But I was worried, because that was NOT the Windows way.

      So I bitched about it to a Mac friend of mine. "What's wrong with that?" he asked. "That's pretty much what we Mac users do." He was right. So I ended up distributing it as a self-extracting zip file. To date I have not had one complaint.

      --
      Don't blame me, I didn't vote for either of them!
    18. Re:"install scripts" by jonadab · · Score: 1

      > There are so many things involved in installation that makes your question
      > one of sheer ignorance.

      This is only true of badly-designed, poorly-implemented software. Good
      software is *easy* to install.

      > Common DLLs must be marked on the system as to how many program claim to
      > use it. This is so it is deleted only after the very last program stops
      > using it.

      Common DLLs are an example of misguided design. For all of its theoretical
      benefits, rampant dynamic linking causes way more trouble than it's worth,
      and most "common" DLLs end up being used by exactly one app in almost all
      cases; when there *are* multiple apps using it, there is danger of conflicts
      (especially under Win9x). It would be far better for all concerned if these
      were stored in the same place as the application's primary executable(s); in
      many cases it would be even better if the functions that are actually *used*
      from the libraries were just linked in statically.

      > Since the DLLs must be placed in the system directory

      This is almost always a bad idea. It's probably the number one complaint
      of powerusers against low-quality Windows software. The problems it can
      cause are many and varied.

      > Uninstall. Creating an uninstall can be painful.

      Yeah, it's painful if your software litters oodles of files all over the
      drive. If you've got to clean junk out of multiple different directories,
      some of which do not belong just to the application in question, of *course*
      the uninstall process will be painful. But this is bad design. There
      should only be files in three types of places:

      1. The application itself and any needed libraries, controls, whatever,
      in the application directory. This includes any "data" that ships
      with the application and doesn't change (e.g., images used for toolbar
      icons).

      2. User-specific configuration information stored on a per-user basis.

      3. Other (non-configuration) files that the user has created.

      The uninstaller should always remove part 1 completely, ask whether to
      remove part 2 (config files) or not, and leave part 3 (documents) alone.
      On Windows, these things would typically be in Program Files, Application
      Data, and My Documents, respectively. On Unix parts 2 and 3 are in the
      user's home directory, and part 1 is in /usr (though it gets split
      between /usr/bin and /usr/share typically and maybe /usr/lib too, and
      sometimes the prefix may be /usr/local or something else instead of /usr).

      > INI writes. If an INI file is used, the official way to write to it is
      > with as system call.

      There are other, better ways to store configuration information than system
      INI writes. The registry is useful for things like setting up associations,
      but storing all of the app's config information there is a major mistake,
      as it makes it virtually impossible for a user to maintain separate versions
      of your app in different directories. (If you don't think users will want
      to do this with your app, you're either more naive than you let on or your
      app is too simple to need updates to a new version.)

      Regular old application-specific configuration files are actually a very
      nice, clean solution that works well and has no disadvantages.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    19. Re:"install scripts" by Chacham · · Score: 1

      This is only true of badly-designed, poorly-implemented software. Good
      software is *easy* to install.


      I will repeat this to you now. This statement is sheer ignorance. You obviously haven't an idea as what goes into an installation.

      I have woked on thousands of installation scripts. I've responded to tens of thousands of inquiries. I can tell you, that software intallation is complex, and only the simplest of applications should be "easy" to install.

      Common DLLs are an example of misguided design. For all of its theoretical
      benefits,


      Theoretical? OLE is theoretical? Office doesn't get used? Adobe static links? Are you ignorant or just plain stupid? I cannot take this comment seriously.

      Common DLLs are used on every OS out there, and are absolutely wonderful.

      rampant dynamic linking causes way more trouble than it's worth,

      Why? Rampant dynamic linking is what people want. It saves memory, execution time, and file clutter.

      and most "common" DLLs end up being used by exactly one app in almost all
      cases;


      Of course most common DLLs do. Since every DLL is needed by another program. However, if all the programs that use common DLLs would put its own version on the system instead, you'd probably have hundreds more.

      when there *are* multiple apps using it, there is danger of conflicts
      (especially under Win9x).


      And what are these so-called conflicts? The only conflicts i've seen is when people don't dynamically link. There ends up being a name problem, as Windows can only load one DLL given any one name.

      > Since the DLLs must be placed in the system directory

      This is almost always a bad idea. It's probably the number one complaint
      of powerusers against low-quality Windows software. The problems it can
      cause are many and varied.


      Actually, i believe it is a Windows logo requirement. It was because of the low quality of software that didn't do it. By having all DLLs in one place, there can be no name conflicts, and the correct DLL is always loaded. Plus versioning, and OS versioning, are no longer a problem.

      Yeah, it's painful if your software litters oodles of files all over the
      drive. If you've got to clean junk out of multiple different directories,
      some of which do not belong just to the application in question, of *course*
      the uninstall process will be painful. But this is bad design. There
      should only be files in three types of places:


      And files are the only problem?

      What about registry writes? BDE/ODBC entries? Restoring Backups? Needing a reboot during the process (in-use DLLs)? Keeping common DLLs? And i though of that in just a moment. There is much more to be done.

      1. The application itself and any needed libraries, controls, whatever,
      in the application directory. This includes any "data" that ships
      with the application and doesn't change (e.g., images used for toolbar
      icons).

      2. User-specific configuration information stored on a per-user basis.

      3. Other (non-configuration) files that the user has created.

      The uninstaller should always remove part 1 completely,


      What if the controls come from a runtime environment (VB/VC/MFC)? What if the data is language tranlastion for more than one application (NERO)? What nif the images are user modifiable, and the unijnstall want to give to user a chance to save it?

      ask whether to remove part 2 (config files) or not,

      Each file infdividually. Uninstallers tend to do that.

      and leave part 3 (documents) alone.

      Actually, it should ask.

      On Windows, these things would typically be in Program Files, Application Data, and My Documents, respectively.

      And if the user isn't using NT (Application Data is not always there)? Or the user doesn't want to store it in "My Documents"?

      There are other, bet

    20. Re:"install scripts" by jonadab · · Score: 1

      > > This is only true of badly-designed, poorly-implemented software.
      > > Good software is *easy* to install.
      >
      > I will repeat this to you now. This statement is sheer ignorance.
      > You obviously haven't an idea as what goes into an installation.

      Repeating it doesn't make it any less wrong. If installing the software
      is hard, then the software is badly-written.

      > I have woked on thousands of installation scripts. I've responded to
      > tens of thousands of inquiries. I can tell you, that software intallation
      > is complex, and only the simplest of applications should be "easy" to
      > install.

      This is bunk. Large, highly-complex software can be easy to install
      if it's designed correctly. I've used large, highly-complex software
      that's easy to install, because it was well designed.

      > Theoretical? OLE is theoretical?
      OLE is a mess. There are better ways of accomplishing the same things.

      > Office doesn't get used?
      What's that got to do with anything?

      > Adobe static links?
      Please don't appeal to Adobe as an example of good software design.
      It makes my whole body cringe.

      > Are you ignorant or just plain stupid? I cannot take this comment seriously.
      Argumentum ad hominem doesn't strengthen your case.

      > Common DLLs are used on every OS out there,
      Well, something equivalent is on most of them. I'm not sure how that's
      germaine to the question of whether they're a Good Thing, though.

      > Why? Rampant dynamic linking is what people want. It saves memory,
      > execution time, and file clutter.
      It saves memory at the expense of maintainability, and it *greatly*
      increases file clutter.

      > > and most "common" DLLs end up being used by exactly one app
      > Of course most common DLLs do. Since every DLL is needed by another
      > program. However, if all the programs that use common DLLs would put
      > its own version on the system instead, you'd probably have hundreds more.
      So? You'd also have fewer problems.

      > > when there *are* multiple apps using it, there is danger of conflicts
      > > (especially under Win9x).
      > And what are these so-called conflicts?

      DLL version conflicts. One app installs an incompatible upgrade to a DLL
      and the other app breaks. This used to happen a *lot* on Win95. Microsoft
      started a campaign circa 1996 to educate developers about the problem and
      about the benefits of installing into the application directory (except
      for standard system DLLs), and the situation has improved considerably.

      > The only conflicts i've seen is when people don't dynamically link. There
      > ends up being a name problem, as Windows can only load one DLL given any
      > one name.
      This is a confused statement. With static linking Windows doesn't need to
      load a DLL at all, so there's no problem.

      > > > Since the DLLs must be placed in the system directory
      > > This is almost always a bad idea. It's probably the number one complaint
      > > of powerusers against low-quality Windows software. The problems it can
      > > cause are many and varied.
      > Actually, i believe it is a Windows logo requirement. It was because of
      > the low quality of software that didn't do it. By having all DLLs in one
      > place, there can be no name conflicts, and the correct DLL is always
      > loaded. Plus versioning, and OS versioning, are no longer a problem.

      No, this is wrong. When the app's installer throws DLLs into the system
      directories, it creates version conflicts with any app that uses an
      earlier version of the same DLL. It is theoretically possible to avoid
      this by changing the filename of the DLL every version, but the library
      developers never seem to do that. They usually only change the filename
      every *major* version, and keep it the same over several *minor* versions;
      minor versions are *supposed* t

      --
      Cut that out, or I will ship you to Norilsk in a box.
    21. Re:"install scripts" by Chacham · · Score: 1

      Your comments deny reality, and instead blame Windows. Whether Windows is coded well or not is not the question here. Dealing with the reality of Windows is. As such, an installer is needed.

      > Office doesn't get used?
      What's that got to do with anything?


      It's an excellent example of common DLLs.

      > Adobe static links?
      Please don't appeal to Adobe as an example of good software design.
      It makes my whole body cringe.


      It is an extremely common software suite. Common DLLS are used by it, and it is an excellent example.

      > Are you ignorant or just plain stupid? I cannot take this comment seriously.
      Argumentum ad hominem doesn't strengthen your case.


      But it does help convey that i am amazed at your comments.

      For a desktop system (which is all Windows is good for), multiple users having different settings is mostly unimportant. *One* user being able to use multiple versions of the same app, however, can be very important on the desktop

      That denies the current design of Windows software. Windows is designed to allow for one instance per user. More than that either should be suppoorted by the application, or should be expected not to work well.

  2. Yeah, SuperPIMPin! by TheSHAD0W · · Score: 3, Informative

    Just FYI, NSIS stands for the product's original name, the "Nullsoft Super-PIMP Install System", before AOL made them change it.

  3. Ssssshhhhh... by Doktor+Memory · · Score: 3, Funny

    Don't just come out and tell people about NSIS! That'll ruin everything!

    I like the fact that my competition thinks they have to drop 5-6 figures every year on commercial licenses for InstallShield or InstallerVISE, thank you very much!

    --

    News for Nerds. Stuff that Matters? Like hell.

  4. Another free/open source installer by aled · · Score: 4, Informative

    I also used Inno setup with good results. It had some features that NSIS didn't and we switched to it. Very good so far. It is actively being developed.

    --

    "I think this line is mostly filler"
  5. Details please by Hal+The+Computer · · Score: 3, Insightful

    Mind being a little more verbose? Some of us probably want to hear what features it had that NSIS didn't.

    --

    int main(void){int x=01232;while(malloc(x));return x;}
    1. Re:Details please by aled · · Score: 2, Informative

      It was more scriptable, it has a scripting language based on Pascal. Sorry I don't remember the details.

      --

      "I think this line is mostly filler"
    2. Re:Details please by Anonymous Coward · · Score: 0

      useless karma whore.

    3. Re:Details please by Electrum · · Score: 3, Interesting

      Some of us probably want to hear what features it had that NSIS didn't.

      InnoSetup is VERY easy to use. It has a program that writes the config file for you. You can go from installing InnoSetup to having a perfectly working installer in under ten mintes. A disadvantage over NSIS is that the installer size overhead is much greater.

  6. mod down parent. by Anonymous Coward · · Score: 0

    Simply untrue. Prove me wrong.

    1. Re:mod down parent. by petard · · Score: 1

      He (or she, I suppose) is right. It was originally the Nullsoft SuperPiMP Install System... RTFS :-)

      --
      .sig: file not found
    2. Re:mod down parent. by TheSHAD0W · · Score: 1

      Thank you for the hoist, petard. And it's "he".

  7. Second Life uses NSIS by Critter92 · · Score: 5, Informative

    Second Life has been hapily using NSIS -- featuring Super-PIMP(tm) technology -- for 3 years. We played with just about all of the different installers and settled on NSIS because it generated by far the fastest installs and also created the smallest files. Throw in the fact that it was incredibly easy to use and you had a winner. We haven't switched over to 2.0, though.

  8. Gentoo Portage for Cygwin by axxackall · · Score: 1

    Check Gentoo forums: last summer there was a project letting Gentoo Portage to run on Cygwin. And it worked! Too bad there is no people with resources (time for support and bandwidth for downloads) behind to continue it.

    --

    Less is more !
  9. Python scripting for NSIS... by pschmied · · Score: 2, Informative

    And now for something completely different.

    It's...

    Python scripting for NSIS.

    Seriously, there are times when these scripting systems can't do the heavy lifting of a "real" scripting language. I've often thought that Python might be an ideal embedded scripting language for an installer, especially with Mark Hammond's excellent Windows Extensions.

    Has anyone used this NSIS/Python package? I suppose the only thing stopping me from trying at this point is my own laziness. Alas, this plugin requires that you track your own Python module dependencies.

    -Peter

    1. Re:Python scripting for NSIS... by Roman_(ajvvs) · · Score: 1
      So let me get this straight. Just to install a small freeware program which does something maybe slightly entertaining (hopefully greatly entertaining of course), you want the me to install an entire scripting engine along with it, just to get it installed? That doesn't make sense to me.

      a quote from their readme.txt:
      The packed python22.dll adds less than 400k to the installer executable. One disadvantage stays so far: dependecy have to be tracked manually. If an extension module is used (py or pyd) it must be packed in the installer.

      that seems like a fair bit; or am I just misjudging the size of the scripting engine? Using python scripting for python programs, that makes sense, though.

      --
      click-clack, front and back. I'm not moving this car otherwise.