NSIS version history
back to main page
nsis198.exe (4/28/02)
- Made SectionIn support more section indices. May break old scripts though (since 12 is interpreted as 12 not 1 and 2 now), but the compiler should at least give error rather than fail silently.
- Added config.h option: NSIS_CONFIG_CRC_ANAL
- Made Sleep instruction not print "Wait..." to output.
- Updated to MakensisW 1.4
- Updated exdll.dpr (Delphi port)
- Added LogText and LogSet commands
- Reworked heavily the section system.
- - Added SectionSetText, SectionSetFlags, SectionGetFlags, and SectionGetText.
- - Added .onSelChange callback.
- - Added RO parameter for SectionIn
- Made size estimation display nicer and reorganized a little bit.
- Added SetShellVarContext instruction.
- Added parameter support for !macro and !insertmacro.
nsis197.exe, nsis197-2.exe, nsis197-3.exe
- Most of 1.98, only buggy.
nsis196.exe (2/06/02)
- Removed a few documentation errors (happy now, Alex??)
- Updated to the latest makensisw.exe (sexy!)
- Fixed a resource.h issue (thanks Robert Rainwater)
- Fixed compilation bug when logging enabled (thanks Fritz Elfert)
- Fixed bug in Call when calling a variable location from uninstall (thanks to Fritz Elfert again)
nsis195.exe (1/24/02)
- Fixed section divider bug (thanks to Robert Rainwater)
- Included a modified version of MakeNSISW (thanks to Robert Rainwater)
- Made compiler's output line display full path (for the wrapper)
nsis194.exe (1/11/02)
- Fixed whole compression + small uninstaller bug.
nsis193.exe (1/7/02)
- Made !insertmacro work within macros and in command mode.
- Removed stupid CRC padding on tiny installers (also fixes whole+CRC+tinyinstaller bug).
- Other cleanups to both build output and exehead.
- Zip2exe v0.16 (yay)
nsis192.exe (1/5/02)
- Fixed bug in InstallOptions (State= empty on checkboxes causing problems)
- Included WinMessages.NSH from KiCHiK
- Added NSIS_COMPRESS_BZIP2_LEVEL option to config.h
- Made compiler fflush() more often.
- Made zip2exe use Miguel Garrido's code to embed the console instance of makensis (well, modified it a bit too).
- Made zip2exe allow selection of makensis.exe (so you can do makensis-bz2.exe if you want), and have lots of other improvements.
nsis191.exe (12/18/01)
- Made GetFileTime handle locked files better (thanks Dave Bau).
- Cleaned up exec.c some by making file_exists() return metadata about the file.
- Removed any versioning issues with the multiple 1.90s (since I'm stupid and make multiple versions with the same number).
nsis190.exe (12/17/01)
- Included Install Options DLL instead of the classic install options.
- Added GetTempFileName instruction.
- Dave Laundon's new onNextPage/onPrevPage style.
nsis19b2.exe (12/15/01)
- Included Peter Windridge's Delphi ExDLL port (contrib\exdll\exdll.dpr)
- Added Quit instruction (almost instantly quits installer).
- Added .onNextPage, .onPrevPage, and un.onNextPage callbacks.
nsis19b.exe (12/14/01) (also nsis19a and nsis19a2)
- Support for bzip2 as well as zlib for compression (see config.h - the default distribution includes makensis.exe (classic support) and makensis-bz2.exe (new style, can make smaller installers))
- Support for compression that spans the entire installer (see config.h - the makensis-bz2.exe uses this by default) -- expense of temporary file required.
- Included contrib\nsisdl (thanks, Yaroslav - updated again)
- Began making more install strings changeable (see lang.h). Soon (for 2.0 hopefully) we will have full multilanguage (multiple languages per installer) support.
- Fun command line updates.
nsis181.exe (12/11/01)
- Fixed a major bug (calling Abort from a function makes you go to absolute address 1. oops).
- Made listbox scrolling faster on win9x (hopefully this isn't too offensive)
nsis180.exe (12/10/01)
- Fixed a few command line oddities added in the last ver.
- Included Nels' gcc/mingw32 Makefiles. Now if only gcc produced smaller code.
- Made back button not visible for license agreement.
nsis18b4.exe (12/7/01)
- Made Call :label work, so you can call to labels (at Dave Laundon's request)
- Fixed uninstall progress bar not fully completing bug.
- Added /V command line switch (variable verbosity)
- Added /O command line switch (write log to file instead of screen)
nsis18b3.exe (12/7/01)
- Update: added !macro, !macroend, !insertmacro.
- Update: made registry functions warn if registry path begins with \. (thanks to Koen van de Sande)
- Included more install/uninstall/checkbox imagery in Contrib\ (thanks to Jarsonic and Lucas)
- Fixed backwards ifrebootflag logic.
- Updated exehead resources (added our own afxres.h to make msdev rc happy)
- Made makensis.exe support /X switch (to execute commands) as well as multiple source files (they are concatenated). Also made it so that command line paramters can be in any order (the order matters, though, as that is the order which the compiler executes things)
- Added a bunch of stuff/cleaned up functions.htm
- Fixed more issues with gcc (hopefully all, and hopefully I didn't add too many, but Nels will tell me if I did)
- UninstallExeName superceded, call WriteUninstaller (one or more times) from install sections/functions to write uninstaller.
- Made it so that command line parameters are passed to uninstaller (so uninst.exe /S now works, etc)
- Some internal changes to $CMDLINE and such (if you specify /D= or _= on the command line to an intsaller/uninstaller, you can't see that portion from $CMDLINE).
- Improved (but still quite limited) support for different sized icons (if you recompile with new larger icons, everything should work (though not quite as well. Maybe.).
nsis18b2.exe (12/5/01)
- Update: fixed invalid opcode on uninstall error.
- Update: made RMDir /r safer (checks to make sure valid instpath before recursively deleting)
- Added GetCurrentAddress
- Made Goto targets +offset and -offset valid.
- Made it so that labels can start with a '.' to be global.
- Added AllowRootDirInstall switch.
- Removed libc.c/libc.h (moved the few remaining things to util.c)
nsis18b.exe (12/3/01)
- Added /FILESONLY option to CopyFiles
- Made FileRead stop on nuls.
- Added FileReadByte and FileWriteByte.
- Added Return instruction.
- Restructured how code is called internally (Ret instruction rather than code lengths)
- Made jumps absolute instead of relative.
- Added GetFunctionAddress and GetLabelAddress, extended Call, Goto and Goto-like instructions to take user variables as jump targets.
nsis170.exe (12/1/01)
- Added ten new variables, $R0-$R9.
- Optimized ordering of variables in process_string etc.
nsis17b3.exe (11/30/01)
- Made NSIS use a CRC32 instead of adler32 (implementation is still in adler32.c though :)
- Removed a lot of comments/etc from zlib sources, to reduce source distribution size.
- Made compiler only call deflateInit() once.
nsis17b2.exe (11/28/01)
- Added SilentUnInstall attribute.
- Included Dave Laundon's 1kb size-saving optimizations
- Documentation updates (big instruction list at top of page)
- Added NSIS_CONFIG_COMPONENTPAGE to config.h
- Added NSIS_CONFIG_VISIBLE_SUPPORT to config.h (you can now turn it into pure silent mode)
nsis17b.exe (11/27/01)
- Mostly MBCS support in exehead and compiler.
- Made CRC not check the first 512 bytes, for better compatibility with virii and with digital signing.
- Made !ifdef'd blocks out ignored (for all commands other than ones starting with !)
- Made nsisconf.nsi not overwritten in installer.
- Added GetFullPathName
- Added more config.h options, moved MAX_INSTALL_TYPES to NSIS_MAX_INST...
- Added CallInstDLL (using EW_REGISTERDLL)
- Removed GetFullDLLPath, replaced it with more generic SearchPath (which can be used for non-DLLs).
- Optimized fileform.c (GetCompressDataFromDataBlock etc) to be smaller
- Added Reboot, IfRebootFlag, SetRebootFlag
- Added WindowIcon command so you can turn off the icon in the window.
- Trimmed more from zlib, down to 35kb with nearly all features (excluding XP and logging support) on. THIS NEEDS TESTING. :)
- Lots of other small changes.
nsis167.exe (11/18/01)
- Back to non-evil mode.
- Fixed SetAutoClose on uninstall section (actually works now)
- Made Pop non-fatal (sets error flag if no item on stack) - Exch is still fatal if not enough items on stack.
- Put SetErrors in the documentation, finally (thanks Dave Laundon)
- ReadEnvStr fixed to handle errors better (actually using GetEnvironmentVariable again)
- Added NSIS_CONFIG_XPSTYLE_SUPPORT option (disabled by default, thanks to Cafer Simsek)
- Made text in component page a full 3 lines high (and moved things a little bit).
- Fixed many msdev resource issues (you can now edit the resources without the editor screwing up conditional compilation stuff)
- Updated contrib\Install Options to v1.4.
nsis1666.exe (11/15/01)
- Fixed bug in add_string() which was causing section strings to get mangled.
- Added NSIS_SUPPORT_CODECALLBACKS to config.h
- Made it so that if UninstallText is not specified (or empty), the uninstall confirmation page is not shown.
- Added uninstall callbacks (un.onInit, un.onUninstSuccess, un.onUserAbort, un.onUninstFailed)
- Made highly corrupted installers fail more gracefully (if no install data found)
- Made debug build usable (finished project settings etc)
nsis165.exe (11/12/01)
- Fixed bug in FileRead (thanks sir Dave and Hendri)
- Added $CMDLINE to variables (another suggestion of Dave Laundon's)
- Improved documentation table format (at Dennis Bareis's suggestion)
- Changed bgbg's charset to DEFAULT_CHARSET from ANSI_CHARSET (at vredina's suggestion)
- Extended Exch to allow swapping the top of the stack with any item in the stack.
nsis164.exe (11/10/01)
- Reorganized makensis.htm with tables, using Michael Bishop's style from the InstallOptions readme.
- Made !system's last two paramters optional
- Updated to latest version of InstallOptions (contrib\)
- Fixed a bug with File /r not terminating path string correctly (thanks Dave Laundon)
nsis163beta.exe (11/8/01)
- Fixed issue with SetDetailsView
- Added contrib\
- Moved splash and zip2exe to contrib\
- Added InstallOptions to contrib\
- Made it so that when Abort is called from uninstall completed message isn't displayed.
- Made it so than UninstallExeName can contain a fully qualified path (or a non-fully-qualified path)
- Made it so you can override the default file writing error text (FileErrorText)
- Utilized Peter Windridge's resource searching code (for faster makensis startups).
- Utilized Dave Laundon's ideas and (some) code for process_string improvements (which make for smaller installers, yay). Didn't directly integrate though, figured a way which I liked better.
- May have introduced many bugs.
nsis162.exe (10/30/01)
nsis161.exe (10/26/01)
- Made MessageBox support multiple return checks, and support MB_DEFBUTTON* (at David Nuttall's request).
- Made NSIS_MAX_STRLEN define in config.h, for those people who may need long-ass strings.
- Incorporated some of David Nuttall's suggested changes of documentation/features.
- const'ified more.
nsis160.exe (10/23/01)
- Made progress bar customizable using InstProgressFlags.
- Made progress bar use MulDiv() for positioning (more accurate, heh).
- Made install code/stringtab put closer to beginning of installer. (this will help if/when we implement a bz2 mode that needs to mostly access the data sequencially)
- Added GetWinampInstPath function to functions.htm.
- Cleaned up tokens.cpp/.h a bit.
- Made SectionDivider have a caption option (for Thor).
- Added /COMPONENTSONLYONCUSTOM switch for InstType.
nsis16beta2.exe (10/21/01)
- Included caps.nsh and piglatin.nsh (language changing headers to !include), and upgradedll.nsh (upgrading DLL example).
- Made it so that File /oname= can take full paths.
- Fixed GetFileTimeLocal and GetDLLVersionLocal
- Made installer progress bar colored with listbox, and not limited to 32768 instructions.
- Added ShowUninstDetails.
- Added MiscButtonText, DetailsButtonText, InstallButtonText, UninstallButtonText, CompletedText, and extended DirText for browse button.
- Added /CUSTOMSTRING= switch to InstType.
- Added WriteRegExpandStr.
- Added ExpandEnvStrings.
- Reduced size back to 35.5kb.
- Made config.h even better (you can now turn off compression if you desire) :)
- Fixed date/time setting of files extracted with File.
nsis160beta.exe (10/19/01)
- Improved CopyFiles some (added /SILENT option)
- Added FindFirst, FindNext, FindClose.
- Added FileOpen, FileClose, FileSeek, FileRead, FileWrite (text file manipulation yay)
- Removed CompareDLLVersions, CompareFileTimes, added GetDLLVersion, GetFileTime, GetDLLVersionLocal, GetFileTimeLocal, and IntCmpU.
- Fixed StrCpy's behaviour where start is negative, and greater than string length.
- Made it so that File /oname= can have variables in it.
- Added StrLen instruction.
- Improved GCC compatibility (using some of Nels' suggestions)
- Made config.h options more granular.
- Cleaned up lots of code.
nsis159.exe (10/16/01)
- Removed GetParent (see GetParent in functions.htm for a replacement =).
- More size optimizations (registry reading, instruction optimization, big exec.c changes, and the removal of GetParent, means even though we've added things like environment reading and better strcpy, we're still 35k).
- Made StrCpy support negative lengths and start_offsets.
- See, what we're going for, is doing more in script, and less as instructions. We'll improve the compiler soon to support things like parameters to functions. Maybe.
- Made Abort command so that you can specify variables as parameters.
- Made RegDll so you can specify variables in symbol name/status text.
- Added output param option to ExecWait (so you can process error codes)
- Fixed some blank output dir "bugs" in Exec and Extract.
nsis158.exe (10/15/01)
- Added Exch instruction (from Fritz Elfert's suggestion)
- Added ReadEnvStr (at Eduardo Amatria's suggestion)
- Fixed URL shortcut creation in default installer (thanks to Eduardo Amatria)
- Updated process_string to be more string length sensitive, and handle errors better.
nsis157.exe (10/12/01)
- Fixed win98/ME realloc() bug err feature.
- Added BrandingText command (inspired by Larry Hasting's fork).
nsis156.exe (10/11/01)
- Made license page button say "I Agree" instead of "Next >" (update: you can now change it using LicenseText)
- Made next button say Install when on component page and there is no directory page.
- Made subcaption strings set in makensis, added command SubCaption and UninstallSubCaption.
- Made uninstall caption, added UninstallCaption command.
- Made component page subtext configurable, updated ComponentText to allow capability.
- Made default strings that aren't used not get written to installer, yay. (note if you override Component text many times, those strings will get written.. heh)
- Made DirText so you can specify the secondary line (Right above the text input).
- Made UninstallText so you can specify the secondary line.
- Reduced some logic in the installer side (put it in the compiler side, yay)
- Footprint down to 35kb.
nsis155.exe (10/10/01)
- Fixed bug in reading nsisconf.nsi.
- Fixed bug when logging is enabled and shortcuts are created.
- Fixed SW_SHOWMINIMIZED support in CreateShortCut (seems SetShowCmd likes SW_SHOWMINNOACTIVE rather than SW_SHOWMINIMIZED)
nsis154.exe (10/10/01)
- Merged EW_CREATEDIR and EW_SETOUTPATH (since they essentially do the same thing)
- Fixed bug in uninstaller (blank Next button, oops I introduced this in 1.53. Wow, I really suck).
nsis153.exe (10/9/01)
- Made Next button turn from Next to install on next to final page (at Bram's suggestion)
- Made Sleep take arguments that are variables (i.e. Sleep $0 now works)
- Made StrCpy accept variable length lengths (i.e. StrCpy $0 "Shit" $1 now works)
- Made hexadecimal and octal numbers work properly in all places where integers are used (they were essentially broken when we moved to integer conversion being done on the exehead side).
- Added AddSize command that tells the compiler that a given section needs space.
nsis152.exe (10/7/01)
- Fixed a stupid bug in ReadRegStr I had added.
nsis151.exe (10/7/01)
- Changed FindWindow to allow searches by title/class/parent/childafter, and have it store the window id in a variable. (This will break existing scripts that use FindWindow).
- Added SendMessage and IsWindow.
- Added Push/Pop instructions
- Added !undef, and made !define let you specify a value, and you can now do ${SYMBOL} to replace a defined symbol with its value.
- Made ExecuteCodeSegment() not sleep, for higher speeds.
- Made splash.exe not litter taskbar.
- Included functions.htm
- Included funny primes.nsi
- Made fancy instruction bytecount in compiler.
nsis150.exe (10/5/01)
- Added integer user variable support. (IntOp, IntCmp, ReadRegDWORD, EnumRegKey, EnumRegValue)
- Modified WriteRegDWORD to support writing variables.
- Removed netscape plug-in support (can now be done in script, using new functions)
- Updated splash.exe for sound support (Thor's suggestion - note that old uses of splash.exe will have to be updated slightly for the new syntax)
nsis145.exe (10/3/01)
- Made exehead explicitly call InitCommonControls() for potential XP bugfix.
- Fixed bug when you hit back and the OK button is disabled.
nsis144.exe (6/11/01)
- Used Edgewize's suggestion for CopyFiles being non-fatal.
- Fixed a bug in ui.c which could potentially cause problems.
- Fixed a bug in MoveFileOnReboot (thanks to Francis Irving)
- Included an #ifdef'd out MoveFileOnReboot (from Francis Irving) implementation that uses RunOnce and so on, but didn't make it on by default for various reasons. See exehead\util.c
nsis143.exe (5/30/01)
- 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
nsis142.exe (5/6/01)
- Made it so that installers can take command line switches: /S (silent), /NCRC (no CRC checking) and /D= (sets output directory). Note that /D= must be the last parameter on the line.
- Made it so you can specify "" or no parameter to ComponentText to not display the Component page and automatically install all sections.
- Made it so that if you use DirShow hide, but still specify a valid DirText, it will still show the directory page if .onVerifyInstDir fails.
- Made it so you can specify "" or no parmater to DirText to not display the Directory page (ever).
- Made WriteReg* and DeleteReg* allow variables in subkey.
- Simplified some of the uninstall parsing code.
- Fixed InstallDirRegKey's handling of strings that point to an EXE that doesn't exist (it assumed that the EXE name was the directory if the EXE didn't exist, but now it only thinks the EXE name is a directory if there is a directory that exists there)
- Made it so the installer is always shown at the end of the install, if hidden with HideWindow and window auto-closing is off.
- Added SetAutoClose command/instruction (lets you override AutoCloseWindow)
- Added /WINDOWS switch to InstallColors
- Documentation overhaul
nsis141.exe (5/3/01)
- Added support for version/date storing in CompareDLLVersions and CompareFileTimes (based on ideas of Davison Long)
- Made File/InstNSPlug commands use memory mapped files (generally ~20% faster, uses less memory on large adds)
- Made the datablock buffer use a memory mapped file when the datablock grows beyond 16MB. This lets you build larger installers without requiring that much physical memory.
nsis14.exe (4/29/01)
- Made RegDeleteKey delete recursively, even on win2k. Thanks to Tim Kosse.
- Made ExecWait set the error flag if the program executed returns a nonzero return value.
- Made ExecWait run message pump for WM_PAINT messages while executing, and no longer show/hide the main window when done.
- Fixed one small InstType /NOCUSTOM bug
- Made BGBG faster (from Drew Davidson)
- Added $HWNDPARENT variable (decimal value of the hwnd of the installer)
- Added "Splash" utility (see splash.txt)
- Added !cd compiler command
nsis14beta2.exe (4/25/01)
- Reduced header size by 1k (thx Lado Brisar)
- Made compiler recognize # as comments again (at Andras Varga's suggestion)
- Made compiler recognize \ at the end of a line as a line joiner (at Andras Varga's suggestion)
- Made line parser check that strings are terminated at the end of the line.
- Made .onInstSuccess called before status window is destroyed, for appearance.
- Reduced size of makensis and zip2exe by tuning project settings.
- Updated waplugin.nsi to work with 1.4 :)
nsis14beta.exe (4/23/01)
- Note: many of the changes in this release will break previous scripts. Deal with it. It is for your own good.
- Added maxlen parameter to StrCpy
- Added GetFullDLLPath command/instruction
- Added CompareDLLVersions command/instruction
- Added CompareFileTimes command/instruction
- Added leet callback functions
- Added /oname= switch to File.
- Label system (Goto values are no longer specified by number, but by labels, which are declared as Label:)
- Added $OUTDIR variable
- Made it so you could set $INSTDIR directly, using StrCpy/etc
- Renamed Jump to Goto (and FindWindow's jump:label to goto:label). Change em all.
- Removed $WAVISDIR and $WADSPDIR - you now should be able to implement these using ReadINIStr etc.
- Made comments only started with ; not # (may break old scripts).
- Made it so header commands cannot be declared inside functions/sections.
- Massively reorganized compiler (now in one big-ass class) - hey, I got bored on the plane :)
- Reduced the VM instruction size to 24 bytes from 28.
- Reworked and optimized the Function system.
- Rewrote and optimized and fixed recursive_create_directory (though no longer recursive, heh)
- Updated zip2exe to work better with the new changes (WAVISDIR and WADSPDIR going away)
- The documentation needs a lot more love.
nsis132.exe (4/18/01)
- warnings improvements
- added detailprint command/instruction
- improvements to command token system
- Made PackEXEHeader !packhdr (both are supported for now)
nsis131.exe (4/17/01)
- Fixed bug in process_string (when a variable is "", the string gets terminated)
- Removed version history from readme (too big)
nsis130.exe (4/17/01)
- Made unused functions mostly optimized out (they are zeroed and compress very well) - note that data/strings of unused functions is not optimized out.
- Made instruction id 0 EW_INVALID_OPCODE, so that errors are more easily caught.
- Made installs go faster (Sleep(1) instead of Sleep(20))
- Added "verifying installer" status window that opens if the CRC checking takes more than 1000ms.
- Made last parameter of IfFileExists optional
- Made some warnings errors (IfFileExists and LicenseData)
- Made firstheader slightly larger (32 bytes), with seperate flags variable (which also stores a silent flag)
- Fixed silent mode bugs (works again :)
- Fixed broken uninstall icon replacing code when using PackEXEHeader.
nsis13beta.exe (4/16/01)
- Fixed bitmap loading on NT/2k in makensis.
- Reworked virtual machine's instruction stuff (cleaner now and allows for..)
- Call instruction/command!
- Added Function/FunctionEnd commands for defining functions
- Added SectionEnd command for closing sections (not required YET, but soon to be and useful)
nsis12g.exe (4/15/01)
- Made build_write_output check for errors on fwrite()
- Fixed bug in WriteRegBin
- Added IfErrors and ClearErrors, and made other instructions set the error flag.
- Added user variables ($0-$9)
- Added StrCpy, StrCmp, ReadRegStr, and ReadINIStr.
- Added /NOCUSTOM switch for InstType
- Cleaned up replace_data/find_data/get_data_offset code a bit (made it find offsets at startup, and update in place - should be more reliable).
- Up to 34k now (ick) - will address soon :)
- Made compiler extract appropriate icon resource from icon files (yay!)
- Made compiler load bmp files for the enabled/disabled bitmaps so that it can resize/decompress if necessary. Files must still be 16 colors, though. Thanks to Ryan Geiss.
nsis12f.exe (4/13/01)
- Added 'Caption' setting.
- Added background gradient option (BGColors baby).
- Added InstallColors setting (changes the listbox colors of the install status screen)
- Made configuration options (NSIS_CONFIG*/NSIS_SUPPORT*) also defined in scripts.
- Made Delete have the flag /REBOOTOK instead of /ONREBOOT (it first tries to delete, then if it can't, it does it on reboot)
- Made Rename have the flag /REBOOTOK too.
- Made keyboard focus handling better
- Made a few small improvements to zip2exe
v1.2e (4/10/01)
- Fixed a bug introduced in the last ExecShell
- Added neat zip2exe project, an experimental ZIP to EXE converter.
v1.2d (4/9/01)
- Made it so that the browse box in directory selection uses the part of the default install directory following the last \ as the default dir name. If there is no \ in the default install directory, it uses the installer name.
- Made uninstall icon offset stored in header, as opposed to in data block.
- This means that the only things in the datablock left are structured blocks of data. This means we can make the datablock optimizer much smarter, much faster, and nearly as effective (i.e. 99.99999% as good).
- Datablock optimizer is on by default now, and very fast.
- Simplified datablock functions (there is now just add_data(), which handles all compression, and compression is done directly into the datablock).
- Added Start Menu group, including shortcuts to useful things online (i.e. the template generator, etc)
- Made File command fail on wildcards with no files found, even if in recursive mode.
- Made File/InstNSPlug report status better.
- Added more options to ExecShell (at Andras Varga's suggestion)
- Made it so you can specify the function name for RegDLL to call.
v1.2c (4/2/01)
- Added SetFileAttributes command
v1.2 (4/1/01)
- Made uninstaller generated at end of install, not beginning.
- Made File accept multiple files as parameter.
- Added Rename
- Cleaned up some stuff in exec.c to reduce size more (to counter the added code - the default header size is a healthy 32 kilobytes).
- Returned to old OLE initialization (for better compatibility?)
- Made ActiveX control registration fail more gracefully (no messageboxes)
- Made file date/time saving save the last modified time, not created time.
v1.2beta (3/31/01)
- Removed one potential bug in recursive_create_directory.
- Added !else ifdef and !else ifndef options (hell jeas!)
- Relaxed size/CRC checking (too big is OK, data past CRC is ignored)
- Added /CD switch to have makensis switch to the location of the .nsi file being processed (doesn't switch for included files, just for the main one)
- Added optional desktop icon, and made the shell associations use /CD.
- Added /r switch to File (for adding directory trees)
- Added checks to make sure you don't install/uninstall to root directories, etc.
v1.1z (3/28/01)
- Moved licensedata into string table out of datablock
- Removed NSIS_CONFIG_CREATESHORTCUT config option (it really didn't add much)
- Additional exehead size optimizations (making it use global variables more instead of passing them around and copying them).
- Made DeleteOnReboot code check for duplicates in wininit.ini on win9x.
- Enlarged resources a bit to make more room for shit (dynamic sized resources would be nice, hmm)
- Planning on making 1.1z+any bugfixes = 1.2 . gonna give it a week or so to see what is broken.
v1.1y (3/28/01)
- Made install info+string table etc in datablock.
- Made uninstall info that is written to uninstaller compressed now.
- This makes for slightly smaller installers, typically.
- Made install types and section names stored in string table (less overhead, less stupid static string length limitations)
- Raised the maximum number of install types to 8 from 4 and made it a keen #define (who cares?)
- Yee-haw.
v1.1x (3/27/01)
- Added DeleteFileOnReboot function to util.c
- Added /ONREBOOT switch to Delete instruction
- Made uninstaller delete itself after reboot
- Updated CRC checking code for size and speed (no more seeking)
- Updated integrity checks to check for correct length (even when CRC checking is off)
- Made minimum post-header length of 516 bytes when CRC is enabled (in order to simplify the exehead).
- Made cancel selected when the install is aborted.
v1.1w (3/27/01)
- Fixed a few potential bugs in libc
- Made OLE/COM initialization better (no more open and close and open and close)
- Reduced size even more (zlib table optimizations and such! - decompression is slower now though, but the header is 35840 bytes with all features on)
- Removed NSIS_CONFIG_COPYFILES config option (it's small anyway)
- Made installation logging off by default (default header size is 31744 bytes, yay!)
- Updated uninstall system to not litter up your temporary directory with tons of nsu* files (it now only creates 26 possible files, and cleans up unused ones on uninstall)
v1.1v (3/26/01)
- Reduced size of header by 1k (40960 bytes now with all features turned on)
- Cleaned up a lot of code/errors/etc in exehead
- Cleaned up error/warning handling in compiler
v1.1u (3/26/01)
- Added !error and !warning
- Added DeleteINISec and DeleteINIStr commands
- Added jump:X mode to FindWindow
- Made Nop instruction also work as Jump, added Jump command.
- Made section adding more strict (you have to create all sections, none by default to make it less prone to bugs)
- Removed a lot of section related bugs.
v1.1t (3/22/01)
- Added Abort command.
- Added SetDetailsView.
- Added FindWindowByTitle (uses FindWindow but with small diffs)
v1.1s (3/17/01)
- Fixed bad DeleteRegKey bug that was introduced in 1.1o. ( I TOLD YOU IT WAS BORKED )
v1.1r (3/16/01)
- Fixed a few component selector bugs. Seems to be fine now.
v1.1q (3/15/01)
- Added SectionDivider command and divider sections and all that jazz.
- Added $\r and $\n variables (for carriage return and newline, respectively)
- Made install.log write \r\n instead of \n.
- Optimized header size more (it is still the same size, even though stuff was added)
v1.1p (3/15/01)
- Added optional /r switch for RMDir (removes recursive directories and
deletes all files (read-only or not) from them.
- Made Delete delete read-only files.
v1.1o (3/12/01)
- Massive changes to the way strings are handled. Strings are no longer in the data block, but instead in their own string table which is compressed with the header and stored in memory by the installer stub. This is a) faster, and b) allows us to compress the strings. Also, the static strings that the installer needs are no longer stored directly, instead "pointers" to them in the string table are stored (meaning many of the static length restrictions are gone). Doing this also simplifies much of exec.c, making the installer smaller. TODO: make all of the user messages configurable (maybe). Overall these changes produce installers that are about 1-2k smaller.
- optimized datablock_optimize
- Changed the format of the output statistics.
- Broke stuff (see above) - this version needs some more testing, but seems to be OK.
v1.1n (3/11/01)
- Added IfFileExists instruction for branching based on file/directory presence (takes wildcards, too)
- Changed ExecuteEntry so that branching instructions (such as MessageBox and IfFileExists) can go back if necessary (oops - negative ones were broken before.)
- Made add_data_compress and GetCompressedDataFromDataBlock use a slightly more efficient form (1 byte per block is saved, maximum file size is now 2gb instead of 4gb)
- Created BIGTEST.NSI which tests/demonstrates nearly all of the functionality of NSIS.
- Added Nop instruction
- Made it possible to put comments at the end of the line (using ; or # to deliminate it) .. if you need a parameter to start with ; or #, use quotes.
- Fixed GetCompressedDataFromDataBlockToMemory() (this was causing licenses to be truncated).
- Made MessageBox and FindWindow strings able to use variables
- Made last two parameters of MessageBox optional
- Cleaned up some resources (maintained 41.5k header size even though we added some instructions etc)
v1.1m (3/10/01)
- Made it so that if the first section starts with - (or is ""), it is not
shown in the section list.
- Made it so that sections beginning with a - are treated like empty sections (and are required, and not shown).
- Made SectionIn command additive. i.e. SectionIn 1\nSectionIn 2 adds the section to types 1 and 2.
- Made CreateShortCut more configurable (hotkey and showmode).
- Made integer parser take hexadecimal and octal numbers in addition to decimal.
- Added new examples (example1.nsi, example2.nsi, waplugin.nsi, and viewhtml.nsi)
v1.1l (3/9/01)
- Reduced size of header 1.5k by removing unused portions of zlib.
- Improved the InstlalDirRegKey logic to handle quotes in the strings better.
- Removed winamp hack checking (use InstallDirRegKey to find the Winamp directory, in addition to $PROGRAMFILES\Winamp) ex:
InstallDirRegKey HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\Winamp" "UninstallString"
- Got rid of shell.cpp, rewrote CreateShortCut in C (using lpVtbl) and included it in util.c, and inlined Shell_Free in ui.c
- Removed time clipping on the Sleep command.
- Made compiler give warnings for certain instances that should not be fatal but should be fixed (i.e. combining LicenseData and SilentInstall)
v1.1k (3/8/01)
- Made the install info header compressable (typically saves a few kb)
- Made the uninstall data compressable (typically saves ~1kb)
- Prettied up the output of statistics
- Made the space required/available displays show KB, MB, or GB.
- Made both exehead and compiler use the same zlib directory.
v1.1j (3/7/01)
- made nsisconf.nsi included if available (lets you configure defaults)
- added PackEXEHeader command to let you use UPX or Petite or any other packer on the header.
- removed one extra resource from exehead to shrink installer slightly.
v1.1i (3/4/01)- changed compression block system
- added SetDatablockOptimize command
- made compiler print more info on compression
v1.1h (2/14/01)- fixed datesave for FAT filesystems (Worked only on NTFS before).
v1.1g (2/9/01)- fixed a win95 bug (cleaned up ui.c's WM_USER use)
- made details on final install scroll every 7 lines)
- made version on installer always visible (and greyed)
v1.1f (2/3/01)- complete compiler reorganization for faster builds
- new conditional compilation stuff
- more!
v1.1e (2/2/01)- reorganized source code for ease
- simplified the firstheader system, crc checking code
- fixed a few cosmetic bugs
v1.1d (2/1/01)- improved documentation
- added !system and !include
- added /PAUSE switch to makensis
- fixed a bug in SetOutPath (\\)
v1.1c (1/29/01)- rad messagebox functionality (you can jump -- thanks to Vinnie@BearShare for the idea)
v1.1b (1/29/01)- new commands
- better readme
- better compression
- etc (read the readme for a full list)
v1.1a (1/12/01)- a lot of cleanups to code
- new commands
- more customizability
- etc (read the readme for a full list)
v1.0j (11/12/00)- Added config.h for allowing you to strip down the header to around 32k by disabling features
v1.0i (11/11/00)- added new variables $SMPROGRAMS and $SMSTARTUP
- made Exec wait and RegDLL - their own commands
- Made InstDirRegKey smarter.
- Decreased overhead by 10k.
- Made log go normal direction.
- Made CreateShortCut set the working directory to the current output directory
- Fixes to the documentation.
v1.0h (8/23/00)- faster compression, compression status
v1.0g (8/1/00)
v1.0f (7/31/00)