Contents.History NSIS was created to distribute Winamp. It is based on a previous Nullsoft product, PiMP (plugin Mini Packager), and is also known as SuperPiMP. After 2.0a0, the project was moved to where developers outside Nullsoft started working on it on a regular basis. NSIS 2.0 was released approximately two years later.NSIS version 1 is in many ways similar to the classic, but it supports more compression formats. NSIS version 2 features a new streamlined and supports compression, multiple languages, and an easy-to-use plugin system.In January 2006 NSIS was SourceForge's project of the month.
Script examples Hello world! !include 'MUI.nsh '!insertmacro MUILANGUAGE 'English ' Name 'Hello world! ' # Name of the installer. OutFile 'HelloWorld.exe ' # Name of the installer's file. Function.onInit # Function that will be executed on installer's start up.
MessageBox MBOK MBICONINFORMATION 'Hello world! ' # Show a message that says 'Hello world!' Quit # Close the installer because this is a simple 'Hello world!' FunctionEnd Section # Useless section because this is a simple 'Hello world!' SectionEnd Simple installer. !include 'MUI.nsh '!define MUIABORTWARNING # This will warn the user if they exit from the installer.!insertmacro MUIPAGEWELCOME # Welcome to the installer page.!insertmacro MUIPAGEDIRECTORY # In which folder install page.!insertmacro MUIPAGEINSTFILES # Installing page.!insertmacro MUIPAGEFINISH # Finished installation page.!insertmacro MUILANGUAGE 'English ' Name 'MyApp ' # Name of the installer (usually the name of the application to install).
OutFile 'MyAppInstaller.exe ' # Name of the installer's file. InstallDir ' $PROGRAMFILES MyApp ' # Default installing folder ($PROGRAMFILES is Program Files folder). ShowInstDetails show # This will always show the installation details. Section 'MyApp ' # In this section add your files or your folders. # Add your files with 'File (Name of the file)', example: 'File '$DESKTOPMyApp.exe' ($DESKTOP is Desktop folder); or add your folders always with 'File (Name of the folder).'
, always add your folders with an asterisk, example: 'File /r $DESKTOPMyApp.' (this will add its files and (with /r its subfolders)). SectionEnd Concepts. # Example script Name 'Example1 ' OutFile 'jubaowu.exe ' InstallDir ' $PROGRAMFILES Example1 ' Page DirectoryPage InstFilesSection SetOutPath $INSTDIR File. Makensis.exeSectionEnd Modern user interface Version 2.0 introduced a new optional streamlined graphical user interface called Modern UI (MUI). The MUI has a wizard-like interface. It supports a welcome page, finish page, language selection dialog, description area for components, and greater customization options than the old user interface.
# Modern UI example script!include MUI.nshName 'Example 2 ' OutFile 'Example2.exe '!insertmacro MUIPAGEWELCOME!insertmacro MUIPAGELICENSE 'license.rtf '!insertmacro MUIPAGEDIRECTORY!insertmacro MUIPAGECOMPONENTS!insertmacro MUIPAGEINSTFILES!insertmacro MUIPAGEFINISH!insertmacro MUILANGUAGE 'English '!insertmacro MUILANGUAGE 'German '!insertmacro MUILANGUAGE 'French ' Section 'Extract makensis ' SetOutPath $INSTDIR File. Makensis.exeSectionEndSince NSIS version 2.30 (Released on 25 August 2007) there is new version (beta) of this UI accessible: Modern UI 2 (MUI2) which is an enhancement to Modern UI. Unlike the old MUI this version is based on nsDialogs instead of old-fashioned InstallOptions.ini files.From version 2.34 (Released on 24 December 2007) this MUI2 is ready for mass consumption and it is included in all NSIS packages. Also all examples had been switched to it.Modern UI 2 documentation.Graphical interfaces NSIS projects can be configured by simply editing text files (with.nsi extension). However, several third parties provide editing software:.
EclipseNSIS is a module for the platform. It allows NSIS scripts to be edited, compiled and validated.
HM NIS Edit (freeware) editor with support of custom or plug-ins. Venis (freeware) editor. Visual & Installer is an add-in which integrates NSIS with IDE and allows to create and build NSIS projects right within it.Installer interfaces Several projects that extend or replace the Modern UI have started in the past few years. Interfaces such as the ExperienceUI and UltraModernUI completely change the style of the installer by skinning it to look like the interface. Other interfaces like installSpiderUI aim for a more minimalistic approach on the visual side of things while maintaining the same level of functionality as the ASD.Plugins NSIS can be extended with that can communicate with the installer. Plugins can be written in any unmanaged programming language capable of building a (such as C, C or Delphi), and they can be used to perform installation tasks or extend the installer interface.
Hey guys,If you had to convince someone that uses InstallShield to use WiX what would you point out.I would like to convince the company I work for to switch and am trying to think of the best way to do so.The main things I can come up with are: WiX is easier to use with version control, it does not require you to purchase a license, and anyone working on the project can now work on the install (relevant because we have only have one install guy, who is kind of a bottleneck).A couple concerns would be that WiX doesn't support all the functionality that InstallShield does. Which from what I can tell the biggest difference is that InstallShield gives you a GUI to use. Other than that they both give the same installation features.Any other suggestions are much appreciated. Also, those who do use InstallShield, why shouldn't I try to switch.Thanks.
Everyone pretty much has the pros to WiX so here are some cons:.There aren't any free VS designers (like installshield) for WiX projects so most of what you'll be doing is going to be in xml files or in your custom bootstrapper assembly.WiX has a very steep learning curve. A basic msi is pretty easy to learn how to do, but any of the advanced stuff like service install, autoharvesting with heat, custom actions, custom bootstrapper app, scheduling, how to fix a registry you inevitably screwed up with a flawed msi (i.e orphaned registry entries.biggest pain in the ass let me tell you), learning how to debug an installer via logs, understanding the msi technology itself, integrating it into your build and release processes, proper versioning techniques, and more all takes considerable amount of time.Searching for help kinda sucks. The official docs don't have very good examples and some things still need examples. Many stack overflow posts are rather old and outdated which either completely makes the info obsolete or there are better ways of doing things now. You also have to pretty much search for 'wix toolset' for anything because of the existence of the completely unrelated wix website builder and hosting bullshit.With that said, we made the switch from installshield to wix. The source control and code review benefits of wix were a fairly major factor. Another factor was the fact that no one took the time to understand our installshield installers (which were causing deployment issues) and assigning me to transition us to wix would give me time to learn wix and installer tech in general and was ultimately more beneficial than attempting to learn from the IS installers that were developed by people who had no idea what they were doing.
The biggest factor, I believe, was the licensing issue since installshield nickels and dimes you and puts things behind paywalls that honestly should come with the license you bought (i.e being able to include new dependencies, from the designer, that came out after your IS version like a new.NET framework. You can still install newer stuff but you have to do what feels like hacking).One of the benefits that I haven't seen is the ability to reuse fragment files and other things via a wix library, something I don't think is possible via IS (although I could be mistaken).