NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog...

640
NSIS Users Manual Check http://nsis.sf.net for news, information, support, examples, tutorials and more. Quick links: FAQ - A list of frequently asked questions NSIS Wiki - Examples, functions, tutorials, plug-ins, software and more Forum - Post questions or discuss NSIS features Copyright (C) 1999-2017 Contributors Chapter 1: Introduction to NSIS About NSIS Main Features Feature List Unicode installers Chapter 2: Tutorial: The Basics Introduction Script Files Scripting structure Installer Attributes Pages Sections Functions Working with Scripts Logical Code Structures Variables Debugging Scripts Script Execution Compiler Commands Compiler Modern UI Plug-ins More Chapter 3: Command Line Usage MakeNSIS Usage Options

Transcript of NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog...

Page 1: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

NSISUsersManualCheckhttp://nsis.sf.netfornews,information,support,examples,tutorialsandmore.

Quicklinks:FAQ-AlistoffrequentlyaskedquestionsNSISWiki-Examples,functions,tutorials,plug-ins,softwareandmoreForum-PostquestionsordiscussNSISfeatures

Copyright(C)1999-2017Contributors

Chapter1:IntroductiontoNSISAboutNSISMainFeaturesFeatureListUnicodeinstallers

Chapter2:Tutorial:TheBasicsIntroductionScriptFilesScriptingstructure

InstallerAttributesPagesSectionsFunctionsWorkingwithScripts

LogicalCodeStructuresVariablesDebuggingScripts

ScriptExecutionCompilerCommands

CompilerModernUIPlug-insMore

Chapter3:CommandLineUsageMakeNSISUsage

Options

Page 2: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

NotesEnvironmentvariablesExamples

InstallerUsageCommonOptionsUninstallerSpecificOptionsExamples

Chapter4:ScriptingReferenceScriptFileFormatVariables

UserVariablesVar

OtherWritableVariablesConstantsConstantsUsedinStrings

LabelsRelativeJumpsPages

OrderingPageOptionsCallbacksPageUninstPagePageExPageExEndPageCallbacks

SectionsSectionCommands

AddSizeSectionSectionEndSectionInSectionGroupSectionGroupEnd

UninstallSectionFunctions

FunctionCommandsFunctionFunctionEnd

Page 3: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

CallbackFunctionsInstallCallbacks

.onGUIInit

.onInit

.onInstFailed

.onInstSuccess

.onGUIEnd

.onMouseOverSection

.onRebootFailed

.onSelChange

.onUserAbort

.onVerifyInstDirUninstallCallbacks

un.onGUIInitun.onInitun.onUninstFailedun.onUninstSuccessun.onGUIEndun.onRebootFailedun.onSelChangeun.onUserAbort

InstallerAttributesGeneralAttributes

AddBrandingImageAllowRootDirInstallAutoCloseWindowBGFontBGGradientBrandingTextCaptionChangeUICheckBitmapCompletedTextComponentTextCRCCheckDetailsButtonTextDirTextDirVarDirVerify

Page 4: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FileErrorTextIconInstallButtonTextInstallColorsInstallDirInstallDirRegKeyInstProgressFlagsInstTypeLicenseBkColorLicenseDataLicenseForceSelectionLicenseTextManifestDPIAwareManifestSupportedOSMiscButtonTextNameOutFileRequestExecutionLevelSetFontShowInstDetailsShowUninstDetailsSilentInstallSilentUnInstallSpaceTextsSubCaptionUninstallButtonTextUninstallCaptionUninstallIconUninstallSubCaptionUninstallTextWindowIconXPStyle

CompilerFlagsAllowSkipFilesFileBufSizeSetCompressSetCompressorSetCompressorDictSizeSetDatablockOptimize

Page 5: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SetDateSaveSetOverwriteUnicode

VersionInformationVIAddVersionKeyVIProductVersionVIFileVersion

InstructionsBasicInstructions

DeleteExecExecShellExecShellWaitExecWaitFileRenameReserveFileRMDirSetOutPath

Registry,INI,FileInstructionsDeleteINISecDeleteINIStrDeleteRegKeyDeleteRegValueEnumRegKeyEnumRegValueExpandEnvStringsFlushINIReadEnvStrReadINIStrReadRegDWORDReadRegStrWriteINIStrWriteRegBinWriteRegDWORDWriteRegStrWriteRegExpandStrWriteRegMultiStrSetRegView

Page 6: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

GeneralPurposeInstructionsCallInstDLLCopyFilesCreateDirectoryCreateShortcutGetDLLVersionGetDLLVersionLocalGetFileTimeGetFileTimeLocalGetFullPathNameGetTempFileNameSearchPathSetFileAttributesRegDLLUnRegDLL

FlowControlInstructionsAbortCallClearErrorsGetCurrentAddressGetFunctionAddressGetLabelAddressGotoIfAbortIfErrorsIfFileExistsIfRebootFlagIfSilentIntCmpIntCmpUMessageBoxReturnQuitSetErrorsStrCmpStrCmpS

FileInstructionsFileCloseFileOpen

Page 7: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FileReadFileReadUTF16LEFileReadByteFileReadWordFileSeekFileWriteFileWriteUTF16LEFileWriteByteFileWriteWordFindCloseFindFirstFindNext

UninstallerInstructionsWriteUninstaller

MiscellaneousInstructionsGetErrorLevelGetInstDirErrorInitPluginsDirNopSetErrorLevelSetShellVarContextSleep

StringManipulationInstructionsStrCpyStrLen

StackSupportExchPopPush

IntegerSupportIntFmtIntOp

RebootInstructionsRebootSetRebootFlag

InstallLoggingInstructionsLogSetLogText

SectionManagement

Page 8: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionSetFlagsSectionGetFlagsSectionSetTextSectionGetTextSectionSetInstTypesSectionGetInstTypesSectionSetSizeSectionGetSizeSetCurInstTypeGetCurInstTypeInstTypeSetTextInstTypeGetText

UserInterfaceInstructionsBringToFrontCreateFontDetailPrintEnableWindowFindWindowGetDlgItemHideWindowIsWindowLockWindowSendMessageSetAutoCloseSetBrandingImageSetDetailsViewSetDetailsPrintSetCtlColorsSetSilentShowWindow

MultipleLanguagesInstructionsLoadLanguageFileLangStringLicenseLangString

MultipleLanguagesLanguageSelectionLangDLLPlug-inRTLLanguages

Plug-inDLLs

Page 9: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

UsingPlug-inCommandsCallingplug-insmanually

SilentInstallers/UninstallersChapter5:CompileTimeCommands

CompilerUtilityCommands!include!addincludedir!addplugindir!appendfile!cd!delfile!echo!error!execute!makensis!packhdr!finalize!system!tempfile!getdllversion!warning!pragma!verbose

Predefines${__COUNTER__}${__FILE__}${__FILEDIR__}${__LINE__}${__DATE__}${__TIME__}${__TIMESTAMP__}${NSIS_VERSION}${NSIS_PACKEDVERSION}${NSIS_CHAR_SIZE}${NSIS_PTR_SIZE}${U+1}...${U+10FFFF}ScopePredefines

${__GLOBAL__}${__SECTION__}

Page 10: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${__FUNCTION__}${__PAGEEX__}${__UNINSTALL__}${__MACRO__}

Readenvironmentvariables$%envVarName%

ConditionalCompilation!define!undef!ifdef!ifndef!if!ifmacrodef!ifmacrondef!else!endif!insertmacro!macro!macroend!macroundef!searchparse!searchreplace

AppendixA:ModernUserInterfaceAppendixB:DLL/TLBLibrarySetup

IntroductionLibraryInstallation

IntroductionParametersOptions

LIBRARY_X64LIBRARY_SHELL_EXTENSIONLIBRARY_COMLIBRARY_IGNORE_VERSION

NotesExample

UnsharedDLLSharedDLL

LibraryUninstallationIntroduction

Page 11: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ParametersOptions

LIBRARY_X64LIBRARY_SHELL_EXTENSIONLIBRARY_COM

ExampleVisualBasic6Run-TimeFiles

AppendixC:UsefulScriptsGetInternetExplorerversionIs.NETFrameworkinstalled?IsMacromediaFlashPlayerinstalled?ConnecttotheInternetGetInstallerFilenamePreventMultipleInstancesMore

AppendixD:UsefulInformationErrorLevelsAdduninstallinformationtoAdd/RemoveProgramsCallinganexternalDLLusingtheSystem.dllplug-inDumpContentofLogWindowtoFileHowtoReadREG_MULTI_SZValuesPredefinedMacrosforUnicodesupport

AppendixE:UsefulHeadersFileFunctionsHeader

IntroductionLocateGetSizeDriveSpaceGetDrivesGetTimeGetFileAttributesGetFileVersionGetExeNameGetExePathGetParametersGetOptionsGetOptionsSGetRootGetParent

Page 12: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

GetFileNameGetBaseNameGetFileExtBannerTrimPathDirStateRefreshShellIcons

TextFunctionsHeaderIntroductionLineFindLineReadFileReadFromEndLineSumFileJoinTextCompareTextCompareSConfigReadConfigReadSConfigWriteConfigWriteSFileRecodeTrimNewLines

WordFunctionsHeaderIntroductionWordFindWordFindSWordFind2XWordFind2XSWordFind3XWordFind3XSWordReplaceWordReplaceSWordAddWordAddSWordInsertWordInsertSStrFilterStrFilterSVersionCompareVersionConvert

Page 13: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixF:ChangelogandReleaseNotes3.02

ChangelogMajorChangesMinorChangesTranslations

3.01Changelog

MajorChangesMinorChangesTranslations

3.0ReleaseNotesChangelog

MinorChangesTranslations

3.0ReleaseCandidate2Changelog

MajorChangesMinorChangesTranslations

3.0ReleaseCandidate1Changelog

MajorChangesMinorChangesTranslations

3.0Beta3Changelog

MajorChangesMinorChangesTranslations

3.0Beta2Changelog

MajorChangesMinorChangesBuildSystem

3.0Beta1ReleaseNotesChangelog

Page 14: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MajorChangesMinorChangesTranslations

3.0Beta0ReleaseNotesChangelog

MajorChangesMinorChanges

3.0Alpha2ReleaseNotes

KnownIssuesChangelog

MajorChangesMinorChanges

3.0Alpha1ReleaseNotes

KnownIssuesChangelog

MajorChangesMinorChanges

3.0Alpha0ReleaseNotes

KnownIssuesChangelog

MajorChangesMinorChangesTranslations

2.51Changelog

MinorChangesTranslations

2.50Changelog

MajorChangesMinorChanges

2.49Changelog

2.48Changelog

Page 15: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.47ReleaseNotesChangelog

MajorChangesMinorChanges

2.46Changelog

MinorChangesTranslationsBuildSystem

2.45ReleaseNotesChangelog

MajorChangesMinorChangesModernUITranslationsBuildSystem

2.44Changelog

MajorChangesMinorChanges

2.43ReleaseNotesChangelog

MinorChangesUtilitiesandPlug-insTranslationsPlug-inAPIBuildSystem

2.42ReleaseNotesChangelog

MajorChangesMinorChangesTranslationsBuildSystem

2.41Changelog

Page 16: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MinorChangesTranslationsBuildSystem

2.40Changelog

MajorChangesMinorChangesTranslations

2.39Changelog

MajorChangesMinorChanges

2.38Changelog

MajorChangesMinorChangesModernUITranslations

2.37Changelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationBuildSystem

2.36ReleaseNotesChangelog

MajorChangesModernUInsDialogsMinorChangesUtilitiesandPlug-insTranslationBuildSystem

2.35Changelog

MajorChangesMinorChanges

Page 17: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

UtilitiesandPlug-ins2.34

ReleaseNotesChangelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.33ReleaseNotesChangelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.32ReleaseNotesChangelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.31ReleaseNotesChangelog

MinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.30ReleaseNotesChangelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslations

Page 18: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

BuildSystem2.29

ReleaseNotesChangelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.28Changelog

MajorChangesMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.27ReleaseNotesChangelog

MajorChangesMinorChangesBuildSystem

2.26ReleaseNotesChangelog

MajorChangesMinorChangesNew/ChangedCommandsUtilitiesandPlug-insTranslationsBuildSystem

2.25Changelog

MajorChangesMinorChangesNew/ChangedCommandsUtilitiesandPlug-insTranslationsBuildSystem

Page 19: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.24Changelog

MajorChangesMinorChangesNew/ChangedCommandsUtilitiesandPlug-insTranslationsBuildSystem

2.23Changelog

MinorChangesUtilitiesandPlug-insBuildSystem

2.22ReleaseNotesChangelog

MinorChangesNew/ChangedCommandsTranslationsBuildSystem

2.21Changelog

MajorChangesMinorChangesNew/ChangedCommandsTranslationsBuildSystem

2.20Changelog

MinorChangesTranslationsBuildSystem

2.19Changelog

MinorChangesNew/ChangedCommandsPlug-insTranslations

2.18

Page 20: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ChangelogMinorChangesTranslations

2.17Changelog

MinorChangesTranslations

2.16ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesTranslationsBuildSystem

2.15Changelog

New/ChangedCommandsMinorChangesTranslationsBuildSystem

2.14ReleaseNotesChangelog

MajorChangesMinorChanges

2.13ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.12Changelog

MajorChangesNew/ChangedCommands

Page 21: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.11ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-insTranslationsBuildSystem

2.10Changelog

MajorChangesMinorChangesTranslationsBuildSystem

2.09Changelog

MajorChangesNew/ChangedCommandsMinorChangesTranslationsBuildSystem

2.08ReleaseNotesChangelog

MajorChangesMinorChangesBuildSystem

2.07ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesIncludeFiles

Page 22: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

UtilitiesandPlug-insTranslations

2.06Changelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-ins

2.05ReleaseNotesChangelog

New/ChangedCommandsMinorChanges

2.04Changelog

MajorChangesMinorChanges

2.03ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChanges

2.02Changelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-ins

2.01ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-ins

2.0ReleaseNotesChangelog

Page 23: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Changesfrom1.98ChangesfromRC4

2.0ReleaseCandidate4Changelog

MajorChangesMinorChangesUtilitiesandPlug-ins

2.0ReleaseCandidate3Changelog

MinorChangesUtilitiesandPlug-ins

2.0ReleaseCandidate2Changelog

MinorChangesUtilitiesandPlug-ins

2.0ReleaseCandidate1ReleaseNotesChangelog

MajorChangesUtilitiesandPlug-ins

2.0Beta4ReleaseNotesChangelog

MajorChangesNew/ChangedCommandsMinorChangesUtilitiesandPlug-ins

2.0Beta32.0Beta22.0Beta12.0Beta02.0Alpha72.0Alpha62.0Alpha52.0Alpha42.0Alpha32.0Alpha22.0Alpha12.0Alpha0

Page 24: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

OlderVersionsAppendixG:BuildingNSIS

BuildinginGeneralBuildingonWindowsBuildingonPOSIXNightlyBuilds

AppendixH:CreditsProgrammersTestersDesignersTranslatorsWriters

AppendixI:LicenseCopyrightApplicablelicenseszlib/libpnglicensebzip2licenseCommonPublicLicenseversion1.0SpecialexceptionforLZMAcompressionmodule

Page 25: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 26: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Chapter1:IntroductiontoNSISAboutNSISMainFeaturesFeatureListUnicodeinstallers

Previous|Contents|Next

Page 27: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 28: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Chapter2:Tutorial:TheBasicsIntroductionScriptFilesScriptingstructure

InstallerAttributesPagesSectionsFunctionsWorkingwithScriptsScriptExecutionCompilerCommands

CompilerModernUIPlug-insMore

Previous|Contents|Next

Page 29: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 30: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Chapter3:CommandLineUsageMakeNSISUsage

OptionsNotesEnvironmentvariablesExamples

InstallerUsageCommonOptionsUninstallerSpecificOptionsExamples

Previous|Contents|Next

Page 31: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 32: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Chapter4:ScriptingReferenceScriptFileFormatVariables

UserVariablesOtherWritableVariablesConstantsConstantsUsedinStrings

LabelsRelativeJumpsPages

OrderingPageOptionsCallbacksPageUninstPagePageExPageExEndPageCallbacks

SectionsSectionCommandsUninstallSection

FunctionsFunctionCommandsCallbackFunctions

InstallerAttributesGeneralAttributesCompilerFlagsVersionInformation

InstructionsBasicInstructionsRegistry,INI,FileInstructionsGeneralPurposeInstructionsFlowControlInstructionsFileInstructionsUninstallerInstructionsMiscellaneousInstructionsStringManipulationInstructions

Page 33: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StackSupportIntegerSupportRebootInstructionsInstallLoggingInstructionsSectionManagementUserInterfaceInstructionsMultipleLanguagesInstructions

MultipleLanguagesLanguageSelectionLangDLLPlug-inRTLLanguages

Plug-inDLLsUsingPlug-inCommandsCallingplug-insmanually

SilentInstallers/Uninstallers

Previous|Contents|Next

Page 34: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 35: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Chapter5:CompileTimeCommandsCompilerUtilityCommands

!include!addincludedir!addplugindir!appendfile!cd!delfile!echo!error!execute!makensis!packhdr!finalize!system!tempfile!getdllversion!warning!pragma!verbose

Predefines${__COUNTER__}${__FILE__}${__FILEDIR__}${__LINE__}${__DATE__}${__TIME__}${__TIMESTAMP__}${NSIS_VERSION}${NSIS_PACKEDVERSION}${NSIS_CHAR_SIZE}${NSIS_PTR_SIZE}${U+1}...${U+10FFFF}ScopePredefines

Readenvironmentvariables$%envVarName%

ConditionalCompilation

Page 36: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!define!undef!ifdef!ifndef!if!ifmacrodef!ifmacrondef!else!endif!insertmacro!macro!macroend!macroundef!searchparse!searchreplace

Previous|Contents|Next

Page 37: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 38: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

1.1AboutNSISTheinstallerisyourapplication'sfirstimpression.Sloworunsuccessfulsoftwareinstallationsisoneofthemostirritatingcomputerproblems.Aquickanduserfriendlyinstalleristhereforeanessentialpartofyoursoftwareproduct.NSIS(NullsoftScriptableInstallSystem)isatoolthatallowsprogrammerstocreatesuchinstallersforWindows.Itisreleasedunderanopensourcelicenseandiscompletelyfreeforanyuse.

NSIScreatesinstallersthatarecapableofinstalling,uninstalling,settingsystemsettings,extractingfiles,etc.Becauseit'sbasedonscriptfilesyoucanfullycontroleverypartofyourinstaller.Thescriptinglanguagesupportsvariables,functionsandstringmanipulation,justlikeanormalprogramminglanguage-butdesignedforthecreationofinstallers.Evenwithallthesefeatures,NSISisstillthesmallestinstallersystemavailable.Withthedefaultoptions,ithasanoverheadofonly34KB.

WithNSIS3youcanalsocreateUnicodeinstallers,targetingallthelanguagessupportedbytheOSwithoutdisplayissues.

Previous|Contents|Next

Page 39: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 40: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

1.2MainFeaturesSmalloverheadsize

NSIShasbeendesignedtobesmall,fastandefficient.Whileotherinstallersoftenaddhundredsofkilobytesorseveralmegabytestoyourinstallerdata,afullyfeaturedNSISinstallerhasaoverheadofonly34KB.

CompatiblewithallmajorWindowsversions

YoucancreateasingleinstallerthatiscompatiblewithWindows95,98,ME,NT4,2000,XP,2003,Vista,Server2008,7,Server2008R2,8,Server2012,8.1,Server2012R2andWindows10.

Uniquecompressionmethods

Youcanchoosebetweenthreedifferentintegratedcompressionmethods(ZLib,BZip2,LZMA).LZMAcompressiongivesbetterresultsthananyothercommoncompressionmethod.Youdon'thavetouselargeself-extractingarchivemodulesorotherapplications,thecompressionsupportisincludedinthe34KBoverhead.

Scriptbased

Unlikeothersystemsthatcanonlygenerateinstallersbasedonalistoffilesandregistrykeys,NSIShasapowerfulscriptinglanguage.Thisscriptlanguageisdesignedforinstallersandhascommandsthathelpyoutoperformmanyinstallationtasks.Youcaneasilyaddcustomlogicandhandledifferentupgrades,versionchecksandmore.OntheNSISWikiyoucanfindalotmore.

Multiplelanguagesinoneinstaller

Oneinstallercansupportmultipleinterfacelanguages.Morethan60translationsarealreadyincludedandyoucanalsocreateyourownlanguagefiles.RTL(right-to-left)languagessuchasArabicandHebrewarefullysupported.CreatingaUnicodenativeinstallerisalsopossiblefor

Page 41: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

evenmoresupportedlanguages.

Manyfeaturesandchecksforthetargetsystem

Thescriptlanguageprovidescommandsyoucanuseonthetargetsystem.Fromsimplefeatureslikefoldercreationandregistryeditingtotext/binaryfilemodification,modificationofenvironmentvariablesandsystemreboots.Byusingoneoftheprovidedplug-insyoucanevencalltheWindowsAPIdirectly.

Customdialogsandinterfaces

Youcancreatecustomwizardpagestogetuserinputorintegrateconfigurationoptions.NSISincludesaclassicandmodernwizardinterface,butitisevenpossibletocreateyourowncustominterface.

Plug-insystem

NSIScanbeextendedwithplug-insthatcancommunicatewiththeinstaller.TheycanbewritteninC,C++,Delphioranotherlanguageandcanbeusedtoperforminstallationtasksorextendtheinstallerinterface.Youcanusetheplug-inwithasinglelineofscriptcode.Plug-insarealsobecompressedlikeotherinstallationdataandwillonlybeincludedwhenyouareusingtheirfeatures.

Supportforwebinstallation,filepatching

TheNSISdistributionincludesasetofplug-insthatallowyoutodownloadfilesfromtheinternet,makeinternetconnections,patchexistingfilesandmore.

Projectintegration,differentreleasesandautomaticbuilds

TheNSIScompilerfeaturesapowerfulpreprocessor.Thisallowsyoutoeasilyintegratemultipleprojectsintoasingleinstallerorautomaticallygenerateinstallerbuilds.Youcanalsogeneratedifferentreleasessuchasliteandfullversions.

Easyandhumanreadablefileformats

Page 42: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

TheNSISscriptformatandtheformatusedforinterfacedialogsareeasy,documentedandhumanlyreadable,soyoucanedityourfileswithyourfavoriteeditor.Thisalsomakesautomaticscriptgenerationpossible.

Previous|Contents|Next

Page 43: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 44: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

1.3FeatureListGeneratesselfcontainedexecutableinstallersSupportforZLIB,BZIP2andLZMAdatacompression(filescanbecompressedindividuallyortogether)Uninstallsupport(installercangenerateanuninstaller)Customizableuserinterface(dialogs,fonts,backgrounds,icons,text,checkmarks,imagesetc.)ClassicandModernwizardinterfaceFullymultilingual,supportformultiplelanguagesinoneinstaller.Morethan60translationsareavailable,butyoucanalsocreateyourown.Unicodesupportallowingevenmorelanguages.Pagesystem:YoucanaddstandardwizardpagesorcustompagesUserselectionofinstallationcomponents,treeforcomponentselectionMultipleinstallconfigurations(usuallyMinimal,Typical,Full),andcustomconfigurationInstallerself-verificationusingaCRC32checksumSmalloverheadovercompresseddatasize(34KBwithdefaultoptions)AbilitytodisplayalicenseagreementintextorRTFformatAbilitytodetectdestinationdirectoryfromtheregistryEasytouseplug-insystem(lotsofplug-insforcreationofcustomdialogs,internetconnections,HTTPdownloading,filepatching,Win32APIcallsetc.areincluded)Installerscanbeaslargeas2GBOptionalsilentmodeforautomatedinstallationsApreprocessorwithsupportfordefinedsymbols,macro's,conditionalcompilation,standardpredefinesAlovelycodingexperiencewithelementsofPHPandassembly(includesuservariables,astack,realflowcontrol,etc.)InstallershavetheirownVMsthatletyouwritecodethatcansupport:

Fileextraction(withconfigurableoverwriteparameters)File/directorycopying,renaming,deletion,searchingPlug-inDLLcalling

Page 45: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DLL/ActiveXcontrolregistration/deregistrationExecutableexecution(shellexecuteandwaitoptions)ShortcutcreationRegistrykeyreading/setting/enumerating/deletingINIfilereading/writingGenerictextfilereading/writingPowerfulstringandintegermanipulationWindowfindingbasedonclassnameortitleUserinterfacemanipulation(font/textsetting)WindowmessagesendingUserinteractionwithmessageboxesorcustompagesBranching,comparisons,etc.ErrorcheckingRebootsupport,includingdeleteorrenameonrebootInstallerbehaviourcommands(suchasshow/hide/wait/etc)UserfunctionsinscriptCallbackfunctionsforuseractions

Completelyfreeforanyuse.Seelicense.

Previous|Contents|Next

Page 46: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 47: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

1.4UnicodeinstallersStartingwithNSISv3.0youcanchoosetocreateUnicodeinstallersbysettingtheUnicodeattribute.TheseinstallerswillnotworkonWindows95/98/MEbuttheywillallowyoutodisplayyourinstallerinanyUnicodelanguagesupportedbytheOS.

WhenbuildingaUnicodeinstallerNSISvariablescanholdUnicodecharacters(0001-FFFF).Thereshouldbenoneedtomodifyyourexistingscripts.Ifyouwanttoread/writeUnicodefiles,specificinstructionshavebeenaddedtoread/writeUTF-16LEstringsfrom/todisk.

Previous|Contents|Next

Page 48: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 49: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.1IntroductionMostsoftwarepackagesyoudownloadorbuycomewithaninstaller.Theinstallercopiesand/orupdatesfiles,writesregistrykeys,writesconfiguration,createsshortcuts,etc.Allofthisisdoneautomaticallyfortheuser.Alltheuserneedstodoissupplysomeinformationandtheinstallerwilldotherest.Theusergoesthroughawizard,makestheappropriatechoicesandwaitsuntiltheinstallerfinishes.Aftertheinstallerhasfinishedtheuserisleftonlywiththesimpletaskofstartingtheprogram.Theuserdoesn'thavetoworryaboutthingshemighthaveforgottenbecauseallofthenecessarystepsweredonebytheinstaller.

NSISisatoolfordeveloperstocreatesuchinstallers.NSISallowsyoutocreateeverythingfrombasicinstallersthatjustcopiesfilestoverycomplexinstallersthathandlealotofadvancedtaskssuchaswritingregistrykeys,settingsenvironmentvariables,downloadingthelatestfilesfromtheinternet,customizingconfigurationfilesandmore.NSISisveryflexibleanditsscriptinglanguageiseasytolearn.

NSIScompilesallofthefilesandtheinstallationscriptintooneexecutablefilesoyourapplicationwillbeeasytodistribute.NSISaddsonlyabout34KBofcodeofitsown(forthedefaultconfiguration)tothedata.NSISboaststhesmallestoverheadavailablewhilestillprovidingalotofoptionsthankstoitspowerfulscriptinglanguageandsupportofexternalplug-ins.

Previous|Contents|Next

Page 50: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 51: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.2ScriptFilesTocreateaNSISinstalleryoufirsthavetowriteaNSISscript.ANSISscriptisjustaregulartextfilewithaspecialsyntax.Youcaneditscriptswithanytexteditor.It'srecommendedtouseatexteditorthatshowslinenumbersbecauseNSISuseslinenumberstoindicatewhereerrorslie,andtowarnyouaboutwhereerrorsmightlie.Aneditorthatsupportssyntaxhighlightingisalsorecommended.YoucandownloadeditorsmadeespeciallyforNSISandfilesforsyntaxhighlightingfromtheNSISWiki.

InaNSISscripteverylineistreatedasacommand.Ifyourcommandistoolongforonelineyoucanuseaback-slash-'\'-attheendoftheline.Thecompilerwilltreatthenewlineasanadditiontothepreviouslineandwillnotexpectanewcommand.Forexample:

MessageboxMB_OK|MB_ICONINFORMATION\"ThisisasamplethatshowshowtouselinebreaksforlargercommandsinNSISscripts"

Ifyouwanttouseadouble-quoteinastringyoucaneitheruse$\"toescapethequoteorquotethestringwithadifferenttypeofquotesuchas`or'.

Formoredetailsaboutthescriptformat,seeScriptFileFormat.

Thedefaultextensionforascriptfileis.nsi.Headerfileshavethe.nshextension.Headerfilescanhelpyouarrangeyourscriptbydividingittomorethanoneblockofcode,youcanalsoputfunctionsormacrosinheaderfilesandincludetheheaderfilesinmultipleinstallers.Thismakesupdatingeasieranditalsomakesyourscriptseasiertoread.Toincludeaheaderfileinyourscriptuse!include.HeaderfilesthatresideintheIncludedirectoryunderyourNSISdirectorycanbeincludedjustbytheirname.Forexample:

!includeSections.nsh

Previous|Contents|Next

Page 52: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 53: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.3ScriptingstructureANSISscriptcontainsInstallerAttributes,PagesandSections/Functions.YoucanalsouseCompilerCommandsforcompile-timeoperations.TheOutFileinstructionisrequiredandtellsNSISwheretowritetheinstaller,youalsoneedatleastonesection.

2.3.1InstallerAttributes

InstallerAttributesdeterminethebehaviorandthelookandfeelofyourinstaller.Withtheseattributesyoucanchangetextsthatwillbeshownduringtheinstallation,thenumberofinstallationtypesetc.Mostofthesecommandscanonlybesetandarenotchangeableduringruntime.

OtherbasicinstructionsareNameandInstallDir.

Formoreinformationaboutinstallerattributes,havealookatInstallerAttributes.

2.3.2Pages

Anon-silentinstallerhasasetofwizardpagestolettheuserconfiguretheinstaller.YoucansetwhichpagestodisplayusingthePagecommand(orPageExformoreadvancedsettings).Atypicalsetofpageslookslikethis:

PagelicensePagecomponentsPagedirectoryPageinstfilesUninstPageuninstConfirmUninstPageinstfiles

Fortheinstaller,thistypicalsetofpageswilldisplayalicenseagreement,allowselectionofcomponentstoinstall,allowselectionofaninstallationdirectory,andfinallyinstalltheselectedcomponentsintheinstfilespage.Fortheuninstaller,itwilldisplayaconfirmationpage,anduninstallinthe

Page 54: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

instfilespage.

2.3.3Sections

It'scommonforinstallerstohaveseveralthingstheusercaninstall.ForexampleintheNSISdistributioninstalleryoucanchoosetoinstalladditionaltools,plug-ins,examplesandmore.Eachofthesecomponentshasitsownpieceofcode.Iftheuserselectstoinstallthiscomponentthentheinstallerwillexecutethatcode.Inthescript,thatcodeisdefinedinsections.Eachsectioncorrespondstoonecomponentonthecomponentspage.Thesection'snameisthedisplayedcomponentnameandthesectioncodewillbeexecutedifthatcomponentisselected.Itispossibletobuildyourinstallerwithonlyonesectionbutifyouwanttousethecomponentspageandlettheuserchoosewhattoinstall,you'llhavetousemorethanonesection.

Uninstallerscanalsohavemultiplesections.Uninstallersectionnamesareprefixedwith'un.'.Forexample:

Section"InstallerSection"SectionEnd

Section"un.UninstallerSection"SectionEnd

Theinstructionsthatcanbeusedinsectionsareverydifferentfromtheinstallerattributesinstructions,theyareexecutedatruntimeontheuser'scomputer.Thoseinstructionscanextractfiles,readfromandwritetotheregistry,INIfilesornormalfiles,createdirectories,createshortcutsandalotmore.YoucanfindoutmoreinInstructions.

ThemostbasicinstructionsareSetOutPathwhichtellstheinstallerwheretoextractfilesandFilewhichextractsfiles.

Example:

Section"MyProgram"SetOutPath$INSTDIRFile"MyProgram.exe"

Page 55: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

File"Readme.txt"SectionEnd

FormoreinformationaboutsectionsseeSections.

2.3.4Functions

Functionscancontainscriptcode,justlikesections.Thedifferencebetweensectionsandfunctionsisthewaytheyarecalled.Therearetwotypesoffunctions,userfunctionsandcallbackfunctions.

UserfunctionsarecalledbytheuserfromwithinsectionsorotherfunctionsusingtheCallinstruction.Userfunctionswillnotexecuteunlessyoucallthem.AfterthecodeinthefunctionhasexecutedtheinstallerwillcontinueexecutingtheinstructionsthatcameaftertheCallinstruction,unlessyouhaveabortedtheinstallationinsidethefunction.Userfunctionsareveryusefulifyouhaveasetofinstructionsthatneedtobeexecutedatseverallocationsintheinstallers.Ifyouputthecodeintoafunctionyoucansavethecopyingtimeandyoucanmaintainthecodemoreeasily.

Callbackfunctionsarecalledbytheinstalleruponcertaindefinedeventssuchaswhentheinstallerstarts.Callbacksareoptional.Ifforexampleyouwanttowelcometheusertoyourinstalleryoucandefineafunctioncalled.onInit.TheNSIScompilerwillrecognizethisfunctionasacallbackfunctionbythenameandwillcallitwhentheinstallerstarts.

Function.onInitMessageBoxMB_YESNO"ThiswillinstallMyProgram.Doyouwishtocontinue?"IDYESgogogoAbortgogogo:FunctionEnd

Aborthasaspecialmeaningincallbackfunctions.Eachcallbackfunctionhasitsownmeaningforit,havealookatCallbackFunctionsformoreinformation.IntheaboveexampleAborttellstheinstallertostopinitializingtheinstallerandquitimmediately.

FormoreinformationaboutfunctionsseeFunctions.

Page 56: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.3.5WorkingwithScripts

2.3.5.1LogicalCodeStructures

Conditionallyexecutingcode,orexecutingcodeinaloopcanbedoneusingStrCmp,IntCmp,IfErrors,Gotoandmore.However,there'samucheasierwaydothis.TheLogicLibprovidessomeverysimplemacrosthatalloweasyconstructionofcomplexlogicalstructures.Itssyntax,explainedinLogicLib.nsh,issimilartootherprogramminglanguagesandcanprovetobesimplerforbeginnersandadvancedusersalike.

Forexample,checkingavalueofavariablewithouttheLogicLibcanbedoneasfollows.

StrCmp$0'somevalue'0+3MessageBoxMB_OK'$$0issomevalue'GotodoneStrCmp$0'someothervalue'0+3MessageBoxMB_OK'$$0issomeothervalue'Gotodone#elseMessageBoxMB_OK'$$0is"$0"'done:

However,withtheLogicLibthecodeismuchmorereadableandeasytounderstand,ascanbeseeninthefollowingexample.

${If}$0=='somevalue'MessageBoxMB_OK'$$0issomevalue'${ElseIf}$0=='someothervalue'MessageBoxMB_OK'$$0issomeothervalue'${Else}MessageBoxMB_OK'$$0is"$0"'${EndIf}

Thesamecanalsobedoneusingaswitch,asshowninthefollowingexample.

Page 57: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${Switch}$0${Case}'somevalue'MessageBoxMB_OK'$$0issomevalue'${Break}${Case}'someothervalue'MessageBoxMB_OK'$$0issomeothervalue'${Break}${Default}MessageBoxMB_OK'$$0is"$0"'${Break}${EndSwitch}

Multipleconditionsarealsosupported.Thefollowingexamplewillnotifytheuser,ifboth$0and$1areempty.

${If}$0==''${AndIf}$1==''MessageBoxMB_OK|MB_ICONSTOP'bothareempty!'${EndIf}

TheLogicLibremovestheneedforlabelsandrelativejumps,thuspreventslabelnameconflicts,andremovestheneedtomanuallyadjustrelativejumpoffsetseverytimethescriptischanged.

Italsosimplifiesloopingbysupportingthecommonwhile,doandforloops.AllofthefollowingexamplescounttofiveusingtheLogicLib.

StrCpy$R10${While}$R1<5IntOp$R1$R1+1DetailPrint$R1${EndWhile}

${For}$R115DetailPrint$R1${Next}

StrCpy$R10

Page 58: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${Do}IntOp$R1$R1+1DetailPrint$R1${LoopUntil}$R1>=5

TousetheLogicLibthefollowinglineneedstobeaddednearthetopofthescript.

!includeLogicLib.nsh

MoreexamplescanbefoundinLogicLib.nsi.

2.3.5.2Variables

Youcandeclareyourownvariables($VARNAME)withtheVarcommand.VariablesareglobalandcanbeusedinanySectionorFunction.

Declaringandusingauservariable:

VarBLA;Declarethevariable

Sectionbla

StrCpy$BLA"123";Nowyoucanusethevariable$BLA

SectionEnd

Inadditionthereisastack,whichcanalsobeusedfortemporarystorage.ToaccessthestackusethecommandsPushandPop.Pushaddsavaluetothestack,Popremovesoneandsetsthevariable.

Forsharedcode,thereare20registersavailable(like$0and$R0).Thesestaticvariablesdon'thavetobedeclaredandyouwon'tgetanynameconflicts.Ifyouwanttousethesevariablesinsharedcode,storetheoriginalvaluesonthestackandrestoretheoriginalvaluesafterwards.

Page 59: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Aftercallingthefunction,thevariablescontainthesamevalueasbefore.Notetheorderwhenusingmultiplevariables(last-infirst-out):

Functionbla

Push$R0Push$R1

...code...

Pop$R1Pop$R0

FunctionEnd

2.3.5.3DebuggingScripts

ThemoreyouworkwithNSISthemorecomplexthescriptswillbecome.Thiswillincreasethepotentialofmistakes,especiallywhendealingwithlotsofvariables.Thereareafewpossibilitiestohelpyoudebuggingthecode.TodisplaythecontentsofvariablesyoushoulduseMessageBoxesorDetailPrint.Togetabriefoverviewaboutallvariablesyoushouldusetheplug-inDumpState.BydefaultallactionsoftheInstallerareprintedoutintheLogWindow.Youcanaccessthelogifyouright-clickintheLogWindowandselect"CopyDetailsToClipboard".Thereisalsoawaytowriteitdirectlytoafile,seehere.

2.3.6ScriptExecution

Whenauserrunsaninstalleroruninstaller,pagesaredisplayedintheordertheyweredefinedinthescript.Whentheinstfilespageisreached,sections,correspondingtotheselectedcomponents,areexecutedintheordertheyweredefinedinthescript.Ifthecomponentspageisnotdisplayed,allsectionsareexecuted,assumingtheywerenotunselectedorsomehowdisabledbythescript.

Besidecodeinsections,there'salsocodeincallbackfunctions.If

Page 60: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

defined,theymightbeexecutedbeforethesectionscode.Forexample,the.onInitcallbackfunctionisexecutedbeforeanythingelseinthescript.Therearealsopagecallbackfunctionswhichareexecutedatcertainpointsofthepagedisplayprocess.

2.3.7CompilerCommands

Compilercommandswillbeexecutedatcompiletimeonyourcomputer.Theycanbeusedforconditionalcompilation,toincludeheaderfiles,toexecuteapplications,tochangetheworkingdirectoryandmore.Themostcommonusageisdefines.Definesarecompiletimeconstants.Youcandefineyourproduct'sversionnumberanduseitinyourscript.Forexample:

!defineVERSION"1.0.3"Name"MyProgram${VERSION}"OutFile"MyProgramInstaller-${VERSION}.exe"

FormoreinformationaboutdefinesseeConditionalCompilation.

Anothercommonuseismacros.Macrosareusedtoinsertcodeatcompiletime,dependingondefinesandusingthevaluesofthedefines.Themacro'scommandsareinsertedatcompiletime.Thisallowsyoutowriteageneralcodeonlyonceanduseitalotoftimesbutwithafewchanges.Forexample:

!macroMyFuncUNFunction${UN}MyFuncCall${UN}DoRegStuffReadRegStr$0HKLMSoftware\MyProgramkeyDetailPrint$0FunctionEnd!macroend

!insertmacroMyFunc""!insertmacroMyFunc"un."

Thismacrohelpsyouavoidwritingthesamecodeforboththeinstaller

Page 61: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

andtheuninstaller.Thetwo!insertmacrosinserttwofunctions,onefortheinstallercalledMyFuncandonefortheuninstallercalledun.MyFuncandbothdoexactlythesamething.

FormoreinformationseeCompileTimeCommands.

Previous|Contents|Next

Page 62: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 63: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.4CompilerThesecondthingyouneedtodoinordertocreateyourinstallerafteryouhavecreatedyourscriptistocompileyourscript.MakeNSIS.exeistheNSIScompiler.Itreadsyourscript,parsesitandcreatesaninstallerforyou.

Tocompileyoucanright-clickyour.nsifileandselectCompileNSISScript.ThiswillcauseMakeNSISW,theNSISCompilerInterface,tolaunchandcallMakeNSIStocompileyourscript.MakeNSISWreceivestheoutputofMakeNSISandpresentsittoyouinawindowwhereyoucanseeit,copyit,testtheinstallerandmore.Usingmakensis.exefromthecommandpromptisalsopossible.

Thecompilerwillcheckyourscriptandgiveyouwarningsoranerror.Ifanerroroccurs(i.e.2parametersrequiredbutonly1given)thecompilerwillabortandashorterrormessageincludingthelinenumberwillbedisplayed.Fornon-criticalerrorsthecompilerwillgiveawarning(i.e.twoDirTextcommandsinonescript).Ifyourscripthasnoerrorsthecompilerwilloutputaninstallerforyoutodistribute.

NSISsupportsdifferentcompressionmethods,asexplainedhere.ZLIBisthedefaultcompressionmethod,whichisfastandusesonlyalittlebitofmemory.LZMAisagoodmethodforthecreationofsmallinstallersforinternetdistribution.BZIP2usuallycompressesbetterthanZLIBbutnotasgoodasLZMA,itisusefulifyouneedlowermemoryusageorfastscriptcompilation.

ItisalsopossibletocompileWindowsinstallersonLinux,BSDorMacOSXservers.SeeBuildingNSISfordetails.

Previous|Contents|Next

Page 64: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 65: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.5ModernUIApopularuserinterfaceforNSISistheModernUserInterface.IthasaninterfacelikethewizardsofrecentWindowsversions.TheModernUIisnotonlyacustomizedresourcefile,ithasalotsofnewinterfaceelements.Itfeaturesawhiteheadertodescribethecurrentstep,adescriptionareaonthecomponentpage,awelcomepage,afinishpagethatallowstheusertoruntheapplicationorrebootthesystemandmore.

Formoreinformation,seetheModernUI2ReadmeandtheModernUIExamples.

Previous|Contents|Next

Page 66: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 67: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.6Plug-insNSISsupportplug-insthatcanbecalledfromthescript.Plug-insareDLLfileswritteninC,C++,DelphioranotherprogramminglanguageandthereforeprovideamorepowerfulcodebasetoNSIS.

Aplug-incalllookslikethis:

DLLName::FunctionName"parameternumber1""parameternumber2""parameternumber3"

Everyplug-in'sfunctionhasitsownrequirementswhenitcomestoparameters,somewillrequirenone,somewillacceptasmanyparametersasyouwanttosend.Examples:

nsExec::ExecToLog'"${NSISDIR}\makensis.exe"/CMDHELP'Pop$0;Processexitcodeor"error"InstallOptions::dialog"$PLUGINSDIR\test.ini"Pop$0;success/back/cancel/errorNSISdl::downloadhttp://download.nullsoft.com/winamp/client/winamp291_lite.exe$R0Pop$0;"success"oraerrorcode

Theplug-insthatNSISknowsofarelistedatthetopofthecompileroutput(verboselevel4).NSISsearchesforplug-insinthePluginsfolderunderyourNSISdirectoryandlistsalloftheiravailablefunctions.Youcanuse!addplugindirtotellNSIStosearchinotherdirectoriestoo.

TheNSISdistributionalreadyincludesmanyplug-ins.InstallOptionsisapopularplug-inthatallowsyoutocreatecustompages,incombinationwiththeNSISPagecommands(SeePages).TheStartmenuplug-inprovidesapagethatallowstheusertochooseaStartMenufolder.Therearealotofplug-insfordifferentpurposes,takealookintheDocsfolderforhelpfilesandexamples.Youcanfindadditionalplug-insonline:NSISWiki.

Youcanalsocreateaplug-inyourself.C/C++andDelphiheaderfilesarealreadyavailable,seetheexamplepluginforhowtodothis.Sourcecodeofincludedplug-inscanalsobefoundinthesourcecodepackage.

Page 68: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 69: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 70: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.7MoreThistutorialhasdescribedthebasicNSISfeatures,tolearnmoreabouteverythingNSIScando,takesometimetoreadtherestofthismanual.

Previous|Contents|Next

Page 71: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 72: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

3.1MakeNSISUsageNSISinstallersaregeneratedbyusingthe'MakeNSIS'programtocompileaNSISscript(.NSI)intoaninstallerexecutable.TheNSISdevelopmentkitinstallersetsupyourcomputersothatyoucancompilea.nsifilebysimplyright-clickingonitinExplorerandselecting'compile'.

IfyouwanttouseMakeNSISonthecommandline,thesyntaxofmakensisis:

makensis[option|script.nsi|-][...]

3.1.1Options

/LICENSEdisplayslicenseinformation.The/Vswitchfollowedbyanumberbetween0and4willsettheverbosityofoutputaccordingly.0=nooutput,1=errorsonly,2=warningsanderrors,3=info,warnings,anderrors,4=alloutput.The/Pswitchfollowedbyanumberbetween0and5willsetthepriorityofthecompilerprocessaccordingly.0=idle,1=belownormal,2=normal(default),3=abovenormal,4=high,5=realtime.The/Oswitchfollowedbyafilenametellsthecompilertoprintitslogtothatfile(insteadofthescreen)/PAUSEmakesmakensispausebeforequitting,whichisusefulwhenexecutingdirectlyfromWindows./NOCONFIGdisablesinclusionofnsisconf.nsh.Withoutthisparameter,installerdefaultsaresetfromnsisconf.nsh./CMDHELPprintsbasicusageinformationforcommand(ifspecified),orallcommands(ifcommandisnotspecified)./HDRINFOprintsinformationaboutwhichoptionswereusedtocompilemakensis./NOCDdisablesthecurrentdirectorychangetothatofthe.nsifile/INPUTCHARSETallowsyoutospecifyaspecificcodepageforfileswithoutaBOM.(ACP|OEM|CP#|UTF8|UTF16<LE|BE>)/OUTPUTCHARSETallowsyoutospecifythecodepageusedbystdoutwhentheoutputisredirected.(ACP|OEM|CP#|UTF8[SIG]|UTF16<LE|BE>[BOM])

Page 73: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

/PPOor/SAFEPPOwillonlyrunthepreprocessorandprinttheresulttostdout.Thesafeversionwillnotexecuteinstructionslike!appendfileor!system.!packhdrand!finalizeareneverexecuted./WXtreatswarningsaserrorsUsingthe/Dswitchoneormoretimeswilladdtosymbolstothegloballydefinedlist(See!define).Usingthe/Xswitchoneormoretimeswillexecutethecodeyouspecifyfollowingit.Example:"/XAutoCloseWindowfalse"Specifyingadash(-)forthescriptnamewilltellmakensistousethestandardinputasasource.

3.1.2Notes

Parametersareprocessedinorder.makensis/Ddefscript.nsiisnotthesameasmakensisscript.nsi/Ddef.Ifmultiplescriptsarespecified,theyaretreatedasoneconcatenatedscript.

3.1.3Environmentvariables

makensischecksanumberofenvironmentvariablesthattellitwheretolocatethethingsitneedsinordertocreateinstallers.Thesevariablesinclude:

NSISDIR,NSISCONFDIR-Placeswherensisdataandconfigfilesareinstalled.NSISDIRaltersthescriptvariable${NSISDIR}.Seesection4.2.3formoreinfo.APPDATA(onWindows)orHOME(onotherplatforms)-Locationoftheper-userconfigurationfile.

3.1.4Examples

Basicusage:

makensis.exemyscript.nsi

Quietmode:

makensis.exe/V1myscript.nsi

Page 74: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Forcecompressor:

makensis.exe/X"SetCompressor/FINALlzma"myscript.nsi

Changescriptbehavior:

makensis.exe/DUSE_UPX/DVERSION=1.337/DNO_IMAGESmyscript.nsi

Parametersorder:

makensis/XSectionsectioncontents.nsi/XSectionEnd

Previous|Contents|Next

Page 75: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 76: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

3.2InstallerUsageGeneratedinstallersanduninstallersacceptafewoptionsonthecommandline.Theseoptionsgivetheuserabitmorecontrolovertheinstallationprocess.

3.2.1CommonOptions

/NCRCdisablestheCRCcheck,unlessCRCCheckforcewasusedinthescript./Srunstheinstalleroruninstallersilently.Seesection4.12formoreinformation./Dsetsthedefaultinstallationdirectory($INSTDIR),overridingInstallDirandInstallDirRegKey.Itmustbethelastparameterusedinthecommandlineandmustnotcontainanyquotes,evenifthepathcontainsspaces.Onlyabsolutepathsaresupported.

3.2.2UninstallerSpecificOptions

_?=sets$INSTDIR.Italsostopstheuninstallerfromcopyingitselftothetemporarydirectoryandrunningfromthere.ItcanbeusedalongwithExecWaittowaitfortheuninstallertofinish.Itmustbethelastparameterusedinthecommandlineandmustnotcontainanyquotes,evenifthepathcontainsspaces.

3.2.3Examples

installer.exe/NCRC

installer.exe/S

installer.exe/D=C:\ProgramFiles\NSIS

installer.exe/NCRC/S/D=C:\ProgramFiles\NSIS

uninstaller.exe/S_?=C:\ProgramFiles\NSIS

Page 77: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

#uninstalloldversionExecWait'"$INSTDIR\uninstaller.exe"/S_?=$INSTDIR'

Previous|Contents|Next

Page 78: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 79: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.1ScriptFileFormatANSISScriptFile(.nsi)isjustatextfilewithscriptcode.

Commands

Commandslinesareintheformat'command[parameters]'

File"myfile"

Comments

Linesbeginningwith;or#arecomments.Youcanputcommentsaftercommands.YoucanalsouseC-stylecommentstocommentoneormorelines.

;Comment#Comment

#Comment\Anothercommentline(see`Longcommands`sectionbelow)

/*CommentComment*/

Name/*comment*/mysetup

File"myfile";Comment

Ifyouwantaparametertostartwith;or#putitinquotes.

Plug-ins

Tocallaplug-in,use'plugin::command[parameters]'.FormoreinfoseePlug-inDLLs.

Page 80: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

nsExec::Exec"myfile"

Numbers

Forparametersthataretreatedasnumbers,usedecimal(thenumber)orhexadecimal(with0xprependedtoit,i.e.0x12345AB),oroctal(numbersbeginningwitha0andnox).

ColorsshouldbesetinhexadecimalRGBformat,likeHTMLbutwithoutthe#.

IntCmp10x1lbl_equal

SetCtlColors$HWNDCCCCCC

Strings

Torepresentstringsthathavespaces,usequotes:

MessageBoxMB_OK"Hithere!"

Quotesonlyhavethepropertyofcontainingaparameteriftheysurroundtherestoftheparameter.Theycanbeeithersinglequotes,doublequotes,orthebackwardsinglequote.

Youcanescapequotesusing$\:

MessageBoxMB_OK"I'llbehappy";thisoneputsa'insideastringMessageBoxMB_OK'Andhesaidtome"Hithere!"';thisoneputsa"insideastringMessageBoxMB_OK`Andhesaidtome"I'llbehappy!"`;thisoneputsboth'and"sinsideastringMessageBoxMB_OK"$\"Aquotefromawiseman$\"saidthewiseman";thisoneshowsescapingofquotes

Itisalsopossibletoputnewlines,tabsetc.inastringusing$\r,$\n,$\tetc.Moreinformation...

Variables

Variablesstartwith$.Uservariablesmustbedeclared.

VarMYVAR

Page 81: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCpy$MYVAR"myvalue"

Moreinformation...

Longcommands

Toextendacommandovermultiplelines,useabackslash(\)attheendoftheline.Thenextlinewilleffectivelybeconcatenatedtotheendofit.Forexample:

CreateShortcut"$SMPROGRAMS\NSIS\ZIP2EXEprojectworkspace.lnk"\"$INSTDIR\source\zip2exe\zip2exe.dsw"

MessageBoxMB_YESNO|MB_ICONQUESTION\"Doyouwanttoremoveallfilesinthefolder?\(Ifyouhaveanythingyoucreatedthatyouwant\tokeep,clickNo)"\IDNONoRemoveLabel

Lineextensionforlongcommandsworksforcommentsaswell.Itcanbeabitconfusing,soitshouldbeavoided.

#Acomment\stillacommenthere...

Configurationfile

Ifafilenamed"nsisconf.nsh"intheconfigdirectoryexists,itwillbeincludedbydefaultbeforeanyscripts(unlessthe/NOCONFIGcommandlineparameterisused).TheconfigdirectoryonWindowsisthesamedirectoryasmakensis.exeisin.Onotherplatformsthisissetatinstalltimeanddefaultsto$PREFIX/etc/.Youcanalterthisatruntime,seesection3.1.3formoreinformation.

Previous|Contents|Next

Page 82: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 83: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.2VariablesAllvariablesareglobalandcanbeusedinSectionsorFunctions.Notethatbydefault,variablesarelimitedto1024characters.Toextendthislimit,buildNSISwithabiggervalueoftheNSIS_MAX_STRLENbuildsettingorusethespecialbuild.

4.2.1UserVariables

$VARNAME

UservariablesmustbedeclaredwiththeVarcommand.Youcanusethesevariablestostorevalues,workwithstringmanipulationetc.

4.2.1.1Var

[/GLOBAL]var_name

Declareauservariable.Allowedcharactersforvariablesnames:[a-z][A-Z][0-9]and'_'.Alldefinedvariablesareglobal,evenifdefinedinasectionorafunction.Tomakethisclear,variablesdefinedinasectionorafunctionmustusethe/GLOBALflag.The/GLOBALflagisnotrequiredoutsideofsectionsandfunctions.

Varexample

FunctiontestVarVar/GLOBALexample2

StrCpy$example"examplevalue"StrCpy$example2"anotherexamplevalue"FunctionEnd

4.2.2OtherWritableVariables

$0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$R0,$R1,$R2,$R3,$R4,$R5,

Page 84: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$R6,$R7,$R8,$R9

Registers.Thesevariablescanbeusedjustlikeuservariables,butareusuallyusedinsharedfunctionsormacros.Youdon'thavetodeclarethesevariablessoyouwon'tgetanynameconflictswhenusingtheminsharedcode.Whenusingthesevariablesinsharedcodeit'srecommendedthatyouusethestacktosaveandrestoretheiroriginalvalues.Thesevariablescanalsobeusedforcommunicationwithplug-insbecausetheycanbereadandwrittenbytheplug-inDLLs.

$INSTDIR

Theinstallationdirectory($INSTDIRismodifiableusingStrCpy,ReadRegStr,ReadINIStr,etc.-Thiscouldbeused,forexample,inthe.onInitfunctiontodoamoreadvanceddetectionofinstalllocation).

Notethatinuninstallercode,$INSTDIRcontainsthedirectorywheretheuninstallerlies.Itdoesnotnecessarilycontainthesamevalueitcontainedintheinstaller.Forexample,ifyouwritetheuninstallerto$WINDIRandtheuserdoesn'tmoveit,$INSTDIRwillbe$WINDIRintheuninstaller.Ifyouwritetheuninstallertoanotherlocation,youshouldkeeptheinstaller's$INSTDIRintheregistryoranalternativestoringfacilityandreaditintheuninstaller.

$OUTDIR

Thecurrentoutputdirectory(setimplicitlyviaSetOutPathorexplicitlyviaStrCpy,ReadRegStr,ReadINIStr,etc)

$CMDLINE

Thecommandlineoftheinstaller.Theformatofthecommandlinecanbeoneofthefollowing:

"full\pathto\installer.exe"PARAMETERPARAMETERPARAMETERinstaller.exePARAMETERPARAMETERPARAMETERForparsingoutthePARAMETERportion,seeGetParameters.If/D=isspecifiedonthecommandline(tooverridetheinstalldirectory)itwon'tshowupin$CMDLINE.

Page 85: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$LANGUAGE

Theidentifierofthelanguagethatiscurrentlyused.Forexample,Englishis1033.Youcanonlychangethisvariablein.onInit.

4.2.3Constants

ConstantscanalsobeusedintheInstallDirattribute.

NotethatsomeofthenewconstantswillnotworkoneveryOS.Forexample,$CDBURN_AREAwillonlyworkonWindowsXPandabove.Ifit'susedonWindows98,it'llbeempty.Unlessmentionedotherwise,aconstantshouldbeavailableoneveryOS.

$PROGRAMFILES,$PROGRAMFILES32,$PROGRAMFILES64

Theprogramfilesdirectory(usuallyC:\ProgramFilesbutdetectedatruntime).OnWindowsx64,$PROGRAMFILESand$PROGRAMFILES32pointtoC:\ProgramFiles(x86)while$PROGRAMFILES64pointstoC:\ProgramFiles.Use$PROGRAMFILES64wheninstallingx64applications.

$COMMONFILES,$COMMONFILES32,$COMMONFILES64

Thecommonfilesdirectory.Thisisadirectoryforcomponentsthataresharedacrossapplications(usuallyC:\ProgramFiles\CommonFilesbutdetectedatruntime).OnWindowsx64,$COMMONFILESand$COMMONFILES32pointtoC:\ProgramFiles(x86)\CommonFileswhile$COMMONFILES64pointstoC:\ProgramFiles\CommonFiles.Use$COMMONFILES64wheninstallingx64applications.

$DESKTOP

TheWindowsdesktopdirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

$EXEDIR

Thedirectorycontainingtheinstallerexecutable(technicallythisisa

Page 86: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

variableandyoucanmodifyit,butitisprobablynotagoodidea).

$EXEFILE

Thebasenameoftheinstallerexecutable.

$EXEPATH

Thefullpathoftheinstallerexecutable.

${NSISDIR}

AsymbolthatcontainsthepathwhereNSISisinstalled.UsefulifyouwanttoreferenceresourcesthatareinNSISdirectorye.g.Icons,UIsetc.

Whencompiledwithsupportforkeepingmakensisandthedatainthesameplace(thedefaultonWindows),itisinthesameplaceasmakensis,onotherplatformsitissetatcompiletime(SeetheINSTALLfileforinfo).InbothinstancesyoucanmodifyitatruntimebysettingtheNSISDIRenvironmentvariable.Seesection3.1.3formoreinfo.

$WINDIR

TheWindowsdirectory(usuallyC:\WindowsorC:\WinNTbutdetectedatruntime).

$SYSDIR

TheWindowssystemdirectory(usuallyC:\Windows\SystemorC:\WinNT\System32butdetectedatruntime).

$TEMP

Thetemporarydirectory.

$STARTMENU

Thestartmenufolder(usefulforaddingstartmenuitemsusingCreateShortcut).Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

Page 87: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$SMPROGRAMS

Thestartmenuprogramsfolder(usethiswheneveryouwant$STARTMENU\Programs).Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

$SMSTARTUP

Thestartmenuprograms/startupfolder.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

$QUICKLAUNCH

ThequicklaunchfolderforIE4activedesktopandabove.Ifquicklaunchisnotavailableitsimplyreturnsthesameas$TEMP.

$DOCUMENTS

Thedocumentsdirectory.AtypicalpathforthecurrentuserisC:\DocumentsandSettings\Foo\MyDocuments.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisnotavailableonWindows95unlessInternetExplorer4isinstalled.

$SENDTO

ThedirectorythatcontainsSendTomenushortcutitems.

$RECENT

Thedirectorythatcontainsshortcutstotheuser'srecentlyuseddocuments.

$FAVORITES

Thedirectorythatcontainsshortcutstotheuser'sfavoritewebsites,

Page 88: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

documents,etc.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisnotavailableonWindows95unlessInternetExplorer4isinstalled.

$MUSIC

Theuser'smusicfilesdirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisavailableonWindowsXP,MEandabove.

$PICTURES

Theuser'spicturefilesdirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisavailableonWindows2000,XP,MEandabove.

$VIDEOS

Theuser'svideofilesdirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisavailableonWindowsXP,MEandabove.

$NETHOOD

ThedirectorythatcontainslinkobjectsthatmayexistintheMyNetworkPlaces/NetworkNeighborhoodfolder.

ThisconstantisnotavailableonWindows95unlessInternetExplorer4withActiveDesktopisinstalled.

$FONTS

Page 89: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Thesystem'sfontsdirectory.

$TEMPLATES

Thedocumenttemplatesdirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

$APPDATA

Theapplicationdatadirectory.DetectionofthecurrentuserpathrequiresInternetExplorer4andabove.DetectionofthealluserspathrequiresInternetExplorer5andabove.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisnotavailableonWindows95unlessInternetExplorer4withActiveDesktopisinstalled.

$LOCALAPPDATA

Thelocal(non-roaming)applicationdatadirectory.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisavailableonWindowsME,2000andabove.

$PRINTHOOD

ThedirectorythatcontainslinkobjectsthatmayexistinthePrintersfolder.

ThisconstantisnotavailableonWindows95andWindows98.

$INTERNET_CACHE

InternetExplorer'stemporaryinternetfilesdirectory.

ThisconstantisnotavailableonWindows95norWindowsNT4unlessInternetExplorer4withActiveDesktopisinstalled.

Page 90: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$COOKIES

InternetExplorer'scookiesdirectory.

ThisconstantisnotavailableonWindows95norWindowsNT4unlessInternetExplorer4withActiveDesktopisinstalled.

$HISTORY

InternetExplorer'shistorydirectory.

ThisconstantisnotavailableonWindows95norWindowsNT4unlessInternetExplorer4withActiveDesktopisinstalled.

$PROFILE

Theuser'sprofiledirectory.AtypicalpathisC:\DocumentsandSettings\Foo.

ThisconstantisavailableonWindows2000andabove.

$ADMINTOOLS

Adirectorywhereadministrativetoolsarekept.Thecontextofthisconstant(AllUsersorCurrentuser)dependsontheSetShellVarContextsetting.Thedefaultisthecurrentuser.

ThisconstantisavailableonWindows2000,MEandabove.

$RESOURCES

TheresourcesdirectorythatstoresthemesandotherWindowsresources(usually$WINDIR\Resourcesbutdetectedatruntime).

ThisconstantisavailableonWindowsXPandabove.

$RESOURCES_LOCALIZED

ThelocalizedresourcesdirectorythatstoresthemesandotherWindowsresources(usually$WINDIR\Resources\1033butdetectedatruntime).

Page 91: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ThisconstantisavailableonWindowsXPandabove.

$CDBURN_AREA

AdirectorywherefilesawaitingtobeburnedtoCDarestored.

ThisconstantisavailableonWindowsXPandabove.

$HWNDPARENT

HWNDofthemainwindow(indecimal).

$PLUGINSDIR

Thepathtoatemporaryfoldercreateduponthefirstusageofaplug-inoracalltoInitPluginsDir.Thisfolderisautomaticallydeletedwhentheinstallerexits.ThismakesthisfoldertheidealfoldertoholdINIfilesforInstallOptions,bitmapsforthesplashplug-in,oranyotherfilethataplug-inneedstowork.

4.2.4ConstantsUsedinStrings

$$

Usetorepresent$.

$\r

Usetorepresentacarriagereturn(\r).

$\n

Usetorepresentanewline(\n).

$\t

Usetorepresentatab(\t).

Previous|Contents|Next

Page 92: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 93: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.3LabelsLabelsarethetargetsofGotoinstructionsandthevariousbranchinginstructions(suchasIfErrors,MessageBox,IfFileExists,andStrCmp).LabelsmustbewithinaSectionoraFunction.Labelsarelocalinscope,meaningtheyareonlyaccessiblefromwithintheSectionorFunctionthattheyresidein.Todeclarealabel,simplyuse:

MyLabel:

Labelscannotbeginwitha-,+,!,$,or0-9.Whenspecifyinglabelsforthevariousinstructionsthatrequirethem,rememberthatbothanemptystring("")and0bothrepresentthenextinstruction(meaningnoGotowilloccur).Labelsbeginningwithaperiod(.)areglobal,meaningyoucanjumptothemfromanyfunctionorsection(thoughyoucannotjumptoanuninstallgloballabelfromtheinstaller,andviceversa).

Previous|Contents|Next

Page 94: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 95: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.4RelativeJumpsUnlikelabels,relativejumpsare,asthenamesuggests,relativetotheplacetheyarecalledfrom.Youcanuserelativejumpswhereveryoucanuselabels.Relativejumpsaremarkedbynumbers.+1jumpstothenextinstruction(thedefaultadvancement),+2willskiponeinstructionandgotothesecondinstructionfromthecurrentinstruction,-2willjumptwoinstructionsbackward,and+10willskip9instructions,jumpingtothetenthinstructionfromthecurrentinstruction.

Ainstructioniseverycommandthatisexecutedatrun-time,whentheinstallerisrunning.MessageBox,Goto,GetDLLVersion,FileRead,SetShellVarContextareallinstructions.AddSize,Section,SectionGroup,SectionEnd,SetOverwrite(andeverythingunderCompilerFlags),Name,SetFont,LangString,arenotinstructionsbecausetheyareexecutedatcompiletime.

Examples:

Goto+2MessageBoxMB_OK"Youwillnevereverseethismessagebox"MessageBoxMB_OK"Thelastmessagewasskipped,thisoneshouldbeshown"

Goto+4MessageBoxMB_OK"Thefollowingmessagewillbeskipped"Goto+3MessageBoxMB_OK"Youwillnevereverseethismessagebox"Goto-3MessageBoxMB_OK"Done"

Notethatmacroinsertionisnotconsideredasoneinstructionwhenitcomestorelativejumps.Themacroisexpandedbeforerelativejumpsareapplied,andsorelativejumpscanjumpintocodeinsideaninsertedmacro.Thefollowingcode,forexample,willnotskipthemacro.Itwillshowamessagebox.

!macrorelative_jump_test

Page 96: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MessageBoxMB_OK"firstmacroline"MessageBoxMB_OK"secondmacroline"!macroend

Goto+2!insertmacrorelative_jump_test

Previous|Contents|Next

Page 97: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 98: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.5PagesEach(non-silent)NSISinstallerhasasetofpages.EachpagecanbeaNSISbuilt-inpageoracustompagecreatedbyauser'sfunction(withnsDialogsorInstallOptionsforexample).

Thescriptcontrolsthepageorder,appearance,andbehavior.Youcanskippages,paintthemwhite,forcetheusertostayinacertainpageuntilacertainconditionismet,showareadmepage,showcustomdesignedpagesforinputandmore.Inthissectionyouwilllearnhowtodoalloftheabove.

Therearetwobasiccommandsregardingpages,PageandUninstPage.Thefirstaddsapagetotheinstaller,thesecondaddsapagetotheuninstaller.OntopofthosetwothereisthePageExcommandwhichallowsyoutoaddapagetoeitheroneandwithgreateramountofoptions.PageExallowsyoutosetoptionstothespecificpageyouareaddinginsteadofusingthedefaultthat'ssetoutsideofPageEx.

4.5.1Ordering

ThepageorderissetsimplybytheorderPage,UninstPageandPageExappearinthescript.Forexample:

PagelicensePagecomponentsPagedirectoryPageinstfilesUninstPageuninstConfirmUninstPageinstfiles

ThiscodewilltellNSIStofirstshowthelicensepage,thenthecomponentsselectionpage,thenthedirectoryselectionpageandfinallytheinstalllogwheresectionsareexecuted.Theuninstallerwillfirstshowtheuninstallconfirmationpageandthentheuninstallationlog.

Youcanspecifythesamepagetypemorethanonce.

Page 99: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ForbackwardscompatibilitywitholdNSISscripts,thefollowinginstallerpageswillbeaddedifnoinstallerpagecommandsareused:license(ifLicenseTextandLicenseDatawerespecified),components(ifComponentTextwasspecifiedandthereismorethanonevisiblesection),directory(ifDirTextwasspecified)andinstfiles.Whentherearenouninstallerpagecommandsthefollowinguninstallerpageswillbeadded:uninstallconfirmationpage(ifUninstallTextwasspecified)andinstfiles.Thismethodisdeprecated,convertingscriptstousepagecommandsishighlyrecommendedbecauseyoucanusethenewstandardlanguagestrings.

4.5.2PageOptions

Eachpagehasitsuniquesetofdatathatdefineshowitwilllookandact.Thissectiondescribeswhatdataeachtypeofpageusesandhowyoucansetit.Callbackfunctionsaredescribedbelowandarenotdealtwithinthissection.

Thelistbelowliststhecommandsthataffectacertainpagetype.Unlessotherwisementioned,thesecommandscanbeusedbothinsideandoutsideofaPageExblock.IfusedinsideaPageExblocktheywillonlyaffectthecurrentpagebeingsetbyPageEx,otherwisetheywillsetthedefaultforallotherpages.

Licensepage

LicenseTextLicenseDataLicenseForceSelection

Componentsselectionpage

ComponentText

Directoryselectionpage

DirTextDirVar(canonlybeusedinPageEx)DirVerify

Page 100: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Un/Installationlogpage

DetailsButtonTextCompletedText

Uninstallconfirmationpage

DirVar(canonlybeusedinPageEx)UninstallText

UseCaptiontosetthepagecaption.

4.5.3Callbacks

Eachbuilt-inpagehasthreecallbackfunctions:thepre-function,theshowfunctionandtheleave-function.Thepre-functioniscalledrightbeforethepageiscreated,theshow-functioniscalledrightafterithasbeencreatedbutbeforeitisshownandtheleave-functioniscalledrightaftertheuserhaspressedthenextbutton(beforeactuallyleavingthepage).

Thepre-functionallowsyoutoskipthepageusingAbort.Theshow-functionallowsyoutotweakthepage'suserinterfacewithCreateFont,SetCtlColors,SendMessageetc.Theleave-functionallowsyoutoforcetheusertostayonthecurrentpageusingAbort.

Acustompageonlyhastwocallbackfunctions,onethatcreatesitwhichismandatory,andoneleave-functionthatactsjustliketheleave-functionforbuilt-inpages.

Examples:

PagelicenseskipLicense""stayInLicensePagecustomcustomPage""":custompage"Pageinstfiles

FunctionskipLicenseMessageBoxMB_YESNO"Doyouwanttoskipthelicensepage?"IDNOno

Page 101: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Abortno:FunctionEnd

FunctionstayInLicenseMessageBoxMB_YESNO"Doyouwanttostayinthelicensepage?"IDNOnoAbortno:FunctionEnd

FunctioncustomPageGetTempFileName$R0File/oname=$R0customPage.iniInstallOptions::dialog$R0Pop$R1StrCmp$R1"cancel"doneStrCmp$R1"back"doneStrCmp$R1"success"doneerror:MessageBoxMB_OK|MB_ICONSTOP"InstallOptionserror:$\r$\n$R1"done:FunctionEnd

4.5.4Page

custom[creator_function][leave_function][caption][/ENABLECANCEL]ORinternal_page_type[pre_function][show_function][leave_function][/ENABLECANCEL]

Addsaninstallerpage.Seetheabovesectionsformoreinformationaboutbuilt-inversuscustompagesandaboutcallbackfunctions.

internal_page_typecanbe:

license-licensepagecomponents-componentsselectionpagedirectory-installationdirectoryselectionpageinstfiles-installationpagewherethesectionsareexecuteduninstConfirm-uninstallconfirmationpage

Page 102: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Thelastpageoftheinstallerhasitscancelbuttondisabledtopreventconfusion.Toenableitanyway,use/ENABLECANCEL.

4.5.5UninstPage

custom[creator_function][leave_function][caption][/ENABLECANCEL]ORinternal_page_type[pre_function][show_function][leave_function][/ENABLECANCEL]

Addsanuninstallerpage.Seetheabovesectionsformoreinformationaboutbuilt-inversuscustompagesandaboutcallbackfunctions.

SeePageforpossiblevaluesofinternal_page_type.

4.5.6PageEx

[un.](custom|uninstConfirm|license|components|directory|instfiles)

Addsaninstallerpageoranuninstallerpageiftheun.prefixwasused.EveryPageExmusthaveamatchingPageExEnd.InaPageExblockyoucansetoptionsthatarespecifictothispageandwillnotbeusedforotherpages.OptionsthatarenotsetwillreverttowhatwassetoutsidethePageExblockorthedefaultifnothingwasset.Tosetthesub-captionforapageuseCaptionorSubCaptiontosetthedefault.TosetthecallbackfunctionsforapagesetwithPageExusePageCallbacks.Seetheabovesectionsformoreinformationaboutbuilt-inversuscustompages.

Exampleusage:

PageExlicenseLicenseText"Readme"LicenseDatareadme.rtfPageExEnd

PageExlicenseLicenseDatalicense.txtLicenseForceSelectioncheckbox

Page 103: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

PageExEnd

4.5.7PageExEnd

EndsaPageExblock.

4.5.8PageCallbacks

([creator_function][leave_function])|([pre_function][show_function][leave_function])

SetsthecallbackfunctionsforapagedefinedusingPageEx.CanonlybeusedinsideaPageExblock.Seetheabovesectionsformoreinformationaboutcallbackfunctions.

PageExlicensePageCallbackslicensePrelicenseShowlicenseLeavePageExEnd

Previous|Contents|Next

Page 104: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 105: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.6SectionsEachNSISinstallercontainsoneormoresections.Eachofthesesectionsarecreated,modified,andendedwiththefollowingcommands.

Eachsectioncontainszeroormoreinstructions.Sectionsareexecutedinorderbytheresultinginstaller,andifacomponentpageisused,theuserwillhavetheoptionofdisabling/enablingeachvisiblesection.Ifasection'snameis'Uninstall'orisprefixedwith'un.',it'sanuninstallersection.

4.6.1SectionCommands

4.6.1.1AddSize

size_kb

Tellstheinstallerthatthecurrentsectionneedsanadditional"size_kb"kilobytesofdiskspace.Onlyvalidwithinasection(willhavenoeffectoutsideofasectionorinafunction).

SectionAddSize500SectionEnd

4.6.1.2Section

[/o][([!]|[-])section_name][section_index_output]

Beginsandopensanewsection.Ifsection_nameisempty,omitted,orbeginswitha-,thenitisahiddensectionandtheuserwillnothavetheoptionofdisablingit.Ifthesectionnameis'Uninstall'orisprefixedwith'un.',thenitisaanuninstallersection.Ifsection_index_outputisspecified,theparameterwillbe!definedwiththesectionindex(canbe

Page 106: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

usedwithSectionSetTextetc).Ifthesectionnamebeginswitha!,thesectionwillbedisplayedasbold.Ifthe/oswitchisspecified,thesectionwillbeunselectedbydefault.

Section"-hiddensection"SectionEnd

Section#hiddensectionSectionEnd

Section"!boldsection"SectionEnd

Section/o"optional"SectionEnd

Section"installsomething"SEC_IDXSectionEnd

Toaccessthesectionindex,curlybracketsmustbeusedandthecodemustbelocatedbelowthesectioninthescript.

Sectiontest1sec1_idSectionEnd

Sectiontest2sec2_idSectionEnd

Function.onInitSectionGetText${sec2_id}$0MessageBoxMB_OK"nameof${sec2_id}:$\n$0"#willcorrectlydisplay'nameof1:test2'FunctionEnd

Function.onInitSectionGetText${sec2_id}$0MessageBoxMB_OK"nameof${sec2_id}:$\n$0"#willincorrectlydisplay'nameof${sec2_id}:test1'#plusawarningstating:#unknownvariable/constant"{sec2_id}"detected,ignoring

Page 107: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionEnd

Sectiontest1sec1_idSectionEnd

Sectiontest2sec2_idSectionEnd

4.6.1.3SectionEnd

Thiscommandclosesthecurrentopensection.

4.6.1.4SectionIn

insttype_index[insttype_index][RO]

Thiscommandspecifieswhichinstalltypes(seeInstType)thecurrentsectiondefaultstotheenabledstatein.MultipleSectionIncommandscanbespecified(theyarecombined).IfyouspecifyROasaparameter,thenthesectionwillberead-only,meaningtheuserwon'tbeabletochangeitsstate.ThefirstinstalltypedefinedusingInstTypeisindexed1,thenext2andsoon.

InstType"full"InstType"minimal"

Section"asection"SectionIn12SectionEnd

Section"anothersection"SectionIn1SectionEnd

4.6.1.5SectionGroup

Page 108: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

[/e]section_group_name[index_output]

Thiscommandinsertsasectiongroup.ThesectiongroupmustbeclosedwithSectionGroupEnd,andshouldcontain1ormoresections.Ifthesectiongroupnamebeginswitha!,itsnamewillbedisplayedwithaboldfont.If/eispresent,thesectiongroupwillbeexpandedbydefault.Ifindex_outputisspecified,theparameterwillbe!definedwiththesectionindex(canbeusedwithSectionSetTextetc).Ifthenameisprefixedwith'un.'thesectiongroupisanuninstallersectiongroup.

SectionGroup"somestuff"Section"asection"SectionEndSection"anothersection"SectionEndSectionGroupEnd

4.6.1.6SectionGroupEnd

ClosesasectiongroupopenedwithSectionGroup.

4.6.2UninstallSection

AspecialSectionnamed'Uninstall'mustbecreatedinordertogenerateanuninstaller.Thissectionshouldremoveallfiles,registrykeysetcetcthatwereinstalledbytheinstaller,fromthesystem.Hereisanexampleofasimpleuninstallsection:

Section"Uninstall"Delete$INSTDIR\Uninst.exe;deleteself(seeexplanationbelowwhythisworks)Delete$INSTDIR\myApp.exeRMDir$INSTDIRDeleteRegKeyHKLMSOFTWARE\myAppSectionEnd

ThefirstDeleteinstructionworks(deletingtheuninstaller),becausetheuninstalleristransparentlycopiedtothesystemtemporarydirectoryfor

Page 109: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

theuninstall.

Notethatinuninstallercode,$INSTDIRcontainsthedirectorywheretheuninstallerlies.Itdoesnotnecessarilycontainthesamevalueitcontainedintheinstaller.

Previous|Contents|Next

Page 110: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 111: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.7FunctionsFunctionsaresimilartoSectionsinthattheycontainzeroormoreinstructions.Userfunctionsarenotcalledbytheinstallerdirectly,insteadtheyarecalledfromSectionsusingtheCallinstruction.Callbackfunctionswillbecalledbytheinstallerwhenacertaineventoccurs.

FunctionsmustbedeclaredoutsideofSectionsorotherFunctions.

4.7.1FunctionCommands

4.7.1.1Function

[function_name]

Beginsandopensanewfunction.Functionnamesbeginningwith"."(e.g.".Whatever")aregenerallyreservedforcallbackfunctions.Functionnamesbeginningwith"un."arefunctionsthatwillbegeneratedintheUninstaller.Hence,normalinstallSectionsandfunctionscannotcalluninstallfunctions,andtheUninstallSectionanduninstallfunctionscannotcallnormalfunctions.

Functionfunc#somecommandsFunctionEnd

SectionCallfuncSectionEnd

4.7.1.2FunctionEnd

Thiscommandclosesthecurrentopenfunction.

4.7.2CallbackFunctions

Page 112: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Youcancreatecallbackfunctions(whichhavespecialnames),thatwillbecalledbytheinstalleratcertainpointsintheinstall.Belowisalistofavailablecallbacks:

4.7.2.1InstallCallbacks

4.7.2.1.1.onGUIInit

Thiscallbackwillbecalledjustbeforethefirstpageisloadedandtheinstallerdialogisshown,allowingyoutotweaktheuserinterface.

Example:

!include"WinMessages.nsh"

Function.onGUIInit#1028istheidofthebrandingtextcontrolGetDlgItem$R0$HWNDPARENT1028CreateFont$R1"Tahoma"10700SendMessage$R0${WM_SETFONT}$R10#setbackgroundcolortowhiteandtextcolortoredSetCtlColors$R0FFFFFFFF0000FunctionEnd

4.7.2.1.2.onInit

Thiscallbackwillbecalledwhentheinstallerisnearlyfinishedinitializing.Ifthe'.onInit'functioncallsAbort,theinstallerwillquitinstantly.

Herearetwoexamplesofhowthismightbeused:

Function.onInitMessageBoxMB_YESNO"Thiswillinstall.Continue?"IDYESNoAbortAbort;causesinstallertoquit.NoAbort:FunctionEnd

or:

Page 113: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Function.onInitReadINIStr$INSTDIR$WINDIR\wincmd.iniConfigurationInstallDirStrCmp$INSTDIR""0NoAbortMessageBoxMB_OK"WindowsCommandernotfound.Unabletogetinstallpath."Abort;causesinstallertoquit.NoAbort:FunctionEnd

4.7.2.1.3.onInstFailed

Thiscallbackiscalledwhentheuserhitsthe'cancel'buttonaftertheinstallhasfailed(ifitcouldnotextractafile,ortheinstallscriptusedtheAbortcommand).

Example:

Function.onInstFailedMessageBoxMB_OK"Betterlucknexttime."FunctionEnd

4.7.2.1.4.onInstSuccess

Thiscallbackiscalledwhentheinstallwassuccessful,rightbeforetheinstallwindowcloses(whichmaybeaftertheuserclicks'Close'ifAutoCloseWindoworSetAutoCloseissettofalse).

Example:

Function.onInstSuccessMessageBoxMB_YESNO"Congrats,itworked.Viewreadme?"IDNONoReadmeExecnotepad.exe;viewreadmeorwhatever,ifyouwant.NoReadme:FunctionEnd

4.7.2.1.5.onGUIEnd

Thiscallbackiscalledrightaftertheinstallerwindowcloses.Useittofreeanyuserinterfacerelatedplug-insifneeded.

Page 114: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.7.2.1.6.onMouseOverSection

Thiscallbackiscalledwheneverthemousepositionoverthesectionstreehaschanged.Thisallowsyoutosetadescriptionforeachsectionforexample.Thesectionidonwhichthemouseisovercurrentlyisstored,temporarily,in$0.

Example:

Function.onMouseOverSectionFindWindow$R0"#32770"""$HWNDPARENTGetDlgItem$R0$R01043;descriptionitem(mustbeaddedtotheUI)

StrCmp$00""+2SendMessage$R0${WM_SETTEXT}0"STR:firstsectiondescription"

StrCmp$01""+2SendMessage$R0${WM_SETTEXT}0"STR:secondsectiondescription"FunctionEnd

4.7.2.1.7.onRebootFailed

ThiscallbackiscalledifRebootfails.WriteUninstaller,plug-ins,FileandWriteRegBinshouldnotbeusedinthiscallback.

Example:

Function.onRebootFailedMessageBoxMB_OK|MB_ICONSTOP"Rebootfailed.Pleaserebootmanually."/SDIDOKFunctionEnd

4.7.2.1.8.onSelChange

Calledwhentheselectionchangesonthecomponentpage.UsefulforusingwithSectionSetFlagsandSectionGetFlags.

Selectionchangesincludebothsectionselectionandinstallationtypechanges.Thesectionidofthechangedsectionisstoredin$0.$0is-1iftheinstallationtypechanged.Youonlygetnotificationsforchanges

Page 115: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

initiatedbytheuserandonlyonenotificationperactioneveniftheactionalsoaffectedchildsectionsand/orparentgroups.

4.7.2.1.9.onUserAbort

Thiscallbackiscalledwhentheuserhitsthe'cancel'button,andtheinstallhasn'talreadyfailed.IfthisfunctioncallsAbort,theinstallwillnotbeaborted.

Example:

Function.onUserAbortMessageBoxMB_YESNO"Abortinstall?"IDYESNoCancelAbortAbort;causesinstallertonotquit.NoCancelAbort:FunctionEnd

4.7.2.1.10.onVerifyInstDir

Thiscallbackenablescontroloverwhetherornotaninstallationpathisvalidforyourinstaller.Thiscodewillbecalledeverytimetheuserchangestheinstalldirectory,soitshouldn'tdoanythingcrazywithMessageBoxorthelike.IfthisfunctioncallsAbort,theinstallationpathin$INSTDIRisdeemedinvalid.

Example:

Function.onVerifyInstDirIfFileExists$INSTDIR\Winamp.exePathGoodAbort;if$INSTDIRisnotawinampdirectory,don'tletusinstalltherePathGood:FunctionEnd

4.7.2.2UninstallCallbacks

4.7.2.2.1un.onGUIInit

Thiscallbackwillbecalledjustbeforethefirstpageisloadedandthe

Page 116: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

installerdialogisshown,allowingyoutotweaktheuserinterface.

Havealookat.onGUIInitforanexample.

4.7.2.2.2un.onInit

Thiscallbackwillbecalledwhentheuninstallerisnearlyfinishedinitializing.Ifthe'un.onInit'functioncallsAbort,theuninstallerwillquitinstantly.Notethatthisfunctioncanverifyand/ormodify$INSTDIRifnecessary.

Herearetwoexamplesofhowthismightbeused:

Functionun.onInitMessageBoxMB_YESNO"Thiswilluninstall.Continue?"IDYESNoAbortAbort;causesuninstallertoquit.NoAbort:FunctionEnd

or:

Functionun.onInitIfFileExists$INSTDIR\myfile.exefoundMessageboxMB_OK"Uninstallpathincorrect"Abortfound:FunctionEnd

4.7.2.2.3un.onUninstFailed

Thiscallbackiscalledwhentheuserhitsthe'cancel'buttonaftertheuninstallhasfailed(ifitusedtheAbortcommandorotherwisefailed).

Example:

Functionun.onUninstFailedMessageBoxMB_OK"Betterlucknexttime."FunctionEnd

Page 117: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.7.2.2.4un.onUninstSuccess

Thiscallbackiscalledwhentheuninstallwassuccessful,rightbeforetheinstallwindowcloses(whichmaybeaftertheuserclicks'Close'ifSetAutoCloseissettofalse)..

Example:

Functionun.onUninstSuccessMessageBoxMB_OK"Congrats,it'sgone."FunctionEnd

4.7.2.2.5un.onGUIEnd

Thiscallbackiscalledrightaftertheuninstallerwindowcloses.Useittofreeanyuserinterfacerelatedplug-insifneeded.

4.7.2.2.6un.onRebootFailed

ThiscallbackiscalledifRebootfails.WriteUninstaller,plug-ins,FileandWriteRegBinshouldnotbeusedinthiscallback.

Example:

Functionun.onRebootFailedMessageBoxMB_OK|MB_ICONSTOP"Rebootfailed.Pleaserebootmanually."/SDIDOKFunctionEnd

4.7.2.2.7un.onSelChange

Calledwhentheselectionchangesonthecomponentpage.UsefulforusingwithSectionSetFlagsandSectionGetFlags.

Selectionchangesincludebothsectionselectionandinstallationtypechanges.Thesectionidofthechangedsectionisstoredin$0.$0is-1iftheinstallationtypechanged.Youonlygetnotificationsforchangesinitiatedbytheuserandonlyonenotificationperactioneveniftheactionalsoaffectedchildsectionsand/orparentgroups.

Page 118: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.7.2.2.8un.onUserAbort

Thiscallbackiscalledwhentheuserhitsthe'cancel'buttonandtheuninstallhasn'talreadyfailed.IfthisfunctioncallsAbort,theinstallwillnotbeaborted.

Example:

Functionun.onUserAbortMessageBoxMB_YESNO"Abortuninstall?"IDYESNoCancelAbortAbort;causesuninstallertonotquit.NoCancelAbort:FunctionEnd

Previous|Contents|Next

Page 119: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 120: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8InstallerAttributes

4.8.1GeneralAttributes

Thecommandsbelowalladjustattributesoftheinstaller.Theseattributescontrolhowtheinstallerlooksandfunctions,includingwhichpagesarepresentintheinstaller,whichtextisdisplayedineachpartofeachpage,thenameoftheinstaller,theicontheinstalleruses,thedefaultinstallationdirectoryandmore.NotethattheseattributescanbesetanywhereinthefileexceptinaSectionorFunction.

Defaultsareboldandunderlined

4.8.1.1AddBrandingImage

(left|right|top|bottom)(width|height)[padding]

Addsabrandingimageonthetop,bottom,left,orrightoftheinstaller.Itssizewillbesetaccordingtothewidth/heightspecified,theinstallerwidth/heightandtheinstallersfont.Thefinalsizewillnotalwaysbewhatyourequested;havealookattheoutputofthecommandfortheactualsize.Becausethisdependsontheinstallersfont,youshoulduseSetFontbeforeAddBrandingImage.Thedefaultpaddingvalueis2.

AddBrandingImageonlyaddsaplaceholderforanimage.Tosettheimageitselfatruntime,useSetBrandingImage.

AddBrandingImageleft100AddBrandingImageright50AddBrandingImagetop20AddBrandingImagebottom35AddBrandingImageleft1005

4.8.1.2AllowRootDirInstall

Page 121: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

true|false

Controlswhetherornotinstallsareallowedintherootdirectoryofadrive,ordirectlyintoanetworkshare.Setto'true'tochangethesafebehavior,whichpreventsusersfromselectingC:\or\\Server\Shareasaninstall(andlateron,uninstall)directory.Foradditionaldirectoryselectionpagecustomizability,see.onVerifyInstDir.

4.8.1.3AutoCloseWindow

true|false

Setswhetherornottheinstallwindowautomaticallycloseswhencompleted.ThisisoverrideablefromasectionusingSetAutoClose.

4.8.1.4BGFont

[font_face[height[weight][/ITALIC][/UNDERLINE][/STRIKE]]]

Specifiesthefontusedtoshowthetextonthebackgroundgradient.TosetthecoloruseBGGradient.Thedefaultfontwillbeusedifnoparametersarespecified.ThedefaultfontisboldanditalicTimesNewRoman.

4.8.1.5BGGradient

[off|(topcbotc[textcolor|notext])]

Specifieswhetherornottouseagradientbackgroundwindow.If'off',theinstallerwillnotshowabackgroundwindow,ifnoparametersarespecified,thedefaultblacktobluegradientisused,andotherwisethetop_colororbottom_colorareusedtomakeagradient.Top_colorandbottom_colorarespecifiedusingtheformRRGGBB(inhexadecimal,asinHTML,onlyminustheleading'#',since#canbeusedforcomments).'textcolor'canbespecifiedaswell,or'notext'canbespecifiedtoturnthebigbackgroundtextoff.

Page 122: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8.1.6BrandingText

/TRIM(LEFT|RIGHT|CENTER)text

Setsthetextthatisshownatthebottomoftheinstallwindow(bydefaultitis'NullsoftInstallSystemvX.XX').Settingthistoanemptystring("")usesthedefault;tosetthestringtoblank,use""(aspace).Ifitdoesn'tmattertoyou,leaveitthedefaultsothateverybodycanknowwhytheinstallerdidn'tsuck:).Use/TRIMLEFT,/TRIMRIGHTor/TRIMCENTERtotrimdownthesizeofthecontroltothesizeofthestring.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedon.onInit.

4.8.1.7Caption

caption

WhenusedoutsideaPageExblock:Setsthetextforthetitlebaroftheinstaller.Bydefaultitis'$(^Name)Setup',whereNameisspecifiedbytheNameinstruction.Youcanhoweveroverrideitwith'MyAppInstaller'orwhatever.Ifyouspecifyanemptystring(""),thedefaultwillbeused(youcanspecify""tosimulateaemptystring).

WhenusedinsideaPageExblock:Setsthesubcaptionofthecurrentpage.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedon.onInitor.onGUIInit.

4.8.1.8ChangeUI

dialogui_file.exe

Replacesdialog(IDD_LICENSE,IDD_DIR,IDD_SELCOM,IDD_INST,IDD_INSTFILES,IDD_UNINSTorIDD_VERIFY)withadialogfromui_file.exewiththesameresourceID.Youcanalsospecify'all'asthe

Page 123: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

dialogifyouwishtoreplaceall7ofthedialogsatoncefromthesameUIfile.ForsomeexampleUIslookatContrib\UIsunderyourNSISdirectory.

IDD_LICENSEmustcontainIDC_EDIT1(RICHEDITcontrol).IDD_DIRmustcontainIDC_DIR(editbox),IDC_BROWSE(button)andIDC_CHECK1(checkbox).IDD_SELCOMmustcontainIDC_TREE1(SysTreeView32control),andIDC_COMBO1(combobox).IDD_INSTmustcontainIDC_BACK(button),IDC_CHILDRECT(staticcontrolthesizeofallotherdialogs),IDC_VERSTR(static),IDOK(button),andIDCANCEL(button).Ifanimagecontrol(staticwithSS_BITMAPstyle)willbefoundinthisdialogitwillbeusedasthedefaultforSetBrandingImage.IDD_INSTFILESmustcontainIDC_LIST1(SysListView32control),IDC_PROGRESS(msctls_progress32control),andIDC_SHOWDETAILS(button).IDD_UNINSTmustcontainIDC_EDIT1(editbox).IDD_VERIFYmustcontainIDC_STR(static).

ChangeUIall"${NSISDIR}\Contrib\UIs\sdbarker_tiny.exe"

4.8.1.9CheckBitmap

bitmap.bmp

Specifiesthebitmapwiththecheckboximagesusedinthecomponent-selectionpagetreeview.

Thisbitmapshouldhaveasizeof96x16pixels,nomorethan8bpp(256colors)andcontainsix16x16imagesforthedifferentstates(inorder:selectionmask,notchecked,checked,greyedout,unchecked&read-only,checked&read-only).Usemagentaasmaskcolor(thisareawillbetransparent).

4.8.1.10CompletedText

text

Page 124: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Replacesthedefaulttext("Completed")thatisprintedattheendoftheinstallifparameterisspecified.Otherwise,thedefaultisused.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforethemessageisprinted.

4.8.1.11ComponentText

[text[subtext][subtext2]]

Usedtochangethedefaulttextonthecomponentpage.

text:Textabovethecontrols,totherightoftheinstallationicon.

subtext:Textnexttotheinstallationtypeselection.

subtext2:Texttotheleftofthecomponentslistandbelowtheinstallationtype.

Thedefaultstringwillbeusedifastringisempty("").

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforethecomponentspageiscreated.

4.8.1.12CRCCheck

on|off|force

SpecifieswhetherornottheinstallerwillperformaCRConitselfbeforeallowinganinstall.Notethatiftheuseruses/NCRConthecommandlinewhenexecutingtheinstaller,andyoudidn'tspecify'force',theCRCwillnotoccur,andtheuserwillbeallowedtoinstalla(potentially)corruptedinstaller.

4.8.1.13DetailsButtonText

show_details_text

Page 125: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Replacesthedefaultdetailsbuttontextof"Showdetails",ifparameterisspecified(otherwisethedefaultisused).

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforetheinstalllog(instfiles)pageiscreated.

4.8.1.14DirText

[text][subtext][browse_button_text][browse_dlg_text]

Usedtochangethedefaulttextonthedirectorypage.

text:Textabovethecontrols,totherightoftheinstallationicon.

subtext:Textonthedirectoryselectionframe.

browse_button_text:TextontheBrowsebutton.

browse_dlg_text:Textonthe"BrowseForFolder"dialog,appearsafterclickingon"Browse"button.

Thedefaultstringwillbeusedifastringisempty("").

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforethedirectorypageiscreated.

4.8.1.15DirVar

user_var(dirinput/output)

Specifieswhichvariableistobeusedtocontainthedirectoryselected.Thisvariableshouldbeinitializedwithadefaultvalue.Thisallowsyoutoeasilycreatetwodifferentdirectorypagesthatwillnotrequireyoutomovevaluesinandoutof$INSTDIR.Thedefaultvariableis$INSTDIR.ThiscanonlybeusedinPageExfordirectoryanduninstConfirmpages.

VarANOTHER_DIRPageExdirectory

Page 126: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DirVar$ANOTHER_DIRPageExEnd

SectionSetOutPath$INSTDIRFile"afile.dat"SetOutPath$ANOTHER_DIRFile"anotherfile.dat"SectionEnd

4.8.1.16DirVerify

auto|leave

If`DirVerifyleave'isused,theNextbuttonwillnotbedisablediftheinstallationdirectoryisnotvalidorthereisnotenoughspace.AflagthatyoucanreadintheleavefunctionusingGetInstDirErrorwillbesetinstead.

PageExdirectoryDirVerifyleavePageCallbacks""""dirLeavePageExEnd

4.8.1.17FileErrorText

file_error_text[noignore_file_error_text]

Replacesthedefaulttextthatcomesupwhenafilecannotbewrittento.Thisstringcancontainareferenceto$0,whichisthefilename($0istemporarilychangedtothisvalue).Example:"Cannotwritetofile$\r$\n$0$\r$\ngoodluck.".

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforeFileisused.

Page 127: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8.1.18Icon

[path\]icon.ico

Setstheiconoftheinstaller.Everyimageintheiconfilewillbeincludedintheinstaller.UseUninstallIcontosettheuninstallericon.

4.8.1.19InstallButtonText

install_button_text

Ifparameterisspecified,overridesthedefaultinstallbuttontext(of"Install")withthespecifiedtext.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforetheinstallbuttonshows.

4.8.1.20InstallColors

/windows|(foreground_colorbackground_color)

Setsthecolorstousefortheinstallinfoscreen(thedefaultis00FF00000000.UsetheformRRGGBB(inhexadecimal,asinHTML,onlyminustheleading'#',since#canbeusedforcomments).Notethatif"/windows"isspecifiedastheonlyparameter,thedefaultwindowscolorswillbeused.

4.8.1.21InstallDir

definstdir

Setsthedefaultinstallationdirectory.Seethevariablessectionforvariablesthatcanbeusedtomakethisstring(especially$PROGRAMFILES).Notethatthepartofthisstringfollowingthelast\willbeusediftheuserselects'browse',andmaybeappendedbackontothestringatinstalltime(todisablethis,endthedirectorywitha\

Page 128: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

(whichwillrequiretheentireparametertobeenclosedwithquotes).Ifthisdoesn'tmakeanysense,playaroundwiththebrowsebuttonabit.

4.8.1.22InstallDirRegKey

root_keysubkeykey_name

Thisattributetellstheinstallertocheckastringintheregistryanduseitastheinstalldirifthatstringisvalid.Ifthisattributeispresent,itwilloverridetheInstallDirattributeiftheregistrykeyisvalid,otherwiseitwillfallbacktotheInstallDirvalue.Whenqueryingtheregistry,thiscommandwillautomaticallyremoveanyquotes.Ifthestringendsin".exe",itwillautomaticallyremovethefilenamecomponentofthestring(i.e.ifthestringis"C:\ProgramFiles\Foo\app.exe",itwillknowtouse"C:\ProgramFiles\Foo").Formoreadvancedinstalldirectoryconfiguration,set$INSTDIRin.onInit.

LanguagestringsandvariablescannotbeusedwithInstallDirRegKey.

InstallDirRegKeyHKLMSoftware\NSIS""InstallDirRegKeyHKLMSoftware\ACME\ThingyInstallLocation

4.8.1.23InstProgressFlags

[flag[...]]

Validvaluesforflagare"smooth"(smooththeprogressbar)or"colored"(colortheprogressbarwiththecolorssetbyInstallColors.Examples:"InstProgressFlags"(defaultold-schoolwindowslook),"InstProgressFlagssmooth"(newsmoothlook),"InstProgressFlagssmoothcolored"(coloredsmoothlookwhee).Note:neither"smooth"or"colored"workwithXPStyleonwhentheinstallerrunsonWindowsXPwithamoderntheme.

4.8.1.24InstType

Page 129: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

install_type_name|/NOCUSTOM|/CUSTOMSTRING=str|/COMPONENTSONLYONCUSTOM

Addsaninstalltypetotheinstalltypelist,ordisablesthecustominstalltype.Therecanbeasmanyas32types,eachonespecifyingthenameoftheinstalltype.Ifthenameisprefixedwith'un.'itisanuninstallerinstalltype.Thenamecancontainvariableswhichwillbeprocessedatruntimebeforethecomponentspageshows.AnotherwayofchangingtheInstTypenameduringruntimeistheInstTypeSetTextcommand.ThedifferenceisthatwithInstTypeSetTextyouaresavingyourprecioususervariables.Thefirsttypeisthedefault(generally'Typical').Ifthe/NOCUSTOMswitchisspecified,thenthe"custom"installtypeisdisabled,andtheuserhastochooseoneofthepre-definedinstalltypes.Alternatively,ifthe/CUSTOMSTRINGswitchisspecified,theparameterwilloverridethe"Custom"installtypetext.Alternatively,ifthe/COMPONENTSONLYONCUSTOMflagisspecified,thecomponentlistwillonlybeshownifthe"Custom"installtypeisselected.

Acceptsvariablesfortypenames.Ifvariablesareused,theymustbeinitializedbeforethecomponentspageiscreated.

4.8.1.25LicenseBkColor

color|/gray|/windows

Setsthebackgroundcolorofthelicensedata.ColorisspecifiedusingtheformRRGGBB(inhexadecimal,asinHTML,onlyminustheleading'#',since#canbeusedforcomments).Defaultis'/gray'.YoucanalsousetheWindowsOSdefinedcolorbyusing'/windows'.

4.8.1.26LicenseData

licdata.(txt|rtf)

SpecifiesatextfileoraRTFfiletouseforthelicensethattheusercanread.Omitthistonothavealicensedisplayed.NotethatthefilemustbeinDOStextformat(\r\n).TodefineamultilinguallicensedatauseLicenseLangString.

Page 130: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IfyouareusingaRTFfileitisrecommendedthatyouedititwithWordPadandnotMSWord.UsingWordPadwillresultinamuchsmallerfile.

UseLicenseLangStringtoshowadifferentlicenseforeverylanguage.

4.8.1.27LicenseForceSelection

(checkbox[accept_text]|radiobuttons[accept_text][decline_text]|

Specifiesifthedisplayedlicensemustbeexplicitlyacceptedornot.Thiscanbedoneeitherbyacheckboxorbyradiobuttons.Bydefaultthe"nextbutton"isdisabledandwillonlybeenabledifthecheckboxisenabledorthecorrectradiobuttonisselected.Ifoffisspecifiedthe"nextbutton"isenabledbydefault.

LicenseForceSelectioncheckboxLicenseForceSelectioncheckbox"iaccept"LicenseForceSelectionradiobuttonsLicenseForceSelectionradiobuttons"iaccept"LicenseForceSelectionradiobuttons"iaccept""idecline"LicenseForceSelectionradiobuttons"""idecline"LicenseForceSelectionoff

4.8.1.28LicenseText

[text[button_text]]

Usedtochangethedefaulttextonthelicensepage.

text:Textabovethecontrols,totherightoftheinstallationicon.

button_text:Textonthe"IAgree"button.

Thedefaultstringwillbeusedifastringisempty("").

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbefore

Page 131: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

thelicensepageiscreated.

4.8.1.29ManifestDPIAware

notset|true|false

DeclarethattheinstallerisDPI-aware.ADPI-awareapplicationisnotscaledbytheDWM(DPIvirtualization)sothetextisneverblurry.NSISdoesnotscalethebitmapusedbythetreecontrolonthecomponentpageandsomepluginsmighthavecompatibilityissuessomakesurethatyoutestyourinstalleratdifferentDPIsettingsifyouselecttrue.

SeeMSDNformoreinformationaboutDPI-awareapplications.

4.8.1.30ManifestSupportedOS

none|all|WinVista|Win7|Win8|Win8.1|Win10|{GUID}[...]

DeclarethattheinstalleriscompatiblewiththespecifiedWindowsversion(s).ThisaddsaSupportedOSentryinthecompatibilitysectionoftheapplicationmanifest.ThedefaultisWin7+8+8.1+10.noneisthedefaultifRequestExecutionLevelissettononeforcompatibilityreasons.

Windows8.1andlaterwillfakeitsversionnumberifyoudon'tdeclaresupportforthatparticularversion.YoucanreadmoreabouttheotherchangesinbehavioronMSDN.

4.8.1.31MiscButtonText

[back_button_text[next_button_text][cancel_button_text][close_button_text]]

Replacesthedefaulttextstringsforthefourbuttons(<Back,Next>,CancelandClose).Ifparametersareomitted,thedefaultsareused.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedin.onInit.

Page 132: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8.1.32Name

name[name_doubled_ampersands]

Setsthenameoftheinstaller.Thenameisusuallysimplytheproductnamesuchas'MyApp'or'CrapSoftMyApp'.Ifyouhaveoneormoreampersands(&)inthename,setthesecondparametertothesamename,onlywithdoubledampersands.Forexample,ifyourproduct'snameis"Foo&Bar",use:

Name"Foo&Bar""Foo&&Bar"

IfyouhaveampersandsinthenameanduseaLangStringforthename,youwillhavetocreateanotheronewithdoubledampersandstouseasthesecondparameter.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedin.onInit.

4.8.1.33OutFile

[path\]install.exe

SpecifiestheoutputfilethattheMakeNSISshouldwritetheinstallerto.ThisisjustthefilethatMakeNSISwrites,itdoesn'taffectthecontentsoftheinstaller.

4.8.1.34RequestExecutionLevel

none|user|highest|admin

SpecifiestherequestedexecutionlevelforWindowsVistaandhigher.Thevalueisembeddedintheinstalleranduninstaller'sXMLmanifestandtellsWindowswhichprivilegeleveltheinstallerrequires.userrequeststheuser'snormallevelwithnoadministrativeprivileges.highestwillrequestthehighestexecutionlevelavailableforthecurrentuserandwillcauseWindowstoprompttheusertoverifyprivilegeescalationiftheyareamemberoftheadministratorsgroup.Thepromptmight

Page 133: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

requestfortheuser'spassword.admin,whichisalsothedefault,requestsadministratorlevelandwillcauseWindowstoprompttheuseraswell.SpecifyingnonewillkeepthemanifestemptyandletWindowsdecidewhichexecutionlevelisrequired.WindowsautomaticallyidentifiesNSISinstallersanddecidesadministratorprivilegesarerequired.Becauseofthis,noneandadminhavevirtuallythesameeffect.

It'srecommendedthateveryapplicationismarkedwitharequiredexecutionlevel.Unmarkedinstallersaresubjecttocompatibilitymode.Workaroundsofthismodeincludeautomaticallymovinganyshortcutscreatedintheuser'sstartmenutoallusers'startmenu.Installersthatdon'tinstallanythingintosystemfoldersnorwritetothelocalmachineregistry(HKLM)shouldspecifyuserexecutionlevel.

MoreinformationaboutthistopiccanbefoundonMSDN.

4.8.1.35SetFont

[/LANG=lang_id]font_face_namefont_size

Setstheinstallerfont.Pleaserememberthatthefontyouchoosemustbepresentontheuser'smachineaswell.Don'tuserarefontsthatonlyyouhave.

Usethe/LANGswitchifyouwishtosetadifferentfontforeachlanguage.Forexample:

SetFont/LANG=${LANG_ENGLISH}"EnglishFont"9SetFont/LANG=${LANG_FRENCH}"FrenchFont"10

TherearetwoLangStringsnamed^Fontand^FontSizewhichcontainthefontandfontsizeforeverylanguage.

4.8.1.36ShowInstDetails

hide|show|nevershow

Setswhetherornotthedetailsoftheinstallareshown.Canbe'hide'to

Page 134: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

hidethedetailsbydefault,allowingtheusertoviewthem,or'show'toshowthembydefault,or'nevershow',topreventtheuserfromeverseeingthem.NotethatsectionscanoverridethisusingSetDetailsView.

4.8.1.37ShowUninstDetails

hide|show|nevershow

Setswhetherornotthedetailsoftheuninstallareshown.Canbe'hide'tohidethedetailsbydefault,allowingtheusertoviewthem,or'show'toshowthembydefault,or'nevershow',topreventtheuserfromeverseeingthem.NotethatsectionscanoverridethisusingSetDetailsView.

4.8.1.38SilentInstall

normal|silent|silentlog

Specifieswhetherornottheinstallershouldbesilent.Ifitis'silent'or'silentlog',allsectionsthathavetheSF_SELECTEDflagareinstalledquietly(youcansetthisflagusingSectionSetFlags),withnoscreenoutputfromtheinstalleritself(thescriptcanstilldisplaywhateveritwants,useMessageBox's/SDtospecifyadefaultforsilentinstallers).Notethatifthisissetto'normal'andtheuserrunstheinstallerwith/S(casesensitive)onthecommandline,itwillbehaveasifSilentInstall'silent'wasused.Note:seealsoLogSet.

Seesection4.12formoreinformation.

4.8.1.39SilentUnInstall

normal|silent

Specifieswhetherornottheuninstallershouldbesilent.Ifitis'silent'theuninstallsectionswillrunquietly,withnoscreenoutputfromtheuninstalleritself(thescriptcanstilldisplaywhateveritwants,useMessageBox's/SDtospecifyadefaultforsilentuninstallers).Notethatif

Page 135: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

thisissetto'normal'andtheuserrunstheuninstallerwith/Sonthecommandline,itwillbehaveasifSilentUnInstall'silent'wasused.

Seesection4.12formoreinformation.

4.8.1.40SpaceTexts

[req_text[avail_text]]

Ifparametersarespecified,overridesthespacerequiredandspaceavailabletext("Spacerequired:"and"Spaceavailable:"bydefault).If'none'isspecifiedastherequiredtextnospacetextswillbeshown.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforethecomponentspageiscreated.

4.8.1.41SubCaption

[page_numbersubcaption]

Overridesthesubcaptionsforeachoftheinstallerpages(0=":LicenseAgreement",1=":InstallationOptions",2=":InstallationDirectory",3=":InstallingFiles",4=":Completed").Ifyouspecifyanemptystring(""),thedefaultwillbeused(youcanhoweverspecify""toachieveablankstring).

Youcanalsosetasubcaption(oroverridethedefault)usingCaptioninsideaPageExblock.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforetherelevantpageiscreated.

4.8.1.42UninstallButtonText

text

Changesthetextofthebuttonthatbydefaultsays"Uninstall"inthe

Page 136: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

uninstaller.Ifnoparameterisspecified,thedefaulttextisused.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforetheuninstallbuttonshows.

4.8.1.43UninstallCaption

caption

Setswhatthetitlebarsoftheuninstallerwilldisplay.Bydefaultitis'$(^Name)Uninstall',whereNameisspecifiedwiththeNamecommand.Youcan,however,overrideitwith'MyAppuninstaller'orwhatever.Ifyouspecifyanemptystring(""),thedefaultwillbeused(youcanspecify""tosimulateaemptystring).

Acceptsvariables.Ifvariablesareused,theymustbeinitializedinun.onInit.

4.8.1.44UninstallIcon

[path\]icon.ico

Setstheiconoftheuninstaller.

4.8.1.45UninstallSubCaption

page_numbersubcaption

Setsthedefaultsubcaptionsfortheuninstallerpages(0=":Confirmation",1=":UninstallingFiles",2=":Completed").Ifyouspecifyanemptystring(""),thedefaultwillbeused(youcanspecify""tosimulateaemptystring).

Youcanalsosetasubcaption(oroverridethedefault)usingCaptioninsideaPageExblock.

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbefore

Page 137: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

therelevantpageiscreated.

4.8.1.46UninstallText

text[subtext]

Specifiesthetextsontheuninstallerconfirmpage.

text:Textabovethecontrols

subtext:Textnexttotheuninstalllocation

Acceptsvariables.Ifvariablesareused,theymustbeinitializedbeforetheuninstallerconfirmpageiscreated.

4.8.1.47WindowIcon

on|off

Setswhetherornottheinstaller'siconisdisplayedoncertainpages.

4.8.1.48XPStyle

on|off

SetswhetherornotaXPvisualstylemanifestwillbeaddedtotheinstaller.ThismanifestmakestheinstallerscontrolsusethenewvisualstyleswhenrunningonWindowsXPandlater.Thisaffectstheuninstallertoo.

4.8.2CompilerFlags

Thefollowingcommandsaffecthowthecompilergeneratescodeandcompressesdata.Unlessotherwisenoted,thesecommandsarevalidanywhereinthescriptandaffecteverylinebelowwhereeachoneisplaced(untiloverriddenbyanothercommand).Theycannotbejumpedoverusingflowcontrolinstructions.

Page 138: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Forexample,inthefollowingscript,blah.datwillneverbeoverwritten.

${If}$0==0SetOverwriteon${Else}SetOverwriteoff${EndIf}Fileblah.dat#overwriteisalwaysoffhere!

Instead,thefollowingshouldbeused.

${If}$0==0SetOverwriteonFileblah.dat${Else}SetOverwriteoffFileblah.dat${EndIf}

4.8.2.1AllowSkipFiles

on|off

Thiscommandspecifieswhethertheusershouldbeabletoskipafileornot.AuserhasanoptiontoskipafileifSetOverwriteissettoon(default)andtheinstallerfailstoopenafileforwritingwhentryingtoextractafile.Ifoffisusedtheignorebuttonwhichallowstheusertoskipthefilewillnotbeshownandtheuserwillonlyhaveanoptiontoaborttheinstallation(Cancelbutton)orretryopeningthefileforwriting(Retrybutton).Ifonisusedtheuserwillhaveanoptiontoskipthefile(errorflagwillbeset-seeSetOverwrite).

4.8.2.2FileBufSize

buffer_size_in_mb

Thiscommandsetsthesizeofthecompiler'sinternalfilebuffers.This

Page 139: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

commandallowsyoutocontrolthecompiler'smemoryusagebylimitinghowmuchofagivenfileitwillloadintomemoryatonce.Sincethecompilerneedsbothinputandoutput,twicethememorysizespecifiedcouldbeusedatanygiventimeforfilebuffers.ThiscommanddoesnotlimitthecompressionbufferswhichcouldtakeanothercoupleofMB,neitherdoesitlimitthecompiler'sotherinternalbuffers,butthoseshouldn'tnormallytop1MBanyway.Specifyingaverysmallnumbercoulddecreaseperformance.Specifyingaverylargenumbercouldexhaustsystemresourcesandforcethecompilertocancelthecompilationprocess.Thedefaultvalueis32MB.

4.8.2.3SetCompress

auto|force|off

Thiscommandsetsthecompressflagwhichisusedbytheinstallertodeterminewhetherornotdatashouldbecompressed.TypicallytheSetCompressflagwillaffectthecommandsafterit,andthelastSetCompresscommandinthefilealsodetermineswhetherornottheinstallinfosectionanduninstalldataoftheinstalleriscompressed.Ifcompressflagis'auto',thenfilesarecompressedifthecompressedsizeissmallerthantheuncompressedsize.Ifcompressflagissetto'force',thenthecompressedversionisalwaysused.Ifcompressflagis'off'thencompressionisnotused(whichcanbefaster).

Notethatthisoptionhasnoeffectwhensolidcompressionisused.

4.8.2.4SetCompressor

[/SOLID][/FINAL]zlib|bzip2|lzma

Thiscommandsetsthecompressionalgorithmusedtocompressfiles/dataintheinstaller.Itcanonlybeusedoutsideofsectionsandfunctionsandbeforeanydataiscompressed.Differentcompressionmethodscannotbeusedfordifferentfilesinthesameinstaller.Itisrecommendedtouseitattheverytopofthescripttoavoidcompilationerrors.

Page 140: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Threecompressionmethodsaresupported:ZLIB,BZIP2andLZMA.

ZLIB(thedefault)usesthedeflatealgorithm,itisaquickandsimplemethod.Withthedefaultcompressionlevelitusesabout300KBofmemory.

BZIP2usuallygivesbettercompressionratiosthanZLIB,butitisabitslowerandusesmorememory.Withthedefaultcompressionlevelitusesabout4MBofmemory.

LZMAisanewcompressionmethodthatgivesverygoodcompressionratios.Thedecompressionspeedishigh(10-20MB/sona2GHzCPU),thecompressionspeedislower.ThememorysizethatwillbeusedfordecompressionisthedictionarysizeplusafewKBs,thedefaultis8MB.

If/FINALisused,subsequentcallstoSetCompressorwillbeignored.

If/SOLIDisused,alloftheinstallerdataiscompressedinoneblock.Thisresultsingreatercompressionratios.

4.8.2.5SetCompressorDictSize

dict_size_mb

Setsthedictionarysizeinmegabytes(MB)usedbytheLZMAcompressor(defaultis8MB).

4.8.2.6SetDatablockOptimize

on|off

Thiscommandtellsthecompilerwhetherornottododatablockoptimizations.Datablockoptimizationscausesthecompilertochecktoseeifanydatabeingaddedtothedatablockisalreadyinthedatablock,andifso,itissimplyreferencedasopposedtoadded(cansavealittlebitofsize).Itishighlyrecommendedtoleavethisoptionon.

Page 141: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8.2.7SetDateSave

on|off

Thiscommandsetsthefiledate/timesavingflagwhichisusedbytheFilecommandtodeterminewhetherornottosavethelastwritedateandtimeofthefile,sothatitcanberestoredoninstallation.Validflagsare'on'and'off'.'on'isthedefault.

4.8.2.8SetOverwrite

on|off|try|ifnewer|ifdiff|lastused

ThiscommandsetstheoverwriteflagwhichisusedbytheFilecommandtodeterminewhetherornotthefileshouldoverwriteanyexistingfilesthatarepresent.Ifoverwriteflagis'on',filesareoverwritten(thisisthedefault).Ifoverwriteflagis'off',filesthatarealreadypresentarenotoverwritten.Ifoverwriteflagis'try',filesareoverwrittenifpossible(meaningthatifthefileisnotabletobewrittento,itisskippedwithoutanyuserinteraction).Ifoverwriteflagis'ifnewer',thenfilesareonlyoverwritteniftheexistingfileisolderthanthenewfile.Ifoverwriteflagis'ifdiff',thenfilesareonlyoverwritteniftheexistingfileisolderornewerthanthenewfile.Notethatwhenin'ifnewer'or'ifdiff'mode,thedestinationfile'sdateisset,regardlessofwhatSetDateSaveissetto.

SetOverwriteoffFileprogram.cfg#configfilewedon'twanttooverwriteSetOverwriteon

4.8.2.9Unicode

true|false

GenerateaUnicodeinstaller.Itcanonlybeusedoutsideofsectionsandfunctionsandbeforeanydataiscompressed.

Page 142: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.8.3VersionInformation

4.8.3.1VIAddVersionKey

[/LANG=lang_id]keynamevalue

Addsastringentrytotheversioninformationstoredintheinstalleranduninstaller.ThesecanbeviewedintheFilePropertiesVersionorDetailstab.keynamecaneitherbeaspecialnameknownbyWindowsorauserdefinedname./LANG=0canbeusedtoindicatealanguageneutrallanguageid.ThefollowingnamesareknownbyWindows:

ProductNameCommentsCompanyNameLegalCopyrightFileDescriptionFileVersionProductVersionInternalNameLegalTrademarksOriginalFilenamePrivateBuildSpecialBuild

Thedisplayednameofthesespecialentriesaretranslatedonthetargetsystem,whereasuserdefinedkeynamesremainuntranslated.

VIAddVersionKey/LANG=${LANG_ENGLISH}"ProductName""TestApplication"VIAddVersionKey/LANG=${LANG_ENGLISH}"Comments""Atestcomment"VIAddVersionKey/LANG=${LANG_ENGLISH}"CompanyName""Fakecompany"VIAddVersionKey/LANG=${LANG_ENGLISH}"LegalTrademarks""TestApplicationisatrademarkofFakecompany"VIAddVersionKey/LANG=${LANG_ENGLISH}"LegalCopyright""©Fakecompany"VIAddVersionKey/LANG=${LANG_ENGLISH}"FileDescription""TestApplication"VIAddVersionKey/LANG=${LANG_ENGLISH}"FileVersion""1.2.3"

4.8.3.2VIProductVersion

Page 143: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

version_string_X.X.X.X

SetstheProductVersionintheVS_FIXEDFILEINFOversioninformationblock.

VIProductVersion1.2.3.4

4.8.3.3VIFileVersion

version_string_X.X.X.X

SetstheFileVersionintheVS_FIXEDFILEINFOversioninformationblock(YoushouldalsosettheFileVersionstringwithVIAddVersionKeysotheinformationisdisplayedatthetopoftheVersionTabinthePropertiesofthefile).Ifyoudon'tprovideaFileVersiontheProductVersionisusedintheVS_FIXEDFILEINFOblock.

VIFileVersion1.2.3.4

Previous|Contents|Next

Page 144: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 145: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9Instructions

4.9.1BasicInstructions

TheinstructionsthatNSISusesforscriptingaresortofacrossbetweenPHPandassembly.Therearenorealhighlevellanguageconstructsbuttheinstructionsthemselvesare(forthemostpart)highlevel,andyouhavehandystringcapability(i.e.youdon'thavetoworryaboutconcatenatingstrings,etc).Youessentiallyhave25registers(20generalpurpose,5specialpurpose),andastack.

4.9.1.1Delete

[/REBOOTOK]file

Deletefile(whichcanbeafileorwildcard,butshouldbespecifiedwithafullpath)fromthetargetsystem.If/REBOOTOKisspecifiedandthefilecannotbedeletedthenthefileisdeletedwhenthesystemreboots--ifthefilewillbedeletedonareboot,therebootflagwillbeset.Theerrorflagissetiffilesarefoundandcannotbedeleted.Theerrorflagisnotsetwhentryingtodeleteafilethatdoesnotexist.

Delete$INSTDIR\somefile.dat

Warning:The/REBOOTOKswitchrequiresadministratorrightsonWindowsNTandlater.

4.9.1.2Exec

command

Executethespecifiedprogramandcontinueimmediately.Notethatthefilespecifiedmustexistonthetargetsystem,notthecompilingsystem.$OUTDIRisusedastheworkingdirectory.Theerrorflagissetiftheprocesscouldnotbelaunched.Note,ifthecommandcouldhavespaces,

Page 146: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

youshouldputitinquotestodelimititfromparameters.e.g.:Exec'"$INSTDIR\command.exe"parameters'.Ifyoudon'tputitinquotesitwillnotworkonWindows9xwithorwithoutparameters.

Exec'"$INSTDIR\someprogram.exe"'Exec'"$INSTDIR\someprogram.exe"someparameters'

4.9.1.3ExecShell

[/INVOKEIDLIST]actioncommand[parameters][SW_SHOWDEFAULT|SW_SHOWNORMAL|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_HIDE]

ExecutethespecifiedprogramusingShellExecuteEx.Notethatactionisusually"open","print",etc,butcanbeanemptystringtousethedefaultaction.Parametersandtheshowtypeareoptional.$OUTDIRisusedastheworkingdirectory.Theerrorflagissetiftheprocesscouldnotbelaunched.

ExecShell"open""http://nsis.sf.net/"ExecShell"open""$INSTDIR\readme.txt"ExecShell"print""$INSTDIR\readme.txt"ExecShell/INVOKEIDLIST"properties""$TEMP"

4.9.1.4ExecShellWait

[/INVOKEIDLIST]actioncommand[parameters][SW_SHOWDEFAULT|SW_SHOWNORMAL|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_HIDE]

ExecutethespecifiedprogramusingExecShellandwaitforexecutedprocesstoquit.ItwillonlywaitforexecutablefilesandnototherfiletypesnorURLs.

4.9.1.5ExecWait

command[user_var(exitcode)]

Executethespecifiedprogramandwaitfortheexecutedprocesstoquit.SeeExecformoreinformation.IfnooutputvariableisspecifiedExecWait

Page 147: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

setstheerrorflagiftheprogramexecutedreturnsanonzeroerrorcode,orifthereisanerror.Ifanoutputvariableisspecified,ExecWaitsetsthevariablewiththeexitcode(andonlysetstheerrorflagifanerroroccurs;ifanerroroccursthecontentsoftheuservariableareundefined).Note,ifthecommandcouldhavespaces,youshouldputitinquotestodelimititfromparameters.e.g.:ExecWait'"$INSTDIR\command.exe"parameters'.Ifyoudon'tputitinquotesitwillnotworkonWindows9xwithorwithoutparameters.

ExecWait'"$INSTDIR\someprogram.exe"'ExecWait'"$INSTDIR\someprogram.exe"'$0DetailPrint"someprogramreturned$0"

4.9.1.6File

[/nonfatal][/a]([/r][/xfile|wildcard[...]](file|wildcard)[...]|/oname=file.datinfile.dat)

Addsfile(s)tobeextractedtothecurrentoutputpath($OUTDIR).

Notethattheoutputfilenameis$OUTDIR\filename_portion_of_file.Use/oname=Xswitchtochangetheoutputname.Xmaycontainvariablesandcanbeafullyqualifiedpathorarelativepathinwhichcaseitwillbeappendedto$OUTDIRsetbySetOutPath.Whenusingthisswitch,onlyonefilecanbespecified.Iftheoutputnamecontainsspaces,quotetheentireparameter,including/oname,asshownintheexamplesbelow.Wildcardsaresupported.Ifthe/rswitchisused,matchingfilesanddirectoriesarerecursivelysearchedforinsubdirectories.Ifjustonepathsegmentisspecified(e.g.File/rsomething),thecurrentdirectorywillberecursivelysearched.Ifmorethanonesegmentisspecified(e.g.File/rsomething\*.*),thelastpathsegmentwillbeusedasthematchingconditionandanythingbeforeitspecifieswhichdirectorytosearchrecursively.Ifadirectorynamematches,allofitscontentsisaddedrecursively.Directorystructureispreserved.Usethe/xswitchtoexcludefilesanddirectories.Ifthe/aswitchisused,theattributesofthefile(s)addedwillbepreserved.

Page 148: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

TheFilecommandsetstheerrorflagifoverwritemodeissetto'try'andthefilecouldnotbeoverwritten,oriftheoverwritemodeissetto'on'andthefilecouldnotbeoverwrittenandtheuserselectsignore.Ifthe/nonfatalswitchisusedandnofilesarefound,awarningwillbeissuedinsteadofanerror.

Filesomething.exeFile/asomething.exeFile*.exeFile/r*.datFile/rdataFile/oname=temp.datsomefile.extFile/oname=$TEMP\temp.datsomefile.extFile"/oname=$TEMP\namewithspaces.dat"somefile.extFile/nonfatal"afilethatmightnotexist"File/r/xCVSmyproject\*.*File/r/x*.res/x*.obj/x*.pchsource\*.*

Note:whenusingthe/rswitch,bothmatchingdirectoriesandfileswillbesearched.Thisisalwaysdonewithorwithouttheuseofwildcards,evenifthegivenpathperfectlymatchesonedirectory.Thatmeans,thefollowingdirectorystructure:

<DIR>somethingfile.datanother.dat<DIR>dirsomething<DIR>dir2file2.dat<DIR>another<DIR>somethingreadme.txt

withthefollowingFileusage:

File/rsomething

Page 149: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

willmatchthedirectorynamedsomethingintherootdirectory,thefilenamedsomethinginthedirectorynameddirandthedirectorynamedsomethinginthedirectorynamedanother.Tomatchonlythedirectorynamedsomethingintherootdirectory,usethefollowing:

File/rsomething\*.*

Whenadding\*.*,itwillbeusedasthematchingconditionandsomethingwillbeusedasthedirectorytosearch.Whenonlysomethingisspecified,thecurrentdirectorywillberecursivelysearchedforeveryfileanddirectorynamedsomethingandanother\somethingwillbematched.

4.9.1.7Rename

[/REBOOTOK]source_filedest_file

Renamesource_filetodest_file.Youcanuseittomoveafilefromanywhereonthesystemtoanywhereelseandyoucanmoveadirectorytosomewhereelseonthesamedrive.Thedestinationfilemustnotexistorthemovewillfail(unlessyouareusing/REBOOTOK).If/REBOOTOKisspecified,andthefilecannotbemoved(if,forexample,thedestinationexists),thenthefileismovedwhenthesystemreboots.Ifthefilewillbemovedonareboot,therebootflagwillbeset.Theerrorflagissetifthefilecannotberenamed(and/REBOOTOKisnotused)orifthesourcefiledoesnotexist.

Ifnoabsolutepathisspecifiedthecurrentfolderwillbeused.ThecurrentfolderisthefoldersetusingthelastSetOutPathinstruction.IfyouhavenotusedSetOutPaththecurrentfolderis$EXEDIR.

Rename$INSTDIR\file.ext$INSTDIR\file.dat

Warning:The/REBOOTOKswitchrequiresadministratorrightsonWindowsNTandlater.

4.9.1.8ReserveFile

Page 150: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

[/nonfatal][/r][/xfile|wildcard[...]]file[file...]|[/nonfatal]/pluginfile.dll

Reservesafileinthedatablockforlateruse.Filesareaddedtothecompresseddatablockintheordertheyappearinthescript.Functions,however,arenotnecessarilycalledintheordertheyappearinthescript.Therefore,ifyouaddafileinafunctioncalledearlybutputthefunctionattheendofthescript,allofthefilesaddedearlierwillhavetobedecompressedtogettotherequiredfile.Thisprocesscantakealongtimeiftherealotoffiles..onInitisonesuchfunction.Itiscalledattheverybeginning,beforeanythingelseappears.Ifyouputitattheveryendofthescript,extractsomefilesinitandhavelotsoffilesaddedbeforeit,theinstallermighttakeaverylongtimetoload.Thisiswherethiscommandcomesuseful,allowingyoutospeeduptheloadingprocessbyincludingthefileatthetopofthedatablockinsteadoflettingNSISseekallthewaydowntothebottomofthecompresseddatablock.

Use/plugintoreserveapluginin${NSISDIR}\Plugins\*.

SeeFileformoreinformationabouttheparameters.

4.9.1.9RMDir

[/r][/REBOOTOK]directory_name

Removethespecifieddirectory(fullyqualifiedpathwithnowildcards).Without/r,thedirectorywillonlyberemovedifitiscompletelyempty.If/risspecifiedthedirectorywillberemovedrecursively,soalldirectoriesandfilesinthespecifieddirectorywillberemoved.If/REBOOTOKisspecified,anyfileordirectorywhichcouldnotberemovedduringtheprocesswillberemovedonreboot--ifanyfileordirectorywillberemovedonareboot,therebootflagwillbeset.Theerrorflagissetifanyfileordirectorycannotberemoved.

RMDir$INSTDIRRMDir$INSTDIR\dataRMDir/r/REBOOTOK$INSTDIRRMDir/REBOOTOK$INSTDIR\DLLs

Page 151: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Notethatthecurrentworkingdirectorycannotbedeleted.ThecurrentworkingdirectoryissetbySetOutPath.Forexample,thefollowingexamplewillnotdeletethedirectory.

SetOutPath$TEMP\dirRMDir$TEMP\dir

Thenextexamplewillsucceedindeletingthedirectory.

SetOutPath$TEMP\dirSetOutPath$TEMPRMDir$TEMP\dir

Warning:UsingRMDir/r$INSTDIRintheuninstallerisnotsafe.Thoughitisunlikely,theusermightselecttoinstalltotherootoftheProgramFilesfolderandthiscommandwouldwipeouttheentireProgramFilesfolder,includingallotherinstalledprograms!Theusercanalsoputotherfilesintheinstallationfolderandwouldn'texpectthemtogetdeletedalongwiththeprogram.Solutionsareavailableforeasilyuninstallingonlyfileswhichwereinstalledbytheinstaller.

Warning:The/REBOOTOKswitchrequiresadministratorrightsonWindowsNTandlater.

4.9.1.10SetOutPath

outpath

Setstheoutputpath($OUTDIR)andcreatesit(recursivelyifnecessary),ifitdoesnotexist.Mustbeafullpathname,usuallyisjust$INSTDIR(youcanspecify$INSTDIRwithasingle"-"ifyouarelazy).

SetOutPath$INSTDIRFileprogram.exe

4.9.2Registry,INI,FileInstructions

Page 152: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Inallofthebelowregistryinstructionsuseanemptystring(justtwoquoteswithnothingbetweenthem-"")asthekeynametospecifythedefaultkeywhichisshownas(Default)inregedit.exe.

UseSetRegViewon64-bitWindowstochoosewhichregistryviewisused.

IfafullpathisnotspecifiedforanyoftheINIhandlinginstructions,theWindowsdirectorywillbeused.

4.9.2.1DeleteINISec

ini_filenamesection_name

Deletestheentiresection[section_name]fromini_filename.Ifthesectioncouldnotberemovedfromtheinifile,theerrorflagisset.Itdoesnotsettheerrorflagifthesectioncouldnotbefound.

WriteINIStr$TEMP\something.inisection1something123WriteINIStr$TEMP\something.inisection1somethingelse1234WriteINIStr$TEMP\something.inisection2nsistrueDeleteINISec$TEMP\something.inisection1

4.9.2.2DeleteINIStr

ini_filenamesection_namestr_name

Deletesthestringstr_namefromsection[section_name]fromini_filename.Ifthestringcouldnotberemovedfromtheinifile,theerrorflagisset.Itdoesnotsettheerrorflagifthestringcouldnotbefound.

WriteINIStr$TEMP\something.inisection1something123WriteINIStr$TEMP\something.inisection1somethingelse1234DeleteINIStr$TEMP\something.inisection1somethingelse

4.9.2.3DeleteRegKey

Page 153: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

[/ifempty]root_keysubkey

Deletesaregistrykey.If/ifemptyisspecified,theregistrykeywillonlybedeletedifithasnosubkeys(otherwise,thewholeregistrytreewillberemoved).Validvaluesforroot_keyarelistedunderWriteRegStr.Theerrorflagissetifthekeycouldnotberemovedfromtheregistry(orifitdidn'texisttobeginwith).

DeleteRegKeyHKLM"Software\MyCompany\MySoftware"DeleteRegKey/ifemptyHKLM"Software\Akeythatmighthavesubkeys"

4.9.2.4DeleteRegValue

root_keysubkeykey_name

Deletesaregistryvalue.Validvaluesforroot_keyarelistedunderWriteRegStr.Theerrorflagissetifthevaluecouldnotberemovedfromtheregistry(orifitdidn'texisttobeginwith).

DeleteRegValueHKLM"Software\MyCompany\MySoftware""somevalue"

4.9.2.5EnumRegKey

user_var(output)root_keysubkeyindex

Setuservariable$xwiththenameofthe'index'thregistrykeyinroot_key\Subkey.Validvaluesforroot_keyarelistedunderWriteRegStr.Returnsanemptystringiftherearenomorekeys,andreturnsanemptystringandsetstheerrorflagifthereisanerror.

StrCpy$00loop:EnumRegKey$1HKLMSoftware$0StrCmp$1""doneIntOp$0$0+1MessageBoxMB_YESNO|MB_ICONQUESTION"$1$\n$\nMore?"IDYESloopdone:

Page 154: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.2.6EnumRegValue

user_var(output)root_keysubkeyindex

Setuservariable$xwiththenameofthe'index'thregistryvalueinroot_key\Subkey.Validvaluesforroot_keyarelistedunderWriteRegStr.Returnsanemptystringandsetstheerrorflagiftherearenomorevaluesorifthereisanerror.

StrCpy$00loop:ClearErrorsEnumRegValue$1HKLMSoftware\Microsoft\Windows\CurrentVersion$0IfErrorsdoneIntOp$0$0+1ReadRegStr$2HKLMSoftware\Microsoft\Windows\CurrentVersion$1MessageBoxMB_YESNO|MB_ICONQUESTION"$1=$2$\n$\nMore?"IDYESloopdone:

4.9.2.7ExpandEnvStrings

user_var(output)string

Expandsenvironmentvariablesinstringintotheuservariable$x.Ifanenvironmentvariabledoesn'texist,itwillnotbereplaced.Forexample,ifyouuse"%var%"andvardoesn'texists,theresultwillbe"%var%".Ifthereisanerror,thevariableissettoempty,andtheerrorflagisset.

ExpandEnvStrings$0"WINDIR=%WINDIR%$\nTEMP=%TEMP%"

4.9.2.8FlushINI

ini_filename

FlushestheINIfile'sbuffers.Windows9xkeepsallchangestotheINIfileinmemory.Thiscommandcausesthechangestobewrittentothedisk

Page 155: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

immediately.UseitifyouedittheINImanually,deleteit,moveitorcopyitrightafteryouchangeitwithWriteINIStr,DeleteINISecorDeleteINStr.

WriteINIStr$TEMP\something.initesttesttestFlushINI$TEMP\something.iniDelete$TEMP\something.ini

4.9.2.9ReadEnvStr

user_var(output)name

Readsfromtheenvironmentstring"name"andsetsthevalueintotheuservariable$x.Ifthereisanerrorreadingthestring,theuservariableissettoempty,andtheerrorflagisset.

ReadEnvStr$0WINDIRReadEnvStr$1TEMP

4.9.2.10ReadINIStr

user_var(output)ini_filenamesection_nameentry_name

Readsfromentry_namein[section_name]ofini_filenameandstoresthevalueintouservariable$x.Theerrorflagwillbesetand$xwillbeassignedtoanemptystringiftheentryisnotfound.

ReadINIStr$0$INSTDIR\winamp.iniwinampoutname

4.9.2.11ReadRegDWORD

user_var(output)root_keysub_keyname

Readsa32-bitDWORDfromtheregistryintotheuservariable$x.Validvaluesforroot_keyarelistedunderWriteRegStr.Theerrorflagwillbesetand$xwillbesettoanemptystring(""whichisinterpretedas0inmathoperations)iftheDWORDisnotpresent.Ifthevalueispresent,but

Page 156: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

isnotaDWORD,itwillbereadasastringandtheerrorflagwillbeset.

ReadRegDWORD$0HKLMSoftware\NSISVersionBuild

4.9.2.12ReadRegStr

user_var(output)root_keysub_keyname

Readsfromtheregistryintotheuservariable$x.Validvaluesforroot_keyarelistedunderWriteRegStr.Theerrorflagwillbesetand$xwillbesettoanemptystring("")ifthestringisnotpresent.Ifthevalueispresent,butisoftypeREG_DWORD,itwillbereadandconvertedtoastringandtheerrorflagwillbeset.

ReadRegStr$0HKLMSoftware\NSIS""DetailPrint"NSISisinstalledat:$0"

4.9.2.13WriteINIStr

ini_filenamesection_nameentry_namevalue

Writesentry_name=valueinto[section_name]ofini_filename.Theerrorflagissetifthestringcouldnotbewrittentotheinifile.

WriteINIStr$TEMP\something.inisection1something123WriteINIStr$TEMP\something.inisection1somethingelse1234WriteINIStr$TEMP\something.inisection2nsistrue

4.9.2.14WriteRegBin

root_keysubkeykey_namevaluedata

Thiscommandwritesablockofbinarydatatotheregistry.Validvaluesforroot_keyarelistedunderWriteRegStr.Valuedataisinhexadecimal(e.g.DEADBEEF01223211151).Theerrorflagissetifthebinarydatacouldnotbewrittentotheregistry.Iftheregistrykeydoesn'texistitwill

Page 157: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

becreated.

WriteRegBinHKLM"Software\MyCompany\MySoftware""BinaryValue"DEADBEEF01223211151

4.9.2.15WriteRegDWORD

root_keysubkeykey_namevalue

ThiscommandwritesaDWORD(32-bitinteger)totheregistry(auservariablecanbespecified).Validvaluesforroot_keyarelistedunderWriteRegStr.Theerrorflagissetifthedwordcouldnotbewrittentotheregistry.Iftheregistrykeydoesn'texistitwillbecreated.

WriteRegDWORDHKLM"Software\MyCompany\MySoftware""DWORDValue"0xDEADBEEF

4.9.2.16WriteRegStr

root_keysubkeykey_namevalue

Writeastringtotheregistry.SeeWriteRegExpandStrformoredetails.

WriteRegStrHKLM"Software\MyCompany\MySoftware""StringValue""deadbeef"

4.9.2.17WriteRegExpandStr

root_keysubkeykey_namevalue

Writeastringtotheregistry.root_keymustbeoneof:

HKCRorHKEY_CLASSES_ROOTHKLMorHKEY_LOCAL_MACHINEHKCUorHKEY_CURRENT_USERHKUorHKEY_USERSHKCCorHKEY_CURRENT_CONFIGHKDDorHKEY_DYN_DATAHKPDorHKEY_PERFORMANCE_DATA

Page 158: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SHCTXorSHELL_CONTEXTHKCR32orHKCR64HKCU32orHKCU64HKLM32orHKLM64

Ifroot_keyisSHCTXorSHELL_CONTEXT,itwillbereplacedwithHKLMifSetShellVarContextissettoallandwithHKCUifSetShellVarContextissettocurrent.

Theerrorflagissetifthestringcouldnotbewrittentotheregistry.ThetypeofthestringwillbeREG_SZforWriteRegStr,orREG_EXPAND_STRforWriteRegExpandStr.Iftheregistrykeydoesn'texistitwillbecreated.

WriteRegExpandStrHKLM"Software\MyCompany\MySoftware""ExpandStringValue""%WINDIR%\notepad.exe"

4.9.2.18WriteRegMultiStr

/REGEDIT5root_keysubkeykey_namevalue

Writesamulti-stringvalue.The/REGEDIT5switchmustbeusedandspecifiesthatthedataisinthehexformatusedby.regfilesonWindows2000andlater.

WriteRegMultiStr/REGEDIT5HKCU"Software\NSIS\Test""MultiValue"66,00,6f,00,6f,00,00,00,62,00,61,00,72,00,00,00,00,00

4.9.2.19SetRegView

32|64|default|lastused

Setstheregistryviewaffectedbyregistrycommands(rootkeyswitha32/64suffixarenotaffected).On64-bitversionsofWindowstherearetwoviews;onefor32-bitapplicationsandonefor64-bitapplications.Bydefault,32-bitapplicationsrunningon64-bitsystems(WOW64)onlyhaveaccesstothe32-bitview.UsingSetRegView64allowstheinstallertoaccesskeysinthe64-bitviewoftheregistry.RegistryoperationswillfailiftheselectedviewisnotsupportedbyWindows.

Page 159: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AffectsDeleteRegKey,DeleteRegValue,EnumRegKey,EnumRegValue,ReadRegDWORD,ReadRegStr,WriteRegBin,WriteRegDWORD,WriteRegStrandWriteRegExpandStr.

DoesnotaffectInstallDirRegKey.Instead,theregistrymustbereadusingReadRegStrin.onInit.

SetRegView32ReadRegStr$0HKLMSoftware\Microsoft\Windows\CurrentVersionProgramFilesDirDetailPrint$0#printsC:\ProgramFiles(x86)!includex64.nsh${If}${RunningX64}SetRegView64ReadRegStr$0HKLMSoftware\Microsoft\Windows\CurrentVersionProgramFilesDirDetailPrint$0#printsC:\ProgramFiles${EndIf}

Function.onInit${If}${RunningX64}SetRegView64ReadRegStr$INSTDIRHKLMSoftware\NSIS""SetRegViewDefault${EndIf}FunctionEnd

4.9.3GeneralPurposeInstructions

4.9.3.1CallInstDLL

dllfilefunction_name

Callsafunctionnamedfunction_nameinsideaNSISextensionDLL,aplug-in.Seetheexamplepluginforhowtomakeone.ExtensionDLLscanaccessthestackandvariables.Note:Toautomaticallyextractandcallplug-inDLLs,useaplug-incommandinsteadofCallInstDLL.

Push"aparameter"

Page 160: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Push"anotherparameter"CallInstDLL$INSTDIR\somedll.dllsomefunction

Foreasierplug-inhandling,usethenewplug-incallsyntax.

4.9.3.2CopyFiles

[/SILENT][/FILESONLY]filespec_on_destsysdestination_path[size_of_files_in_kb]

Copiesfilesfromthesourcetothedestinationontheinstallingsystem.Usefulwith$EXEDIRifyouwanttocopyfrominstallationmedia,ortocopyfromoneplacetoanotheronthesystem.YoumightseeaWindowsstatuswindowofthecopyoperationiftheoperationtakesalotoftime(todisablethis,use/SILENT).Thelastparametercanbeusedtospecifythesizeofthefilesthatwillbecopied(inkilobytes),sothattheinstallercanapproximatethediskspacerequirements.Onerror,oriftheusercancelsthecopy(onlypossiblewhen/SILENTwasomitted),theerrorflagisset.If/FILESONLYisspecified,onlyfilesarecopied.

Fully-qualifiedpathnamesshouldalwaysbeusedwiththisinstruction.Usingrelativepathswillhaveunpredictableresults.

CreateDirectory$INSTDIR\backupCopyFiles$INSTDIR\*.dat$INSTDIR\backup

4.9.3.3CreateDirectory

path_to_create

Creates(recursivelyifnecessary)thespecifieddirectory.Theerrorflagissetifthedirectorycouldn'tbecreated.

Youshouldalwaysspecifyanabsolutepath.

CreateDirectory$INSTDIR\some\directory

4.9.3.4CreateShortcut

Page 161: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

[/NoWorkingDir]link.lnktarget.file[parameters[icon.file[icon_index_number[start_options[keyboard_shortcut[description]]]]]]

Createsashortcut'link.lnk'thatlinksto'target.file',withoptionalparameters'parameters'.Theiconusedfortheshortcutis'icon.file,icon_index_number';fordefaulticonsettingsuseemptystringsforbothicon.fileandicon_index_number.start_optionsshouldbeoneof:SW_SHOWNORMAL,SW_SHOWMAXIMIZED,SW_SHOWMINIMIZED,oranemptystring.keyboard_shortcutshouldbeintheformof'flag|c'whereflagcanbeacombination(using|)of:ALT,CONTROL,EXT,orSHIFT.cisthecharactertouse(a-z,A-Z,0-9,F1-F24,etc).Notethatnospacesareallowedinthisstring.Agoodexampleis"ALT|CONTROL|F8".$OUTDIRisusedastheworkingdirectory.YoucanchangeitbyusingSetOutPathbeforecreatingtheShortcutoruse/NoWorkingDirifyoudon'tneedtosettheworkingdirectory.descriptionshouldbethedescriptionoftheshortcut,orcommentasitiscalledunderXP.Theerrorflagissetiftheshortcutcannotbecreated(i.e.eitherofthepaths(linkortarget)doesnotexist,orsomeothererror).

CreateDirectory"$SMPROGRAMS\MyCompany"CreateShortcut"$SMPROGRAMS\MyCompany\MyProgram.lnk""$INSTDIR\MyProgram.exe"\"somecommandlineparameters""$INSTDIR\MyProgram.exe"2SW_SHOWNORMAL\ALT|CONTROL|SHIFT|F5"adescription"

4.9.3.5GetDLLVersion

filenameuser_var(highdwordoutput)user_var(lowdwordoutput)

GetstheversioninformationfromtheDLL(oranyotherexecutablecontainingversioninformation)in"filename".Setstheuseroutputvariableswiththehighandlowdwordsofversioninformationonsuccess;onfailuretheoutputsareemptyandtheerrorflagisset.ThefollowingexamplereadstheDLLversionandcopiesahumanreadableversionofitinto$0:

GetDllVersion"$INSTDIR\MyDLL.dll"$R0$R1IntOp$R2$R0/0x00010000IntOp$R3$R0&0x0000FFFFIntOp$R4$R1/0x00010000

Page 162: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IntOp$R5$R1&0x0000FFFFStrCpy$0"$R2.$R3.$R4.$R5"

4.9.3.6GetDLLVersionLocal

localfilenameuser_var(highdwordoutput)user_var(lowdwordoutput)

ThisissimilartoGetDLLVersion,onlyitactsonthesystembuildingtheinstaller(itactuallycompilesintotwoStrCpycommands).SetsthetwooutputvariableswiththeDLLversioninformationoftheDLLonthebuildsystem.Use!getdllversionifyouneedtousethevalueswithVIProductVersion.

4.9.3.7GetFileTime

filenameuser_var(highdwordoutput)user_var(lowdwordoutput)

Getsthelastwritetimeof"filename".SetstheuseroutputvariableswiththehighandlowdwordsoftheFILETIMEtimestamponsuccess;onfailuretheoutputsareemptyandtheerrorflagisset.

4.9.3.8GetFileTimeLocal

localfilenameuser_var(highdwordoutput)user_var(lowdwordoutput)

ThisissimilartoGetFileTime,onlyitactsonthesystembuildingtheinstaller(itactuallycompilesintotwoStrCpycommands).Setsthetwooutputvariableswiththefiletimestampofthefileonthebuildsystem.

4.9.3.9GetFullPathName

[/SHORT]user_var(output)path_or_file

Assignthefullpathofthefilespecifiedtouservariable$x.Ifthepathportionoftheparameterisnotfound,theerrorflagwillbesetand$xwill

Page 163: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

beempty.If/SHORTisspecified,thepathisconvertedtotheshortfilenameform.However,if/SHORTisnotspecified,thepathisn'tconvertedtoitslongfilenameform.Togetthelongfilename,callGetLongPathNameusingtheSystemplug-in.NotethatGetLongPathNameisonlyavailableonWindows98,Windows2000andabove.

StrCpy$INSTDIR$PROGRAMFILES\NSISSetOutPath$INSTDIRGetFullPathName$0..DetailPrint$0#willprintC:\ProgramFilesGetFullPathName/SHORT$0$INSTDIRDetailPrint$0#willprintC:\Progra~1\NSIS

StrCpy$0C:\Progra~1\NSISSystem::Call'kernel32::GetLongPathName(tr0,t.r1,i${NSIS_MAX_STRLEN})i.r2'StrCmp$2error+2StrCpy$0$1DetailPrint$0#willprintC:\ProgramFiles\NSIS,wheresupported

4.9.3.10GetTempFileName

user_var(output)[base_dir]

Assigntotheuservariable$x,thenameofatemporaryfile.Thefilewillbecreatedforyouanditwillbeempty.Thenameofthetemporaryfileisguaranteedtobeunique.IftowantthetemporaryfiletobecreatedinanotherdirectoryotherthantheWindowstempdirectory,specifyabase_dir.YoushouldDeletethefilewhenyouaredonewithit.

GetTempFileName$0File/oname=$0something.dat#dosomethingwithsomething.datDelete$0

4.9.3.11SearchPath

Page 164: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

user_var(output)filename

Assigntotheuservariable$x,thefullpathofthefilenamedbythesecondparameter.Theerrorflagwillbesetand$xwillbeemptyifthefilecannotbefound.UsesSearchPath()tosearchthesystempathsforthefile.

4.9.3.12SetFileAttributes

filenameattribute1|attribute2|...

Setsthefileattributesof'filename'.Validattributescanbecombinedwith|andare:

NORMALorFILE_ATTRIBUTE_NORMAL(youcanuse0toabbreviatethis)ARCHIVEorFILE_ATTRIBUTE_ARCHIVEHIDDENorFILE_ATTRIBUTE_HIDDENOFFLINEorFILE_ATTRIBUTE_OFFLINEREADONLYorFILE_ATTRIBUTE_READONLYSYSTEMorFILE_ATTRIBUTE_SYSTEMTEMPORARYorFILE_ATTRIBUTE_TEMPORARY

Theerrorflagwillbesetifthefile'sattributescannotbeset(i.e.thefiledoesn'texist,oryoudon'thavetherightpermissions).Youcanonlysetattributes.It'snotpossibletounsetthem.IfyouwanttoremoveanattributeuseNORMAL.Thiswayallattributesareerased.Thiscommanddoesn'tsupportwildcards.

4.9.3.13RegDLL

dllfile[entrypoint_name]

LoadsthespecifiedDLLandcallsDllRegisterServer(orentrypoint_nameifspecified).Theerrorflagissetifanerroroccurs(i.e.itcan'tloadtheDLL,initializeOLE,findtheentrypoint,orthefunctionreturnedanythingotherthanERROR_SUCCESS(=0)).

Page 165: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

UseSetOutPathtosetthecurrentdirectoryforDLLsthatdependonotherDLLsthatarenowinthepathorintheWindowsdirectory.Forexample,iffoo.dlldependsonbar.dllwhichislocatedin$INSTDIRuse:

SetOutPath$INSTDIRRegDLL$INSTDIR\foo.dll

4.9.3.14UnRegDLL

dllfile

LoadsthespecifiedDLLandcallsDllUnregisterServer.Theerrorflagissetifanerroroccurs(i.e.itcan'tloadtheDLL,initializeOLE,findtheentrypoint,orthefunctionreturnedanythingotherthanERROR_SUCCESS(=0)).

4.9.4FlowControlInstructions

4.9.4.1Abort

[user_message]

Cancelstheinstall,stopsexecutionofscript,anddisplaysuser_messageinthestatusdisplay.Note:youcanusethisfromCallbackfunctionstodospecialthings.PagecallbacksalsousesAbortforspecialpurposes.

AbortAbort"can'tinstall"

4.9.4.2Call

function_name|:label_name|user_var(input)

Callsthefunctionnamedfunction_name,thelabelnamedlabel_name,oravariablethatspecifiesanaddress.AnaddressisreturnedbyGetCurrentAddress,GetFunctionAddressorGetLabelAddress.Acall

Page 166: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

returnswhenitencountersaReturninstruction.SectionsandfunctionsareautomaticallyendedwithaReturninstruction.Uninstallfunctionscannotbecalledfrominstallerfunctionsandsections,andvice-versa.

FunctionfuncCall:labelDetailPrint"#1:Thiswillonlyappear1time."label:DetailPrint"#2:Thiswillappearbeforeandaftermessage#1."Call:.global_labelFunctionEnd

SectionCallfuncReturn

.global_label:DetailPrint"#3:Thegloballabelwascalled"SectionEnd

4.9.4.3ClearErrors

Clearstheerrorflag.

ClearErrorsIfErrors0+2MessageBoxMB_OK"thismessageboxwillnevershow"

4.9.4.4GetCurrentAddress

user_var(output)

Getstheaddressofthecurrentinstruction(theGetCurrentAddress)andstoresitintheoutputuservariable.ThisuservariablethencanbepassedtoCallorGoto.

Page 167: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionfuncDetailPrint"function"IntOp$0$0+2;Calculatetheaddressafteroftheinstructionafter"GotocallFunc"intheSectionCall$0DetailPrint"functionend"FunctionEnd

SectionDetailPrint"section"GetCurrentAddress$0GotocallFunc

DetailPrint"backinsection"Return

callFunc:CallfuncDetailPrint"sectionend"SectionEnd

4.9.4.5GetFunctionAddress

user_var(output)function_name

Getstheaddressofthefunctionandstoresitintheoutputuservariable.ThisuservariablethencanbepassedtoCallorGoto.NotethatifyouGotoanaddresswhichistheoutputofGetFunctionAddress,yourfunctionwillneverbereturnedto(whenthefunctionyouGoto'dtoreturns,youreturninstantly).

FunctionfuncDetailPrint"function"FunctionEnd

SectionGetFunctionAddress$0funcCall$0

Page 168: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionEnd

4.9.4.6GetLabelAddress

user_var(output)label

Getstheaddressofthelabelandstoresitintheoutputuservariable.ThisuservariablethencanbepassedtoCallorGoto.Notethatyoumayonlycallthiswithlabelsaccessiblefromyourfunction,butyoucancallitfromanywhere(whichispotentiallydangerous).NotethatifyouCalltheoutputofGetLabelAddress,codewillbeexecuteduntilitReturn's(explicitlyorimplicitlyattheendofafunction),andthenyouwillbereturnedtothestatementaftertheCall.

label:DetailPrint"label"GetLabelAddress$0labelIntOp$0$0+4Goto$0DetailPrint"done"

4.9.4.7Goto

label_to_jump_to|+offset|-offset|user_var(target)

Iflabelisspecified,gotothelabel'label_to_jump_to:'.

If+offsetor-offsetisspecified,jumpisrelativebyoffsetinstructions.Goto+1goestothenextinstruction,Goto-1goestothepreviousinstruction,etc.

Ifauservariableisspecified,jumpstoabsoluteaddress(generallyyouwillwanttogetthisvaluefromafunctionlikeGetLabelAddress).CompilerflagcommandsandSectionInaren'tinstructionssojumpingoverthemhasnoeffect.

Gotolabel

Page 169: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Goto+2Goto-2Goto$0

4.9.4.8IfAbort

label_to_goto_if_abort[label_to_goto_if_no_abort]

Will"return"trueiftheinstallationhasbeenaborted.Thiscanhappeniftheuserchoseabortonafilethatfailedtocreate(oroverwrite)oriftheuserabortedbyhand.Thisfunctioncanonlybecalledfromtheleavefunctionoftheinstfilespage.

Pageinstfiles""""instfilesLeave

FunctioninstfilesLeaveIfAbort0+2MessageBoxMB_OK"useraborted"FunctionEnd

4.9.4.9IfErrors

jumpto_iferror[jumpto_ifnoerror]

Checksandclearstheerrorflag,andifitisset,itwillgotojumpto_iferror,otherwiseitwillgotojumpto_ifnoerror.Theerrorflagissetbyotherinstructionswhenarecoverableerror(suchastryingtodeleteafilethatisinuse)occurs.

ClearErrorsFilefile.datIfErrors0+2CallErrorHandler

4.9.4.10IfFileExists

Page 170: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

file_to_check_forjump_if_present[jump_otherwise]

Checksforexistenceoffile(s)file_to_check_for(whichcanbeawildcard,oradirectory),andGotosjump_if_presentifthefileexists,otherwiseGotosjump_otherwise.Ifyouwanttochecktoseeifafileisadirectory,useIfFileExistsDIRECTORY\*.*

IfFileExists$WINDIR\notepad.exe0+2MessageBoxMB_OK"notepadisinstalled"

4.9.4.11IfRebootFlag

jump_if_set[jump_if_not_set]

Checkstherebootflag,andjumpstojump_if_setiftherebootflagisset,otherwisejumpstojump_if_not_set.TherebootflagcanbesetbyDeleteandRename,ormanuallywithSetRebootFlag.

IfRebootFlag0norebootMessageBoxMB_YESNO"Arebootisrequiredtofinishtheinstallation.Doyouwishtorebootnow?"IDNOnorebootRebootnoreboot:

4.9.4.12IfSilent

jump_if_silent[jump_if_not]

Checksthesilentflag,andjumpstojump_if_silentiftheinstallerissilent,otherwisejumpstojump_if_not.ThesilentflagcanbesetbySilentInstall,SilentUninstall,SetSilentandbytheuserpassing/Sonthecommandline.

IfSilent+2ExecWait'"$INSTDIR\nonsilentprogram.exe"'

4.9.4.13IntCmp

Page 171: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

val1val2jump_if_equal[jump_if_val1_less][jump_if_val1_more]

Comparestwointegersval1andval2.Ifval1andval2areequal,Gotosjump_if_equal,otherwiseifval1<val2,Gotosjump_if_val1_less,otherwiseifval1>val2,Gotosjump_if_val1_more.

IntCmp$05is5lessthan5morethan5is5:DetailPrint"$$0==5"Gotodonelessthan5:DetailPrint"$$0<5"Gotodonemorethan5:DetailPrint"$$0>5"Gotodonedone:

4.9.4.14IntCmpU

val1val2jump_if_equal[jump_if_val1_less][jump_if_val1_more]

SameasIntCmp,buttreatsthevaluesasunsignedintegers.

4.9.4.15MessageBox

mb_option_listmessagebox_text[/SDreturn][return_checkjumpto[return_check_2jumpto_2]]

DisplaysaMessageBoxcontainingthetext"messagebox_text".mb_option_listmustbeoneormoreofthefollowing,delimitedby|s(e.g.MB_YESNO|MB_ICONSTOP).

MB_OK-DisplaywithanOKbuttonMB_OKCANCEL-DisplaywithanOKandacancelbuttonMB_ABORTRETRYIGNORE-Displaywithabort,retry,ignorebuttonsMB_RETRYCANCEL-Displaywithretryandcancelbuttons

Page 172: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MB_YESNO-DisplaywithyesandnobuttonsMB_YESNOCANCEL-Displaywithyes,no,cancelbuttonsMB_ICONEXCLAMATION-DisplaywithexclamationiconMB_ICONINFORMATION-DisplaywithinformationiconMB_ICONQUESTION-DisplaywithquestionmarkiconMB_ICONSTOP-DisplaywithstopiconMB_USERICON-Displaywithinstaller'siconMB_TOPMOST-MakemessageboxtopmostMB_SETFOREGROUND-SetforegroundMB_RIGHT-RightaligntextMB_RTLREADING-RTLreadingorderMB_DEFBUTTON1-Button1isdefaultMB_DEFBUTTON2-Button2isdefaultMB_DEFBUTTON3-Button3isdefaultMB_DEFBUTTON4-Button4isdefault

Return_checkcanbe0(orempty,orleftoff),oroneofthefollowing:

IDABORT-AbortbuttonIDCANCEL-CancelbuttonIDIGNORE-IgnorebuttonIDNO-NobuttonIDOK-OKbuttonIDRETRY-RetrybuttonIDYES-Yesbutton

IfthereturnvalueoftheMessageBoxisreturn_check,theinstallerwillGotojumpto.

Usethe/SDparameterwithoneofthereturn_checkvaluesabovetospecifytheoptionthatwillbeusedwhentheinstallerissilent.Seesection4.12formoreinformation.

MessageBoxMB_OK"simplemessagebox"MessageBoxMB_YESNO"isittrue?"IDYEStrueIDNOfalsetrue:DetailPrint"it'strue!"Gotonextfalse:

Page 173: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DetailPrint"it'sfalse"next:MessageBoxMB_YESNO"isittrue?(defaultstoyesonsilentinstallations)"/SDIDYESIDNOfalse2DetailPrint"it'strue(orsilent)!"Gotonext2false2:DetailPrint"it'sfalse"next2:

4.9.4.16Return

Returnsfromafunctionorsection.

FunctionfuncStrCmp$0"returnnow"0+2Return#dostuffFunctionEnd

SectionCallfunc;"Return"willreturnhereSectionEnd

4.9.4.17Quit

Causestheinstallertoexitassoonaspossible.AfterQuitiscalled,theinstallerwillexit(nocallbackfunctionswillgetachancetorun).

4.9.4.18SetErrors

Setstheerrorflag.

SetErrorsIfErrors0+2

Page 174: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MessageBoxMB_OK"thismessageboxwillalwaysshow"

4.9.4.19StrCmp

str1str2jump_if_equal[jump_if_not_equal]

Compares(caseinsensitively)str1tostr2.Ifstr1andstr2areequal,Gotosjump_if_equal,otherwiseGotosjump_if_not_equal.

StrCmp$0"astring"0+3DetailPrint'$$0=="astring"'Goto+2DetailPrint'$$0!="astring"'

4.9.4.20StrCmpS

str1str2jump_if_equal[jump_if_not_equal]

SameasStrCmp,butcasesensitive.

4.9.5FileInstructions

4.9.5.1FileClose

handle

ClosesafilehandleopenedwithFileOpen.

4.9.5.2FileOpen

user_var(handleoutput)filenameopenmode

Opensafilenamed"filename"andsetsthehandleoutputvariablewiththehandle.Theopenmodeshouldbeoneof"r"(read)"w"(write,allcontentsoffilearedestroyed)or"a"(append,meaningopenedforboth

Page 175: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

readandwrite,contentspreserved).Inallopenmodes,thefilepointerisplacedatthebeginningofthefile.Ifthefilecannotbeopenedthehandleoutputissettoemptyandtheerrorflagisset.

Ifnoabsolutepathisspecifiedthecurrentfolderwillbeused.ThecurrentfolderisthefoldersetusingthelastSetOutPathinstruction.IfyouhavenotusedSetOutPaththecurrentfolderis$EXEDIR.

FileOpen$0$INSTDIR\file.datrFileClose$0

4.9.5.3FileRead

handleuser_var(output)[maxlen]

Readsastring(ANSIcharacters)fromafileopenedwithFileOpen.Thestringisreaduntileitheranewline(orcarriagereturnnewlinepair)occurs,oruntilanullbyteisread,oruntilmaxlenismet(ifspecified).Bydefault,stringsarelimitedto1024characters(aspecialbuildwithlargerNSIS_MAX_STRLENcanbecompiledordownloaded).Iftheendoffileisreachedandnomoredataisavailable,theoutputstringwillbeemptyandtheerrorflagwillbeset.

Unicode:DBCStextissupportedbutconversionoutputislimitedtoUCS-2/BMP,surrogatepairsarenotsupported.ThesystemdefaultANSIcodepage(ACP)isusedduringtheconversion.

ClearErrorsFileOpen$0$INSTDIR\file.datrIfErrorsdoneFileRead$0$1DetailPrint$1FileClose$0done:

4.9.5.4FileReadUTF16LE

Page 176: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

handleuser_var(output)[maxlen]

ThisfunctionisonlyavailablewhenbuildingaUnicodeinstaller.

Readsastring(UTF-16LEcharacters)fromafileopenedwithFileOpen.Thestringisreaduntileitheranewline(orcarriagereturnnewlinepair)occurs,oruntilanullwide-characterisread,oruntilmaxlenismet(ifspecified).Bydefault,stringsarelimitedto1024characters(aspecialbuildwithlargerNSIS_MAX_STRLENcanbecompiledordownloaded).Iftheendoffileisreachedandnomoredataisavailable,theoutputstringwillbeemptyandtheerrorflagwillbeset.Ifpresent,theBOMatthestartofthefileisskipped.

ClearErrorsFileOpen$0$INSTDIR\file.datrIfErrorsdoneFileReadUTF16LE$0$1DetailPrint$1FileClose$0done:

4.9.5.5FileReadByte

handleuser_var(output)

ReadsabytefromafileopenedwithFileOpen.Thebyteisstoredintheoutputasaninteger(0-255).Iftheendoffileisreachedandnomoredataisavailable,theoutputwillbeemptyandtheerrorflagwillbeset.

ClearErrorsFileOpen$0$INSTDIR\file.datrIfErrorsdoneFileReadByte$0$1FileReadByte$0$2DetailPrint"$1$2"FileClose$0done:

Page 177: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.5.6FileReadWord

handleuser_var(output)

ThisfunctionisonlyavailablewhenbuildingaUnicodeinstaller.

Readsaword(2-bytes)fromafileopenedwithFileOpen.Thewordisstoredintheoutputasaninteger(0-65535).Iftheendoffileisreachedandnomoredataisavailable,theoutputwillbeemptyandtheerrorflagwillbeset.

ClearErrorsFileOpen$0$INSTDIR\file.datrIfErrorsdoneFileReadWord$0$1FileReadWord$0$2DetailPrint"$1$2"FileClose$0done:

4.9.5.7FileSeek

handleoffset[mode][user_var(newposition)]

SeeksafileopenedwithFileOpen.IfmodeisomittedorspecifiedasSET,thefileispositionedto"offset",relativetothebeginningofthefile.IfmodeisspecifiedasCUR,thenthefileispositionedto"offset",relativetothecurrentfileposition.IfmodeisspecifiedasEND,thenthefileispositionedto"offset",relativetotheendofthefile.Ifthefinalparameter"newposition"isspecified,thenewfilepositionwillbestoredinthatvariable.

ClearErrorsFileOpen$0$INSTDIR\file.datrIfErrorsdoneFileSeek$0-5ENDFileRead$0$1

Page 178: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DetailPrint$1FileClose$0done:

4.9.5.8FileWrite

handlestring

WritesanANSIstringtoafileopenedwithFileOpen.Ifanerroroccurswriting,theerrorflagwillbeset.

(IfyouarebuildingaUnicodeinstaller,thefunctionconvertsthestringtoANSI/MBCS.ThesystemdefaultANSIcodepage(ACP)isusedduringtheconversion)

ClearErrorsFileOpen$0$INSTDIR\file.datwIfErrorsdoneFileWrite$0"sometext"FileClose$0done:

4.9.5.9FileWriteUTF16LE

[/BOM]handlestring

ThisfunctionisonlyavailablewhenbuildingaUnicodeinstaller.

WritesaUnicode(UTF-16LE)stringtoafileopenedwithFileOpen.Ifanerroroccurs,theerrorflagwillbeset.ABOMcanbeaddedtoemptyfileswith/BOM.

ClearErrorsFileOpen$0$INSTDIR\file.datwIfErrorsdoneFileWriteUTF16LE$0"sometext"FileClose$0

Page 179: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

done:

4.9.5.10FileWriteByte

handlestring

Writestheintegerinterpretationof'string'toafileopenedwithFileOpen.Theerrorflagissetifanerroroccurswhilewriting.Thefollowingcodewritesa"CarriageReturn/LineFeed"pairtothefile.

FileWriteBytefile_handle"13"FileWriteBytefile_handle"10"

Notethatonlythelowbyteoftheintegerisused,i.e.writing256isthesameaswriting0,etc.

4.9.5.11FileWriteWord

handlestring

ThisfunctionisonlyavailablewhenbuildingaUnicodeinstaller.

Writestheintegerinterpretationof'string'asaWORD(2-bytes,range:0-65535)toafileopenedwithFileOpen.Theerrorflagissetifanerroroccurswhilewriting.Thefollowingcodewritesa"CarriageReturn/LineFeed"pairtothefile.

FileWriteWordfile_handle"13"FileWriteWordfile_handle"10"

NotethatonlythelowWORDoftheintegerisused,i.e.writing65536isthesameaswriting0,etc.

4.9.5.12FindClose

handle

Page 180: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ClosesasearchopenedwithFindFirst.

4.9.5.13FindFirst

user_var(handleoutput)user_var(filenameoutput)filespec

Performsasearchfor'filespec',placingthefirstfilefoundinfilename_output(auservariable).Italsoputsthehandleofthesearchintohandle_output(alsoauservariable).Ifnofilesarefound,bothoutputsaresettoemptyandtheerrorflagisset.FindClosemustbeusedtoclosethehandle.Notethatthefilenameoutputiswithoutpath.

FindFirst$0$1$INSTDIR\*.txtloop:StrCmp$1""doneDetailPrint$1FindNext$0$1Gotoloopdone:FindClose$0

4.9.5.14FindNext

handleuser_var(filename_output)

ContinuesasearchbeganwithFindFirst.handleshouldbethehandle_output_variablereturnedbyFindFirst.Ifthesearchiscompleted(therearenomorefiles),filename_outputissettoemptyandtheerrorflagisset.Notethatthefilenameoutputiswithoutpath.

4.9.6UninstallerInstructions

4.9.6.1WriteUninstaller

[Path\]exename.exe

Page 181: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Writestheuninstallertothefilename(andoptionallypath)specified.Onlyvalidfromwithinaninstallsectionorfunctionandrequiresthatyouhaveanuninstallsectioninyourscript.Youcancallthisoneormoretimestowriteoutoneormorecopiesoftheuninstaller.

WriteUninstaller$INSTDIR\uninstaller.exe

4.9.7MiscellaneousInstructions

4.9.7.1GetErrorLevel

user_var(errorleveloutput)

ReturnsthelasterrorlevelsetbySetErrorLevelor-1ifithasneverbeenset.

GetErrorLevel$0IntOp$0$0+1SetErrorLevel$0

4.9.7.2GetInstDirError

user_var(erroroutput)

Useintheleavefunctionofadirectorypage.Readstheflagsetif'DirVerifyleave'isused.Possiblevalues:

0:Noerror

1:Invalidinstallationdirectory

2:Notenoughspaceoninstallationdrive

!includeLogicLib.nshPageExdirectoryDirVerifyleavePageCallbacks""""dirLeave

Page 182: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

PageExEnd

FunctiondirLeaveGetInstDirError$0${Switch}$0${Case}0MessageBoxMB_OK"validinstallationdirectory"${Break}${Case}1MessageBoxMB_OK"invalidinstallationdirectory!"Abort${Break}${Case}2MessageBoxMB_OK"notenoughfreespace!"Abort${Break}${EndSwitch}FunctionEnd

4.9.7.3InitPluginsDir

Initializestheplug-insdir($PLUGINSDIR)ifnotalreadyinitialized.

InitPluginsDirFile/oname=$PLUGINSDIR\image.bmpimage.bmp

4.9.7.4Nop

Doesnothing.

4.9.7.5SetErrorLevel

error_level

Setstheerrorleveloftheinstalleroruninstallertoerror_level.SeeError

Page 183: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Levelsformoreinformation.

IfRebootFlag0+2SetErrorLevel4

4.9.7.6SetShellVarContext

current|all

Setsthecontextof$SMPROGRAMSandothershellfolders.Ifsetto'current'(thedefault),thecurrentuser'sshellfoldersareused.Ifsetto'all',the'allusers'shellfolderisused.TheallusersfoldermaynotbesupportedonallOSes.Iftheallusersfolderisnotfound,thecurrentuserfolderwillbeused.Pleasetakeintoconsiderationthata"normaluser"hasnorightstowriteintheallusersarea.Onlyadminshavefullaccessrightstotheallusersarea.YoucancheckthisbyusingtheUserInfoplug-in.SeeContrib\UserInfo\UserInfo.nsiforanexample.

Notethat,ifusedininstallercode,thiswillonlyaffecttheinstaller,andifusedinuninstallercode,thiswillonlyaffecttheuninstaller.Toaffectboth,itneedstobeusedinboth.

SetShellVarContextcurrentStrCpy$0$DESKTOPSetShellVarContextallStrCpy$1$DESKTOPMessageBoxMB_OK$0$\n$1

4.9.7.7Sleep

sleeptime_in_ms

Pausesexecutionintheinstallerforsleeptime_in_msmilliseconds.sleeptime_in_mscanbeavariable,e.g."$0"oranumber,i.e."666".

DetailPrint"sleeping..."Sleep3000

Page 184: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DetailPrint"backtowork"

4.9.8StringManipulationInstructions

4.9.8.1StrCpy

user_var(destination)str[maxlen][start_offset]

Setstheuservariable$xwithstr.strcancontainvariables(includingtheuservariablebeingset(concatenatingstringsthiswayispossible,etc)).Ifmaxlenisspecified,thestringwillbeamaximumofmaxlencharacters(ifmaxlenisnegative,thestringwillbetruncatedabs(maxlen)charactersfromtheend).Ifstart_offsetisspecified,thesourceisoffsetbyit(ifstart_offsetisnegative,itwillstartabs(start_offset)fromtheendofthestring).

StrCpy$0"astring"#="astring"StrCpy$0"astring"3#="as"StrCpy$0"astring"-1#="astrin"StrCpy$0"astring"""2#="string"StrCpy$0"astring"""-3#="ing"StrCpy$0"astring"3-4#="rin"StrCpy$0"$0$0"#="rinrin"

4.9.8.2StrLen

user_var(lengthoutput)str

Setsuservariable$xtothelengthofstr.

StrLen$0"123456"#=6

4.9.9StackSupport

4.9.9.1Exch

Page 185: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

[user_var|stack_index]

Whennoparameterisspecified,exchangesthetoptwoelementsofthestack.Whenaparameterisspecifiedandisauservariable,exchangesthetopelementofthestackwiththeparameter.Whenaparameterisspecifiedandisapositiveinteger,Exchwillswaptheitemonthetopofthestackwiththeitemthatisspecifiedbytheoffsetfromthetopofthestackintheparameter.Iftherearenotenoughitemsonthestacktoaccomplishtheexchange,afatalerrorwilloccur(tohelpyoudebugyourcode:).

Push1Push2ExchPop$0#=1

Push1Push2Push3Exch2Pop$0#=1

StrCpy$01Push2Exch$0#=2Pop$1#=1

4.9.9.2Pop

user_var(out)

Popsastringoffofthestackintouservariable$x.Ifthestackisempty,theerrorflagwillbeset.

Push1Pop$0#=1

Page 186: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.9.3Push

string

Pushesastringontothestack.ThestringcanthenbePop'edoffofthestack.

Push"astring"

4.9.10IntegerSupport

4.9.10.1IntFmt

user_var(output)formatnumberstring

Formatsthenumberin"numberstring"usingtheformat"format",andsetstheoutputtouservariable$x.Exampleformatstringsinclude"%08X""%u"

IntFmt$0"0x%08X"195948557IntFmt$0"%c"0x41

4.9.10.2IntOp

user_var(output)value1OP[value2]

Combinesvalue1and(dependingonOP)value2intothespecifieduservariable(user_var).OPisdefinedasoneofthefollowing:

+ADDsvalue1andvalue2-SUBTRACTsvalue2fromvalue1*MULTIPLIEsvalue1andvalue2/DIVIDEsvalue1byvalue2%MODULUSsvalue1byvalue2|BINARYORsvalue1andvalue2&BINARYANDsvalue1andvalue2^BINARYXORsvalue1andvalue2

Page 187: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

>>RIGHTSHIFTsvalue1byvalue2<<LEFTSHIFTsvalue1byvalue2~BITWISENEGATEsvalue1(i.e.7becomes4294967288)!LOGICALLYNEGATEsvalue1(i.e.7becomes0)||LOGICALLYORsvalue1andvalue2&&LOGICALLYANDsvalue1andvalue2

IntOp$01+1IntOp$0$0+1IntOp$0$0<<2IntOp$0$0~IntOp$0$0&0xF

4.9.11RebootInstructions

4.9.11.1Reboot

Rebootsthecomputer.Becarefulwiththisone.Ifitfails,.onRebootFailediscalled.Inanycase,thisinstructionneverreturns,justlikeQuit.

MessageBoxMB_YESNO|MB_ICONQUESTION"Doyouwishtorebootthesystem?"IDNO+2Reboot

4.9.11.2SetRebootFlag

true|false

Setstherebootflagtoeithertrueorfalse.Theflag'svaluecanbereadusingIfRebootFlag.

SetRebootFlagtrueIfRebootFlag0+2MessageBoxMB_OK"thismessageboxwillalwaysshow"

4.9.12InstallLoggingInstructions

Page 188: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.12.1LogSet

on|off

Setswhetherinstallloggingto$INSTDIR\install.logwillhappen.$INSTDIRmusthaveavaluebeforeyoucallthisfunctionoritwillnotwork.NotethattheNSIS_CONFIG_LOGbuildsettingmustbeset(sconsNSIS_CONFIG_LOG=yes)whenbuilding(itisnotsetbydefault)tosupportthis.SeeBuildingNSISformoreinformationaboutrecompilingNSIS.

4.9.12.2LogText

text

Ifinstallerloggingisenabled,insertstext"text"intothelogfile.

IfFileExists$WINDIR\notepad.exe0+2LogText"$$WINDIR\notepad.exeexists"

4.9.13SectionManagement

4.9.13.1SectionSetFlags

section_indexsection_flags

Setsthesection'sflags.Theflagisa32-bitinteger.Thefirstbit(lowest)representswhetherthesectioniscurrentlyselected,thesecondbitrepresentswhetherthesectionisasectiongroup(don'tmodifythisunlessyoureallyknowwhatyouaredoing),thethirdbitrepresentswhetherthesectionisasectiongroupend(again,don'tmodify),thefourthbitrepresentswhetherthesectionisshowninboldornot,thefifthbitrepresentswhetherthesectionisread-only,thesixthbitrepresentswhetherthesectiongroupistobeautomaticallyexpanded,theseventhbitissetforsectiongroupswhicharepartiallyselected,theeighthbitisinternallyusedforpartiallyselectedsectiongrouptogglingandtheninthbitisusedforreflectingsectionnamechanges.Theerrorflagwillbeset

Page 189: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ifanoutofrangesectionisspecified.

Eachflaghasaname,prefixedwith`SF_`:

!defineSF_SELECTED1!defineSF_SECGRP2!defineSF_SECGRPEND4!defineSF_BOLD8!defineSF_RO16!defineSF_EXPAND32!defineSF_PSELECTED64

Foranexampleofusagepleaseseetheone-section.nsiexample.

Formoreusefulmacrosanddefinitions,seeInclude\Sections.nsh.

Sectiontesttest_section_idSectionEnd

Function.onInit#setsection'test'asselectedandread-onlyIntOp$0${SF_SELECTED}|${SF_RO}SectionSetFlags${test_section_id}$0FunctionEnd

4.9.13.2SectionGetFlags

section_indexuser_var(output)

Retrievesthesection'sflags.SeeSectionSetFlagsforadescriptionoftheflags.Theerrorflagwillbesetifanoutofrangesectionisspecified.

Sectiontesttest_section_idSectionEnd

Function.onSelChange#keepsection'test'selectedSectionGetFlags${test_section_id}$0

Page 190: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IntOp$0$0|${SF_SELECTED}SectionSetFlags${test_section_id}$0FunctionEnd

4.9.13.3SectionSetText

section_indexsection_text

Setsthedescriptionforthesectionsection_index.Ifthetextissetto""thenthesectionwillbehidden.Theerrorflagwillbesetifanoutofrangesectionisspecified.

Section""test_section_idSectionEnd

Function.onInit#changesection'snameto$WINDIRSectionSetText${test_section_id}$WINDIRFunctionEnd

4.9.13.4SectionGetText

section_indexuser_var(output)

Storesthetextdescriptionofthesectionsection_indexintotheoutput.Ifthesectionishidden,storesanemptystring.Theerrorflagwillbesetifanoutofrangesectionisspecified.

Sectiontesttest_section_idSectionEnd

Function.onInit#append$WINDIRtosection'snameSectionGetText${test_section_id}$0StrCpy$0"$0-$WINDIR"SectionSetText${test_section_id}$0

Page 191: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionEnd

4.9.13.5SectionSetInstTypes

section_indexinst_types

Setstheinstalltypesthesectionspecifiedbysection_indexdefaultstotheenabledstatein.Notethatthesectionindexstartswithzero.Everybitofinst_typesisaflagthattellsifthesectionisinthatinstalltypeornot.Forexample,ifyouhave3installtypesandyouwantthefirstsectiontobeincludedininstalltypes1and3,thenthecommandshouldlooklikethis:

SectionSetInstTypes05

becausethebinaryvaluefor5is"...00101".Theerrorflagwillbesetifthesectionindexspecifiedisoutofrange.

Sectiontesttest_section_idSectionEnd

Function.onInit#associatesection'test'withinstallationtypes3and4SectionSetInstTypes${test_section_id}12FunctionEnd

4.9.13.6SectionGetInstTypes

section_indexuser_var(output)

Retrievestheinstalltypesflagsarrayofasection.SeeaboveexplanationaboutSectionSetInstTypesforadescriptionofhowtodealwiththeoutput.Theerrorflagwillbesetifthesectionindexisoutofrange.

Sectiontesttest_section_idSectionEnd

Page 192: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Function.onInit#associatesection'test'withinstallationtypes5,ontopofitsexistingassociationsSectionGetInstTypes${test_section_id}$0IntOp$0$0|16SectionSetInstTypes${test_section_id}$0FunctionEnd

4.9.13.7SectionSetSize

section_indexnew_size

Setsthesizeofthesectionspecifiedbysection_index.Notethattheindexstartswithzero.TheValueforSizemustbeenteredinKiloByteandsupportsonlywholenumbers.

Sectiontesttest_section_idSectionEnd

Function.onInit#setrequiredsizeofsection'test'to100bytesSectionSetSize${test_section_id}100FunctionEnd

4.9.13.8SectionGetSize

section_indexuser_var

Getsthesizeofthesectionspecifiedbysection_indexandstoresthevalueinthegivenuservariable.Notethattheindexstartswithzero.Theerrorflagwillbesetifthesectionindexisoutofrange.

Sectiontesttest_section_idSectionEnd

Function.onInit#increaserequiredsizeofsection'test'by100KiB

Page 193: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionGetSize${test_section_id}$0IntOp$0$0+100SectionSetSize${test_section_id}$0FunctionEnd

4.9.13.9SetCurInstType

inst_type_idx

SetsthecurrentInstType.inst_type_idxshouldbebetween0and31.TheerrorflagisnotsetifanoutofrangeInstTypewasused.

4.9.13.10GetCurInstType

user_var

GetthecurrentInstTypeandstoresitinuser_var.Ifthefirstinstalltypeisselected,0willbeputinuser_var.Ifthesecondinstalltypeisselected,1willbeputinuser_var,andsoon.Thevalueof${NSIS_MAX_INST_TYPES}(32bydefault)meansthattheuserselectedacustomsetofsections(Simplyselecting"Custom"inthedrop-downmenuisnotenoughtotriggerthis,thevalueiscalculatedbythesectionsactuallyselected).

4.9.13.11InstTypeSetText

inst_type_idxtext

SetsthetextofthespecifiedInstType.IfthetextisemptythentheInstTypeisremoved.Byusingapreviouslyunusedinst_type_idxnumberyoucancreatenewInstTypes.Toadd/removeSectionstothisnewInstTypeseeSectionSetInstTypes.UnlikeSectionIntheindexiszerobased,whichmeansthefirstinstalltype'sindexis0.

InstTypeaInstTypeb

Page 194: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Function.onInit#setfirstinstallationtype'snameto$WINDIRInstTypeSetText0$WINDIR#setsecondinstallationtype'snameto$TEMPInstTypeSetText1$TEMPFunctionEnd

4.9.13.12InstTypeGetText

inst_type_idxuser_var

GetsthetextofthespecifiedInstType.

InstTypeaInstTypeb

Function.onInitInstTypeGetText0$0DetailPrint$0#prints'a'InstTypeGetText1$0DetailPrint$0#prints'b'FunctionEnd

4.9.14UserInterfaceInstructions

4.9.14.1BringToFront

Makestheinstallerwindowvisibleandbringsittothetopofthewindowlist.Ifanapplicationwasexecutedthatshowsitselfinfrontoftheinstaller,BringToFrontwouldbringtheinstallerbackinfocus.

RecentWindowsversionsrestrictthesettingofforegroundwindows.Iftheuserisworkingwithanotherapplicationduringinstallation,theusermaybenotifiedusingadifferentmethod.

Page 195: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.14.2CreateFont

user_var(handleoutput)face_name[height][weight][/ITALIC][/UNDERLINE][/STRIKE]

Createsafontandputsitshandleintouser_var.FormoreinformationaboutthedifferentparametershavealookatMSDN'spageabouttheWin32APIfunctionCreateFont().

YoucangetthecurrentfontusedbyNSISusingthe^Fontand^FontSizeLangStrings.

!includeWinMessages.nshGetDlgItem$0$HWNDPARENT1CreateFont$1"TimesNewRoman""7""700"/UNDERLINESendMessage$0${WM_SETFONT}$11

4.9.14.3DetailPrint

user_message

Addsthestring"user_message"tothedetailsviewoftheinstaller.

DetailPrint"thismessagewillbeshownintheinstallationwindow"

4.9.14.4EnableWindow

hwndstate(1|0)

Enablesordisablesmouseandkeyboardinputtothespecifiedwindoworcontrol.Possiblestatesare0(disabled)or1(enabled).

GetDlgItem$0$HWNDPARENT1EnableWindow$00Sleep1000EnableWindow$01

Page 196: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.9.14.5FindWindow

user_var(hwndoutput)windowclass[windowtitle][windowparent][childafter]

Searchesforawindow.BehaveslikeWin32'sFindWindowEx().Searchesbywindowclass(and/orwindowtitleifspecified).Ifwindowparentorchildafterarespecified,thesearchwillberestrictedassuch.Ifwindowclassorwindowtitleisspecifiedas"",theywillnotbeusedforthesearch.Ifthewindowisnotfoundtheuservariableissetto0.

FindWindow$1"#32770"""$HWNDPARENT#FindstheinnerdialogFindWindow$2"EDIT"""$1#Findsthefirsteditcontrolintheinnerdialog

4.9.14.6GetDlgItem

user_var(output)dialogitem_id

Retrievesthehandleofacontrolidentifiedbyitem_idinthespecifieddialogboxdialog.Ifyouwanttogetthehandleofacontrolintheinnerdialog,firstuseFindWindowtogetthehandleoftheinnerdialog.

GetDlgItem$0$HWNDPARENT1#next/installbutton

4.9.14.7HideWindow

Hidestheinstallerwindow.

4.9.14.8IsWindow

HWNDjump_if_window[jump_if_not_window]

IfHWNDisawindow,Gotosjump_if_window,otherwise,Gotosjump_if_not_window(ifspecified).

GetDlgItem$0$HWNDPARENT1IsWindow$00+3

Page 197: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MessageBoxMB_OK"foundawindow"Goto+2MessageBoxMB_OK"nowindow"

4.9.14.9LockWindow

on|off

LockWindowonpreventsthemainwindowfromredrawingitselfuponchanges.WhenLockWindowoffisused,allcontrolsthatweren'tredrawnsinceLockWindowonwillberedrawn.Thismakesthepagesflickeringlooknicerbecausenowitflickersagroupofcontrolsatthesametime,insteadofonecontrolatatime.Theindividualcontrolflickeringismorenoticeableonoldcomputers.

4.9.14.10SendMessage

HWNDmsgwparamlparam[user_var(returnvalue)][/TIMEOUT=time_in_ms]

SendsamessagetoHWND.Ifauservariable$xisspecifiedasthelastparameter(oronebeforethelastifyouuse/TIMEOUT),thereturnvaluefromSendMessagewillbestoredinit.Notethatwhenspecifying'msg'youmustjustusetheintegervalueofthemessage.IncludeWinMessages.nshtohaveallWindowsmessagesdefinedinyourscript.Ifyouwishtosendstringsuse"STR:astring"aswParamorlParamwhereneeded.Use/TIMEOUT=time_in_mstospecifytheduration,inmilliseconds,ofthetime-outperiod.

!includeWinMessages.nshFindWindow$0"Winampv1.x"SendMessage$0${WM_CLOSE}00

GetDlgItem$1$HWNDPARENT2SendMessage$1${WM_SETTEXT}0"STR:Goodbye"

4.9.14.11SetAutoClose

Page 198: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

true|false

Overridesthedefaultautowindow-closingflag(specifiedfortheinstallerusingAutoCloseWindow,andfalsefortheuninstaller).Specify'true'tohavetheinstallwindowimmediatelydisappearaftertheinstallhascompleted,or'false'tomakeitrequireamanualclose.

4.9.14.12SetBrandingImage

[/IMGID=item_id_in_dialog][/RESIZETOFIT]path_to_bitmap_file.bmp

Setsthecurrentbitmapfiledisplayedasthebrandingimage.IfnoIMGIDisspecified,thefirstimagecontrolfoundwillbeused,ortheimagecontrolcreatedbyAddBrandingImage.Notethatthisbitmapmustbepresentontheuser'smachine.UseFilefirsttoputitthere.If/RESIZETOFITisspecifiedtheimagewillbeautomaticallyresized(verypoorly)totheimagecontrolsize.IfyouusedAddBrandingImageyoucangetthissizebycompilingyourscriptandwatchingforAddBrandingImageoutput,itwilltellyouthesize.SetBrandingImagewillnotworkwhencalledfrom.onInit!

4.9.14.13SetDetailsView

show|hide

Showsorhidesthedetails,dependingonwhichparameteryoupass.Overridesthedefaultdetailsview,whichissetviaShowInstDetails.

4.9.14.14SetDetailsPrint

none|listonly|textonly|both|lastused

Setsmodeatwhichcommandsprinttheirstatus.Nonehascommandsbequiet,listonlyhasstatustextonlyaddedtothelistbox,textonlyhasstatustextonlyprintedtothestatusbar,andbothenablesboth(thedefault).Forextractingmanysmallfiles,textonlyisrecommended

Page 199: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

(especiallyonwin9xwithsmoothscrollingenabled).

SetDetailsPrintnoneFile"secretfile.dat"SetDetailsPrintboth

4.9.14.15SetCtlColors

hwnd[/BRANDING][text_color|SYSCLR:text_color_id][transparent|bg_color|SYSCLR:bg_color_id]

Setsthetextandbackgroundcolorofastaticcontrol,editcontrol,buttonoradialog.text_colorandbg_colordon'tacceptvariables.UseGetDlgItemtogetthehandle(HWND)ofthecontrol.Tomakethecontroltransparentspecifytransparentasthebackgroundcolorvalue.PrefixthecolorvaluewithSYSCLR:tospecifyaWindowsCOLOR_*constant.Youcanalsospecify/BRANDINGwithorwithouttextcolorandbackgroundcolortomakethecontrolcompletelygray(oranyothercoloryouchoose).ThisisusedbythebrandingtextcontrolintheMUI.

PageComponents""CmpntPageShowFunctionCmpntPageShowFindWindow$1"#32770"""$HWNDPARENTGetDlgItem$0$11006SetCtlColors$00xFF00000x00FF00;RedonGreenGetDlgItem$0$11022SetCtlColors$0SYSCLR:23SYSCLR:24;COLOR_INFOTEXTonCOLOR_INFOBKFunctionEnd

Warning:SettingthebackgroundcolorofcheckboxestotransparentmaynotfunctionproperlywhenusingXPStyleon.ThebackgroundmaybecompletelyblackinsteadoftransparentwhenusingcertainWindowsthemes.

4.9.14.16SetSilent

silent|normal

Page 200: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Setstheinstallertosilentmodeornormalmode.SeeSilentInstallformoreinformationaboutsilentinstallations.Canonlybeusedin.onInit.

4.9.14.17ShowWindow

hwndshow_state

Setsthevisibilityofawindow.Possibleshow_statesarethesameastheWindowsShowWindowfunction.SW_*constantsaredefinedinInclude\WinMessages.nsh.

!includeWinMessages.nshGetDlgItem$0$HWNDPARENT1ShowWindow$0${SW_HIDE}Sleep1000ShowWindow$0${SW_SHOW}

4.9.15MultipleLanguagesInstructions

4.9.15.1LoadLanguageFile

language_file.nlf

Loadsalanguagefilefortheconstructionofalanguagetable.AllofthelanguagefilesthatshipwithNSISareinContrib\LanguageFiles

Afteryouhaveinsertedthelanguagefile${LANG_langfile}willbedefinedasthelanguageid(forexample,${LANG_ENGLISH}willbedefinedas1033).UseitwithLangString,LicenseLangString,LangDLLandVIAddVersionKey.

4.9.15.2LangString

namelanguage_id|0string

Definesamultilingualstring.Thismeansitsvaluemaybedifferent(or

Page 201: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

not,it'suptoyou)foreverylanguage.Itallowsyoutoeasilymakeyourinstallermultilingualwithouttheneedtoaddmassiveswitchestothescript.

Eachlanguagestringhasanamethatidentifiesitandavalueforeachlanguageusedbytheinstaller.Theycanbeusedinanyruntimestringinthescript.Tousealanguagestringallyouneedtoaddtothestringis$(LangString_name_here)whereyouwanttheLangStringtobeinserted.

Notes:

Unlikedefinesthatusecurlybraces-{},languagestringsuseparenthesis-().Ifyouchangethelanguageinthe.onInitfunction,notethatlanguagestringsin.onInitwillstillusethedetectedlanguagebasedontheuser'sdefaultWindowslanguagebecausethelanguageisinitializedafter.onInit.Alwayssetlanguagestringsforeverylanguageinyourscript.IfyousetthelanguageIDto0thelastusedlanguagebyLangStringorLoadLanguageFilewillbeused.

Exampleofusage:

LangStringmessage${LANG_ENGLISH}"Englishmessage"LangStringmessage${LANG_FRENCH}"Frenchmessage"LangStringmessage${LANG_KOREAN}"Koreanmessage"

MessageBoxMB_OK"Atranslatedmessage:$(message)"

4.9.15.3LicenseLangString

namelanguage_id|0license_path

DoesthesameasLangStringonlyitloadsthestringfromatext/RTFfileanddefinesaspecialLangStringthatcanonlybeusedbyLicenseData.

LicenseLangStringlicense${LANG_ENGLISH}license-english.txtLicenseLangStringlicense${LANG_FRENCH}license-french.txt

Page 202: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

LicenseLangStringlicense${LANG_GERMAN}license-german.txt

LicenseData$(license)

Previous|Contents|Next

Page 203: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 204: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.10MultipleLanguagesAsofversion2NSISfullysupportsmultiplelanguages.Theinterfaceofoneinstallercansupportmultiplelanguages.

UseLoadLanguageFileforeverylanguagetoloadthedefaultinterfacetextsandlanguageproperties.VisittheNSIStranslationsforumformoreinformationaboutcreatingnewlanguagefiles.

ThedefaultinterfacetextscaneasilybechangedusinginstructionslikeComponentTextetc.

Youcanalsousethecontentsofthestandardlanguagestringsinyourownstrings(forexample,$(^Name)containstheinstaller'snamesetusingtheNameinstruction).Thenamesofallstandardlanguagestringsarelistedascommentsjustabovethestringsinthelanguagefiles.ThelanguagefilesarelocatedinContrib\LanguageFiles.

Tocreateyourownlanguagestrings,useLangString.

Foranexampleofaninstallerwithmultiplelanguages,seelanguages.nsi.

4.10.1LanguageSelection

Whentheinstallerstartsupitgoesthroughthesestepstoselecttheinterfacelanguage:

1. Getuser'sdefaultWindowsUIlanguage2. Findaperfectmatchforthelanguage3. Ifthereisnoperfectmatch,findaprimarylanguagematch4. Ifthereisnomatch,usethefirstlanguagedefinedinthescript

(makesureyourfirstlanguageisacommononelikeEnglish)5. Ifthelanguagevariable$LANGUAGEhaschangedduring.onInit,

NSISgoesthroughsteps2to4again.

4.10.2LangDLLPlug-in

Page 205: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

TheLangDLLplug-inallowsyoutogivetheuseranoptiontochoosethelanguageoftheinstaller.Justpushthelanguageid(${LANG_langfile})anditsnameforeverylanguageinyourinstaller,thenthenumberoflanguagespushed,thecaption,andthetextthattellstheusertoselectthelanguage,calltheplug-infunctionnamedLangDialog,popthereturnedvalueinto$LANGUAGEandyou'regoodtogo.Iftheuserclicksonthecancelbuttonthereturnvaluewillbe"cancel".

Foranexampleofusageseelanguages.nsi.

4.10.3RTLLanguages

RTLlanguagesarelanguagesthatarewrittenfromrighttoleft(e.g.ArabicandHebrew).NSISfullysupportsRTLlanguages.InthelanguagefilethereisaplacetospecifyifthelanguageisRTLornot.TofindoutatruntimeifthecurrentlanguageisRTLornot,checkthevalueofthe$(^RTL)languagestring.Itwillbe1ifthelanguageisRTLand0otherwise.Thiscanbeusefulwhenusingplug-insthatcreatedialogs,theyusuallyhaveRTLsettingstoo.

Previous|Contents|Next

Page 206: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 207: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.11Plug-inDLLsTheabilitiesoftheNSISscriptinglanguagecanbeextendedbyutilisingfunctionalityprovidedinaDLLfile.ProbablythebestknownexampleofthisistheInstallOptions.dllbundledwitheveryNSISrelease.

WhentheNSIScompilerstartsitscanstheplug-insdirectoryforDLLsandmakesalistoftheplug-insfoundandtheirexportedfunctions.Duringcompilation,ifasequencesuchasfred::flintstoneisencounteredwherethecompilerexpectedtofindalanguagekeywordthecompilerwilllookthroughthislist.Ifalistentryspecifiesthatfred.dllexportsfunctionflintstoneNSISwillpackthefred.dllfileintothecreatedinstallerbinary.

Duringexecutionofaplug-incommandNSISwillunpackthenecessaryDLLtoatemporaryfolder($PLUGINSDIR),pushalloftheargumentsspecified(right-to-leftorder),andthenexecutetheDLLfunction.

4.11.1UsingPlug-inCommands

Aplug-incalllookslikethis:

InstallOptions::dialog"ini_file_location.ini"

Allparametersarepushedontothestack(inthiscase,theplug-infunctiononlyneedsoneparameter).Someplug-incommandsmaynotneedanyparametersonthestack,othersmightrequiremoreofthem.Touseaplug-incommandyouwillneedtoreadthedocumentationfortheplug-insothatyouknowwhatparametersitsfunctionsrequire.

4.11.2Callingplug-insmanually

Ifyouwanttocallaplug-inthatisstoredonuser'sharddriveorsomewhereelse,useCallInstDLL.Almostallplug-insprovideinstallerfunctionality,sousingplug-incommandsiswayeasier.UsingCallInstDLLcanbeusefulwhenyouhavecreatedplug-insthatarelinkedtoacertainversionofyourapplicationandarebeingcopiedtotheinstallationfolder.

Page 208: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 209: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 210: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

4.12SilentInstallers/UninstallersSilentinstallersareinstallerswhichrequirenouserinterventionandhavenouserinterface.Theuserdoesn'tseeanydialogandisn'taskedanyquestions.Thisisusefulfornetworkadministratorswhowishtoinstalloruninstallsomethingwithoutuserinterventionsotheycanperformtheoperationquicklyoveranynumberofcomputers.Itisalsousefulforotherdeveloperswhowishtoembedanotherinstallerintheirownandcollectalloftherequiredinformationontheirinstallerinsteadofshowingtwoinstallers.

NSISinstallersanduninstallerscanbebothsilentandnotsilent.Whenaninstalleroranuninstallerissilent,notallcallbackfunctionsarecalled..onGUIInit,.onGUIEnd,theiruninstallerequivalentsandanycallbackrelatedtoaspecificpageorpagetypewillnotbecalled.

Thereareseveralmethodstomakeaninstalleroranuninstallersilent:

1. SilentInstallandSilentUninstall2. SetSilent3. Passing/Sonthecommandline(casesensitive)

Tocheckiftheinstaller/uninstallerissilentuseIfSilent.

Tomakesureyourinstallerwillbesilentwhenitneedsto,youshouldcheckwithIfSilentbeforeeachcommandthatmightrequireuserinterventionorcreateawindow.TheMessageBoxcommand,whichisthemostcommonculpritinsilentinstallers,hasthe/SDswitchtosetadefaultanswerforsilentinstallers.Ifyouwantyourinstaller/uninstallertobeabletobecompletelysilentyoushouldusethisswitch.AllinternalNSISmessageboxeshavedefaultsforsilentinstallers.Thesilent.nsiexampledemonstratesallaspectsofthistopic.

Sincethedirectorypageisnotshowninsilentinstallerstheuserhasanoptiontospecifytheinstallationdirectoryonthecommandline(thisalsoworksonnon-silentinstallers/uninstallers).Todothat,theuserusesthe/Dswitchasinthefollowingexample:

Page 211: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

foo.exe/S/D=C:\ProgramFiles\Foo

Ifyourinstaller/uninstallerrequiressomemoreinformationthatcannotbegatheredwhensilent,youcanallowtheusertospecifythatinformationonthecommandlineandprocessitin.onInit.YoucanuseGetOptions.

!includeFileFunc.nsh!insertmacroGetParameters!insertmacroGetOptions

Function.onInit${GetParameters}$R0ClearErrors${GetOptions}$R0/USERNAME=$0FunctionEnd

Theaboveexamplewillcopythevaluetheuserpassesonafter/USERNAME=into$0.Thisallowstheusertospecifytherequiredinformationonthecommandlineinsteadofusingtheinteractiveuserinterface.Theusercanuse:

foo.exe/S/USERNAME=Bar/D=C:\ProgramFiles\Foo

or:

foo.exe/S/USERNAME=stringwithspaces/D=C:\ProgramFiles\Foo

or:

foo.exe/S/USERNAME="stringwithspaces"/D=C:\ProgramFiles\Foo

Ifyourinstaller/uninstallerrequiresalotofinformationandyouwantittobeabletobesilent,youshouldallowtheusertopassonapathtoananswersfile.Thiswouldbemuchmorecomfortablethanwritingalloftheinformationonthecommandline.

Previous|Contents|Next

Page 212: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 213: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.1CompilerUtilityCommandsThesecommandsaresimilartotheCpreprocessorintermsofpurposeandfunctionality.Theyallowfileinclusion,conditionalcompilation,executableheaderpackingandprocessexecutionduringthebuildprocess.Note:Noneofthesecommandsallowtheuseofvariables.

Numberliteralssupportthe0b,0o,0nand0xradixprefixes(base2,8,10and16respectively).Note:Thedeprecatedplain0octalprefixisalsosupportedinsomeplacesbutitsusageisdiscouraged.

5.1.1!include

[/NONFATAL][/CHARSET=ACP|OEM|CP#|UTF8|UTF16LE|UTF16BE]file

Thiscommandwillinclude'file'asifitwaspartoftheoriginalscript.Notethatifafileisincludedinanotherdirectory,thecurrentdirectoryisstillwherethescriptwascompiledfrom(notwheretheincludedfileresides).Ifthecompilercan'tfindthefileitwilllookforitineveryincludedirectory.See!addincludedirformoreinformation.Ifthe/nonfatalswitchisusedandnofilesarefound,awarningwillbeissuedinsteadofanerror./charsetcanbeusedtospecifyacodepageforplaintextfileswithoutaBOM.

!includeWinMessages.nsh!includeLibrary.nsh!include/CHARSET=CP1252C:\MyConfig.nsi!include..\MyConfig.nsh!include/NONFATALfile_that_may_exist_or_not.nsh

5.1.2!addincludedir

directory

Addsanotherincludedirectorytotheincludedirectorieslist.Thislistissearchedwhen!includeisused.Thislist'sinitialvalueis${NSISDIR}\Include.

Page 214: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!addincludedir..\include!includesomething.nsh

5.1.3!addplugindir

[/x86-ansi|/x86-unicode]directory

CausestheNSIScompilertoscanthegivendirectoryforplug-inDLLs.Ifyoudon'tspecifytheplug-inarchitectureitisassumedtomatchthecurrenttargetarchitecture.Ifthearchitecturedoesnotmatchtheinstallerwillprobablycrash!

!addplugindir..\mypluginMyPlugin::SomeFunction

5.1.4!appendfile

[/CHARSET=ACP|OEM|CP#|UTF8[SIG]|UTF16<LE|BE>[BOM]][/RawNL]filetext

Appendstexttofile.ThetextiswrittenasANSI(ACP)unlessthefilealreadyhasaBOM.Using/CHARSETwillforceaspecificcharacterencoding.$\nwillbetranslatedto$\r$\nonWindowsunlessyouspecify/RawNL.

!tempfileFILE!appendfile"${FILE}""XPStyleon$\n"!appendfile"${FILE}""Name'test'$\n"!include"${FILE}"!delfile"${FILE}"!undefFILE

5.1.5!cd

new_path

Thiscommandwillchangethecompilertothenewdirectory,new_path.new_pathcanberelativeorabsolute.

Page 215: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!cd..\more-scripts\new

5.1.6!delfile

[/nonfatal]file

Thiscommanddeletesafile.

!tempfileFILE!delfile"${FILE}"!undefFILE

5.1.7!echo

message

Thiscommandwillechoamessagetotheusercompilingthescript.

!echo"helloworld"

5.1.8!error

[message]

Thiscommandwillissueanerrortothescriptcompilerandwillstopexecutionofthescript.Youcanalsoaddamessagetothiserror.

!ifdefVERSION&NOVERSION!error"bothVERSIONandNOVERSIONaredefined"!endif

5.1.9!execute

command[comparecomparevalue|symbol]

Thiscommandwillexecute'command'usingacalltoCreateProcess().Unlike!system,itdoesnotusethecommandlineprocessor,soinput/outputredirectionandcommandslike'cd','dir'and'type'cannotbe

Page 216: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

used.Currently,theonlyknownadvantageof!executeover!systemisthatitdoesnotgivetroublewhenthecurrentworkingdirectoryisspecifiedusingUNC.

OnPOSIXplatforms,!executewillusesystem()justlike!system.

!execute'"$%WINDIR%\notepad.exe"/P"${NSISDIR}\COPYING"'

5.1.10!makensis

parameters[comparecomparevalue|symbol]

Thiscommandwill!executeanewinstanceofMakeNSISwiththeparametersyouspecify.

!makensis'-DGENERATEUNINST"${__FILE__}"'=0!system'"signtool"sign...'=0

5.1.11!packhdr

tempfilecommand

ThisoptionmakesthecompileruseanexternalEXEpacker(suchasPetiteorUPX)tocompresstheexecutableheader.Specifyatemporaryfilename(suchas"temp.dat")andacommandline(suchas"C:\programfiles\upx\upx-9temp.dat")tocompresstheheader.

!packhdr"$%TEMP%\exehead.tmp"'"C:\ProgramFiles\UPX\upx.exe""$%TEMP%\exehead.tmp"'

5.1.12!finalize

command[comparecomparevalue]

Thisoptionwillexecute'command'usingacalltosystem()aftertheoutputEXEhasbeengenerated.Youcantypicallyuseittosign(Authenticode)yourinstaller.If'command'containsa'%1'itwillbereplacedbytheexecutablesfilename.

Page 217: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!finalize'sign.bat"%1""ProductInstaller"http://example.com'

5.1.13!system

command[comparecomparevalue|symbol]

Thiscommandwillexecute'command'usingacalltosystem().Youcanstorethereturnvalueinadefine('symbol')orhaltexecutionifthereturnvaluecompared(using'compare')to'comparevalue'isfalse.'compare'canbe'<'or'>'or'<>'or'='.

!system'"%WINDIR%\notepad.exe""${NSISDIR}\COPYING"'!system'echo!definesomething>newinclude.nsh'!includenewinclude.nsh!ifdefsomething!echo"somethingisdefined"!endif

5.1.14!tempfile

symbol

Thiscommandcreatesatemporaryfile.Itputsitspathintoadefine,namedsymbol.

!tempfilePACKHDRTEMP!packhdr"${PACKHDRTEMP}"'"C:\ProgramFiles\UPX\upx.exe""${PACKHDRTEMP}"'

!tempfileFILE!define/dateDATE"%H:%M:%S%d%b,%Y"!system'echobuilton${DATE}>"${FILE}"'!undefDATEFile/oname=build.txt"${FILE}"!delfile"${FILE}"!undefFILE

5.1.15!getdllversion

Page 218: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

localfilenamedefine_basename

ThisissimilartoGetDLLVersionLocal,onlyitstorestheversionnumberindefinesandcanthereforebeusedanywhere,notjustinsidefunctionsandsections.

!getdllversion"$%WINDIR%\Explorer.exe"expv_!echo"Explorer.exeversionis${expv_1}.${expv_2}.${expv_3}.${expv_4}"

5.1.16!warning

[message]

Thiscommandwillissueawarningtothescriptcompiler.Youcanalsoaddamessagetothiswarning.

!ifdefUSE_DANGEROUS_STUFF!warning"usingdangerousstuff"!endif

5.1.17!pragma

warning<enable|disable|default>codewarning<push|pop>

Thepragmacommandsallowsyoutochangecompilerfeaturesandbehavior.

!pragmawarningdisable9000;Disablewarningaboutusing"Setup.exe"asthenameOutFile"Setup.exe"

5.1.18!verbose

level|push|pop

Thiscommandwillsetthelevelofverbosity.4=all,3=noscript,2=noinfo,1=nowarnings,0=none.

Page 219: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Passingpushwillcause!verbosetopushthecurrentverbositylevelonaspecialstack.Passingpopwillcause!verbosetopopthecurrentverbositylevelfromthesamestackanduseit.

!verbosepush!verbose1!includeWinMessages.nsh!verbosepop

Previous|Contents|Next

Page 220: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 221: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.2PredefinesYoucanusethesestandardpredefinestoautomaticallyaddthebuildtimetothetitleofdevelopmentversions,addthedatetotheversionnumber,etc.

5.2.1${__COUNTER__}

Expandstoanumber(Startingat0andincrementingby1everytimeitisused)

5.2.2${__FILE__}

Currentscriptname.

5.2.3${__FILEDIR__}

Currentscriptdirectory.

5.2.4${__LINE__}

Currentlinenumber.

5.2.5${__DATE__}

Datewhenthescriptstartedcompilingaccordingtothecurrentlocale.

5.2.6${__TIME__}

Timewhenthescriptstartedcompilingaccordingtothecurrentlocale.

5.2.7${__TIMESTAMP__}

Date&timeofthelastmodificationtothescriptfileaccordingtothecurrentlocale.

Page 222: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.2.8${NSIS_VERSION}

NSISversionusedtobuildthescript.

5.2.9${NSIS_PACKEDVERSION}

NSISversionasa32-bitnumber.

!if0x3014000>="${NSIS_PACKEDVERSION}"!error"NSIS3.15orhigherisrequiredtobuildthisinstaller!"!endif

5.2.10${NSIS_CHAR_SIZE}

Thesizeofacharactercodeunit(inbytes).1inANSIinstallersand2inUnicodeinstallers.

Agraphemeclusterconsistsofabasecharacterplusoptionalcombiningcharactersanddiacriticsandisdefinedasoneormorecodepoints.Oneormorecodeunitsisrequiredtoencodeasinglecodepoint.

5.2.11${NSIS_PTR_SIZE}

Thesizeofapointer(inbytes)inthegeneratedinstaller.

5.2.12${U+1}...${U+10FFFF}

AUnicode(UCS-4)character.

DetailPrint"${U+2115}SIS"#DOUBLE-STRUCKCAPITALN+"SIS"

5.2.13ScopePredefines

Standardpredefinesthatcontaininformationaboutthecurrentcodescope.

5.2.13.1${__GLOBAL__}

Page 223: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Definedintheglobalscope.

Sectiontest!ifdef${__GLOBAL__}!error"thisshouldn'tbehere!"!endifSectionEnd

PageExinstfiles!ifdef${__GLOBAL__}!error"thisshouldn'tbehere!"!endifPageExEnd

5.2.13.2${__SECTION__}

Definedasthesectionname,withoutanyprefixes,insectionscope.

!ifdef__SECTION__!error"thisshouldn'tbehere!"!endif

Sectiontest!ifndef__SECTION__!error"missingpredefine!"!endif

!if${__SECTION__}!=test!error"wrongpredefinevalue!"!endifSectionEnd

Section!test!if${__SECTION__}!=test!error"wrongpredefinevalue!"!endifSectionEnd

Page 224: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Sectionun.test!if${__SECTION__}!=test!error"wrongpredefinevalue!"!endifSectionEnd

5.2.13.3${__FUNCTION__}

Definedasthefunctionname,withoutanyprefixes,infunctionscope.

!ifdef__FUNCTION__!error"thisshouldn'tbehere!"!endif

Functiontest!ifndef__FUNCTION__!error"missingpredefine!"!endif

!if${__FUNCTION__}!=test!error"wrongpredefinevalue!"!endifFunctionEnd

Functionun.test!if${__FUNCTION__}!=test!error"wrongpredefinevalue!"!endifFunctionEnd

5.2.13.4${__PAGEEX__}

DefinedasthepagetypeinPageExscope.

!ifdef__PAGEEX__

Page 225: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!error"thisshouldn'tbehere!"!endif

PageExinstfiles!ifndef__PAGEEX__!error"missingpredefine!"!endif

!if${__PAGEEX__}!=instfiles!error"wrongpagetype"!endifPageExEnd

5.2.13.5${__UNINSTALL__}

Definedinsection,functionorPageExscopesoftheuninstaller.

!ifdef__UNINSTALL__!error"thisshouldn'tbehere!"!endif

Functiontest!ifdef__UNINSTALL__!error"thisshouldn'tbehere!"!endifFunctionEnd

Functionun.test!ifndef__UNINSTALL__!error"missingpredefine!"!endifFunctionEnd

5.2.13.6${__MACRO__}

Definedasthenameofthecurrentmacro.

Page 226: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 227: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 228: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.3Readenvironmentvariables

5.3.1$%envVarName%

$%envVarName%willbereplacedatcompiletimebytheenvironmentvariableenvVarName.

Previous|Contents|Next

Page 229: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 230: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.4ConditionalCompilationThecompilermaintainsalistofdefinedsymbols,whichcanbedefinedusing!defineorthe/Dcommandlineswitch.Thesedefinedsymbolscanbeusedforconditionalcompilation(using!ifdef)orforsymbolreplacement(asimpleformofmacros).Toreplaceasymbolwithitsvalue,use${SYMBOL}(ifSYMBOLisnotdefined,notranslationwilloccur).Thetranslationisfirst-come-first-served,meaningifyoudo:

!definesymbol_one${symbol_two}

Ifsymbol_twoisdefinedwhenthatlineoccurs,itwillbereplaced.Otherwise,anyreplacingwilloccurwhen${symbol_one}isreferenced.

Define/conditionalcompilationrelatedcommands:

5.4.1!define

[/ifndef|/redef]([/date|/utcdate]gflag[value])|(/mathgflagval1OPval2)|(/filegflagfilename.txt)

Thiscommandwilladdgflagtotheglobaldefinelist.Thiswillhaveasimilareffectasusingthe/Dswitchonthecommandline(thedefineonlybecomeseffectiveafterthe!definecommand).

If/dateor/utcdateareused,valuewillbepassedtostrftime()andtheresultwillbeusedasthevalueofgflag.strftimeconvertsspecialsymbolsintocertainpartsofthecurrenttimeordate.Forexample,%Hwillbeconvertedintothecurrenthourin24-hourformat.Foracompletelistofavailablesymbols,searchforstrftimeonMSDN.OnPOSIX,youcangetthelistbyusingmanstrftime.

If/mathisused,theresultof'val1OPval2',whereOPmaybe+,-,*,&,|,^,/,<<,>>,>>>or%,willbeusedasthevalueofgflag.Notethatval1ANDval2MUSTbeintegervalues!

If/fileisused,theentiretextfilespecified(includingwhitespaceandnewlines)willbereadandstuffedintogflag.

Page 231: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

!defineUSE_SOMETHING!defineVERSION1.2!define/dateNOW"%H:%M:%S%d%b,%Y"!define/mathRESULT3+10!define/mathREST15%${RESULT}!define/fileBunchaStuffsomesourcefile.cpp!define/redefUSE_SOMETHING${RESULT};redefineUSE_SOMETHING

5.4.2!undef

gflag

Removesanitemfromtheglobaldefinelist.Notethat${SYMBOL}whereSYMBOLisundefinedwillbetranslatedto"${SYMBOL}".

!defineSOMETHING!undefSOMETHING

5.4.3!ifdef

gflag[bcheckgflag[...]]

Thiscommand,whenpairedwithan!endifcommand,willtellthecompilerwhetherornottocompilethelinesinbetweenthetwolines.Ifgflagisgloballydefined(using!defineorthe/Dswitch),thenthecontainedlineswillbecompiled.Otherwise,theywillbeskipped.'bcheck'canbespecifiedas&(booleanand)or|(booleanor)alongwithmoregflags--precedenceissimple,lefttoright.

!defineSOMETHING!ifdefSOMETHING!echo"SOMETHINGisdefined"!endif!undefSOMETHING!ifdefSOMETHING!echo"SOMETHINGisdefined"#willneverbeprinted!endif

Page 232: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.4.4!ifndef

gflag[bcheckgflag[...]]]

Theoppositeof!ifdef.Thelineswillbecompiledwhenthegflaghasnotbeendefined.

5.4.5!if

[!]value[opvalue2][!]/FileExists"c:\path\file.exe"

Thiscommand,whenpairedwithan!endifcommand,willtellthecompilerwhetherornottocompilethelinesinbetweenthetwolines.Ifvalueisnon-zero,orthecomparisonofvalueandvalue2dependingontheoperatorresultsintrue,thecontainedlineswillbecompiled.Otherwise,theywillbeskipped.opcanbeeither==or!=(case-insensitivestringcomparison),S==orS!=(case-sensitivestringcomparison),=,<>,<=,<,>or>=(int/hex/floatcomparison),&(bitwiseANDcomparison),&&or||(booleancomparison).If[!]isset,theresultwillbeflippedfromtruetofalseandviceversa.

!if1<0x2!echo"1issmallerthan2!!"!elseif!3.1>1.99!error"thislineshouldneverappear"!else!error"neithershouldthis"!endif

!if/FileExists".\cert.pfx"!finalize'".\sign.bat""%1"'!endif

5.4.6!ifmacrodef

gflag[bcheckgflag[...]]]

Page 233: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Thiscommand,whenpairedwithan!endifcommand,willtellthecompilerwhetherornottocompilethelinesinbetweenthetwolines.Ifthemacrogflagexists,thenthecontainedlineswillbecompiled.Otherwise,theywillbeskipped.'bcheck'canbespecifiedas&(booleanand)or|(booleanor)alongwithmoregflags--precedenceissimple,lefttoright.

!macroSomeMacro!macroend!ifmacrodefSomeMacro!echo"SomeMacroisdefined"!endif

5.4.7!ifmacrondef

gflag[bcheckgflag[...]]]

Theoppositeof!ifmacrodef.Thelineswillbecompiledwhenthemacrogflagdoesnotexist.

5.4.8!else

[if|ifdef|ifndef|ifmacrodef|ifmacrondef[...]]

Thiscommandallowstoeasilyinsertdifferentcodewhendifferentdefinesormacrosareset.Youcancreateblockslike!ifdef/!else/!endif,!ifdef/!elseifdef/!else/!endifetc.

!ifdefVERSIONOutFileinstaller-${VERSION}.exe!elseOutFileinstaller.exe!endif

5.4.9!endif

Thiscommandclosesablockstartedwith!if,!ifdef,!ifndef,!ifmacrodefor!ifmacrondef.

Page 234: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

5.4.10!insertmacro

macro_name[parameter][...]

Insertsthecontentsofamacrothatwascreatedwith!macro.Ifthemacrowascreatedwithparameters,thenyoumustpassasmanyparameterstothemacroasitrequires.

!macroPrinttextDetailPrint"${text}"!macroend!insertmacroPrint"sometext"!insertmacroPrint"somemoretext"

5.4.11!macro

macro_name[parameter][...]

Createsamacronamed'macro_name'.Alllinesbetweenthe!macroandthe!macroendwillbesaved.Toinsertthemacrolateron,use!insertmacro.!macrodefinitionscanhaveoneormoreparametersdefined.Theparametersmaybeaccessedthesamewaya!definewould(e.g.${PARMNAME})frominsidethemacro.

!macroSomeMacroparm1parm2parm3DetailPrint"${parm1}"MessageBoxMB_OK"${parm2}"File"${parm3}"!macroend

5.4.12!macroend

Endsamacrothatwasstartedwith!macro.

5.4.13!macroundef

macro_name

Page 235: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Deletesamacro.

5.4.14!searchparse

[/ignorecase][/noerrors][/file]source_string_or_filesubstring_startOUTPUTSYMBOL1[substring[OUTPUTSYMBOL2[substring...]]]

Parsessource_string_or_file(whichistreatedasastring,orasafilenameif/fileisset),lookingforsubstring_start.Ifsubstring_startisfound,thenOUTPUTSYMBOL1isdefinedtotherestofthestring(minusanyothersubstringthatmaybefound).AnynumberofOUTPUTSYMBOLxmaybespecified,andthefinalsubstringisoptional.

If/noerrorsisspecified,matchinglessthanthefullnumberofstringsisallowed(allOUTPUTSYMBOLxafterthenot-foundsubstringwillbeignored).

If/fileisspecified,thefileistreatedasaseriesoflines.Thefileissearcheduntilallsubstringsarematched.If/noerrorsisspecifiedandnotallstringsarematched,thefirstlinewiththemostsymbolsmatchedisused.

#searchfilename.cppforaline'#defineAPP_VERSION"2.5"'andset${VER_MAJOR}to2,${VER_MINOR}to5.!searchparse/filefilename.cpp`#defineAPP_VERSION"`VER_MAJOR`.`VER_MINOR`"`

5.4.15!searchreplace

[/ignorecase]symbol_outsource_stringsearchforreplacewith

Searchessource_string,lookingforsearchforandreplacingallinstancesofitwithreplacewith.Unlike!define,!searchreplaceallowsyoutoredefinesymbol_outwithoutwarningorerror.

#defines${blah}to"ilikeponies"!searchreplaceblah"iloveponies""love""like"

Previous|Contents|Next

Page 236: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 237: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixA:ModernUserInterfaceNSIS2makesitispossibletocreateinstallerswithacustomuserinterface.TheModernUIisainterfacewithastylelikethewizardsofrecentWindowsversions.Thisnewinterfacealsofeaturesnewpages(Welcome,Finish,StartMenu)andadescriptionareaonthecomponentspage.Theinterfaceandthegraphicscanbecustomizedusingtheprovidedsettings.UsingtheModernUImacrosandlanguagefiles,writingscriptswithamoderninterfaceiseasy.

FormoreinformationanddocumentationseetheModernUI2Readme.

NSIS2.34broughtwithitanewversionofModernUI-version2.Itisfasterandmoreextendible.Itallowsplug-instoaddnewtypesofpagesandevenchangeexistingpagesusingasimpleNSHfile.ItalsousesnsDialogswhichfasterthanitseldersibling-InstallOptions.

FormoreinformationanddocumentationoftheoldversionseetheModernUIReadme.

Previous|Contents|Next

Page 238: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 239: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixB:DLL/TLBLibrarySetupIntroductionLibraryInstallation

IntroductionParametersOptionsNotesExample

LibraryUninstallationIntroductionParametersOptionsExample

VisualBasic6Run-TimeFiles

Previous|Contents|Next

Page 240: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 241: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

B.1IntroductionTheLibraryheaderfilecanbeusedtosetupdynamiclinklibraries(DLL)andtypelibraries(TLB).Ifnecessary,thefollowingactionswillbeperformed:

FilecopyingFilecopyingonrebootVersionchecksRegistrationandunregistrationRegistrationandunregistrationonrebootSharedDLLcountingWindowsFileProtectionchecks

ThemacrosarestoredintheheaderfileLibrary.nsh,whichshouldbeincludedinscriptsusingthissystem:

!includeLibrary.nsh

Notethatthelibrarymacrosarelimitedonnon-Windowsplatforms.DLLversioninformationisrequiredwhencompilingonnon-Windowsplatforms.

Previous|Contents|Next

Page 242: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 243: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

B.2LibraryInstallation

B.2.1Introduction

TheInstallLibmacroallowsyoutoinstallalibrary.Itsetstheerrorflagifsomethingwentwrongduringlibrarysetup.

Toasktheuserforareboot,ifrequired,usetheModernUIwithaFinishpageoruseIfRebootFlagandmakeyourownpageormessagebox.

B.2.2Parameters

libtypesharedinstalllocalfiledestfiletempbasedir

libtype

Thetypeofthelibrary

DLL-Dynamiclinklibrary(DLL)REGDLL-DLLthathastoberegisteredREGEXE-EXECOMserverthathastoberegisteredusing/regserverTLB-TypelibraryorDLLthatcontainsatypelibraryREGDLLTLB-DLLthathastoberegisteredandcontainsatypelibrary

shared

Specifywhetherthelibraryissharedwithotherapplications

NOTSHARED-Thelibraryisnotshared$VARNAME-Variablethatisemptywhentheapplicationisinstalledforthefirsttime,whichiswhenthesharedlibrarycountwillbeincreased.

install

Specifytheinstallationmethod

REBOOT_PROTECTED

Page 244: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Upgradethelibraryonrebootwheninuse(requiredforsystemfiles).UpgradethelibraryifthefileisnotprotectedbyWindowsFileProtection.

NOREBOOT_PROTECTED

Warnstheuserwhenthelibraryisinuse.Theuserwillhavetocloseapplicationsusingthelibrary.UpgradethelibraryifthefileisnotprotectedbyWindowsFileProtection.

REBOOT_NOTPROTECTED

Upgradethelibraryonrebootwheninuse(requiredforsystemfiles).UpgradethelibrarywithoutcheckingforWindowsFileProtection.

NOREBOOT_NOTPROTECTED

Warnstheuserwhenthelibraryisinuse.Theuserwillhavetocloseapplicationsusingthelibrary.UpgradethelibrarywithoutcheckingforWindowsFileProtection.

localfile

Locationofthelibraryonthecompilersystem

destfile

Locationtostorethelibraryontheuser'ssystem

tempbasedir

Directoryontheuser'ssystemtostoreatemporaryfilewhenthesystemhastoberebooted.

ForWindows9x/MEsupport,thisdirectoryshouldbeonthesamevolumeasthedestinationfile(destfile).TheWindowstempdirectorycouldbelocatedonanyvolume,soyoucannotusethisdirectory.

B.2.3Options

Page 245: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

DefineanyofthefollowingbeforeinsertingaInstallLibmacrotomodifyitsbehaviorasspecified.

B.2.3.1LIBRARY_X64

InstallsaDLLbuiltforWindowsx64.Warning:Thisresetsfilesystemredirection.

B.2.3.2LIBRARY_SHELL_EXTENSION

DefinethisbeforeinsertingInstallLibmacrotocallSHChangeNotifywithSHCNE_ASSOCCHANGEDafterregistration.Usethistorefreshtheshellwheninstallingashellextensionorwhenchangingfileassociations.

B.2.3.3LIBRARY_COM

DefinethisbeforeinsertingInstallLibmacrotocallCoFreeUnusedLibrariesafterregistration.UsethisforunloadingallunnecessarylibrariesfrommemorywheninstallingCOMlibraries.

B.2.3.4LIBRARY_IGNORE_VERSION

DefinethisbeforeinsertingInstallLibmacrotoignoreversioninformationinthefileandalwaysinstallit,evenifitalreadyexists.Usethiswhenanolderorspecificversionisrequired.NotrecommendedforDLLsinstalledto$SYSDIR.

B.2.4Notes

IfyouneedtosupportWindows9x/ME,youcanonlyuseshortfilenames(8.3).Warning:AlwaysuseredistributablefileswhendeployingDLLs,nevercopyfilesfromyoursystemdirectory!

Page 246: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

B.2.5Example

B.2.5.1UnsharedDLL

!insertmacroInstallLibREGDLLNOTSHAREDREBOOT_NOTPROTECTEDdllname.dll$SYSDIR\dllname.dll$SYSDIR

B.2.5.2SharedDLL

;Addcodeherethatsets$ALREADY_INSTALLEDtoanon-zerovalueiftheapplicationis;alreadyinstalled.Forexample:

IfFileExists"$INSTDIR\MyApp.exe"0new_installation;ReplaceMyApp.exewithyourapplicationfilenameStrCpy$ALREADY_INSTALLED1new_installation:

!insertmacroInstallLibREGDLL$ALREADY_INSTALLEDREBOOT_NOTPROTECTEDdllname.dll$SYSDIR\dllname.dll$SYSDIR

Previous|Contents|Next

Page 247: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 248: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

B.3LibraryUninstallation

B.3.1Introduction

TheUnInstallLibmacroallowsyoutouninstallalibrary.Itsetstheerrorflagifsomethingwentwrongduringlibraryremoval.

B.3.2Parameters

libtypeshareduninstallfile

libtype

Thetypeofthelibrary

DLL-Dynamiclinklibrary(DLL)REGDLL-DLLthathastobeunregisteredREGEXE-EXECOMserverthathastobeunregisteredusing/unregserverTLB-TypelibraryorDLLthatcontainsatypelibraryREGDLLTLB-DLLthathastobeunregisteredandcontainsatypelibrary

shared

Specifywhetherthelibraryissharedwithotherapplications

NOTSHARED-ThelibraryisnotsharedSHARED-Thelibraryissharedandshouldberemovedifthesharedlibrarycountindicatesthatthefileisnotinuseanymore..

uninstall

Specifytheuninstallationmethod

NOREMOVE

Thelibraryshouldnotberemoved.Youshouldusethisoptionfor

Page 249: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

commonorimportantsystemfilessuchastheVisualBasic/C++/MFCruntimes.

REBOOT_PROTECTED

Removethelibraryonrebootwheninuse(requiredforsystemfiles).RemovethelibraryifthefileisnotprotectedbyWindowsFileProtection.

NOREBOOT_PROTECTED

Warnstheuserwhenthelibraryisinuse.Theuserwillhavetocloseapplicationsusingthelibrary.RemovethelibraryifthefileisnotprotectedbyWindowsFileProtection.

REBOOT_NOTPROTECTED

Removethelibraryonrebootwheninuse(requiredforsystemfiles).RemovethelibrarywithoutcheckingforWindowsFileProtection.

NOREBOOT_NOTPROTECTED

Warnstheuserwhenthelibraryisinuse.Theuserwillhavetocloseapplicationsusingthelibrary.RemovethelibrarywithoutcheckingforWindowsFileProtection.

file

Locationofthelibrary

B.3.3Options

DefineanyofthefollowingbeforeinsertingaUnInstallLibmacrotomodifyitsbehaviorasspecified.

B.3.3.1LIBRARY_X64

UninstallsaDLLbuiltforWindowsx64.

Page 250: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Warning:ThisresetsSetRegViewandfilesystemredirection.

B.3.3.2LIBRARY_SHELL_EXTENSION

DefinethisbeforeinsertingUninstallLibmacrotocallSHChangeNotifywithSHCNE_ASSOCCHANGEDafterunregistration.Usethistorefreshtheshellwhenuninstallingashellextensionorwhenchangingfileassociations.

B.3.3.3LIBRARY_COM

DefinethisbeforeinsertingUninstallLibmacrotocallCoFreeUnusedLibrariesafterunregistration.UsethisforunloadingallunnecessarylibrariesfrommemorywhenuninstallingCOMlibraries.

B.3.4Example

!insertmacroUnInstallLibREGDLLSHAREDREBOOT_NOTPROTECTED$SYSDIR\dllname.dll

Previous|Contents|Next

Page 251: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 252: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

B.4VisualBasic6Run-TimeFilesAnewVB6RunTime.nshheaderfileisavailableforthesetupoftheVB6run-timefiles.Toobtainthelatestrun-timefiles,downloadvb6runtime.zipandextractthisfile.

!includeVB6RunTime.nsh

VarAlreadyInstalled

Section"-InstallVB6run-timefiles"

;Addcodeherethatsets$AlreadyInstalledtoanon-zerovalueiftheapplicationisalreadyinstalled.Forexample:IfFileExists"$INSTDIR\MyApp.exe"0new_installation;ReplaceMyApp.exewithyourapplicationfilenameStrCpy$AlreadyInstalled1new_installation:

!insertmacroVB6RunTimeInstallC:\vb6runtimes$AlreadyInstalled;ReplaceC:\vb6runtimeswiththelocationofthefiles

SectionEnd

Section"-un.UninstallVB6run-timefiles"

!insertmacroVB6RunTimeUnInstall

SectionEnd

Remarks:

YoumayhavetoinstalladditionalfilesforsuchVisualBasicapplicationtowork,suchasOCXfilesforuserinterfacecontrols.Installationoftherun-timefilesrequiresAdministratororPowerUserprivileges.UsetheMulti-Userheaderfiletoverifywhethertheseprivilegesareavailable.AddaModernUIfinishpageoranothercheck(seeIfRebootFlag)toallowtheusertorestartthecomputerwhennecessary.

Page 253: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 254: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 255: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixC:UsefulScriptsGetInternetExplorerversionIs.NETFrameworkinstalled?IsMacromediaFlashPlayerinstalled?ConnecttotheInternetGetInstallerFilenamePreventMultipleInstancesMore

Previous|Contents|Next

Page 256: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 257: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.1GetInternetExplorerversion

;GetIEVersion;;BasedonYazno'sfunction,http://yazno.tripod.com/powerpimpit/;Returns1-6(IEVersion)or''(IEisnotinstalled)ontopofthestack;;Usage:;CallGetIEVersion;Pop$R0;atthispoint$R0is"5"orwhatnot

FunctionGetIEVersionPush$R0ClearErrorsReadRegStr$R0HKLM"Software\Microsoft\InternetExplorer""Version"IfErrorslbl_123lbl_456

lbl_456:;ie4+Strcpy$R0$R01Gotolbl_done

lbl_123:;olderieversionClearErrorsReadRegStr$R0HKLM"Software\Microsoft\InternetExplorer""IVer"IfErrorslbl_error

StrCpy$R0$R03StrCmp$R0'100'lbl_ie1StrCmp$R0'101'lbl_ie2StrCmp$R0'102'lbl_ie2

StrCpy$R0'3';defaulttoie3ifnot100,101,or102.Gotolbl_donelbl_ie1:StrCpy$R0'1'Gotolbl_done

Page 258: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

lbl_ie2:StrCpy$R0'2'Gotolbl_donelbl_error:StrCpy$R0''lbl_done:Exch$R0FunctionEnd

Previous|Contents|Next

Page 259: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 260: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.2Is.NETFrameworkinstalled?

;IsDotNETInstalled;;BasedonGetDotNETVersion;http://nsis.sourceforge.net/Get_.NET_Version;;Usage:;CallIsDotNETInstalled;Pop$0;StrCmp$01found_dotNETFrameworkno_dotNETFramework

FunctionIsDotNETInstalledPush$0Push$1

StrCpy$01System::Call"mscoree::GetCORVersion(w,i${NSIS_MAX_STRLEN},*i)i.r1"StrCmp$10+2StrCpy$00

Pop$1Exch$0FunctionEnd

Previous|Contents|Next

Page 261: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 262: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.3IsMacromediaFlashPlayerinstalled?

;IsFlashInstalled;;ByYazno,http://yazno.tripod.com/powerpimpit/;Returnstheresultontopofthestack;;Usage:;CallIsFlashInstalled;Pop$R0;$R0is"1"or"0"atthispoint

FunctionIsFlashInstalledPush$R0ClearErrorsReadRegStr$R0HKCR"CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}"""IfErrorslbl_naStrCpy$R01Gotolbl_endlbl_na:StrCpy$R00lbl_end:Exch$R0FunctionEnd

Previous|Contents|Next

Page 263: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 264: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.4ConnecttotheInternet

;ConnectInternet(usesDialerplug-in);WrittenbyJoostVerburg;;Thisfunctionattemptstomakeaconnectiontotheinternetifthereisno;connectionavailable.Ifyouarenotsurethatasystemusingtheinstaller;hasanactiveinternetconnection,callthisfunctionbeforedownloading;fileswithNSISdl.;;ThefunctionrequiresInternetExplorer3,butaskstoconnectmanuallyif;IE3isnotinstalled.FunctionConnectInternetPush$R0ClearErrorsDialer::AttemptConnectIfErrorsnoie3Pop$R0StrCmp$R0"online"connectedMessageBoxMB_OK|MB_ICONSTOP"Cannotconnecttotheinternet."Quit;Thiswillquittheinstaller.Youmightwanttoaddyourownerrorhandling.noie3:;IE3notinstalledMessageBoxMB_OK|MB_ICONINFORMATION"Pleaseconnecttotheinternetnow."connected:Pop$R0FunctionEnd

Page 265: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 266: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 267: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.5GetInstallerFilename

System::Call'kernel32::GetModuleFileName(p0,t.R0,i${NSIS_MAX_STRLEN})i.r1';$R0willcontaintheinstallerfilename

Previous|Contents|Next

Page 268: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 269: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.6PreventMultipleInstancesPutthefollowingcodeinyour.onInitfunction:

System::Call'kernel32::CreateMutex(p0,i0,t"myMutex")p.r1?e'Pop$R0StrCmp$R00+3MessageBoxMB_OK|MB_ICONEXCLAMATION"Theinstallerisalreadyrunning."Abort

'myMutex'mustbereplacedbyauniquevalue!

Previous|Contents|Next

Page 270: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 271: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

C.7MoreYoucanfindmoreusefulscriptsontheNSISWiki,theNSISforumandtheNSISdevelopmentpage.

Previous|Contents|Next

Page 272: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 273: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixD:UsefulInformationErrorLevelsAdduninstallinformationtoAdd/RemoveProgramsCallinganexternalDLLusingtheSystem.dllplug-inDumpContentofLogWindowtoFileHowtoReadREG_MULTI_SZValuesPredefinedMacrosforUnicodesupport

Previous|Contents|Next

Page 274: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 275: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.1ErrorLevelsLikeotherapplications,installersmadebyNSISreturnerrorlevelsasaresultoftheirexecution.CheckingtheerrorlevelcanbeusefulifyoucallanNSISinstallerfromanotherapplicationorinstaller.

0-Normalexecution(noerror)1-Installationabortedbyuser(cancelbutton)2-Installationabortedbyscript

YoucansettheerrorleveltoothervaluesusingSetErrorLevel.

Notethatuninstallerscopythemselvestothetemporarydirectoryandexecutefromtheresotheoriginaluninstallercanbedeleted.Thismeanstheerrorleveltheuninstallersetsisnotavailabletotheexecutingprocess,unlessitsimulatesthiscopyprocessandexecutesthecopieduninstaller.Tosimulatethisprocess,use:

InitPluginsDirCopyFiles$INSTDIR\uninstaller.exe$PLUGINSDIRExecWait'"$PLUGINSDIR\uninstaller.exe"_?=$INSTDIR'$0DetailPrint"uninstallerseterrorlevel$0"

Ifyoudon'tdothis,you'llonlybeabletoknowiftheuninstallerfailedcopyingitselftothetemporarydirectory.

Previous|Contents|Next

Page 276: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 277: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.2AdduninstallinformationtoAdd/RemoveProgramsCreateakeywithyourproductnameunderHKLM\Software\Microsoft\Windows\CurrentVersion\Uninstalltoaddentriestothe"Add/RemovePrograms"sectionintheControlPanel.ForWindowsNT(NT4/2000/XP),it'salsopossibletocreatethekeyintheHKCUhive,soitwillonlyappearforthecurrentuser.Thereareseveralvaluesyoucanwritetokeytogiveinformationaboutyourapplicationandtheuninstaller.WriteavalueusingtheWriteRegStrcommand(forstrings)orWriteRegDWORDcommand(forDWORDvalues).

Example:

WriteRegStrHKLM"Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProduct""DisplayName""ApplicationName"WriteRegStrHKLM"Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProduct""UninstallString"'"$INSTDIR\uninst.exe"'

Requiredvalues

DisplayName(string)-NameoftheapplicationUninstallString(string)-Pathandfilenameoftheuninstaller.Youshouldalwaysquotethepath.

Optionalvalues

SomeofthefollowingvalueswillnotbeusedbyolderWindowsversions.

InstallLocation(string)-Installationdirectory($INSTDIR)DisplayIcon(string)-Path,filenameandindexoftheiconthatwillbedisplayednexttoyourapplicationname

Publisher(string)-(Company)nameofthepublisher

ModifyPath(string)-PathandfilenameoftheapplicationmodifyprogramInstallSource(string)-Locationwheretheapplicationwasinstalledfrom

ProductID(string)-ProductIDoftheapplicationRegOwner(string)-Registeredowneroftheapplication

Page 278: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

RegCompany(string)-Registeredcompanyoftheapplication

HelpLink(string)-LinktothesupportwebsiteHelpTelephone(string)-Telephonenumberforsupport

URLUpdateInfo(string)-LinktothewebsiteforapplicationupdatesURLInfoAbout(string)-Linktotheapplicationhomepage

DisplayVersion(string)-DisplayedversionoftheapplicationVersionMajor(DWORD)-MajorversionnumberoftheapplicationVersionMinor(DWORD)-Minorversionnumberoftheapplication

NoModify(DWORD)-1ifuninstallerhasnooptiontomodifytheinstalledapplicationNoRepair(DWORD)-1iftheuninstallerhasnooptiontorepairtheinstallation

IfbothNoModifyandNoRepairaresetto1,thebuttondisplays"Remove"insteadof"Modify/Remove".

Previous|Contents|Next

Page 279: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 280: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.3CallinganexternalDLLusingtheSystem.dllplug-inSomeinstallersneedtocallfunctionsinthird-partyDLLs.AprimeexampleofthisiswheninstallingaPalm(TM)conduit.

SomebackgroundaboutSystem.dllTheSystem.dllplug-inenablescallingofexternalDLLsbyusingits'Call'function.ThereareanumberofotherfunctionsprovidedbySystem.dllbuttheywillnotbecoveredhere.Formoredetailsabouttheotherfunctions,lockthedoors,takethephoneoffthehook,screwyourheadon*real*tightandheadonovertotheSystemreadme.

DataTypesSystem.dllrecognisesthefollowingdatatypes:

v-void(generallyforreturn)p-pointer(includesvoid*,HANDLE,HWND,UINT_PTRandsoon)i-int(a32bitinteger)l-largeinteger(alsoknownasint64)t-text,string(LPTSTR,pointertofirstcharacter)k-callback.SeeCallbacksectioninsystem.html.*-pointerspecifier->theprocneedsthepointertotype,affectsnextchar(parameter)[ex:'*i'-pointertoint]

MappingSystem.dllvariablestoNSISscriptvariablesThere'snotmuchpointinbeingabletocallanexternalfunctionifyoucan'tgetanydataback.System.dllmapsfunctionvariablestoNSISscriptvariablesinthefollowingway:

NSIS$0..$9becomesSystem.dllr0..r9NSIS$R0..$R9becomesSystem.dllr10..r19

Eachparameterisspecifiedbytype,inputandoutput.Toskipinputoroutputuseadot.Examples:

String(pointertoacharacterarray),inputis'happycalling':

Page 281: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

t'happycalling'

String(pointertoacharacterarray),inputistakenfrom$5andchangestothearraymadebythecalleearesavedinto$R8:

tr5R8

Pointertoaninteger,valuetakenfrom$1andputinto$2:

*ir1r2

Pointertoa64-bitinteger,outputpushedonstack,noinput:

*l.s

UsingSystem.dll::CallTocallafunctioninathirdpartyDLL,theCallfunctionisusedlikethis:

System::Call'YourDllName::YourDllFunction(i,*i,t)i(r0,.r1,r2).r3'

The'(r0,.r1,r2).r3'sectionattheendaretheparametersthatarepassedbetweenyourDLLandyourNSISscript.Ascanbeseeninthisparameterslist,typeandinput/outputcanbeseparated.Eachblockof"(parmslist)returnvalue"overridesand/oraddstothelastone.Inthiscase,thefirstblockspecifiesthetypesandthesecondspecifiesinputandoutput.

BeforestartingtocodetheNSISscriptBeforeyoustarttocodeanyNSIScodeyouneedtoknowthefullprototypeofthefunctionyouaregoingtocall.Forthepurposesofthisexample,wewillusethe'CmGetHotSyncExecPath'functionfromthePalm'CondMgr.dll'.Thisfunctionisusedtoreturnthefullpathof'HotSync.exe'.

FunctionDefinition

int__stdcallCmGetHotSyncExecPath(TCHAR*pPath,int*piSize);

where

Page 282: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

pPathisapointertoacharacterbuffer.Uponreturn,thisisthepath&filenameoftheinstalledHotSyncmanager.piSizeisapointertoanintegerthatspecifiesthesize(inTCHAR's),ofthebufferreferencedbythepPathparameter.

returnvalues:

0:Noerror-1:Anon-specificerroroccurredERR_REGISTRY_ACCESS(-1006):UnabletoaccessthePalmconfigurationentriesERR_BUFFER_TOO_SMALL(-1010):ThebufferistoosmalltoholdtherequestedinformationERR_INVALID_POINTER(-1013):Thespecifiedpointerisnotavalidpointer

Also,ifthebufferistoosmallthevaluein*intisthesize(inTCHARs)thatthebuffershouldbe.

ThisfunctiondefinitionmapstothefollowingSystem.dlldefinition:

CmGetHotSyncExecPath(t,*i)i

i.e.Ittakesatextvariable,apointertoint,andreturnsanintvalue.

UsingtheexternaldllfunctionNowthatwe'vesortedoutwhatthefunctiondoesandhowitmapstotheSystem.dllformatwecanusethefunctioninaNSISscript.

FirstyouhavetochangetheoutputdirectorytothatwheretheDLLyouwanttouseis.ItmayalsoworkiftheDLLisinthesystempathbutthishasn'tbeentested.

Thefollowingcodefragmentwillinstall'condmgr.dll'toatemporarydirectory,executetheCmGetHotSyncExecPathfunctionanddisplayreturneddata.Savethisscript

;****snip****FunctionloadDll

Page 283: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SetOutPath$TEMP\eInspect;createtempdirectoryFilebin\CondMgr.dll;copydllthereStrCpy$1${NSIS_MAX_STRLEN};assignmemoryto$0System::Call'CondMgr::CmGetHotSyncExecPath(t,*i)i(.r0,r1r1).r2'DetailPrint'Path:"$0"'DetailPrint"Pathlength:$1"DetailPrint"Returnvalue:$2"

FunctionEnd;****snip****

andthisfunctionproducesthefollowingoutputinthe'details'page:

Outputfolder:c:\windows\TEMP\eInspectExtract:CondMgr.dllPath:"C:\Dave\palm\Hotsync.exe"Pathlength:24Returnvalue:0

Writtenbydjc

Acknowledgements&ThanksLotsofthanksgotokichikandSunjammerforspendingalotoftimeassistinginsolvingthisproblem.AlsotobrainsuckerforcreatingtheSystem.dllplug-ininthefirstplace.GoodLuck!

Previous|Contents|Next

Page 284: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 285: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.4DumpContentofLogWindowtoFileThisfunctionwilldumpthelogoftheinstaller(installerdetails)toafileofyourchoice.

Touseit,pushafilenameandcallit.Itwilldumpthelogtothefilespecified.Forexample:

GetTempFileName$0Push$0CallDumpLog

Hereisthefunction:

!defineLVM_GETITEMCOUNT0x1004!defineLVM_GETITEMTEXTA0x102D

FunctionDumpLog#WrittenbyKiCHiKExch$5Push$0Push$1Push$2Push$3Push$4Push$6

FindWindow$0"#32770"""$HWNDPARENTGetDlgItem$0$01016StrCmp$00errorFileOpen$5$5"w"StrCmp$50errorSendMessage$0${LVM_GETITEMCOUNT}00$6System::StrAlloc${NSIS_MAX_STRLEN}Pop$3StrCpy$20System::Call"*(i,i,i,i,i,i,i,i,i)p\

Page 286: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

(0,0,0,0,0,r3,${NSIS_MAX_STRLEN}).r1"loop:StrCmp$2$6doneSystem::Call"User32::SendMessageA(p,i,p,p)i\($0,${LVM_GETITEMTEXTA},$2,r1)"System::Call"*$3(&t${NSIS_MAX_STRLEN}.r4)"FileWrite$5"$4$\r$\n"IntOp$2$2+1Gotoloopdone:FileClose$5System::Free$1System::Free$3Gotoexiterror:MessageBoxMB_OKerrorexit:Pop$6Pop$4Pop$3Pop$2Pop$1Pop$0Exch$5FunctionEnd

Here'sthefunctiontogenerateaUTF-16LEfileifyou'rebuildingaUnicodeinstaller.

!defineLVM_GETITEMCOUNT0x1004!defineLVM_GETITEMTEXTW0x1073

FunctionDumpLog#WrittenbyKiCHiK,modifiedbyJimParkExch$5Push$0Push$1Push$2Push$3

Page 287: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Push$4Push$6

FindWindow$0"#32770"""$HWNDPARENTGetDlgItem$0$01016StrCmp$00errorFileOpen$5$5"w"FileWriteWord$50xfeff;WritetheBOMStrCmp$50errorSendMessage$0${LVM_GETITEMCOUNT}00$6System::StrAlloc${NSIS_MAX_STRLEN}Pop$3StrCpy$20System::Call"*(i,i,i,i,i,i,i,i,i)p\(0,0,0,0,0,r3,${NSIS_MAX_STRLEN}).r1"loop:StrCmp$2$6doneSystem::Call"User32::SendMessageW(p,i,p,p)i\($0,${LVM_GETITEMTEXTW},$2,r1)"System::Call"*$3(&t${NSIS_MAX_STRLEN}.r4)"FileWriteUTF16LE$5"$4$\r$\n"IntOp$2$2+1Gotoloopdone:FileClose$5System::Free$1System::Free$3Gotoexiterror:MessageBoxMB_OKerrorexit:Pop$6Pop$4Pop$3Pop$2Pop$1Pop$0Exch$5

Page 288: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionEnd

Previous|Contents|Next

Page 289: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 290: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.5HowtoReadREG_MULTI_SZValuesKiCHiKwrotethisscripttohelprpetgesinthisforumthread.ItreadsaregistryvalueofthetypeREG_MULTI_SZandprintsitout.Don'tforgettoeditwhereitsays"Editthis!"whenyoutestthisscript.ThevaluesmustpointtoaREG_MULTI_SZvalueortheexamplewillspitoutanerror.

OutFile"REG_MULTI_SZReader.exe"Name"REG_MULTI_SZReader"ShowInstDetailsshow

!defineHKEY_CLASSES_ROOT0x80000000!defineHKEY_CURRENT_USER0x80000001!defineHKEY_LOCAL_MACHINE0x80000002!defineHKEY_USERS0x80000003!defineHKEY_PERFORMANCE_DATA0x80000004!defineHKEY_PERFORMANCE_TEXT0x80000050!defineHKEY_PERFORMANCE_NLSTEXT0x80000060!defineHKEY_CURRENT_CONFIG0x80000005!defineHKEY_DYN_DATA0x80000006!defineKEY_QUERY_VALUE0x0001!defineKEY_ENUMERATE_SUB_KEYS0x0008!defineREG_NONE0!defineREG_SZ1!defineREG_EXPAND_SZ2!defineREG_BINARY3!defineREG_DWORD4!defineREG_DWORD_LITTLE_ENDIAN4!defineREG_DWORD_BIG_ENDIAN5!defineREG_LINK6!defineREG_MULTI_SZ7

!defineRegOpenKeyEx"Advapi32::RegOpenKeyExA(i,t,i,i,*i)i"!defineRegQueryValueEx"Advapi32::RegQueryValueExA(i,t,i,*i,i,*i)i"!defineRegCloseKey"Advapi32::RegCloseKeyA(i)i"

Page 291: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

#######Editthis!

!defineROOT_KEY${HKEY_CURRENT_USER}!defineSUB_KEY"Software\JoeSoftware"!defineVALUE"Strings"

#######Stopediting

Section"Read"StrCpy$0""StrCpy$1""StrCpy$2""StrCpy$3""System::Call"${RegOpenKeyEx}(${ROOT_KEY},'${SUB_KEY}',\0,${KEY_QUERY_VALUE}|${KEY_ENUMERATE_SUB_KEYS},.r0).r3"StrCmp$30goonMessageBoxMB_OK|MB_ICONSTOP"Can'topenregistrykey!($3)"Gotodonegoon:

System::Call"${RegQueryValueEx}(r0,'${VALUE}',0,.r1,0,.r2).r3"StrCmp$30readMessageBoxMB_OK|MB_ICONSTOP"Can'tqueryregistryvaluesize!($3)"Gotodoneread:StrCmp$1${REG_MULTI_SZ}multiszMessageBoxMB_OK|MB_ICONSTOP"RegistryvaluenoREG_MULTI_SZ!($3)"Gotodonemultisz:StrCmp$200multiszallocMessageBoxMB_OK|MB_ICONSTOP"Registryvalueempty!($3)"

Page 292: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Gotodonemultiszalloc:

System::Alloc$2Pop$1StrCmp$100multiszgetMessageBoxMB_OK|MB_ICONSTOP"Can'tallocateenoughmemory!($3)"Gotodonemultiszget:System::Call"${RegQueryValueEx}(r0,'${VALUE}',0,n,r1,r2).r3"StrCmp$30multiszprocessMessageBoxMB_OK|MB_ICONSTOP"Can'tqueryregistryvaluedata!($3)"Gotodonemultiszprocess:StrCpy$4$1loop:System::Call"*$4(&t${NSIS_MAX_STRLEN}.r3)"StrCmp$3""doneDetailPrint$3StrLen$5$3IntOp$4$4+$5IntOp$4$4+1Gotoloopdone:System::Free$1

Page 293: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCmp$00noCloseSystem::Call"${RegCloseKey}(r0)"noClose:

SectionEnd

Previous|Contents|Next

Page 294: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 295: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

D.6PredefinedMacrosforUnicodesupportTherearetwomacrosthatcanhelpyouwritescriptsthatworkforbothUnicodeandANSIinstallers.TofigureoutifthescriptisbeingcompiledtogenerateaUnicodeinstaller,use!ifdeftocheckfor${NSIS_UNICODE}.Toseewhatthesizeofacharacteris,use${NSIS_CHAR_SIZE}.Itwillbe1forANSIand2forUnicodeinstallers.

Previous|Contents|Next

Page 296: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 297: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixE:UsefulHeadersFileFunctionsHeader

IntroductionLocateGetSizeDriveSpaceGetDrivesGetTimeGetFileAttributesGetFileVersionGetExeNameGetExePathGetParametersGetOptionsGetOptionsSGetRootGetParentGetFileNameGetBaseNameGetFileExtBannerTrimPathDirStateRefreshShellIcons

TextFunctionsHeaderIntroductionLineFindLineReadFileReadFromEndLineSumFileJoinTextCompareTextCompareSConfigReadConfigReadSConfigWriteConfigWriteSFileRecode

Page 298: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

TrimNewLinesWordFunctionsHeader

IntroductionWordFindWordFindSWordFind2XWordFind2XSWordFind3XWordFind3XSWordReplaceWordReplaceSWordAddWordAddSWordInsertWordInsertSStrFilterStrFilterSVersionCompareVersionConvert

Previous|Contents|Next

Page 299: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 300: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

E.1FileFunctionsHeader

E.1.1Introduction

Includeheader:

!include"FileFunc.nsh"

Callfunctions:

SectionInstall${GetFileExt}"C:\MyDownloads\Index.html"$R0;$R0="html"SectionEnd

Sectionun.Install${GetParent}"C:\MyDownloads\Index.html"$R0;$R0="C:\MyDownloads"SectionEnd

E.1.2Locate

Findfiles,directoriesandemptydirectorieswithmaskandsizeoptions.

Syntax:

${Locate}"[Path]""[Options]""Function"

"[Path]";DiskorDirectory;"[Options]";/L=[FD|F|D|DE|FDE];/L=FD-LocateFilesandDirectories(default);/L=F-LocateFilesonly;/L=D-LocateDirectoriesonly;/L=DE-LocateEmptyDirectoriesonly;/L=FDE-LocateFilesandEmptyDirectories

Page 301: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;/M=[mask];/M=*.*-Locateall(default);/M=*.doc-LocateWork.doc,1.doc...;/M=Pho*-LocatePHOTOS,phone.txt...;/M=win???.exe-Locatewinamp.exe,winver.exe...;/M=winamp.exe-Locatewinamp.exeonly;/S=No:No[B|K|M|G];/S=-Don'tlocatefilesize(faster)(default);/S=0:0B-Locateonlyfilesof0Bytesexactly;/S=5:9K-Locateonlyfilesof5to9Kilobytes;/S=:10M-Locateonlyfilesof10Megabyteorless;/S=1G-Locateonlyfilesof1Gigabyteormore;/G=[1|0];/G=1-Locatewithsubdirectories(default);/G=0-Locatewithoutsubdirectories;/B=[0|1];/B=0-Bannerisn'tused(default);/B=1-Bannerisused.Callbackwhenfunction;starttosearchinnewdirectory"Function";Callbackfunctionwhenfound

Function"Function" ;$R9"path\name" ;$R8"path" ;$R7"name" ;$R6"size"($R6=""ifdirectory,$R6="0"iffilewith/S=)

;$R0-$R5arenotused(savedatainthem). ;...

Push$var;If$var="StopLocate"ThenexitfromfunctionFunctionEnd

Note:-Errorflagifdiskordirectoryisn'texist-Errorflagifsyntaxerror-Seealso:Locateplugin

Page 302: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example(Findonefile):

Section ${Locate}"C:\ftp""/L=F/M=RPCDCOM.rar/S=1K""Example1" ;'RPCDCOM.rar'filein'C:\ftp'withsize1Kbormore

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 MessageBoxMB_OK"$$R0=$R0"SectionEnd

FunctionExample1 StrCpy$R0$R9 ;$R0="C:\ftp\files\RPCDCOM.rar"

MessageBoxMB_YESNO'$R0$\n$\nFindnext?'IDYES+2 StrCpy$0StopLocate

Push$0FunctionEnd

Example(Writeresultstoatextfile):

Section GetTempFileName$R0 FileOpen$R1$R0w ${Locate}"C:\ftp""/S=:2M/G=0""Example2" ;foldersandallfileswithsize2Mborless ;don'tscansubdirectories FileClose$R1

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 Exec'"notepad.exe""$R0"'SectionEnd

FunctionExample2

Page 303: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCmp$R6''0+3 FileWrite$R1"Directory=$R9$\r$\n" goto+2 FileWrite$R1"File=$R9Size=$R6Mb$\r$\n"

Push$0FunctionEnd

Example(WriteresultstoanINIfile):

Section GetTempFileName$R0 ${Locate}"C:\ftp""/L=F/S=0K""Example3" ;allfilesin'C:\ftp'withsizedetectinKb

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 Exec'"notepad.exe""$R0"'SectionEnd

FunctionExample3 WriteINIStr$R0"$R8""$R7""$R6Kb"

Push$0FunctionEnd

Example(Deleteemptydirectories):

Section StrCpy$R20 StrCpy$R30

loop: StrCpy$R10 ${Locate}"C:\ftp""/L=DE""Example4" IntOp$R3$R3+1 IntOp$R2$R2+$R1 StrCmp$R0StopLocate+2

Page 304: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCmp$R100loop

IfErrors0+2 MessageBoxMB_OK'error'IDOK+2 MessageBoxMB_OK'$R2directorieswereremoved$\n$R3loops'SectionEnd

FunctionExample4 MessageBoxMB_YESNOCANCEL'Deleteempty"$R9"?'IDNOendIDCANCELcancel RMDir$R9 IntOp$R1$R1+1 gotoend

cancel: StrCpy$R0StopLocate

end: Push$R0FunctionEnd

Example(Moveallfilesintoonefolder):

Section StrCpy$R0"C:\ftp";Directorymovefrom StrCpy$R1"C:\ftp2";Directorymoveinto

StrCpy$R20 StrCpy$R30 ${Locate}"$R0""/L=F""Example5"

IfErrors0+2 MessageBoxMB_OK'error'IDOK+4 StrCmp$R300+2 MessageBoxMB_OK'$R2filesweremoved'IDOK+2 MessageBoxMB_OK'$R2filesweremoved$\n$R3fileswereNOTmoved'SectionEnd

Page 305: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionExample5 StrCmp$R8$R1+6 IfFileExists'$R1\$R7'+4 Rename$R9'$R1\$R7' IntOp$R2$R2+1 goto+2 IntOp$R3$R3+1

Push$0FunctionEnd

Example(Copyfileswithlog):

Section StrCpy$R0"C:\ftp";Directorycopyfrom StrCpy$R1"C:\ftp2";Directorycopyinto StrLen$R2$R0

GetTempFileName$0 FileOpen$R3$0w ${Locate}"$R0""/L=FDE""Example6" FileClose$R3

IfErrors0+2 MessageBoxMB_OK'error'

Exec'"notepad.exe""$0"';viewlogSectionEnd

FunctionExample6 StrCpy$1$R8''$R2

StrCmp$R6''0+3 CreateDirectory'$R1$1\$R7' gotoend CreateDirectory'$R1$1' CopyFiles/SILENT$R9'$R1$1'

Page 306: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IfFileExists'$R1$1\$R7'0+3 FileWrite$R3"-old:$R9-new:$R1$1\$R7-success$\r$\n" goto+2 FileWrite$R3"-old:$R9-new:$R1$1\$R7-failed$\r$\n"

end: Push$0FunctionEnd

Example(Recreatedirectorystructure):

Section StrCpy$R0"C:\ftp";Directorystructurefrom StrCpy$R1"C:\ftp2";Directorystructureinto StrLen$R2$R0

${Locate}"$R0""/L=D""Example7"

IfErrors0+2 MessageBoxMB_OK'error'SectionEnd

FunctionExample7 StrCpy$1$R9''$R2 CreateDirectory'$R1$1'

Push$0FunctionEnd

Example(Locatewithbanner-NxSpluginrequired):

Section nxs::Show/NOUNLOAD`$(^Name)Setup`/top\ `Setupsearchingsomething$\r$\nPleasewait...Ifyoucan..`\ /h1/can1/end ${Locate}"C:\WINDOWS""/L=F/M=*.inf/B=1""Example8" nxs::Destroy

Page 307: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionEnd

FunctionExample8 StrCmp$R0$R8abortcheck StrCpy$R0$R8 nxs::Update/NOUNLOAD/sub"$R8"/pos78/end

abortcheck: nxs::HasUserAborted/NOUNLOAD Pop$0 StrCmp$010+2 StrCpy$0StopLocate

StrCmp$R9''end ;...

end: Push$0FunctionEnd

E.1.3GetSize

Findthesizeofafile,filesmaskordirectory.Findthesumofthefiles,directoriesandsubdirectories.

Syntax:

${GetSize}"[Path]""[Options]"$var1$var2$var3

"[Path]";DiskorDirectory;"[Options]";/M=[mask];/M=*.*-Findall(default);/M=*.doc-FindWork.doc,1.doc...;/M=Pho*-FindPHOTOS,phone.txt...;/M=win???.exe-Findwinamp.exe,winver.exe...;/M=winamp.exe-Findwinamp.exeonly

Page 308: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;/S=No:No[B|K|M|G];/S=-Don'tfindfilesize(faster)(default);/S=0:0B-Findonlyfilesof0Bytesexactly;/S=5:9K-Findonlyfilesof5to9Kilobytes;/S=:10M-Findonlyfilesof10Megabyteorless;/S=1G-Findonlyfilesof1Gigabyteormore;/G=[1|0];/G=1-Findwithsubdirectories(default);/G=0-Findwithoutsubdirectories;$var1;Result1:Size$var2;Result2:Sumoffiles$var3;Result3:Sumofdirectories

Note:-Errorflagifdiskordirectoryisn'texist-Errorflagifsyntaxerror-Seealso:Locateplugin

Examples:

Section'Findfilesizeof"$WINDIR\Explorer.exe"inKiB'

${GetSize}"$WINDIR""/M=Explorer.exe/S=0K/G=0"$0$1$2 ;$0="220"KiB ;$1="1"files ;$2=""directories

IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

Section'Findfoldersizeof"C:\Installs\Drivers"inMiB'

${GetSize}"C:\Installs\Drivers""/S=0M"$0$1$2 ;$0="132"MiB ;$1="555"files ;$2="55"directories

Page 309: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

Section'Findsumoffilesandfoldersin"$WINDIR"(nosubfolders)'

${GetSize}"$WINDIR""/G=0"$0$1$2 ;$0=""size ;$1="253"files ;$2="46"directories

IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

E.1.4DriveSpace

Gettotal,occupiedorfreespaceofthedrive.

Syntax:

${DriveSpace}"[Drive]""[Options]"$var

"[Drive]";Disktocheck;"[Options]";/D=[T|O|F];/D=T-Totalspace(default);/D=O-Occupiedspace;/D=F-Freespace;/S=[B|K|M|G];/S=B-sizeinBytes(default);/S=K-sizeinKilobytes;/S=M-sizeinMegabytes;/S=G-sizeinGigabytes;$var;Result:Size

Page 310: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Note:-Errorflagifdiskisn'texistornotready-Errorflagifsyntaxerror

Example:

Section ${DriveSpace}"C:\""/D=F/S=M"$R0 ;$R0="2530"megabytesfreeondriveC:SectionEnd

E.1.5GetDrives

Findallavailabledrivesinthesystem.

Syntax:

${GetDrives}"[Option]""Function"

"[Option]";[FDD+HDD+CDROM+NET+RAM];FDDFloppyDiskDrives;HDDHardDiskDrives;CDROMCD-ROMDrives;NETNetworkDrives;RAMRAMDiskDrives;;[ALL];Findalldrivesbyletter(default);"Function";Callbackfunctionwhenfound

Function"Function" ;$9"driveletter"(a:\c:\...) ;$8"drivetype"(FDDHDD...)

;$R0-$R9arenotused(savedatainthem). ;...

Page 311: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Push$var;If$var="StopGetDrives"ThenexitfromfunctionFunctionEnd

Example1:

Section ${GetDrives}"FDD+CDROM""Example1"SectionEnd

FunctionExample1 MessageBoxMB_OK"$9($8Drive)"

Push$0FunctionEnd

Example2:

Section ${GetDrives}"ALL""Example2"SectionEnd

FunctionExample2 MessageBoxMB_OK"$9($8Drive)"

Push$0FunctionEnd

Example3(Gettypeofdrive):

Section StrCpy$R0"D:\";Driveletter StrCpy$R1"invalid"

${GetDrives}"ALL""Example3"

MessageBoxMB_OK"Typeofdrive$R0is$R1"SectionEnd

Page 312: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionExample3 StrCmp$9$R00+3 StrCpy$R1$8 StrCpy$0StopGetDrives

Push$0FunctionEnd

E.1.6GetTime

Getlocalorsystemtime.Getfiletime(access,creationandmodification).

Syntax:

${GetTime}"[File]""[Option]"$var1$var2$var3$var4$var5$var6$var7

"[File]";Ignoredif"L"or"LS";"[Option]";[Options];LLocaltime;AlastAccessfiletime;CCreationfiletime;MModificationfiletime;LSSystemtime(UTC);ASlastAccessfiletime(UTC);CSCreationfiletime(UTC);MSModificationfiletime(UTC);$var1;Result1:day$var2;Result2:month$var3;Result3:year$var4;Result4:dayofweekname$var5;Result5:hour$var6;Result6:minute$var7;Result7:seconds

Note:

Page 313: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

-Errorflagiffileisn'texist-Errorflagifsyntaxerror-Seealso:Timeplugin

Examples:

Section'Getlocaltime' ${GetTime}"""L"$0$1$2$3$4$5$6 ;$0="01"day ;$1="04"month ;$2="2005"year ;$3="Friday"dayofweekname ;$4="16"hour ;$5="05"minute ;$6="50"seconds

MessageBoxMB_OK'Date=$0/$1/$2($3)$\nTime=$4:$5:$6'SectionEnd

Section'Getfiletime' ${GetTime}"$WINDIR\Explorer.exe""C"$0$1$2$3$4$5$6 ;$0="12"day ;$1="10"month ;$2="2004"year ;$3="Tuesday"dayofweekname ;$4="2"hour ;$5="32"minute ;$6="03"seconds

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 MessageBoxMB_OK'Date=$0/$1/$2($3)$\nTime=$4:$5:$6'SectionEnd

Section'Getsystemtime' ${GetTime}"""LS"$0$1$2$3$4$5$6 ;$0="01"day ;$1="04"month

Page 314: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;$2="2005"year ;$3="Friday"dayofweekname ;$4="11"hour ;$5="05"minute ;$6="50"seconds

MessageBoxMB_OK'Date=$0/$1/$2($3)$\nTime=$4:$5:$6'SectionEnd

Section'Converttimeto12-hourformatAM/PM' ${GetTime}"""L"$0$1$2$3$4$5$6

StrCmp$400+3 StrCpy$412 goto+3 StrCmp$412+5 IntCmp$41200+3 StrCpy$7AM goto+3 IntOp$4$4-12 StrCpy$7PM

MessageBoxMB_OK'Date=$0/$1/$2($3)$\nTime=$4:$5:$6$7'SectionEnd

E.1.7GetFileAttributes

Getattributesoffileordirectory.

Syntax:

${GetFileAttributes}"[File]""[Attributes]"$var

"[File]";Fileordirectory;"[Attributes]";"ALL"(default);-allattributesoffilecombinedwith"|"tooutput;

Page 315: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;"READONLY|HIDDEN|SYSTEM|DIRECTORY|ARCHIVE|;DEVICE|NORMAL|TEMPORARY|SPARSE_FILE|REPARSE_POINT|;COMPRESSED|OFFLINE|NOT_CONTENT_INDEXED|ENCRYPTED";-filemusthavespecifiedattributes;$var;Result:;$var=attr1|attr2|...(ifused"ALL");$var=1filehasspecifiedattributes;$var=0filehasnospecifiedattributes

Note:-Errorflagissetiffiledoesn'texist

Example:

Section ${GetFileAttributes}"C:\MSDOS.SYS""ALL"$R0 ;$R0=READONLY|HIDDEN|SYSTEM|ARCHIVE

${GetFileAttributes}"C:\MSDOS.SYS""SYSTEM|HIDDEN"$R0 ;$R0=1

${GetFileAttributes}"C:\MSDOS.SYS""NORMAL"$R0 ;$R0=0SectionEnd

E.1.8GetFileVersion

Getversioninformationfromexecutablefile.

Syntax:

${GetFileVersion}"[Executable]"$var

"[Executable]";Executablefile(*.exe*.dll...)$var;Result:Versionnumber

Note:

Page 316: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

-Errorflagiffiledoesn'texist-Errorflagiffiledoesn'tcontainversioninformation

Example:

${GetFileVersion}"C:\ftp\program.exe"$R0;$R0="1.1.0.12"

E.1.9GetExeName

Getinstallerfilename(withvalidcaseforWindows98/Me).

Syntax:

${GetExeName}$var

Example:

${GetExeName}$R0;$R0="C:\ftp\program.exe"

E.1.10GetExePath

Getinstallerpathname($EXEDIRwithvalidcaseforWindows98/Me).

Syntax:

${GetExePath}$var

Example:

${GetExePath}$R0;$R0="C:\ftp"

E.1.11GetParameters

Getcommandlineparameters.

Syntax:

${GetParameters}$var

Page 317: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example:

${GetParameters}$R0;$R0="[parameters]"

E.1.12GetOptions

Getoptionsfromcommandlineparameters.

Syntax:

${GetOptions}"[Parameters]""[Option]"$var

"[Parameters]";commandlineparameters;"[Option]";optionname;$var;Result:optionstring

Note:-Theerrorflagissetiftheoptionisnotfound-Thefirstcharacterintheoptionstringistreatedasaparameterdelimiter

Example1:

Section ${GetOptions}"/S/T""/T"$R0

IfErrors0+2 MessageBoxMB_OK"Notfound"IDOK+2 MessageBoxMB_OK"Found"SectionEnd

Example2:

Section ${GetOptions}"-INSTDIR=C:\ProgramFiles\CommonFiles-SILENT=yes""-INSTDIR="$R0 ;$R0=C:\ProgramFiles\CommonFilesSectionEnd

Page 318: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example3:

Section ${GetOptions}'/SILENT=yes/INSTDIR="C:/ProgramFiles/CommonFiles"/ADMIN=password'"/INSTDIR="$R0 ;$R0=C:/ProgramFiles/CommonFilesSectionEnd

Example4:

Section ${GetOptions}`-SILENT=yes-INSTDIR='"C:/ProgramFiles/CommonFiles"'-ADMIN=password`"-INSTDIR="$R0 ;$R0="C:/ProgramFiles/CommonFiles"SectionEnd

E.1.13GetOptionsS

SameasGetOptions,butcasesensitive.

E.1.14GetRoot

Getrootdirectory.

Syntax:

${GetRoot}"[FullPath]"$var

Examples:

${GetRoot}"C:\ProgramFiles\NSIS"$R0;$R0="C:"${GetRoot}"\\SuperPimp\NSIS\Source\exehead\Ui.c"$R0;$R0="\\SuperPimp\NSIS"

E.1.15GetParent

Getparentdirectory.

Syntax:

${GetParent}"[PathString]"$var

Page 319: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example:

${GetParent}"C:\ProgramFiles\Winamp\uninstwa.exe"$R0;$R0="C:\ProgramFiles\Winamp"

E.1.16GetFileName

Getlastpartfromdirectorypath.

Syntax:

${GetFileName}"[PathString]"$var

Example:

${GetFileName}"C:\ProgramFiles\Winamp\uninstwa.exe"$R0;$R0="uninstwa.exe"

E.1.17GetBaseName

Getfilenamewithoutextension.

Syntax:

${GetBaseName}"[FileString]"$var

Example:

${GetBaseName}"C:\ftp\program.exe"$R0;$R0="program"

E.1.18GetFileExt

Getextensionoffile.

Syntax:

${GetFileExt}"[FileString]"$var

Example:

${GetFileExt}"C:\ftp\program.exe"$R0;$R0="exe"

Page 320: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

E.1.19BannerTrimPath

Trimstringpathforbanner.

Syntax:

${BannerTrimPath}"[PathString]""[Option]"$var

"[PathString]";;"[Option]";[Length][A|B|C|D];;Length-Maximumstringlength;A-Trimcenterpath(default);(C:\root\...\thirdpath);IfAmodenotpossibleThenwillbeusedBmode;B-Trimrightpath;(C:\root\secondpath\...);IfBmodenotpossibleThenwillbeusedCmode;C-Trimrightstring;(C:\root\secondpath\thirdp...);D-Trimrightstring+filename;(C:\root\secondp...\thirdpath);IfDmodenotpossibleThenwillbeusedCmode;$var;Result:Trimmedpath

Example:

Section ${BannerTrimPath}"C:\Server\Documents\Terminal\license.htm""35A"$R0 ;$R0=C:\Server\...\Terminal\license.htmSectionEnd

Example(Bannerplugin):

!include"WinMessages.nsh"!include"FileFunc.nsh"

Page 321: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section Banner::show"Starting..." Banner::getWindow Pop$R1 ${Locate}"$WINDIR""/L=F/M=*.*/B=1""LocateCallback" Banner::destroySectionEnd

FunctionLocateCallback StrCmp$R0$R8code StrCpy$R0$R8 ${BannerTrimPath}"$R8""38B"$R8 GetDlgItem$1$R11030 SendMessage$1${WM_SETTEXT}0"STR:$R8"

code: StrCmp$R9''end ;...

end: Push$0FunctionEnd

Example(NxSplugin):

!include"FileFunc.nsh"

Section nxs::Show/NOUNLOAD`$(^Name)Setup`\ /top`Setupsearchingsomething$\nPleasewait$\nIfyoucan...`\ /h1/can1/end ${Locate}"$WINDIR""/L=F/M=*.*/B=1""LocateCallback" nxs::DestroySectionEnd

FunctionLocateCallback

Page 322: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCmp$R0$R8abortcheck StrCpy$R0$R8 ${BannerTrimPath}"$R8""55A"$R8 nxs::Update/NOUNLOAD/sub"$R8"/pos78/end

abortcheck: nxs::HasUserAborted/NOUNLOAD Pop$0 StrCmp$010+2 StrCpy$0StopLocate

StrCmp$R9''end ;...

end: Push$0FunctionEnd

E.1.20DirState

Checkdirectoryfull,emptyornotexist.

Syntax:

${DirState}"[path]"$var

"[path]";Directory$var;Result:;$var=0(empty);$var=1(full);$var=-1(directorynotfound)

Example:

${DirState}"$TEMP"$R0;$R0="1"(directoryisfull)

E.1.21RefreshShellIcons

Page 323: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Afterchangingfileassociations,youcancallthisfunctiontorefreshtheshellimmediately.

Syntax:

${RefreshShellIcons}

Example:

Section WriteRegStrHKCR"Winamp.File\DefaultIcon""""$INSTDIR\WINAMP.EXE,2" ${RefreshShellIcons}SectionEnd

Previous|Contents|Next

Page 324: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 325: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

E.2TextFunctionsHeader

E.2.1Introduction

Includeheader:

!include"TextFunc.nsh"

Callfunctions:

SectionInstall ${LineRead}"C:\a.log""-1"$R0 ;$R0="Lastline$\r$\n"SectionEnd

Sectionun.Install ${TrimNewLines}"Lastline$\r$\n"$R0 ;$R0="Lastline"SectionEnd

E.2.2LineFind

Findspecifiedlinesintextfile,andeditorviewtheselinesincallbackfunction.

Syntax:

${LineFind}"[File1]""[File2|/NUL]""[LineNumbers]""Function"

"[File1]";Inputtextfile;"[File2|/NUL]";[File2];Outputtextfile;IfemptythenFile2=File1;[/NUL];Nooutputtextfile(onlyreadFile1);

Page 326: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

"[LineNumbers]";[No|-No|No:No|{No}|{-No}|{No:No}];1:-1alllinestochange(default);2secondlinefromstart;-3thirdlinefromend;5:9rangeoflinesfrom5to9;{2}onlysecondlinefromstarttooutput;{-3}onlythirdlinefromendtooutput;{5:9}onlyrangeoflinesfrom5to9tooutput;"Function";Callbackfunctionforspecifiedlines

Function"Function" ;$R9currentline ;$R8currentlinenumber ;$R7currentlinenegativenumber ;$R6currentrangeoflines ;$R5handleofafileopenedtoread ;$R4handleofafileopenedtowrite($R4=""if"/NUL")

;youcanuseanystringfunctions ;$R0-$R3arenotused(savedatainthem). ;...

Push$var;If$var="StopLineFind"Thenexitfromfunction ;If$var="SkipWrite"Thenskipcurrentline(ignoredif"/NUL")FunctionEnd

Note:-Errorflagifinputfiledoesn'texist-Errorflagifoutputfilepathdoesn'texist-Rangesmustbespecifiedongrowth(24:59:-8-5:-4-2:-1)-Outputfilewillnotbeupdatedifnochangesmade.

Example1(deletefirsttwosymbols):

Section ${LineFind}"C:\a.log""C:\a-edited.log""3:-1""Example1" IfErrors0+2 MessageBoxMB_OK"Error"

Page 327: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionEnd

FunctionExample1 ${TrimNewLines}'$R9'$R9 StrCpy$R9$R9''2 StrCpy$R9'$R9$\r$\n' ;startfrom3lineanddeletefirsttwosymbols

Push$0FunctionEnd

Example2(showchangedlines):

Section ${LineFind}"C:\a.log""a.log""{5:1215-6:-5-1}""Example2" IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample2 ${TrimNewLines}'$R9'$R9 StrCpy$R9"$R9~Changedline($R8)~$\r$\n"

Push$0FunctionEnd

Example3(deletelines):

Section ${LineFind}"C:\a.log""\logs\a.log""2:310:-5-3:-2""Example3" IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample3 StrCpy$0SkipWrite

Push$0

Page 328: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionEnd

Example4(insertlines):

Section ${LineFind}"C:\a.log""""10""Example4 IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample4 FileWrite$R4"---FirstLine---$\r$\n" FileWrite$R4"---SecondLine...---$\r$\n"

Push$0FunctionEnd

Example5(replaceinfilewithcountofchanges-"WordFunc.nsh"required):

!include"WordFunc.nsh"

Section StrCpy$R00 ${LineFind}"C:\a.log""C:\logs\a.log""1:-1""Example5" IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 MessageBoxMB_OK"Changedlines=$R0"SectionEnd

FunctionExample5 StrCpy$1$R9

${WordReplace}'$R9''''_''+*'$R9

StrCmp$1$R9+2 IntOp$R0$R0+1 ;$R0countofchangedlines

Page 329: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Push$0FunctionEnd

Example6(linestringtocutordelete):

Section ${LineFind}"\a.log""C:\logs\a.log""""Example6" IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 MessageBoxMB_OK"Processedlines=$R1:$R2"SectionEnd

FunctionExample6 ;(Cutlinesfromalinetoanotherline(alsoincludingthatline)) StrCmp$R0finishstop StrCmp$R0startfinish StrCmp$R9'StartLine$\r$\n'0skip StrCpy$R0start StrCpy$R1$R8 gotocode finish: StrCmp$R9'FinishLine$\r$\n'0code StrCpy$R0finish StrCpy$R2$R8 gotocode skip: StrCpy$0SkipWrite gotooutput stop: StrCpy$0StopLineFind gotooutput

;;(Deletelinesfromalinetoanotherline(alsoincludingthatline)) ;StrCmp$R0finishcode ;StrCmp$R0startfinish ;StrCmp$R9'StartLine$\r$\n'0code

Page 330: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;StrCpy$R0start ;StrCpy$R1$R8 ;gotoskip ;finish: ;StrCmp$R9'FinishLine$\r$\n'0skip ;StrCpy$R0finish ;StrCpy$R2$R8 ;skip: ;StrCpy$0SkipWrite ;gotooutput

code: ;...

output: Push$0FunctionEnd

Example7(readlines):

Section ${LineFind}"C:\a.log""/NUL""1:-1""Example7" IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample7 MessageBoxMB_OKCANCEL'$$R9"Line"=[$R9]$\n$$R8"#"=[$R8]'IDOK+2 StrCpy$0StopLineFind

Push$0FunctionEnd

E.2.3LineRead

Getlineinfilespecifiedwithnumber.

Syntax:

Page 331: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${LineRead}"[File]""[LineNumber]"$var

"[File]";Inputtextfile;"[LineNumber]";[No|-No];3linenumberfromstart;-5linenumberfromend;$var;Result:Line

Note:-Errorflagifinputfiledoesn'texist-Errorflagiflinenumbernotfound

Example:

Section ${LineRead}"C:\a.log""-1"$R0 ;$R0="Lastline$\r$\n"SectionEnd

E.2.4FileReadFromEnd

Readtextfilefromendlinebyline.

Syntax:

${FileReadFromEnd}"[File]""Function"

"[File]";Inputtextfile"Function";Callbackfunction

Function"Function" ;$9currentline ;$8currentlinenumber ;$7currentlinenegativenumber

Page 332: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;$R0-$R9arenotused(savedatainthem). ;...

Push$var;If$var="StopFileReadFromEnd"ThenexitfromfunctionFunctionEnd

Note:-Errorflagifinputfiledoesn'texist

Example1:

Section ${FileReadFromEnd}"C:\a.log""Example1"

IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample1 MessageBoxMB_OKCANCEL'"Line"=[$9]$\n"#"=[$8]$\n"-#"=[$7]'IDOK+2 StrCpy$0StopFileReadFromEnd

Push$0FunctionEnd

Example2(Reversetextfile):

Section GetTempFileName$R0 FileOpen$R1$R0w ${FileReadFromEnd}"C:\a.log""Example2" FileClose$R1

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2 Exec'"notepad.exe""$R0"'SectionEnd

Page 333: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FunctionExample2 StrCmp$7-10+5 StrCpy$1$91-1 StrCmp$1'$\n'+3 StrCmp$1'$\r'+2 StrCpy$9'$9$\r$\n'

FileWrite$R1"$9"

Push$0FunctionEnd

E.2.5LineSum

Getsumoflinesintextfile.

Syntax:

${LineSum}"[File]"$var

"[File]";Inputfile$var;Result:Sumoflines

Note:-Errorflagifinputfiledoesn'texist

Example:

Section ${LineSum}"C:\a.log"$R0 ;$R0="54"SectionEnd

E.2.6FileJoin

Jointwofilesinone(File1+File2=File3).

Syntax:

Page 334: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${FileJoin}"[File1]""[File2]""[File3]"

"[File1]";InputFile1"[File2]";InputFile2"[File3]";OutputFile3;If[File3]=""Thenadd[File2]to[File1]

Note:-Errorflagifinputfilesdon'texist-Errorflagifoutputfilepathdoesn'texist

Example1(Join:a.log+b.log=Z.log):

Section ${FileJoin}"C:\a.log""C:\logs\b.log""C:\Z.log"SectionEnd

Example2(Add:a.log+b.log=a.log):

Section ${FileJoin}"C:\a.log""C:\logs\b.log""C:\a.log"SectionEnd

E.2.7TextCompare

Comparetwotextfiles.

Syntax:

${TextCompare}"[File1]""[File2]""[Option]""Function"

"[File1]";File1Comparetheselines"[File2]";File2Comparewiththeselines"[Options]";(line-by-line):;FastDiffComparelineN(File1)withlineN(File2);CallfunctionifDifferentlinesfound;FastEqualComparelineN(File1)withlineN(File2);CallfunctionifEquallinesfound

Page 335: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;(linenumberindependent):;SlowDiffComparelineN(File1)withalllines(File2);CallfunctioniflineN(File1)Different;SlowEqualComparelineN(File1)withalllines(File2);CallfunctioniflineN(File1)Equal"Function";Callbackfunction

Function"Function" ;$9"LineFile1" ;$8"Linenumber" ;$7"LineFile2"(emptyifSlowDiff) ;$6"Linenumber"(emptyifSlowDiff)

;$R0-$R9arenotused(savedatainthem). ;...

Push$var;If$var="StopTextCompare"ThenexitfromfunctionFunctionEnd

Note:-ErrorflagifFile1orFile2doesn'texist-Errorflagifsyntaxerror

Example(DifferentorEqual):

Section StrCpy$R0'' ${TextCompare}"C:\1.txt""C:\2.txt""FastDiff""Example1" IfErrors0+2 MessageBoxMB_OK"Error"IDOK+4

StrCmp$R0NotEqual0+2 MessageBoxMB_OK"Filesdiffer"IDOK+2 MessageBoxMB_OK"Filesidentical"SectionEnd

FunctionExample1 StrCpy$R0NotEqual

Page 336: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCpy$0StopTextCompare

Push$0FunctionEnd

Example(Compareline-by-line-Different):

Section StrCpy$R0'Text1.txt' StrCpy$R1'Text2.txt'

GetTempFileName$R2 FileOpen$R3$R2w FileWrite$R3"$R0|$R1$\r$\n" ${TextCompare}"$R0""$R1""FastDiff""Example2" IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2

Exec"notepad.exe$R2"FunctionEnd

FunctionExample2 FileWrite$R3'$8=$9' FileWrite$R3'$6=$7$\r$\n'

Push$0FunctionEnd

Example(Compareline-by-line-Equal):

Section StrCpy$R0'Text1.txt' StrCpy$R1'Text2.txt'

GetTempFileName$R2 FileOpen$R3$R2w FileWrite$R3"$R0|$R1$\r$\n" ${TextCompare}"$R0""$R1""FastEqual""Example3"

Page 337: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2

Exec"notepad.exe$R2"FunctionEnd

FunctionExample3 FileWrite$R3'$8|$6=$9'

Push$0FunctionEnd

Example(Comparealllines-Different):

Section StrCpy$R0'Text1.txt' StrCpy$R1'Text2.txt'

GetTempFileName$R2 FileOpen$R3$R2w FileWrite$R3"$R0|$R1$\r$\n" ${TextCompare}"$R0""$R1""SlowDiff""Example4" IfErrors0+2 MessageBoxMB_OK"Error"IDOKend

FileWrite$R3"$\r$\n$R1|$R0$\r$\n" ${TextCompare}"$R1""$R0""SlowDiff""Example4" FileClose$R3 IfErrors0+2 MessageBoxMB_OK"Error"IDOKend

Exec"notepad.exe$R2"

end:FunctionEnd

FunctionExample4

Page 338: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FileWrite$R3'$8=$9'

Push$0FunctionEnd

Example(Comparealllines-Equal):

Section StrCpy$R0'Text1.txt' StrCpy$R1'Text2.txt'

GetTempFileName$R2 FileOpen$R3$R2w FileWrite$R3"$R0|$R1$\r$\n" ${TextCompare}"$R0""$R1""SlowEqual""Example5" IfErrors0+2 MessageBoxMB_OK"Error"IDOK+2

Exec"notepad.exe$R2"FunctionEnd

FunctionExample5 FileWrite$R3'$8|$6=$9'

Push$0FunctionEnd

Example(Showvariables):

Section ${TextCompare}"C:\1.txt""C:\2.txt""FastDiff""Example6"

IfErrors0+2 MessageBoxMB_OK"Error"SectionEnd

FunctionExample6 MessageBoxMB_OKCANCEL'\

Page 339: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$$9"LineFile1"=[$9]$\n\ $$8"Line#"=[$8]$\n\ $$7"LineFile2"=[$7]$\n\ $$6"Line#"=[$6]'\ IDOK+2 StrCpy$0StopTextCompare

Push$0FunctionEnd

E.2.8TextCompareS

SameasTextCompare,butcasesensitive.

E.2.9ConfigRead

Readvaluefromentrynameinconfigfile.

Syntax:

${ConfigRead}"[File]""[Entry]"$var

"[File]";configfile;"[Entry]";entryname;$var;Result:Value

Note:-Errorflagifentrynotfound-Errorflagiffiledoesn'texist

Example1:

Section ${ConfigRead}"C:\AUTOEXEC.BAT""SETwinbootdir="$R0 ;$R0=C:\WINDOWSSectionEnd

Page 340: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example2:

Section ${ConfigRead}"C:\apache\conf\httpd.conf""Timeout"$R0 ;$R0=30SectionEnd

E.2.10ConfigReadS

SameasConfigRead,butcasesensitive.

E.2.11ConfigWrite

Writevaluefromentrynameinconfigfile.

Syntax:

${ConfigWrite}"[File]""[Entry]""[Value]"$var

"[File]";configfile;"[Entry]";entryname;"[Value]";valuename;if""thendeleteEntry;$var;Result:;$var=CHANGEDValueiswritten;$var=DELETEDEntryisdeleted;$var=ADDEDEntryandValueareadded;$var=SAMEEntryandValuealreadyexist

Note:-Errorflagiffiledoesn'texist-Errorflagiffilecan'tbeopened

Example1:

Page 341: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section ${ConfigWrite}"C:\AUTOEXEC.BAT""SETwinbootdir=""D:\WINDOWS"$R0 ;$R0=CHANGEDSectionEnd

Example2:

Section ${ConfigWrite}"C:\apache\conf\httpd.conf""Timeout""30"$R0 ;$R0=SAMESectionEnd

Example3:

Section ${ConfigWrite}"C:\apache\conf\httpd.conf""Timeout"""$R0 ;$R0=DELETEDSectionEnd

E.2.12ConfigWriteS

SameasConfigWrite,butcasesensitive.

E.2.13FileRecode

RecodetextfilefromDOStoWindowsformatandvice-versa.

Syntax:

${FileRecode}"[File]""[Format]"

"[File]";;"[Format]";OemToChar-fromDOStoWindows;CharToOem-fromWindowstoDOS

Note:-Errorflagiffiledoesn'texist

Page 342: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

-Errorflagifsyntaxerror

Example:

Section ${FileRecode}"C:\SCANDISK.LOG""CharToOem"SectionEnd

E.2.14TrimNewLines

Trimnewlinesinastring.

Syntax:

${TrimNewLines}"[string]"$var

"[string]";Inputstring$var;Result:Stringwithout'$\r'and'$\n'attheend

Example:

Section ${TrimNewLines}"Textline$\r$\n"$R0 ;$R0="Textline"SectionEnd

Previous|Contents|Next

Page 343: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 344: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

E.3WordFunctionsHeader

E.3.1Introduction

Includeheader:

!include"WordFunc.nsh"

Callfunctions:

SectionInstall ${WordFind}"A--H---S""-""+2"$R0 ;$R0="H"SectionEnd

Sectionun.Install ${WordReplace}"A--H---S""-""x""+3*"$R0 ;$R0="A--HxS"SectionEnd

E.3.2WordFind

Multi-featuresstringfunction.

Strings:"[word+1][delimiter][word+2][delimiter][word+3]...""[delimiter][word+1][delimiter][word+2][delimiter]...""[delimiter][delimiter][word+1][delimiter][delimiter][delimiter]...""...[word-3][delimiter][word-2][delimiter][word-1]""...[delimiter][word-2][delimiter][word-1][delimiter]""...[delimiter][delimiter][word-1][delimiter][delimiter][delimiter]"

Syntax:

${WordFind}"[string]""[delimiter]""[E][options]"$var

"[string]";[string]

Page 345: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;inputstring"[delimiter]";[delimiter];oneorseveralsymbols"[E][options]";[options];+number:wordnumberfromstart;-number:wordnumberfromend;+number}:delimiternumberfromstart;allspaceafterthis;delimitertooutput;+number{:delimiternumberfromstart;allspacebeforethis;delimitertooutput;+number}}:wordnumberfromstart;allspaceafterthisword;tooutput;+number{{:wordnumberfromstart;allspacebeforethisword;tooutput;+number{}:wordnumberfromstart;allspacebeforeandafter;thisword(wordexclude);+number*}:wordnumberfromstart;allspaceafterthis;wordtooutputwithword;+number{*:wordnumberfromstart;allspacebeforethis;wordtooutputwithword;#:sumofwordstooutput;*:sumofdelimiterstooutput;/word:numberofwordtooutput;;[E];witherrorleveloutput;IfErrors:;$var=1delimiternotfound;$var=2nosuchwordnumber;$var=3syntaxerror(Use:+1,-1},#,*,/word,...)

Page 346: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);$var;output(result)

Note:-Acceptednumbers1,01,001,...

Example(Findwordbynumber):

Section ${WordFind}"C:\io.sysC:\ProgramFilesC:\WINDOWS""C:\""-02"$R0 ;$R0="ProgramFiles"SectionEnd

Example(Delimiterexclude):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""sys""-2}"$R0 ;$R0="C:\logo.sysC:\WINDOWS"SectionEnd

Example(Sumofwords):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""C:\""#"$R0 ;$R0="3"SectionEnd

Example(Sumofdelimiters):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""sys""*"$R0 ;$R0="2"SectionEnd

Example(Findwordnumber):

Section

Page 347: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${WordFind}"C:\io.sysC:\ProgramFilesC:\WINDOWS""""/Files"$R0 ;$R0="3"SectionEnd

Example(}}):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""""+2}}"$R0 ;$R0="C:\WINDOWS"SectionEnd

Example({}):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""""+2{}"$R0 ;$R0="C:\io.sysC:\WINDOWS"SectionEnd

Example(*}):

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS""""+2*}"$R0 ;$R0="C:\logo.sysC:\WINDOWS"SectionEnd

Example(Getparentdirectory):

Section StrCpy$R0"C:\ProgramFiles\NSIS\NSIS.chm"; "C:\ProgramFiles\NSIS\Include\"; "C:\\ProgramFiles\\NSIS\\NSIS.chm"

${WordFind}"$R0""\""-2{*"$R0 ;$R0="C:\ProgramFiles\NSIS" ;"C:\\ProgramFiles\\NSIS"SectionEnd

Example(Coordinates):

Page 348: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section ${WordFind}"C:\io.sysC:\logo.sysC:\WINDOWS"":\lo""E+1{"$R0 ;$R0="C:\io.sysC" IfErrorsend

StrLen$0$R0;$0=Startpositionofword(11) StrLen$1':\lo';$1=Wordlength(4) ;StrCpy$R0$R1$1$0;$R0=:\lo

end:SectionEnd

Example(Witherrorleveloutput):

Section ${WordFind}"[string]""[delimiter]""E[options]"$R0

IfErrors0end StrCmp$R010+2;errorlevel1? MessageBoxMB_OK'delimiternotfound'IDOKend StrCmp$R020+2;errorlevel2? MessageBoxMB_OK'nosuchwordnumber'IDOKend StrCmp$R030+2;errorlevel3? MessageBoxMB_OK'syntaxerror'

end:SectionEnd

Example(Withouterrorleveloutput):

Section ${WordFind}"C:\io.sysC:\logo.sys""_""+1"$R0

;$R0="C:\io.sysC:\logo.sys"(error:delimiter"_"notfound)SectionEnd

Example(Iffound):

Page 349: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section ${WordFind}"C:\io.sysC:\logo.sys"":\lo""E+1{"$R0

IfErrorsnotfoundfound found: MessageBoxMB_OK'Found'IDOKend notfound: MessageBoxMB_OK'Notfound'

end:SectionEnd

Example(Iffound2):

Section ${WordFind}"C:\io.sysC:\logo.sys"":\lo""+1{"$R0

StrCmp$R0"C:\io.sysC:\logo.sys"notfoundfound;error? found: MessageBoxMB_OK'Found'IDOKend notfound: MessageBoxMB_OK'Notfound'

end:SectionEnd

Example(Toacceptonewordinstringifdelimiternotfound):

Section StrCpy$0'OneWord' StrCpy$11

loop: ${WordFind}"$0""""E+$1"$R0 IfErrors0code StrCmp$1$R0110error StrCpy$R0$0 gotoend

Page 350: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

code: ;... IntOp$1$1+1 gotoloop

error: StrCpy$1'' StrCpy$R0''

end: ;$R0="OneWord"SectionEnd

E.3.3WordFindS

SameasWordFind,butcasesensitive.

E.3.4WordFind2X

Findwordbetweentwodelimiters.

Strings:"[delimiter1][word+1][delimiter2][delimiter1][word+2][delimiter2]...""[text][delimiter1][text][delimiter1][word+1][delimiter2][text]...""...[delimiter1][word-2][delimiter2][delimiter1][word-1][delimiter2]""...[text][delimiter1][text][delimiter1][word-1][delimiter2][text]"

Syntax:

${WordFind2X}"[string]""[delimiter1]""[delimiter2]""[E][options]"$var

"[string]";[string];inputstring"[delimiter1]";[delimiter1];firstdelimiter"[delimiter2]";[delimiter2];seconddelimiter

Page 351: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

"[E][options]";[options];+number:wordnumberfromstart;-number:wordnumberfromend;+number}}:wordnumberfromstartallspace;afterthiswordtooutput;+number{{:wordnumberfromendallspace;beforethiswordtooutput;+number{}:wordnumberfromstart;allspacebeforeandafter;thisword(wordexclude);+number*}:wordnumberfromstart;allspaceafterthis;wordtooutputwithword;+number{*:wordnumberfromstart;allspacebeforethis;wordtooutputwithword;#:sumofwordstooutput;/word:numberofwordtooutput;;[E];witherrorleveloutput;IfErrors:;$var=1nowordsfound;$var=2nosuchwordnumber;$var=3syntaxerror(Use:+1,-1,#);[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);$var;output(result)

Example(1):

Section ${WordFind2X}"[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]""[C:\""];""+2"$R0 ;$R0="logo.sys"SectionEnd

Page 352: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example(2):

Section ${WordFind2X}"C:\WINDOWSC:\io.sysC:\logo.sys""\"".""-1"$R0 ;$R0="logo"SectionEnd

Example(3):

Section ${WordFind2X}"C:\WINDOWSC:\io.sysC:\logo.sys""\"".""-1{{"$R0 ;$R0="C:\WINDOWSC:\io.sysC:"SectionEnd

Example(4):

Section ${WordFind2X}"C:\WINDOWSC:\io.sysC:\logo.sys""\"".""-1{}"$R0 ;$R0="C:\WINDOWSC:\io.sysC:sys"SectionEnd

Example(5):

Section ${WordFind2X}"C:\WINDOWSC:\io.sysC:\logo.sys""\"".""-1{*"$R0 ;$R0="C:\WINDOWSC:\io.sysC:\logo."SectionEnd

Example(6):

Section ${WordFind2X}"C:\WINDOWSC:\io.sysC:\logo.sys""\"".""/logo"$R0 ;$R0="2"SectionEnd

Example(Witherrorleveloutput):

Section ${WordFind2X}"[io.sys];[C:\logo.sys]""\""];""E+1"$R0

Page 353: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;$R0="1"("\...];"notfound)

IfErrors0noerrors MessageBoxMB_OK'Errorlevel=$R0'IDOKend

noerrors: MessageBoxMB_OK'Noerrors'

end:SectionEnd

E.3.5WordFind2XS

SameasWordFind2X,butcasesensitive.

E.3.6WordFind3X

Findawordthatcontainsastring,betweentwodelimiters.

Syntax:

${WordFind3X}"[string]""[delimiter1]""[center]""[delimiter2]""[E][options]"$var

"[string]";[string];inputstring"[delimiter1]";[delimiter1];firstdelimiter"[center]";[center];centerstring"[delimiter2]";[delimiter2];seconddelimiter"[E][options]";[options];+number:wordnumberfromstart;-number:wordnumberfromend;+number}}:wordnumberfromstartallspace;afterthiswordtooutput;+number{{:wordnumberfromendallspace

Page 354: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;beforethiswordtooutput;+number{}:wordnumberfromstart;allspacebeforeandafter;thisword(wordexclude);+number*}:wordnumberfromstart;allspaceafterthis;wordtooutputwithword;+number{*:wordnumberfromstart;allspacebeforethis;wordtooutputwithword;#:sumofwordstooutput;/word:numberofwordtooutput;;[E];witherrorleveloutput;IfErrors:;$var=1nowordsfound;$var=2nosuchwordnumber;$var=3syntaxerror(Use:+1,-1,#);[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);$var;output(result)

Example(1):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""+1"$R0 ;$R0="1.AAB"SectionEnd

Example(2):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""-1"$R0 ;$R0="2.BAA"SectionEnd

Page 355: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example(3):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""-1{{"$R0 ;$R0="[1.AAB];"SectionEnd

Example(4):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""-1{}"$R0 ;$R0="[1.AAB];[3.BBB];"SectionEnd

Example(5):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""-1{*"$R0 ;$R0="[1.AAB];[2.BAA];"SectionEnd

Example(6):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""AA""];""/2.BAA"$R0 ;$R0="2"SectionEnd

Example(Witherrorleveloutput):

Section ${WordFind3X}"[1.AAB];[2.BAA];[3.BBB];""[""XX""];""E+1"$R0 ;$R0="1"("[...XX...];"notfound)

IfErrors0noerrors MessageBoxMB_OK'Errorlevel=$R0'IDOKend

noerrors:

Page 356: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MessageBoxMB_OK'Noerrors'

end:SectionEnd

E.3.7WordFind3XS

SameasWordFind3X,butcasesensitive.

E.3.8WordReplace

Replaceordeletewordfromstring.

Syntax:

${WordReplace}"[string]""[word1]""[word2]""[E][options]"$var

"[string]";[string];inputstring"[word1]";[word1];wordtoreplaceordelete"[word2]";[word2];replacewith(ifemptydelete)"[E][options]";[options];+number:wordnumberfromstart;-number:wordnumberfromend;+number*:wordnumberfromstartmultiple-replace;-number*:wordnumberfromendmultiple-replace;+:replaceallresults;+*:multiple-replaceallresults;{:ifexistsreplacealldelimiters;fromleftedge;}:ifexistsreplacealldelimiters;fromrightedge;{}:ifexistsreplacealldelimiters;fromedges;{*:ifexistsmultiple-replaceall

Page 357: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

;delimitersfromleftedge;}*:ifexistsmultiple-replaceall;delimitersfromrightedge;{}*:ifexistsmultiple-replaceall;delimitersfromedges;;[E];witherrorleveloutput;IfErrors:;$var=1wordtoreplacenotfound;$var=2nosuchwordnumber;$var=3syntaxerror(Use:+1,-1,+1*,-1*,+,+*,{},{}*);[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);$var;output(result)

Example(replace):

Section ${WordReplace}"C:\io.sysC:\logo.sysC:\WINDOWS""SYS""bmp""+2"$R0 ;$R0="C:\io.sysC:\logo.bmpC:\WINDOWS"SectionEnd

Example(delete):

Section ${WordReplace}"C:\io.sysC:\logo.sysC:\WINDOWS""SYS""""+"$R0 ;$R0="C:\io.C:\logo.C:\WINDOWS"SectionEnd

Example(multiple-replace1):

Section ${WordReplace}"C:\io.sysC:\logo.sysC:\WINDOWS""""""+1*"$R0 ;+1*or+2*or+3*or+4*or+5*or+6* ;$R0="C:\io.sysC:\logo.sysC:\WINDOWS"

Page 358: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SectionEnd

Example(multiple-replace2):

Section ${WordReplace}"C:\io.sysC:\logo.sysSYSsysC:\WINDOWS""sys""bmp""+*"$R0 ;$R0="C:\io.bmpC:\logo.bmpC:\WINDOWS"SectionEnd

Example(multiple-replace3):

Section ${WordReplace}"sysSYSsysC:\io.sysC:\logo.sysC:\WINDOWSsysSYSsys""sys""|""{}*"$R0 ;$R0="|C:\io.sysC:\logo.sysC:\WINDOWS|"SectionEnd

Example(Witherrorleveloutput):

Section ${WordReplace}"C:\io.sysC:\logo.sys""sys""bmp""E+3"$R0 ;$R0="2"(nosuchwordnumber"+3")

IfErrors0noerrors MessageBoxMB_OK'Errorlevel=$R0'IDOKend

noerrors: MessageBoxMB_OK'Noerrors'

end:SectionEnd

E.3.9WordReplaceS

SameasWordReplace,butcasesensitive.

E.3.10WordAdd

Addwordstostring1fromstring2ifnotexistordeletewordsifexist.

Page 359: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Syntax:

${WordAdd}"[string1]""[delimiter]""[E][options]"$var

"[string1]";[string1];stringforadditionorremoving"[delimiter]";[delimiter];oneorseveralsymbols"[E][options]";[options];+string2:wordstoadd;-string2:wordstodelete;;[E];witherrorleveloutput;IfErrors:;$var=1delimiterisempty;$var=3syntaxerror(use:+text,-text);[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);$var;output(result)

Example(add):

Section ${WordAdd}"C:\io.sysC:\WINDOWS""""+C:\WINDOWSC:\config.sys"$R0 ;$R0="C:\io.sysC:\WINDOWSC:\config.sys"SectionEnd

Example(delete):

Section ${WordAdd}"C:\io.sysC:\logo.sysC:\WINDOWS""""-C:\WINDOWSC:\config.sysC:\IO.SYS"$R0 ;$R0="C:\logo.sys"SectionEnd

Example(addtoone):

Page 360: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section ${WordAdd}"C:\io.sys""""+C:\WINDOWSC:\config.sysC:\IO.SYS"$R0 ;$R0="C:\io.sysC:\WINDOWSC:\config.sys"SectionEnd

Example(deleteone):

Section ${WordAdd}"C:\io.sysC:\logo.sysC:\WINDOWS""""-C:\WINDOWS"$R0 ;$R0="C:\io.sysC:\logo.sys"SectionEnd

Example(Nonewwordsfound):

Section ${WordAdd}"C:\io.sysC:\logo.sys""""+C:\logo.sys"$R0 StrCmp$R0"C:\io.sysC:\logo.sys"0+2 MessageBoxMB_OK"Nonewwordsfoundtoadd"SectionEnd

Example(Nowordsdeleted):

Section ${WordAdd}"C:\io.sysC:\logo.sys""""-C:\config.sys"$R0 StrCmp$R0"C:\io.sysC:\logo.sys"0+2 MessageBoxMB_OK"Nowordsfoundtodelete"SectionEnd

Example(Witherrorleveloutput):

Section ${WordAdd}"C:\io.sysC:\logo.sys""""E-C:\logo.sys"$R0 ;$R0="1"(delimiterisempty"")

IfErrors0noerrors MessageBoxMB_OK'Errorlevel=$R0'IDOKend

noerrors:

Page 361: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MessageBoxMB_OK'Noerrors'

end:SectionEnd

E.3.11WordAddS

SameasWordAdd,butcasesensitive.

E.3.12WordInsert

Insertwordinstring.

Syntax:

${WordInsert}"[string]""[delimiter]""[word]""[E][options]"$var

"[string]";[string];inputstring"[delimiter]";[delimiter];oneorseveralsymbols"[word]";[word];wordtoinsert"[E][options]";[options];+number:wordnumberfromstart;-number:wordnumberfromend;;[E];witherrorleveloutput;IfErrors:;$var=1delimiterisempty;$var=2wrongwordnumber;$var=3syntaxerror(Use:+1,-1);[];noerrorleveloutput(default);Ifsomeerrorsfoundthen(result=inputstring);

Page 362: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

$var;output(result)

Example(1):

Section ${WordInsert}"C:\io.sysC:\WINDOWS""""C:\logo.sys""-2"$R0 ;$R0="C:\io.sysC:\logo.sysC:\WINDOWS"SectionEnd

Example(2):

Section ${WordInsert}"C:\io.sys""""C:\WINDOWS""+2"$R0 ;$R0="C:\io.sysC:\WINDOWS"SectionEnd

Example(3):

Section ${WordInsert}"""""C:\WINDOWS""+1"$R0 ;$R0="C:\WINDOWS"SectionEnd

Example(Witherrorleveloutput):

Section ${WordInsert}"C:\io.sysC:\logo.sys""""C:\logo.sys""E+4"$R0 ;$R0="2"(wrongwordnumber"+4")

IfErrors0noerrors MessageBoxMB_OK'Errorlevel=$R0'IDOKend

noerrors: MessageBoxMB_OK'Noerrors'

end:SectionEnd

Page 363: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

E.3.13WordInsertS

SameasWordInsert,butcasesensitive.

E.3.14StrFilter

Convertstringtouppercaseorlowercase.Setsymbolfilter.

Syntax:

${StrFilter}"[string]""[options]""[symbols1]""[symbols2]"$var

"[string]";[string];inputstring;"[options]";[+|-][1|2|3|12|23|31][eng|rus];+:convertstringtouppercase;-:convertstringtolowercase;1:onlyDigits;2:onlyLetters;3:onlySpecial;12:onlyDigits+Letters;23:onlyLetters+Special;31:onlySpecial+Digits;eng:Englishsymbols(default);rus:Russiansymbols;"[symbols1]";[symbols1];symbolsinclude(notchangeable);"[symbols2]";[symbols2];symbolsexclude;$var;output(result)

Note:-Errorflagifsyntaxerror

Page 364: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

-Samesymboltoinclude&toexclude=toexclude

Example(UpperCase):

Section ${StrFilter}"123abc456DEF7890|%#""+"""""$R0 ;$R0="123ABC456DEF7890|%#"SectionEnd

Example(LowerCase):

Section ${StrFilter}"123abc456DEF7890|%#""-""ef"""$R0 ;$R0="123abc456dEF7890|%#"SectionEnd

Example(Filter1):

Section ${StrFilter}"123abc456DEF7890|%#""2""|%"""$R0 ;$R0="abcDEF|%";onlyLetters+|%SectionEnd

Example(Filter2):

Section ${StrFilter}"123abc456DEF7890|%#""13""af""4590"$R0 ;$R0="123a6F78|%#";onlyDigits+Special+af-4590SectionEnd

Example(Filter3):

Section ${StrFilter}"123abc456DEF7890|%#""+12""b""def"$R0 ;$R0="123AbC4567890";onlyDigits+Letters+b-defSectionEnd

Example(Filter4):

Page 365: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Section ${StrFilter}"123abcÀÁÂ456DEFãäå7890|%#""+12rus""ä""ãå"$R0 ;$R0="123ÀÁÂ456ä7890";onlyDigits+Letters+ä-ãåSectionEnd

Example(English+RussianLetters):

Section ${StrFilter}"123abcÀÁÂ456DEFãäå7890|%#""2rus"""""$R0 ;$R0="ÀÁÂãäå";onlyRussianLetters ${StrFilter}"123abcÀÁÂ456DEFãäå7890|%#""2""$R0"""$R0 ;$R0="abcÀÁÂDEFãäå";onlyEnglish+RussianLettersSectionEnd

Example(WordCapitalize):

Section Push"_01-PERPETUOUS_DREAMER__-__THE_SOUND_OF_GOODBYE_(ORIG._MIX).MP3_" CallCapitalize Pop$R0 ;$R0="_01-Perpetuous_Dreamer__-__The_Sound_Of_Goodbye_(Orig._Mix).mp3_"

${WordReplace}"$R0""_""""+*"$R0 ;$R0="01-PerpetuousDreamer-TheSoundOfGoodbye(Orig.Mix).mp3"

${WordReplace}"$R0""""""{}"$R0 ;$R0="01-PerpetuousDreamer-TheSoundOfGoodbye(Orig.Mix).mp3"SectionEnd

FunctionCapitalize Exch$R0 Push$0 Push$1 Push$2

${StrFilter}'$R0''-eng'''''$R0 ${StrFilter}'$R0''-rus'''''$R0

Page 366: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

StrCpy$00

loop: IntOp$0$0+1 StrCpy$1$R01$0 StrCmp$1''end StrCmp$1''+5 StrCmp$1'_'+4 StrCmp$1'-'+3 StrCmp$1'('+2 StrCmp$1'['0loop IntOp$0$0+1 StrCpy$1$R01$0 StrCmp$1''end

${StrFilter}'$1''+eng'''''$1 ${StrFilter}'$1''+rus'''''$1

StrCpy$2$R0$0 IntOp$0$0+1 StrCpy$R0$R0''$0 IntOp$0$0-2 StrCpy$R0'$2$1$R0' gotoloop

end: Pop$2 Pop$1 Pop$0 Exch$R0FunctionEnd

E.3.15StrFilterS

SameasStrFilter,butcasesensitive.

E.3.16VersionCompare

Page 367: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Compareversionnumbers.

Syntax:

${VersionCompare}"[Version1]""[Version2]"$var

"[Version1]";Firstversion"[Version2]";Secondversion$var;Result:;$var=0Versionsareequal;$var=1Version1isnewer;$var=2Version2isnewer

Example:

Section ${VersionCompare}"1.1.1.9""1.1.1.01"$R0 ;$R0="1"SectionEnd

E.3.17VersionConvert

Convertversioninthenumericalformatwhichcanbecompared.

Syntax:

${VersionConvert}"[Version]""[CharList]"$var

"[Version]";Version;"[CharList]";Listofcharacters,whichwillbereplacedbynumbers;"abcdefghijklmnopqrstuvwxyz"(default);$var;Result:convertedversion

Note:-Convertedlettersareseparatedwithdot-Ifcharacterisnon-digitandnotinlistthenitwillbeconvertedtodot

Page 368: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Example1:

Section ${VersionConvert}"9.0a"""$R0 ;$R0="9.0.01"

${VersionConvert}"9.0c"""$R1 ;$R1="9.0.03"

${VersionCompare}"$R0""$R1"$R2 ;$R2="2"version2isnewerSectionEnd

Example2:

Section ${VersionConvert}"0.15c-9m"""$R0 ;$R0="0.15.03.9.13"

${VersionConvert}"0.15c-1n"""$R1 ;$R1="0.15.03.1.14"

${VersionCompare}"$R0""$R1"$R2 ;$R2="1"version1isnewerSectionEnd

Example3:

Section ${VersionConvert}"0.15c+""abcdefghijklmnopqrstuvwxyz+"$R0 ;$R0="0.15.0327"

${VersionConvert}"0.15c""abcdefghijklmnopqrstuvwxyz+"$R1 ;$R1="0.15.03"

${VersionCompare}"$R0""$R1"$R2 ;$R2="1"version1isnewerSectionEnd

Page 369: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 370: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 371: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixF:ChangelogandReleaseNotes3.02

Changelog3.01

Changelog3.0

ReleaseNotesChangelog

3.0ReleaseCandidate2Changelog

3.0ReleaseCandidate1Changelog

3.0Beta3Changelog

3.0Beta2Changelog

3.0Beta1ReleaseNotesChangelog

3.0Beta0ReleaseNotesChangelog

3.0Alpha2ReleaseNotesChangelog

3.0Alpha1ReleaseNotesChangelog

3.0Alpha0ReleaseNotesChangelog

2.51Changelog

2.50Changelog

2.49Changelog

Page 372: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.48Changelog

2.47ReleaseNotesChangelog

2.46Changelog

2.45ReleaseNotesChangelog

2.44Changelog

2.43ReleaseNotesChangelog

2.42ReleaseNotesChangelog

2.41Changelog

2.40Changelog

2.39Changelog

2.38Changelog

2.37Changelog

2.36ReleaseNotesChangelog

2.35Changelog

2.34ReleaseNotesChangelog

2.33ReleaseNotesChangelog

Page 373: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.32ReleaseNotesChangelog

2.31ReleaseNotesChangelog

2.30ReleaseNotesChangelog

2.29ReleaseNotesChangelog

2.28Changelog

2.27ReleaseNotesChangelog

2.26ReleaseNotesChangelog

2.25Changelog

2.24Changelog

2.23Changelog

2.22ReleaseNotesChangelog

2.21Changelog

2.20Changelog

2.19Changelog

2.18Changelog

2.17Changelog

Page 374: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.16ReleaseNotesChangelog

2.15Changelog

2.14ReleaseNotesChangelog

2.13ReleaseNotesChangelog

2.12Changelog

2.11ReleaseNotesChangelog

2.10Changelog

2.09Changelog

2.08ReleaseNotesChangelog

2.07ReleaseNotesChangelog

2.06Changelog

2.05ReleaseNotesChangelog

2.04Changelog

2.03ReleaseNotesChangelog

2.02Changelog

2.01

Page 375: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ReleaseNotesChangelog

2.0ReleaseNotesChangelog

2.0ReleaseCandidate4Changelog

2.0ReleaseCandidate3Changelog

2.0ReleaseCandidate2Changelog

2.0ReleaseCandidate1ReleaseNotesChangelog

2.0Beta4ReleaseNotesChangelog

2.0Beta32.0Beta22.0Beta12.0Beta02.0Alpha72.0Alpha62.0Alpha52.0Alpha42.0Alpha32.0Alpha22.0Alpha12.0Alpha0OlderVersions

Previous|Contents|Next

Page 376: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 377: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.13.02ReleasedonJuly23rd,2017

F.1.1Changelog

F.1.1.1MajorChanges

FixedNSIS3RegToolWin9xbugAddedtheHKCR32,HKCR64,HKCU32,HKCU64,HKLM32andHKLM64rootkeysUnsupportedSetRegViewmodenowfailsallregistryoperationsAddedExecShellWaitAddedWriteRegMultiStr(RFE#382,patch#219)andWriteRegNoneAdded!pragmawarning(patch#267)$LocalAppDatanowresolvestotheProgramDatafolderintheSetShellVarContextallcontext

F.1.1.2MinorChanges

VariablesusedinCaptioncannowbesetin.onGUIInit(RFE#539)MultiUsernowsupports$ProgramFiles64(bug#843)AddedsupportforMUI_UNCONFIRMPAGE_VARIABLE(RFE#511)andMUI_PAGE_CUSTOMFUNCTION_DESTROYEDUnicodensExecnowsupportsthe/OEMswitch(bug#1171)

F.1.1.3Translations

Chinese(Traditional)updatesbyWalterCheukMinorFrenchimprovements(patch#221)

Previous|Contents|Next

Page 378: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 379: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.23.01ReleasedonDecember11th,2016

F.2.1Changelog

F.2.1.1MajorChanges

ErrormessagesarenowwrittentostderrbydefaultNewiconsbyJanT.Sott

F.2.1.2MinorChanges

SetCtlColorsnowsupportsWindowscolorconstantvaluesStrCpy""maxlenhandling(bug#1122)Fixedbuffersizebuginwinchar.cpp(patch#271)

F.2.1.3Translations

AddedCorsican(patch#268)PortugueseBRfixes(patch#276)UpdatedDanishtranslation(bug#1164)Arabic,Norwegian,Portuguese,UkrainianandSwedishMultiUserfixes(patch#278,patch#279,patch#274,patch#275&patch#277)

Previous|Contents|Next

Page 380: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 381: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.33.0ReleasedonJuly24th,2016

F.3.1ReleaseNotes

Long-awaitedversion3ofNSISisfinallyready.ItcomeswithoptionalUnicodesupport,stillworksonallthesameversionsofWindows,supportsWindows10,andaddsalotofothersmallfeaturesandfixes.HugethanksgoesouttoAndersandWizouformakingthishappenandJimParkfortheoriginalpatch.

F.3.2Changelog

F.3.2.1MinorChanges

!finalizecommandnowsupportsthesamecompareoperatorsas!system(bug#1148)

F.3.2.2Translations

PortugueseBRfixes(bug#1149)

Previous|Contents|Next

Page 382: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 383: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.43.0ReleaseCandidate2ReleasedonJuly8th,2016

F.4.1Changelog

F.4.1.1MajorChanges

FixedLogicLibnested${Select}bug!makensiscommandmustforceUnicodeoutputtobeUTF-8(bug#1147)

F.4.1.2MinorChanges

Zip2Exeabortsifthezipfileisencrypted(bug#1141)AddedLogicLib&operatorNSISMenuPOSIXfixes(bug#1144)

F.4.1.3Translations

PortugueseBRfixes(deguix)MinortweakstoDanish.nlf(scootergrisen)(bug#1140)

Previous|Contents|Next

Page 384: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 385: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.53.0ReleaseCandidate1ReleasedonApril3nd,2016

F.5.1Changelog

F.5.1.1MajorChanges

Fixed!appendfileonPOSIXandLogicLib${Switch}Moresecurityhardeningtopreventdllhijacking

F.5.1.2MinorChanges

DocumentationimprovementsThenameoftheuninstallercreatedin%TEMP%\~nsu.tmphaschangedfrom%UNIQUE%u_.exetoUn_%UNIQUE%.exeVariouswarninganderrorimprovments

F.5.1.3Translations

AddedmissingMULTIUSER_*entriestoJapanese.nsh(patch#266)

Previous|Contents|Next

Page 386: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 387: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.63.0Beta3ReleasedonDecember26th,2015

F.6.1Changelog

F.6.1.1MajorChanges

RequestExecutionLevelnowdefaultstoadminLoadLibrarysecurityhardeningtopreventdllhijacking(bug#1125)FileReadUTF16LEnowskipstheoptionalBOMatthestartofafile

F.6.1.2MinorChanges

FixedSystempluginGUIDtypeoutputbugonWin98FileWriteUTF16LEcanaddaBOMwiththe/BOMswitchCreateShortcuticonindexcannowbelargerthan255(bug#1123)!systemand!executenowprovideanemptyStdInpipetoworkaroundbugsinsomeWindowsutilitiesAddedsupportfor0ooctalradixprefixonnumberliteralsinthepreprocessorThesingleparameterversionof!ifnowalsosupportsfloatsPreprocessornowwarnswheninvalidfloatingpointnumbersareusedinmathoperationsMakeNSISWnowusesWinInetwhencheckingforupdates

F.6.1.3Translations

BrazilianPortugueseupdated(Felipe)(patch#263)Polishupdated(PawełPorwisz)

Previous|Contents|Next

Page 388: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 389: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.73.0Beta2ReleasedonAugust4th,2015

F.7.1Changelog

F.7.1.1MajorChanges

PreliminaryWindows10support

F.7.1.2MinorChanges

Added!appendfile/RawNLswitchAddedPESubsysVerattributeExec[Wait]setstheCREATE_DEFAULT_ERROR_MODEflagwhencreatingaprocessFixed4+TiBfreespacecalculationbug(bug#1115)FixedCreateShortcut/NoWorkingDirparsingbug(bug#1110)FixedminorissuesinthePascalNSISplug-inSDKandremovedtheextrapglobalvariablensDialogsandInstallOptionsnowusethesystemlinkcolor

F.7.1.3BuildSystem

Linuxstdcallwarningfix(patch#261)Linuxtest-scriptsfix(patch#260)Win64fixes(includingpatch#258,bug#1105)VisualC2012fixes

Previous|Contents|Next

Page 390: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 391: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.83.0Beta1ReleasedonOctober6th,2014

F.8.1ReleaseNotes

Thisreleaseaddressesalotofbuildissues,reintroducesthenightlybuildsandaddsautomaticnightlytestexecution

F.8.2Changelog

F.8.2.1MajorChanges

!insertmacroallowsmacrorecursion(RFE#497)Added!makensiscommandAddednewMUI2bitmapstretchmodes,*_NOSTRETCHisnowdeprecated(RFE#521)InitiateShutdown()isusedtorebootthemachineifavailable(patch#247)AddedPPOandSafePPOpreprocess-onlycompilerswitchesMakeNSISWM_COPYDATAmessagesnowusetheQH_OUTPUTCHARSETencodingwithCP_ACPasthedefaultforcompatibilitywitholdIDEs.

F.8.2.2MinorChanges

AddedIsWow64tox64.nshAddedPEDllCharacteristicsattributeAddedSystem::Calldirectregistermemoryaccesstype.(patch#249)AddedWXcompilerswitchAllowskippingExDLLbuildwithSKIPPLUGINS((patch#254))ChangeddefaultDllCharacteristicstoTS_AWARE+NO_SEH+NX_COMPAT+DYNAMIC_BASEFixedMacOSXbuilds(patch#253andbug#1085)

Page 392: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedPOSIX!searchparsebug(patch#251)Fixed!macroundefFixedtest-codebuildtargetonPOSIXandenableditinnightlybuilds(bug#1098)FixedVisualStudio2012builds

F.8.2.3Translations

AddedArmenian(HrantOhanyan)

Previous|Contents|Next

Page 393: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 394: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.93.0Beta0ReleasedonMay11th,2014

F.9.1ReleaseNotes

POSIXbuildsworkagain!Pleaseletusknowifyourfavoriteplatformisstillhavingbuildissues.WemainlytestonLinux.

F.9.2Changelog

F.9.2.1MajorChanges

BasicAMD64System::CallsupportFixedPOSIXbuilds

F.9.2.2MinorChanges

AddedCreateShortcut/NoWorkingDirparameterAddedInt<32|64|Ptr><Op|Cmp[U]>helpermacrostoUtil.nshAddedP<,P<=,P=,P<>,P>=andP>LogicLibptrdiff_ttestsTryhardertofindduplicatestringsinstringblock(bug#1088)!systemwilldecodechildoutputasOEMCPifGetConsoleOutputCP()==GetOEMCP()!systemand!executecanstoretheexitcodeinadefine!executesupportscomparingtheexitcodewiththesamesyntaxas!systemPreprocessorsupports0nand0bradixprefixonnumberliterals

Previous|Contents|Next

Page 395: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 396: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.103.0Alpha2ReleasedonDecember24th,2013

F.10.1ReleaseNotes

It'stheholidaygiftyou'vebeenwaitingfor!

F.10.1.1KnownIssues

ThePOSIXbuildisgettingmuchcloser,butstillcurrentlybrokenLangDLLdoesn'tdisplaylocalizedlanguagenamewithUnicodefalse

F.10.2Changelog

F.10.2.1MajorChanges

!includedefaultstoUTF-8afterUnicodeTruePreprocessordoesnotparseallbranchesandwillnotvalidatecodethatisneverexecuted(bug#1086)

F.10.2.2MinorChanges

FileReadinUnicodeinstallerscanhandleDBCS,conversionoutputislimitedtoUCS-2.FileReadinUnicodeinstallersnowusestheUnicodereplacementcharacter(U+FFFD)forinvalidcharactersandnot'?'.FileReadBytenolongerperformsaUnicodeconversiononnon-ASCIIcharactersWindows8.1&2012R2supportinWinVer.nshFixed!defineUnicodenullterminatorbug(bug#1079)UnicodestubscreateWCHARricheditcontrols(bug#1080)FixedMakeNSISWdefaultpushbuttonandtaborderFixedincorrectpagecountincompilerstatistics

Page 397: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 398: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 399: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.113.0Alpha1ReleasedonJuly14th,2013

F.11.1ReleaseNotes

F.11.1.1KnownIssues

ThePOSIXbuildiscurrentlybrokenLangDLLdoesn'tdisplaylocalizedlanguagenamewithUnicodefalseFileReadmayreturn'?'forMBCSletterswithUnicodetrue

F.11.2Changelog

F.11.2.1MajorChanges

Defaultverbosityis/V3withoutlogo,MakeNSISWstilluses/V4.ManifestSupportedOSaddedsupportfortheWindows8.1GUIDanditissetbydefaulttoavoidGetVersionExcompatibilitybehavior.

F.11.2.2MinorChanges

Fixed!finalize%1Fixed!searchparse(bug#1073)Madeinstallersalwaysrespect/Soncommandline,evenwheninstallerfilecan'tberead(bug#1076)MinorMakeNSISWfixesandtweaksAddedZip2ExeUnicodecheckbox

Previous|Contents|Next

Page 400: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 401: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.123.0Alpha0ReleasedonMay19th,2013

F.12.1ReleaseNotes

MakeNSIScannowgenerateANSIandUnicodeinstallers.SourcefilescanbeUTF8SIG,UTF16BOMortraditionalMBCStextfiles(whichareconvertedtoUnicodewithACPunlessyouspecifyadifferentcodepage).Thedefaultpluginsarenowstoredinsub-foldersbasedontheirCPUtargetandcharactersetencoding.

F.12.1.1KnownIssues

ThePOSIXbuildiscurrentlybrokenLangDLLdoesn'tdisplaylocalizedlanguagenamewithUnicodefalseFileReadmayreturn'?'forMBCSletterswithUnicodetrue

F.12.2Changelog

F.12.2.1MajorChanges

AddedtheUnicodeattribute(RFE#1238132,patch#1795257)AddedsupportforWindows8andWindowsServer2012MakeNSIScanreadUTF8SIGandUTF16BOMscriptfiles(RFE#2026892)AllNLFandNSHlanguagefilesarestoredasUTF-16LE(RFE#1879642)ScriptscancontroltheSupportedOSlistintheapplicationmanifestusingManifestSupportedOS(bug#2725883,RFE#3020103)InstallerscanclaimDPI-awarenesswithManifestDPIAware(bug#2897169)Theindexofthechangedsectionisstoredin$0during.onSelChangecallbacks(RFE#1634936)

Page 402: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${U+1}...${U+10FFFF}aretreatedasaUnicodecharacterunlessthereisalreadyadefinewiththatname(RFE#2084797)

F.12.2.2MinorChanges

Added!getdllversion(bug#2809308)Added!appendfile/CHARSETparameterAdded!ifsupportfor/fileexists,casesensitivecomparisons,hexandfloatAddedmoredefinitionstoWinMessages.nsh%temp%\Lowwillbeusediftheinstallercannotwriteto%temp%nor%windir%\Temp(bug#2909242,patch#2912824)Added${NSIS_PACKEDVERSION},theNSISversionpackedasahexnumber(patch#2680832)Added${__MACRO__}and${__COUNTER__}predefinesAddedUnsafeStrCpyinstruction,itcanwritetospecialvariableslike$PLUGINSDIRAddedVIFileVersionAdded!finalizeforpost-buildcommands(likesigningtheinstaller)Pluginsin${NSISDIR}\PluginshavetobereservedwithReserveFile/plugin

MakeNSIS/NOTIFYHWNDusesa(optional)neweventnametoabortcompilation,seebuild.cpp/hfordetails.Reduced!include/!insertmacrorecursionstackusage(bug#3067954)FixedminorMakeNSISleaks(bug#3474662)FixedMUI_FINISHPAGE_TITLE_3LINESpaddingwhenrebootisrequired(bug#3400067,bug#3408407)FixedremovalofreadonlyattributeevenifDeleteorRMDirfails(bug#3072159)Fixed${__SECTION__}inhiddensections(RFE#1787648)Variousdocumentationfixes(bug#3063566,bug#3567313,patch#3307144)Lotsofothersmallfixes...

F.12.2.3Translations

Page 403: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ChangedLANGFILEmacroinLangFile.nshWarningsarenowdisplayedformissingstrings(LANGFILE_INCLUDE_WITHDEFAULT)AddedGeorgian(DavidHuriev)AddedPashto(Pakhtosoft)AddedScottishGaelic(GunChleoc)FixedKoreanMUI_[UN]TEXT_FINISH_INFO_*(bug#3541515)

Previous|Contents|Next

Page 404: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 405: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.132.51ReleasedonApril1st,2016

F.13.1Changelog

F.13.1.1MinorChanges

MoresecurityhardeningtopreventdllhijackingBackportedsupportforsystem'p'typeandlogiclibPandZtests

F.13.1.2Translations

AddedmissingMULTIUSER_*entriestoJapanese.nsh(patch#266)

Previous|Contents|Next

Page 406: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 407: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.142.50ReleasedonDecember26th,2015

F.14.1Changelog

F.14.1.1MajorChanges

RequestExecutionLevelnowdefaultstoadmin

F.14.1.2MinorChanges

Preloadcertainsystemlibrariestopreventdllhijacking(bug#1125)

Previous|Contents|Next

Page 408: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 409: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.152.49ReleasedonDecember16th,2015

F.15.1Changelog

FixedCreateShortcutfailureonVistacausedbysecuritychangesin2.47

Previous|Contents|Next

Page 410: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 411: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.162.48ReleasedonDecember10th,2015

F.16.1Changelog

FixedCHM(bug#1129)

Previous|Contents|Next

Page 412: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 413: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.172.47ReleasedonDecember8th,2015

F.17.1ReleaseNotes

Thisisamaintenanceandsecurityrelease

F.17.2Changelog

F.17.2.1MajorChanges

LoadLibrarysecurityhardeningtopreventdllhijacking(bug#1125)InitiateShutdown()isusedtorebootthemachineifavailable(patch#247)

F.17.2.2MinorChanges

Fixed4+TiBfreespacecalculationbug(bug#1115)Windows8&2012supportinWinVer.nsh

Previous|Contents|Next

Page 414: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 415: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.182.46ReleasedonDecember6th,2009

F.18.1Changelog

F.18.1.1MinorChanges

Fixed!searchparse(bug#2803622)FixedVistaerrormessagewhencancelinguninstaller(bug#2803097)ResolvewarningforLogicLib'sendlessDo..Loop(bug#2849872)StartMenu:fixedrandomnumberprefixeswhenclickingonanemptyspot(bug#2810188)UpdatestoNSIS.pasforplug-indevelopment(patch#2802794)

F.18.1.2Translations

PortugueseBRtypo(patch#2826598)RemoveddoublespacesinItalian(bug#2873598)

F.18.1.3BuildSystem

FixedmingwbuildsofMathplug-in(patch#2835731)

Previous|Contents|Next

Page 416: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 417: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.192.45ReleasedonJune6th,2009

F.19.1ReleaseNotes

SupportforMicrosoft'supcomingreleaseofWindows7hasbeenaddedbasedonRC1testinganddocumentation.Pleasereportanyrelatedissuesanddon'tforgettouseRequestExecutionLevel.

F.19.2Changelog

F.19.2.1MajorChanges

AddedsupportforWindows7installers-useRequestExecutionLevel,justlikewithVista(bug#2725883)AddedWinVer.nshWindows7andWindows2008R2supportInstallersnowidentifyasTerminalServicesaware(IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE)so$WINDIRwillnolongerbeundertheuser'sprofilewheninstallingonTerminalServicesLessUACannoyanceinAdd/Removecontrolpanel(bug#2697027)

F.19.2.2MinorChanges

Addedwildcardand/nonfatalsupportfor!delfile(RFE#1505425)Fixed!searchparse(bug#2680110)FixedinputvalidationforCreateFont(bug#2801024)FixedNSISMenuhandlingofworkingdirectory(bug#2781948)FixedVistaissueswithshellfolders($DOCUMENTS,$PROFILE,etc.)onrootdirectories(bug#2138075)Minordocumentationimprovements(includingbug#2705878,bug#2606525)UseSW_SHOWDEFAULTforExecShellbydefault(bug#2796189)

Page 418: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.19.2.3ModernUI

Callfinishpageshowfunctiononlyafterthepageisfullyinitialized(bug#2720968)Fixedtranslationofuninstallerdirectorypage(bug#2690112)Fixedinstallationtypetextpositionincomponentspage(patch#2801317)FixedmissingMUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE(bug#2788620)

F.19.2.4Translations

UpdatedIndonesian(patch#2790571)UpdatedPortugueseBR(patch#2642542)

F.19.2.5BuildSystem

FixedsomeGCCwarnings

Previous|Contents|Next

Page 419: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 420: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.202.44ReleasedonFebruary21st,2009

F.20.1Changelog

F.20.1.1MajorChanges

Fixedabugintroducedin2.43causingscriptbuildissueswithsomeicons(bug#2572035)

F.20.1.2MinorChanges

FixednsDialogsCreateTimerdocumentation(bug#2595565)Globallabelsdidn'tworkwhendeclaredinunusedfunctions(bug#2593369)

Previous|Contents|Next

Page 421: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 422: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.212.43ReleasedonFebruary5th,2009

F.21.1ReleaseNotes

Afewminorchangesweremadetothenewplug-inAPIthatbreakbackwardcompatibility.HeaderandlibrarypathswerechangedandRegisterPluginCallbackhaschangeditsreturnvalue.

F.21.2Changelog

F.21.2.1MinorChanges

AddedWinCore.nsh,WinDef.nsh,WinError.nsh,WinNT.nshandWinUser.nshformoreusefulWindowsdefinitionsFixedacrashcausedby!packhdrcompressingresources(bug#2533431)Minordocumentationimprovements(includingbug#2564005)ModernUI2:FixedMUI_DIRECTORYPAGE_BGCOLOR(bug#2494528)

F.21.2.2UtilitiesandPlug-ins

Banner:FixedinstallershowingonthebackgroundwhenBannerwasusedin.onInitMakeNSISW:AddedCtrl+Khotkeyforbuildcancelation(RFE#2557392)nsDialogs:AddedNSD_SetIcon(patch#2500960)

F.21.2.3Translations

AddedEsperantoBulgarianfixes

Page 423: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.21.2.4Plug-inAPI

AddedVS2008projectfilesBetterinstallationofheaderandlibraryfilesunderPOSIX-seeINSTALLfileformoreinformationHeaderandlibraryfilesweremovedtoasubdirectorynamednsistopreventcollisionsRegisterPluginCallbacknowreturnsintinsteadofBOOLforawiderrangeoferrorreporting

F.21.2.5BuildSystem

Addedfink'smingwprefixes(bug#2495138)FixedBOOLbuildissueonOSX(bug#2497290)FixediconvdependencydetectiononOSX(bug#2494539)FixedSolarisbuilds(patch#2497172)

Previous|Contents|Next

Page 424: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 425: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.222.42ReleasedonDecember20th,2008

F.22.1ReleaseNotes

MerryChristmasandahappyHanukkah!Plug-indevelopersshouldcheckoutthenewplug-inAPIinExamples\Pluginandconverttheirplug-ins,especiallyincasetheyrequirestayingloaded.

F.22.2Changelog

F.22.2.1MajorChanges

Deprecated/NOUNLOADandSetPluginsUnloadtomakescriptssimplerandsafer(patch#1912699)UsefulheaderfunctionsnolongerrequireusagedeclarationanddifferentsyntaxforuninstallerfunctionsRevampedplug-inAPInowcomesintheformofpluginapi.lib,APIversioninformationandmorecommonfunctions(patch#2359978)

F.22.2.2MinorChanges

Added!searchreplacepreprocessorcommandforcompiletimetextsearch/replacesAddedsupportforregistrationofEXECOMservers(RFE#2315740)Minordocumentationimprovements(includingbug#2386821)nsDialogs:Addedtimersupport(patch#2135855)nsDialogs:AddedprogressbarsupportWinVer.nsh:AddedIsServer,IsWin2003R2,IsStarterEdition,OSHasMediaCenterandOSHasTabletSupportWinVer.nsh:Fixed95/NT4ambiguity(bug#2053642)WinVer.nsh:ProperWindowsXPx64detection(bug#2053700)WinVer.nsh:Windows2008detectionsupport(RFE#1949260)

Page 426: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.22.2.3Translations

MinorEnglishgrammarimprovements(bug#2323452)

F.22.2.4BuildSystem

FullSystemcompatibilitywithGCC(patch#2193442)

Previous|Contents|Next

Page 427: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 428: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.232.41ReleasedonNovember20th,2008

F.23.1Changelog

F.23.1.1MinorChanges

FixedLangDLLmemoryleaksforinvalidinput(bug#1939573)Fixeduninstallergenerationonbig-endiansystems(bug#2166401,bug#2167958)

F.23.1.2Translations

BrazilianPortuguesecorrectionsConsistencyfixesforSimpleChinese(patch#2189117)

F.23.1.3BuildSystem

AddedsupportforSCons1.1.0FixeddirectoryandcomponentspagetextissuesonVC8builds(patch#1982084)System'sResource.dllnowbuiltfromsource

Previous|Contents|Next

Page 429: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 430: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.242.40ReleasedonOctober10th,2008

F.24.1Changelog

F.24.1.1MajorChanges

ServicepackmacrosaddedtoWinVerinversion2.39nowwork(bug#2070708,patch#2095363)

F.24.1.2MinorChanges

AddedinitialfolderselectionoptionfornsDialogs::SelectFileDialog(patch#2016003)FixedGetParametershandlingofMBCScharacters(bug#2067946)Fixedincorrect${NSD_OnBack}documentation(bug#2059651)ModernUI2:Setfocustocheckboxesonthefinishpage(bug#2110357)

F.24.1.3Translations

Portuguesecorrections(bug#2086988)SimplifiedChinesecorrections(patch#2056906)

Previous|Contents|Next

Page 431: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 432: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.252.39ReleasedonAugust16th,2008

F.25.1Changelog

F.25.1.1MajorChanges

Added!define/fileand!searchparse(patch#2016254)Addedservicepackmacros(AtLeastServicePack,IsServicePack,AtMostServicePack)toWinVer.nsh(patch#2036802)

F.25.1.2MinorChanges

AddedmorensDialogslistboxhandlingmacros(patch#2041919)AddedUnicodeversioncompatibleSystemstringtype(patch#2025721,RFE#1961307)FixednsDialogsatomleak(bug#2053522)MinordocumentationimprovementsShowhandcursorfornsDialogslinks(patch#2004129)

Previous|Contents|Next

Page 433: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 434: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.262.38ReleasedonJuly12th,2008

F.26.1Changelog

F.26.1.1MajorChanges

FixedabuginnsDialogsthatcausedittopollutethestackifcallbacksarenotsetforeachcontrol(bug#2013317)

F.26.1.2MinorChanges

AddedIfNotThensupportforLogicLib(patch#1990761)AddedsupportforNTFSmountspointsonthedirectorypage(bug#1946112)FixedbrandingimagecontroldetectiononDebian,duetoimproperidentificationofstaticcontrols(bug#1951417)Logactualcreationofdirectoriesandnotjustfailuresandfinaldirectory(patch#1992325)MadelogclosewhenLogSetoffisused(patch#1986692)Minordocumentationimprovements(includingbug#1990955)MultiUser:FixedMULTIUSER_INSTALLMODE_INSTDIRhandlingfortheuninstaller

F.26.1.3ModernUI

Documentpageleavecallbackfunction(bug#1964719)FixedMUI_FINISHPAGE_CANCEL_ENABLEDFixedwastedvariablewarnings(bug#1995024)

F.26.1.4Translations

FixedFrenchtranslationofMUI_UNTEXT_FINISH_INFO_REBOOT

Page 435: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

(patch#1967032)Removednon-ANSIcharactersfromFrenchdisplayname(bug#1979491)UpdatedSlovenian(patch#2014106)

Previous|Contents|Next

Page 436: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 437: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.272.37ReleasedonMay3rd,2008

F.27.1Changelog

F.27.1.1MajorChanges

Fixedabugintroducedin2.32thatcausedblurryiconsonWindowsversionspriortoXP(bug#1956350)Use$PROGRAMFILESasadefaultfor$PROGRAMFILES64insteadof"C:\ProgramFiles"(bug#1947702)

F.27.1.2MinorChanges

Automaticallyselectlanguageincasethereisonlyoneavailablechoice(bug#1939571)MultiUser:FixedbuilderrorswithmanualinclusionofStrFunc.nshSupportforcompressionoffilesupto2GB(patch#1948700)

F.27.1.3UtilitiesandPlug-ins

Fixed${NSD_OnBack}(bug#1947388)FixednsDialogs::SelectFileDialogreturnvalueforusercancelation(bug#1955803)FixedpossibleBgImagecrashwhencallingBgImage::Destroymorethanonce(patch#1951248)Minordocumentationimprovements

F.27.1.4Translation

BrazilianPortugueseupdatesPolishupdates(patch#1927421)Slovakupdates(patch#1939669)

Page 438: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Spanishupdates

F.27.1.5BuildSystem

SConsrequirementupgradedto0.98

Previous|Contents|Next

Page 439: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 440: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.282.36ReleasedonMarch29th,2008

F.28.1ReleaseNotes

nsDialogsispickingupitspaceandofferslotsofnewmacrosinthisrelease.Keepthepatchesandrequestscoming!

F.28.2Changelog

F.28.2.1MajorChanges

nsExec:Supportforx64disabledredirection(RFE#1778973,bug#1889317)

F.28.2.2ModernUI

AddedmissingMUI_UNFUNCTION_DESCRIPTION_BEGINandMUI_UNFUNCTION_DESCRIPTION_ENDFixedstartmenupagesettingtheerrorflag(bug#1891106)

F.28.2.3nsDialogs

NSD_AddStyleandNSD_AddExStyleforeasycustomization(patch#1900588)NSD_CB_AddString,NSD_CB_SelectString,NSD_LB_AddStringandNSD_LB_SelectStringforeasierhandlingofcomboandlistboxesNSD_CreateNumberandNSD_SetTextLimitforlimitedinputfieldsNSD_SetImage,NSD_SetStretchedImage,NSD_ClearImageandNSD_FreeImageforimagehandlingNSD_SetState,NSD_GetState,NSD_CheckandNSD_Uncheckforhandlingofcheckboxesandradiobuttons(patch#1900588)NSD_SetTextforeasilysettingcontrol'stext

Page 441: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

OnClicksupportforlabels(bug#1908732)Supportforeditboxchangenotificationincombobox

F.28.2.4MinorChanges

FixedexceptionhandlingofUPXcompressedicons(bug#1896500)FixedInstallDirRegKeyexampleinbigtest.nsiFixedMemento'sdocumentationtoinclude${MementoSectionDone}Fixedraredecompressionerrorwith0x4001bytesofcompresseddata(bug#1874297)LangFile.nsh:AddedLANGFILE_INCLUDE_WITHDEFAULTtoloadlanguagefilewithdefaultsbeingobtainedfromadefaultfile.ThisreplacestheLANGFILE_DEFAULTsettingandmakesiteasiertouseLangFile.nshformultiplesetsoflanguagesfilewithouthavingtocareaboutthedifferentLANGFILE_DEFAULTsettings.Minordocumentationimprovements(includingbug#1891266,bug#1894033,bug#1896803)MultiUser:FixederrorwhenacustominstallationmodeinitializationfunctionisusedonlyfortheinstallerMultiUser:Fixeddefaultinstallationmodebasedonregistrykey(bug#1913029)MultiUser:Fixednouninstallerhandling(MULTIUSER_NOUNINSTALL)

F.28.2.5UtilitiesandPlug-ins

MakeNSISW:Avoidopeningexecutableswithidenticalfoldernameswhenopeningscript'sfolder(bug#1891066)nsExec:Fixedreturncodehandlingso259won'tcauseaninfiniteloop(bug#1909458)VPatch:AddedMD5functions(RFE#1900226)

F.28.2.6Translation

Albanianupdates(patch#1919360)Frenchfixes(patch#1916564)

Page 442: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Polishupdates(patch#1894983)

F.28.2.7BuildSystem

FixedbuildofNSISMenuwithwxGTK(bug#1900233)UseCRLFforDSWandDSPfilestoavoidcorruptionmessagesVariousbuildfixesforGCC4.3,amd64andLinuxingeneral

Previous|Contents|Next

Page 443: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 444: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.292.35ReleasedonFebruary8th,2008

F.29.1Changelog

F.29.1.1MajorChanges

AddedMultiUser-installerconfigurationformulti-userWindowsenvironmentsMoreuserfriendlycorruptedinstallermessage(RFE#1795426)SwitchedallexamplestoModernUI2

F.29.1.2MinorChanges

Fixeduninitializedmemoryleakingintoresources(bug#1874297)Minordocumentationimprovements(includingbug#1861941,bug#1883917)ModernUI2:Fitimagesinwelcome/finishpagebydefaultandfixsupportforMUI_(UN)WELCOMEFINISHPAGE_BITMAP_NOSTRETCH(bug#1875945)ModernUI2:Fixeddefaultfinishpagerebootselection(bug#1864690)ModernUI2:FixedMUI_STARTMENU_GETFOLDER(bug#1864507)ModernUI2:Fixedunreferencedmui.StartMenuPage.Createwarning(bug#1861944)NewsimplifiedcodeforinstallationofVisualBasic6runtimeSimplifiedNSISMenuprovidingeasieraccesstoalldocumentation

F.29.1.3UtilitiesandPlug-ins

AddedkeyboardcuessupportforLINKcontrolsinnsDialogs(patch#1871856)

Page 445: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedararensDialogscrashonWindows98withnon-standardbuildsofnsDialogs(bug#1889720)

Previous|Contents|Next

Page 446: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 447: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.302.34ReleasedonDecember24th,2007

F.30.1ReleaseNotes

ThankstouserinputonModernUI2,itisnowreadyformassconsumptionatnobettertimethantheholidayseason.TheinstallerforNSISitselfnowexploitsthewondersofMUI2andnsDialogsandsoshouldyou.

F.30.2Changelog

F.30.2.1MajorChanges

ModernUI2:Simplercode,easiertoextendandmakesuseofthefasternsDialogs

F.30.2.2MinorChanges

AddedIfNotsupportforLogicLib(patch#1846785)AddedsomedeprecationmessagesinMUI2(bug#1784470)AllowoverwriteofLANGFILE_*_NAMEdefinesinnewLangFile.nsh(bug#1848952)BetterRTLsupportininstfilesandcomponentspage(bug#1841573)Don'twarnofcommentscontainingline-continuationcharacterwhenithasnoeffect(bug#1701051,RFE#1686589)Fixeddeletionoffileswithrelativepaths,a.k.atheEVEbug(bug#1851273)FixedinputverificationofGetCurInstTypeandGetFullPathNameFixedWordFindhandlingofMBCScharacters(bug#1852141)Minordocumentationimprovements(includingbug#1842326)UseCRLFinexamples(bug#1835866)

Page 448: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.30.2.3UtilitiesandPlug-ins

AddedmissingstackhandlinginnsDialogsexamplesAddedNSD_GetStateforcheckboxesandradiobuttons,NSD_SetFocus,NSD_CreatePasswordandNSD_CreateDropList(patch#1848940)FixeddocumentationofnsDialogs::SelectFolderDialog(bug#1841120)FixedNSD_CreateComboBoxsoit'dworklikeInstallOptions(bug#1851136)

F.30.2.4Translations

BulgarianupdatesGermanfixes

F.30.2.5BuildSystem

FixedbuildissuesonMacOS(bug#1851365)Fixedendianityissuesintroducedinversion2.32(bug#1851365)

Previous|Contents|Next

Page 449: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 450: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.312.33ReleasedonNovember17th,2007

F.31.1ReleaseNotes

Thisisaquickfixreleaseforabug,introducedin2.32,thatpreventedthewelcomepagetodisplayproperlyonWindows9x.TheproblemwascausedbythemovefromCVStoSubversionthatmessedwiththeline-breaksformatoftheINIfiles.

F.31.2Changelog

F.31.2.1MajorChanges

ModernUI:Fixedabug,introducedin2.32,thatcauseddisplayproblemsforthewelcomeandfinishpagesonWindows9x(bug#1831677)

F.31.2.2MinorChanges

ModernUI:AllowMUI_LANGDLL_ALLLANGUAGEStobedefinedafterinsertionofMUI_LANGUAGEmacro

F.31.2.3UtilitiesandPlug-ins

MadensExec'sinternalprocessalwaysexitcleanlytoavoidfalsereturnvaluesanddelays(reportedintheforum)nsDialogs:AddedOnClicksupportforstaticcontrolsVPatch:FixedVPatchFilemacropathhandling(bug#1829540)

F.31.2.4Translations

Spanishupdates

Page 451: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.31.2.5BuildSystem

Separatestripoptionsforwin32andcross-platformbinaries

Previous|Contents|Next

Page 452: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 453: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.322.32ReleasedonNovember9th,2007

F.32.1ReleaseNotes

VistaPNGiconsarenowsupportedwithouttheneedforanyspecialtricks.

F.32.2Changelog

F.32.2.1MajorChanges

AddedsupportformismatchinginstalleranduninstallericonsNSISsourcecodeisnowhostedonSubversioninsteadofCVS

F.32.2.2MinorChanges

Fixedsynchronizationthatcouldallowtheusertocauseextractionerrorsinrarecases(reportedintheforum)FixedsyntaxvalidationofVarMinordocumentationimprovements(includingbug#1811876,bug#1819946)ModernUI2beta:Fixed3-linetitleonwelcome/finishpageModernUI2beta:FixedcomponentspagedescriptionandlockModernUI2beta:FixeddefaultlanguageselectionfromregistryModernUI2beta:FixedMUI_DIRECTORYPAGE_BGCOLOR

F.32.2.3UtilitiesandPlug-ins

nsDialogs:Addedlinksupport

F.32.2.4Translations

Page 454: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

BulgariancorrectionsFixedJapaneseandNorwegianNynorskMUIlinebreaks(bug#1817289)

F.32.2.5BuildSystem

Checkcompiler's-m32flagbeforethelinker'stoavoidgccsegfault

Previous|Contents|Next

Page 455: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 456: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.332.31ReleasedonSeptember29th,2007

F.33.1ReleaseNotes

PleasecontinuetoreportanyissuesandsuggestionsregardingModernUI2.InputforthepreviousversionwasveryhelpfulinimprovingMUI2.

F.33.2Changelog

F.33.2.1MinorChanges

AddedBST_*definitionstoWinMessages.nsh(bug#1792422)AddedSetRegViewlastusedMinordocumentationimprovementsLibrarywillnowrevertregistryviewsettings(SetRegView)afterit'sfinishedModernUI:FixedemptywelcomepagewithChinese(bug#1786899)ModernUI:Fixedfinishbuttontext(bug#1789492)ModernUI:Fixeduninstallercomportmentspagetext(bug#1793811)ModernUI:FixedunusedfunctionwarningsModernUI2beta:Fixedheaderbitmapissues,includingNOSTRETCHandcompilationerrorsModernUI2beta:FixedlanguageselectiondialogModernUI2beta:FixedrebootfinishpageModernUI2beta:FixedunloadingofnsDialogsonfinishpageModernUI2beta:Fixedunusedvariablewarnings

F.33.2.2UtilitiesandPlug-ins

MakeNSISW:Fixedcommandlineparsingerror(bug#1796053)

Page 457: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.33.2.3Translations

KoreancorrectionsPersianimprovements(patch#1776386)Romanianimprovements(patch#1783853)

F.33.2.4BuildSystem

FixedbuildfailureswithMinGW'sGCC4(bug#1800834)

Previous|Contents|Next

Page 458: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 459: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.342.30ReleasedonAugust25th,2007

F.34.1ReleaseNotes

ThisreleaseincludesabetaofModernUI2.Pleasereportanyissuesandsuggestions.TheformatofModernUIlanguagefileshasbeenmodifiedtobettersupportexternalstrings.Privatelanguagefilesshouldbeconverted(andsubmittedasapatchinthespiritofopensource).

F.34.2Changelog

F.34.2.1MajorChanges

Fixedabugintroducedinversion2.29thatcausedinvalid$SMPROGRAMSvalueonWindows98(bug#1766268)ModernUI2beta:Simplercode,easiertoextendandmakesuseofnsDialogs

F.34.2.2MinorChanges

AddedInstallOptions.nshwithrelevantusagemacros,basedontheoldModernUImacrosAddedLangFile.nshallowingcreationoflangaugefilesthatcanbeincludedwithasinglecommandwithdefaultsformissingstrings(whenLANGFILE_DEFAULTisset)AddedLB_ERRandCB_ERRtoWinMessages.nsh(bug#1771644)FixedCreateDirectorylogging(patch#1768584)Fixedescapingofquoteswith$\inmacros(bug#1713708)MinordocumentationimprovementsModernUI1.80:NewlanguagefilesstructurebasedonLangFile.nshModernUI1.80:MUI_LANGDLL_DISPLAYnowreadsprevioussettingsonsilentinstallationsaswell

Page 460: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ModernUI1.80:AddedMUI_CUSTOMFUNCTION_MOUSEOVERSECTION(patch#1762003)

F.34.2.3UtilitiesandPlug-ins

VariousnsDialogsimprovementsincludingRTLsupport,moremacrosinnsDialogs.nshandinitialdocumentation

F.34.2.4Translations

CatalanreturnsDanishcorrectionsSlovakcorrections(patch#1762627)

F.34.2.5BuildSystem

MoreHPUXfixes(bug#1755148,bug#1753063,bug#1758873,patch#1758863)IgnoreknownfailingtestsbydefaultonPOSIX

Previous|Contents|Next

Page 461: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 462: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.352.29ReleasedonJuly14th,2007

F.35.1ReleaseNotes

ThemostnotableadditioninthisreleaseisnsDialogs-afasterandfarmorecapablereplacementforInstallOptions.ItallowscreatingcontrolsofanytypedirectlyfromthescriptandremovestheneedtomesswithslowINIfiles.Itintegratesdirectlyintothescriptbycallingfunctionsfornotification,includingchangenotificationforeditboxes.Speakupifyouhaveanysuggestions/comments/patchesforit.

F.35.2Changelog

F.35.2.1MajorChanges

AddednsDialogs-areplacementforInstallOptions

F.35.2.2MinorChanges

DisableWindowserrormessagesfortheentireinstallerandnotjustforanincompletelistoffail-points(bug#1741061)FixedincorrectlargeversionhandlingofGetFileVersion(bug#1742255,patch#1742562)FixedtheReverseSectionmacroinSections.nsh(bug#1742793)MinordocumentationimprovementsSimplifiedREG_MULTI_SZreaderUseSHGetFolderPathwhereavailabletobettersupportallusers'folders

F.35.2.3UtilitiesandPlug-ins

Banner:Avoidpossiblehangswhencalledfrompagecallbacks(bug#1743801)

Page 463: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

NSISdl:added/TRANSLATE2formore"translator-friendly"strings(patch#1656076)NSISdl:supportdownloadsover2gb(patch#1723131)

F.35.2.4Translations

AddedInternationalSpanish

F.35.2.5BuildSystem

AddedsupportforHPUX(patch#1714416)

Previous|Contents|Next

Page 464: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 465: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.362.28ReleasedonJune8th,2007

F.36.1Changelog

F.36.1.1MajorChanges

AddedaworkaroundforaWindows2000bugthatcausedinfiniteloopswhenhittingakeyontheinstfilespage(bug#1733692)

F.36.1.2MinorChanges

Improvedcompilererrorstrings(patch#1722147)ModernUI:addedMUI_STARTMENUPAGE_BGCOLORandMUI_DIRECTORYPAGE_BGCOLOR(patch#1706187)ModernUI:addedMUI_LANGDLL_ALLLANGUAGESthatforcesthelanguageselectiondialogtodisplayalllanguages(patch#1724876)

F.36.1.3UtilitiesandPlug-ins

InstallOptions:correcteddocumentationofTxtColor(bug#1716614)NSISdl:addedcompatibilitywithsomebuggyserversthatdon'tclosetheconnection(bug#1713562)NSISdl:fixed100%CPUusageduringdomainresolution(bug#1713560)

F.36.1.4Translations

ValencianandCatalanarenolongerinstalled(patch#1558822)

F.36.1.5BuildSystem

Page 466: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AddedIGNORETESTSforignoringcertaintestfilesAddedwxWidgetstotherequirementlistSystemnowbuildswithGCC,butwithoutSystem::GetandSystem::Call(patch#1711089)

Previous|Contents|Next

Page 467: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 468: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.372.27ReleasedonMay5th,2007

F.37.1ReleaseNotes

Thisisaquick-fixreleasethataddressesabugintroducedinthelastversion,2.26,thatcaused$PROGRAMFILESand$COMMONFILEStotranslateintorandomstringsintheuninstaller.

F.37.2Changelog

F.37.2.1MajorChanges

Fixedabugintroducedin2.26thatmade$PROGRAMFILESand$COMMONFILESunavailableintheuninstaller

F.37.2.2MinorChanges

DisabletheXbuttononInstallOptionspageswhenCancelEnabledis0FixedincompleteMessageBoxusageline(bug#1709460)

F.37.2.3BuildSystem

AddedTOOLSEToptiontoallowselectionofspecificbuildtools(e.g.sconsTOOLSET=mingw)

Previous|Contents|Next

Page 469: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 470: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.382.26ReleasedonApril27th,2007

F.38.1ReleaseNotes

Installationonx64systemsisnowfullysupportedwith$PROGRAMFILES64,SetRegViewandLibrary'sLIBRARY_X64option.

F.38.2Changelog

F.38.2.1MajorChanges

AddedLIBRARY_X64optionforInstallLibandUnInstallLibforinstallinganduninstallingx64librariesAdded$PROGRAMFILES32,$PROGRAMFILES64,$COMMONFILES32and$COMMONFILES64

F.38.2.2MinorChanges

Added$EXEPATHand$EXEFILEAdded$(^Language)languagestringwhichholdsthelanguagename(RFE#1235616)AddedLIBRARY_IGNORE_VERSIONoptionforInstallLib(patch#1699435)AddedVXDsupportforGetDLLVersionLocalonWindowsNT4/2000/XP/Vista(patch#1706624)AvoidLibrarywarningwhenUnInstallLibisunused(bug#1692761)FixederrorhandlingofCopyFilesonWindowsNT4(bug#774966)Fixedfontnameencodingbrokensince2.24FixedLogicLibduplicatelabelsacrossincludedfilesFixedpreservationoffolderattributeswithFile/a(bug#1699474)Improvedunusedvariablewarning(bug#1701050)LibrarymacrosnolongerrequireversioninformationforDLLfileson

Page 471: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

POSIXMinordocumentationimprovements(includingRFE#971467)ModernUI:addedMUI_FINISHPAGE_CANCEL_ENABLEDModernUI:addedMUI_FINISHPAGE_REBOOTLATER_DEFAULT(RFE#1143843)ModernUI:blockunsupportedlanguagesinthelanguageselectiondialog(RFE#1564986)ModernUI:disableCancelbuttononthefinishpage(bug#1267491)ModernUI:reduceflickercausedbyMUI_HEADER_TRANSPARENT_TEXT(patch#1696610)SupportQuitinshowpagefunctions

F.38.2.3New/ChangedCommands

AddedSetRegViewtoallowaccesstothex64registryviewInstallericonsupportforMessageBoxusingMB_USERICON(patch#1682748,RFE#1530388)

F.38.2.4UtilitiesandPlug-ins

InstallOptions2.47:linebreakssupportinLinkcontrols(patch#1683186,RFE#1495949),addedHLineandVLinecontrols(patch#1683189)MakeNSISW:fixedbrokencommandlineparameterhandlingintroducedinthelastversion(bug#1696534)UserInfo:returneffectiveusergrouponVista,addedGetOriginalAccountType(patch#1687456,bug#1684777)

F.38.2.5Translations

AddedAfrikaanstranslation(patch#1699558)Frenchcorrections(patch#1676101)Germancorrections

F.38.2.6BuildSystem

Page 472: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AddedSKIPTESTSoptionAvoidalotofcodewarnings(bug#1676243)DetectwxWidgetsinsteadofassumingitsexistenceonPOSIX(bug#1672315)Fixedbig-endianplatformsupportbrokensince2.24

Previous|Contents|Next

Page 473: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 474: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.392.25ReleasedonMarch31st,2007

F.39.1Changelog

F.39.1.1MajorChanges

AddedMemento.nshforeasypersistencyofuserselectionsacrossdifferentrunsoftheinstaller(RFE#1677624)Fixedabugintroducedin2.24thatallowedthelicensepagetobeskippedevenwithagreementcheckboxorradiobuttons(bug#1664428)

F.39.1.2MinorChanges

AddedVistamanifesttoStartMenu.nsiexampletoavoidbackwardcompatibilitymodethatmovesshortcuts(bug#1664957)Bothdashesandslashesaresupportedasswitchprefixesonmakensis.exe(bug#1661503)Deleteuninstallertemporarydirectoryonreboot(patch#1660626)DistributePlug-inexamplewiththeNSISpackageandnotonlywiththesourcecodeFixedlossyUnicodeconversionofdialogtemplatestrings(bug#1662190)FixedSections.nshmacrossupportfor$0asinput(bug#1664648)Fixeduninstallerssupportforthe/D=commandlineswitchImprovedloggingofWriteRegcommandsMinordocumentationupdatesandfixes(includingpatch#1662419)

F.39.1.3New/ChangedCommands

Addedbitwiseoperatorssupportfor!define/math(RFE#1669513)__PAGEEX__containsthepagetype(patch#1644712)

Page 475: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.39.1.4UtilitiesandPlug-ins

InstallOptions2.46:Useinstaller'snameformessageboxes(bug#1661677)MakeNSISW:UseEscapebuttontoclose(RFE#1666501)Math:Removedmathcrt.libStartMenu:Refuseemptypaths(bug#1684751)

F.39.1.5Translations

FixedGalicianlanguagefiles(bug#1663795)

F.39.1.6BuildSystem

AddedAPPEND_LIBPATHandAPPEND_CPPATHinsteadofthemalfunctioningCPPPATHandLIBPATHAddedChangeLogtosourcecodepackage(patch#1680508)AvoidsomewarningsonVS2005(patch#1667950)FixedlzmatestsegfaultonPOSIX(bug#1666873)Morestrict-aliasingcompatibility(bug#1635841)NSISMenufinallybuiltfromsource

Previous|Contents|Next

Page 476: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 477: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.402.24ReleasedonFebruary17th,2007

F.40.1Changelog

F.40.1.1MajorChanges

Libraryuninstall-reinstall-rebootproblemsworkaround(bug#1097642)MinimizednumberofcaseswhereanerrormessageappearsinsilentmodeNewcompilerpredefinesforcodescope(patch#1644712)

F.40.1.2MinorChanges

Added/Pcommandlineoptionforsettingprocesspriorityofmakensis(patch#1638974)Addedsupportfor64-bitPEonPOSIXtoGetDLLVersionLocal(patch#1643633)AppendlastpartofInstallDironlyto$INSTDIRondirectorypages(bug#1174184)AvoidpermissionschangeofoutputfilesforLineFindandFileJoin(bug#1631773)Fixederroneouswarningsonuninstallsections(bug#1631889)FixedlossyUnicodeconversioninresourceeditor(bug#1083492)IgnoreinvalidpreprocessorcommandsinignoredblockorcommentsMadeVIAddVersionKeyonlyquerylanguagetablesinsteadofcreatingthemandgeneratingwarnings(bug#1626504)Minordocumentationupdatesandfixes(includingbug#1642107,patch#1649187)Warnwhencontinuingacommentlineusingbackslash(bug#1554178)

Page 478: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.40.1.3New/ChangedCommands

RegDLLandUnregDLLnowuseLOAD_WITH_ALTERED_SEARCH_PATH,sothere'snoneedtouseSetOutPathtosettheworkingdirectory(bug#1638191)

F.40.1.4UtilitiesandPlug-ins

InstallOptions2.45:AddedFOCUSflag(patch#1634704)andfixedpastewithONLY_NUMBERSflag(bug#1652075)MakeNSISW:settingsinHKCUinsteadofHKLM(bug#1411970)andMRUmenuaccelerators

F.40.1.5Translations

AddedGaliciantranslation(patch#1631765)

F.40.1.6BuildSystem

Addedaworkaroundforbuildingonx64POSIXplatforms(bug#1646170)Addedaworkaroundforstrict-aliasingcompatibility(bug#1635841)AddedcompressiontestsAddedSTRIP,APPEND_CCFLAGSandAPPEND_LINKFLAGSbuildoptionsFixedSCons0.96.94compatibility

Previous|Contents|Next

Page 479: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 480: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.412.23ReleasedonJanuary13th,2007

F.41.1Changelog

F.41.1.1MinorChanges

FixedcompilercrashonMacOSX(patch#1611866)FixeddeletionofstartmenuiconsinNSISinstalleronVista(bug#1611251)

F.41.1.2UtilitiesandPlug-ins

FixedincorrectnsExecmessagehandlinginsilentmode(bug#1605581)FixedSystemcrashwhenSystem::Storeiscalledonanemptyprivatestack(bug#1620178)FixedSystemcrashwithparenthesisinfilename(bug#1616267)MinorVPatchdocumentationenhancements(patch#1624292)

F.41.1.3BuildSystem

Fixedbuildfailuresonmingw32(bug#1610773)FixedbuildproblemswithMSTOOLKIT=yes

Previous|Contents|Next

Page 481: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 482: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.422.22ReleasedonNovember27th,2006

F.42.1ReleaseNotes

Somechangeshavebeenmadetothecreditandlicensefilesinordertoavoidcopyrightsandlicenserelatedconfusions.ThisdoesnotchangeinanywayhowNSISshouldorcouldbeused.NSISitselfisstilllicensedwiththepermissiveBSD-likezliblicense.UpgradeisrecommendedforearlyadoptersofWinVer.nsh,duetoabuginWindows98andMEdetection.

F.42.2Changelog

F.42.2.1MinorChanges

Fixedcontextmenunotdisappearingwhenmovingfrominstfilespage(bug#1115825)FixedWinVer.nsh'sdetectionofWindows98andME(reportedontheforum)FixedWriteUninstallerfailuretooverwriteread-onlyuninstallers(bug#1542530)LicensedlzmaunderCPLwithaspecialexception,insteadofLGPLMinordocumentationupdatesandfixes(includingbug#1584618,bug#1589877)UpdatedcommentsinMUIexamples(bug#1595500)

F.42.2.2New/ChangedCommands

Added`highest`optionforRequestExecutionLevel

F.42.2.3Translations

AddedUzbektranslation

Page 483: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedcorruptioninLithuanian(bug#1602673)MinorBretonfixesSloveniancorrections(patch#1590108)

F.42.2.4BuildSystem

AddedMicrosoftVisualC++2005ExpresssupportSConsrequirementupgradedto0.96.93

Previous|Contents|Next

Page 484: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 485: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.432.21ReleasedonOctober20th,2006

F.43.1Changelog

F.43.1.1MajorChanges

AddedWinVer.nshforeasyWindowsversioncomparisonsUpgradedtolzmasdk4.43forfastercompression

F.43.1.2MinorChanges

AddedVistasupporttoGetWindowsVersionAddedx64.nshincludingafewsimplemacrosforhandlingx64installationsFixedahandleleakinLocateMinordocumentationupdatesandfixesModernUI1.76:AddedMUI_ABORTWARNING_CANCEL_DEFAULT(RFE#1547844)

F.43.1.3New/ChangedCommands

AddedRequestExecutionLevel(RFE#1524709)

F.43.1.4Translations

AddedValenciantranslation(patch#1558822)BulgariancorrectionsSloveniancorrections

F.43.1.5BuildSystem

Page 486: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

SConsrequirementupgradedto0.96.92

Previous|Contents|Next

Page 487: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 488: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.442.20ReleasedonSeptember9th,2006

F.44.1Changelog

F.44.1.1MinorChanges

BetterLogicLiberrors(bug#1537976)Fixedincompleteplug-incallerrormessages(bug#1535995)Fixedincorrectfiletimestampqueryingonbig-endianplatforms(bug#1536377)Minordocumentationupdatesandfixes

F.44.1.2Translations

Danishcorrections(bug#1548190)FixedincorrectlyencodedTurkishtranslation(bug#1542765)FrenchcorrectionsItaliancorrections(bug#1546183)SpanishcorrectionsSwedishcorrections(bug#1542680)Ukrainiancorrections

F.44.1.3BuildSystem

FixedNSIS_CONFIG_CONST_DATA_PATHbeingignoredonPOSIXplatforms(bug#1515592)

Previous|Contents|Next

Page 489: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 490: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.452.19ReleasedonAugust6th,2006

F.45.1Changelog

F.45.1.1MinorChanges

Fixed!systemand!packhdrfailurewithquotedlongfilenames(bug#1509909)Fixedbuildproblemson64bitplatforms(bug#1504772)Fixednegativetotalsizefordatalargerthan2GBinscriptcompilationsummary(bug#1468852)MinordocumentationupdatesandfixesReplacedIsDotNETInstalledwithasimplerandbetterversion

F.45.1.2New/ChangedCommands

Made!ifcomparestringscaseinsensitively,likeStrCmpand!ifdef

F.45.1.3Plug-ins

NSISdl:fixedrandomDNSerrors(reportedintheforums)System:fixedabugthatcausedstackcorruptionandstoppedtheinstallerfromdeletingSystem.dllwhenafunctionwithnoargumentswascalled(bug#1535005)System:fixedwrongreturnvaluesforfunctionsthatreturnshortorchar(bug#1535007)

F.45.1.4Translations

AddedNorwegianNynorsktranslation(patch#1503208)FixedtyposintheFrenchtranslation(bug#1531874)

Page 491: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 492: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 493: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.462.18ReleasedonJuly1st,2006

F.46.1Changelog

F.46.1.1MinorChanges

CRC32implementationusedpotentiallynon-32bittypes(bug#1504758)FixederrorsonmultipleinclusionofusefulheadersFixedGetFileAttributesFixedincorrecttextonbrowsedialogwith.onVerifyInstDir(bug#1504297)FixedLibrary'simplementationonPOSIXMinordocumentationupdatesandfixes

F.46.1.2Translations

AddedIrishtranslation(patch#1503639)Catalancorrections(bug#1504104)DutchcorrectionsFinnishcorrections(Mozillabug#341643)FixedSerbiangrammarandtyposItaliancorrections(Mozillabug#340450)Polishcorrections(Mozillabug#224532)Portuguese(Brazil)corrections(Mozillabug#340885)Romaniancorrections(Mozillabug#340645)ThaicorrectionsTurkishcorrections(Mozillabug#340511)

Previous|Contents|Next

Page 494: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 495: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.472.17ReleasedonMay19th,2006

F.47.1Changelog

F.47.1.1MinorChanges

FixedbuildfailuresandsegfaultsonPowerPCMacOSX(bug#1474597,bug#1481044)FixedLibrary'sTLBversioninterpretation(bug#1471341)FixedpossiblestackcorruptionwhenusingTypeLib.dllonaninvalidTLBFixedRMDirdeletionfailureofread-onlyfolders(bug#1481664)MakeNSISW:Fixedtoolbarcompressorselectionmenu,brokeninthepreviousversion(bug#1466486)Minordocumentationimprovementsandfixes(includingbug#1469306,bug#1491616)

F.47.1.2Translations

AddedmissingBasqueandWelshfiles(bug#1469471)BrazilianPortugueseupdatesBulgarianfixesFixedatypoinHebrewtranslation(bug#1474587)Icelandicfixesandimprovements

Previous|Contents|Next

Page 496: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 497: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.482.16ReleasedonApril7th,2006

F.48.1ReleaseNotes

Thescriptcompiler,makensis,buildsandworksonbig-endianplatforms.ThischangeenlargestheportabilityrangeofNSIStotheoreticallyeveryPOSIXplatform.Pleasereportanyincompatibilitywithspecificplatformsorbuild-tools.Theinternalchangesmadetosupportbig-endianplatformsalsopavetheroadtox64installers.Thereisnowacentralfunctionwhichwritesdatatodisk.Thisfunctioncurrentlyonlyconvertstheendianityofintegers,butitcanbechangedtoselectivelywrite64-bitintegers.Hopefully,there'llsoonbeasimplemethodofcompilingascripttobothx86andx64installers.ChangingSource/exehead/fileform.htoaltertheinternalstructureofinstallersisnolongerenough.ThecompilerhasitsowndefinitionsofthestructureswhichmustalsobechangedinSource/fileform.cpp.Inthefuture,fileform.cppshouldbeautomaticallygeneratedfromfileform.h,butfornow,thesynchronizationmustbedonemanually.

F.48.2Changelog

F.48.2.1MajorChanges

Big-endianplatformsarenowfullysupportedbymakensisLibrarynowavailableonnon-Windowsplatformsaswell,althoughitrequirestheinstalledDLLtohaveversioninformationMakeNSISW2.1:added"Cancelcompilation"menuitem

F.48.2.2New/ChangedCommands

Added/utcdateswitchto!defineforUTCdates(RFE#1459210)

Page 498: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.48.2.3MinorChanges

Addedanoptionaltimestampinthelog-NSIS_CONFIG_LOG_TIMESTAMPbuildsetting(RFE#1460586)AddedNSIS_WIN32_MAKENSISdefine,definedonlywhencompilingonWindowsExportedvalidate_filenametoplug-insFixedacrashinCResourceEditorwhenaddingresourcestoaPEthatalreadycontainsnamedresourcesFixedasmallresourceleakintheTypeLib::GetLibVersionplug-infunctionFixedCResourceEditorinputsanitychecksFixedincorrectFileOpeninputvalidation(bug#1459789)FixedLibraryfailurewithDLLsmarkedasread-onlyFixedlzma'sPOSIXimplementionthreadsynchronizationissuesandresourceleaksFixedmakensisself-pathdetectiononnon-Windowsplatforms(NSIS_CONFIG_CONST_DATA_PATH=no)Fixedreplace_iconandgenerate_uninstall_icon_dataiconvalidationMadeexternalCHMlinkssafertoscriptexceptions(bug#1449879)Minordocumentationimprovementsandfixes(includingbug#1077439,bug#1448374,RFE#1464446)ModernUI1.75:addedshowfunctionforthestartmenupage(RFE#1448176),addedMUI_HEADER_TRANSPARENT_TEXTfortransparentheadertexts(RFE#1447766)NSISdl:betterheaderdetectionforbettercompatibilitywithproxieslikeWinProxy(bug#1445735),failifnoheadersaresent,fasterdownloads(patch#1465378)StartMenu:validateuserinput(bug#1440636)

F.48.2.4Translations

AddedBasquetranslationMinorSlovenianfixes

F.48.2.5BuildSystem

Page 499: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AddedcodetestsforCResourceEditorandCDialogTemplateAutomaticallypassbuildsettingstoscript,eliminatingtheneedtoeditbuild.cppfornewsettingsFixed$PREFIXexpansionduringinstallationonPOSIXplatforms(bug#1456943)FixedCHMdependenciesFixedcompatibilityissuewithEclipseNSIS(versionwasn'tprefixedwith'v')FixedGCC4.1compatibility(patch#1456861)Testfor-Wl,-Mapavailability

Previous|Contents|Next

Page 500: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 501: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.492.15ReleasedonMarch4th,2006

F.49.1Changelog

F.49.1.1New/ChangedCommands

Added!ifformorecomplexcompile-timeflowcontrol(patch#1412982)Added/mathswitchto!defineforsimplecompile-timemathematicaloperations(patch#1372561)

F.49.1.2MinorChanges

AddedmorereplacementoptionstoWordReplaceAddedNSIS_CONFIG_LOG_STDOUTconfigurationoptionforloggingtostdoutAddedpathtranslationfor!addincludedir(bug#1431958)ConfigReadnowsetstheerrorflag,iftheentrywasn'tfoundDocumentedNopEditboxintheinstallationdirectoryselectionpageisnowalwaysLTR,evenforRTLlanguagesFixedimproperiteratorusageindir_reader(bug#1431593)FixedMessageBoxMB_TOPMOSTnotshowingup,ifusedasthefirstsections'instruction(bug#1400995)FixedRMDirskippingfileswithnamesstartingwithtwodots(bug#1420657)GetOptionsnowsetstheerrorflag,iftheoptionwasn'tfoundMade!includestopsearchingtheincludedirectoriesafteramatchisfound(bug#1441877)Madeheaderfunctionsuse/NOUNLOADforfasterplug-incallsMinordocumentationimprovementsandfixes(includingbug#1420352,bug#1432423)MoreinformativeIconerrormessages(bug#1174742)

Page 502: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Newcase-sensitivefunctionsinheaders:WordFindS,WordFind2XS,WordFind3XS,WordReplaceS,WordAddS,WordInsertS,StrFilterS,TextCompareS,ConfigReadS,ConfigWriteS,GetOptionsS

F.49.1.3Translations

AddedproperlanguageidentifierforBretonBretontranslationimprovementsBulgariantranslationimprovementsFixedCzechgrammarmistakes(patch#1427189)FixedItaliantypo(patch#1416988)UpdatedMongolian

F.49.1.4BuildSystem

Fixed__BIG_ENDIAN__definitionFixedimproperhandlingofpathspassedtothecompiler(bug#1434215)ImprovedGCC4.2compatibility(patch#1434174)MovedNSIS_VARS_SECTIONfromconfig.htosconsWriteallconfigurationtosconf.hinsteadofpassingitonthecommandline

Previous|Contents|Next

Page 503: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 504: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.502.14ReleasedonJanuary24th,2006

F.50.1ReleaseNotes

Thisreleasefixesacriticalbugthatcausedinstallersusingplug-instofailloadingonWindows9xandNT.Upgradingfrom2.13ishighlyrecommended.

F.50.2Changelog

F.50.2.1MajorChanges

Fixedabugthatcorrupted$TEMPunderWindows9xandNTandcausedInitPluginsDirtofail(bug#1412159)

F.50.2.2MinorChanges

Fixedapossiblebufferoverflowcausedbylongvaluesof$0,whenusinglargeNSIS_MAX_STRLENbuilds(above4096)

Previous|Contents|Next

Page 505: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 506: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.512.13ReleasedonJanuary21st,2006

F.51.1ReleaseNotes

Languagedetectionhaschanged.Thedefaultlanguageisnowsettotheuser'suser-interfacelanguageinsteadofthelocalelanguage,assuggestedbyMSDN.Torestoretheoldbehavior,useSystem::Call"kernel32::GetUserDefaultLangID()i.a"in.onInit.

F.51.2Changelog

F.51.2.1MajorChanges

Default$LANGUAGEvalueisnowbasedonuser'sUIlanguageinsteadoflocale(bug#1324734)

F.51.2.2New/ChangedCommands

AddedStrCmpSforcasesensitivestringcomparison(patch#1381929)

F.51.2.3MinorChanges

AddedsystemtimesupporttoGetTimeFixedcomponentspagecheckboxredrawproblemunderWindows95(bug#1397031)FixedconstantmaximumstringlengthinFileRead(changedfrom1024toNSIS_MAX_STRLEN)Fixedempty$INSTDIRvalueindirectorypageshowcallbackfunction(bug#1209843)FixedrelativejumpsignoringFile/nonfatal(bug#1299100)FixedtypoinNSISMenu(bug#1387748)IssueawarningwhenBrandingText/TRIM*actuallyexpandsthe

Page 507: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

label(bug#1362443)MadeRMDir/rremoveUnicodepathsaswellusingshortnames(bug#1378785)Minordocumentationimprovementsandfixes

F.51.2.4UtilitiesandPlug-ins

FixedSystemplug-indocumentationofcallbackfunctions(bug#1403608)FixedSystemplug-inheapcorruption(bug#1403601)

F.51.2.5Translations

Mongoliantranslationimprovements

F.51.2.6BuildSystem

BetterinstallationunderPOSIXwithproper${NSISDIR}detectionandappropriatedirectorypaths(/usr/bin,/usr/share/doc,etc.)

Previous|Contents|Next

Page 508: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 509: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.522.12ReleasedonDecember17th,2005

F.52.1Changelog

F.52.1.1MajorChanges

Fixedcompile-timeassertionfailureforbiguninstallers(bug#1380447)Tutorialenhancements(includingbug#1366431)

F.52.1.2New/ChangedCommands

Added/NONFATALswitchto!include(patch#1372048)

F.52.1.3MinorChanges

Clearererrormessagefordoublelabeldefinition(patch#1374675)Fixedbrowsednetworkrootdirectorynotbeingaccepted(bug#1331292)FixedincorrectCompletedTextparsing(bug#1349810)Fixedsdbarker_tiny.exe'scompatibilitywithNSIS_CONFIG_LOG(bug#1365869)Implementednicerregistrycommandslog(patch#1340255)Minordocumentationimprovementsandfixes(includingpatch#1355653,bug#1349810)Multi-linecommentsarenolongerignoredinside!ifdef'dblock

F.52.1.4UtilitiesandPlug-ins

Addeddrag&dropsupportforzip2exeBetterdrag&droperrorhandlinginMakeNSISwFixedMathplug-inarrayissues(bug#1235875)

Page 510: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.52.1.5Translations

AddedbrowsebuttonDanishtranslationBretontranslationfixesandimprovementsFixedfinishbuttonSwedishtranslation

F.52.1.6BuildSystem

FixedendianessdetectionproblemonPOSIXplatforms(bug#1370179)Generatedinstallersusensis-VERSION-setup.exetemplate

Previous|Contents|Next

Page 511: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 512: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.532.11ReleasedonNovember12th,2005

F.53.1ReleaseNotes

RebuildingexistinginstallersthatuseSetOverwriteifdiff,mightfalselyoverwritefilesonce

F.53.2Changelog

F.53.2.1MajorChanges

Addedaworkaroundforabugthatpreventeddetectionofsomespecialfolders(e.g.$DESKTOPforallusers)onWindows9x(bug#1008632)Fixedacrashcausedbycopyingverylongdetailstoclipboardintheinstallationlogpage(bug#1314004)

F.53.2.2New/ChangedCommands

Added!tempfile,!delfileand!appendfileforcross-platformhandlingoftextfilesduringcompilationFixedChangeUIinputhandling(patch#1348473)SectionInROisnolongercasesensitive

F.53.2.3MinorChanges

AddedsupportURLtotheNSISpackageentryintheAdd/Removecontrolpanel(RFE#1349867)Fixedcommenthandling(patch#1324898)FixedduplicateRegTooltestinLibraryFixedinvalidlanguageselectionaccordingto$LANGUAGEin.onInitwhenonlyprimarylanguagematchisfound(bug#1328629)FixedmissingRegToolerrorafterinstall-reboot-install-reboot

Page 513: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

sequencewithLibraryFixedportabilityissueswithLogicLib(bug#1320297,patch#1248336)FixedSetOverwriteifdiffalwaysoverwritingonFATfilesystem(bug#1338423)Fixedwrongsizeofred.bmpcheckboximageLargerbrowsebuttonforlocalizedtexts(bug#1314682)Minordocumentationimprovementsandfixes(includingbug#1349810)SortlanguagenamesinlanguageselectiondialogUsethetemporarydirectoryforLibrarytemporaryfiles,insteadofthepossiblywrite-protectedinstallationdirectory

F.53.2.4UtilitiesandPlug-ins

Added/OEMswitchforOEMtoANSIconversioninnsExec(patch#1346737)Added/PROXYswitchformanualproxyconfigurationinNSISdl(patch#1334166)Addedsolidcompressioncheckboxtozip2exe(patch#1334155)AddedstdininMakeNSISwtoallowxcopytorunAddedtimestamphandlingtozip2exe(bug#1349853)FixedinputvalidationofnsExecInstallOptions2.44:AddedHWNDandHWND2entriestotheINIfiletoavoidmessycalculationsofthecorrectcontrolid

F.53.2.5Translations

Sloveniantranslationfixesandimprovements

F.53.2.6BuildSystem

AddedaworkaroundforlinkingerrorscausedbyabadlibraryincludedinrecentPlatformSDKversionsCheckforanduse-pthreadlinkerflagImprovedFreeBSDportability

Page 514: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

NicererrormessageforSConsversionolderthan0.96.90

Previous|Contents|Next

Page 515: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 516: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.542.10ReleasedonOctober4th,2005

F.54.1Changelog

F.54.1.1MajorChanges

AddedautocompletiontothedirectorypageFixedabug,introducedin2.09,thatcausedAllowRootDirInstalltofailFixedathreadleakinthePOSIXimplementationofLZMAVPatch3.1:MD5checksums,betterperformance,andsomebugfixes(includingbug#1219806)

F.54.1.2MinorChanges

Addedroundingofrequiredandavailablesizeonthedirectorypage(1.59=>1.6insteadof1.5)AddedWS_EX_LEFTSCROLLBARstyleinRTLmode(bug#1283528)FixedalterationoftheworkingdirectorybyFileRequestinInstallOptions(bug#1287731)FixedbadmnemonickeyinMakeNSISwmenu(bug#1288159)FixednegativesizevaluesshowingupafterthedecimalpointinthedirectorypageforverybigsizesMinordocumentationimprovementsandfixesModernUI1.74:Fixedcompileerrorwhencheckboxesareusedonmultiplefinishpages

F.54.1.3Translations

FixedabuginSloveniantranslationthatcausedlotsofmissinglanguagestringwarningsFixedtyposinSerbiantranslation

Page 517: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedtyposinThaitranslationUpdatedSimpleChinesetranslation

F.54.1.4BuildSystem

AutomaticfixforVC6SP6compileerrorMovedmostoftheconfigurationfromconfig.htothebuildsystemRemovedalloptimizationsandsymbolstrippingindebugmodeSConsrequirementupdatedto0.96.91VPatchcanbebuiltonPOSIXaswell

Previous|Contents|Next

Page 518: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 519: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.552.09ReleasedonAugust26th,2005

F.55.1Changelog

F.55.1.1MajorChanges

Fixedabugintroducedin2.08,thatpreventeduninstallersfromdeleting$INSTDIRFixedabugthatcaused"C:\"tobeconsideredavalidinstallationdirectory,evenwithoutAllowRootDirInstall

F.55.1.2New/ChangedCommands

Varcannowbeusedinsectionsandfunctions,butonlywiththe/GLOBALflag

F.55.1.3MinorChanges

Appliedpatch#1248335forgreaterportabilityofexamplesFileFunc:workaroundforGetLongPathNamewhichisnotavailableonWindows95(Instructor)FixedanunusedlabelwarninginLibraryFixedduplicatelabelerrorsinLogicLibandLibrarywhenusedindifferentfiles(bug#1243865)ModernUI1.73:fixedcheckboxesonuninstallerfinishpageormultiplefinishpagesWordFunc:fixedincorrectreplacementoffirstwordinWordReplace,undersomeconditions(Instructor)

F.55.1.4Translations

RenamedMalaysiantoMalay

Page 520: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

UpdateThaitranslationtothelatestversionUpdatedKurdishMUItranslationtothelatestversion

F.55.1.5BuildSystem

FixedanumberofbuildproblemsonPOSIXplatformswhichcausedplug-instomalfunctionandinstallerstocrash

Previous|Contents|Next

Page 521: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 522: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.562.08ReleasedonJuly23rd,2005

F.56.1ReleaseNotes

TheArchivehasbeenreplacedwithaWiki.ThenewWikiallowseveryonetoeditallpagessothere'snolongerneedtohuntfortheoriginalauthor.Italsoallowseveryonetouploadplug-insandnotjustadministrators.Andasifthat'snotenough,itlooksbetterandprovideseasierandmorefeature-richsyntax.

F.56.2Changelog

F.56.2.1MajorChanges

AddedInstructor'sheaderfilesofusefulfunctionsLibraryimprovements:orderedregistrationafterreboot,smallerRegToolandseparateprocessforeachregistrationtoavoidconflicts(thanksstb)

F.56.2.2MinorChanges

AddedBosnianandKurdishtranslationsAddedper-usernsisconf.nshfilein%APPDATA%or$HOME,dependingontheplatform(patch#1223041)Documentationimprovementsandfixes(includingbug#1202495,bug#1227610,bug#1238686,patch#1225167,RFE#1240601)Fixed_?=beingignored,iftheuninstallerpathisnotquotedandisseparatedwithonlyspacefrom_?=FixedLibraryfailingonpathswithspaces(bug#1234283)FixedUpgradeDLLcompilationerror(bug#1230336)ImprovedFrench,UkrainianandLuxembourgishtranslationMadeRMDirsettheerrorflag,ifpassedaninvaliddirectorypath(bug#1227553)

Page 523: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

MadeuninstallerscopythemselvesintoasubdirectoryofthetemporarydirectorytoavoidDLLsleftinthetemporarydirectoryfrombeingloadedbytheuninstaller(patch#1214319)MissingLangStringwarningnowusesthelanguagename,ifpossiblezip2exe:fixedrestrictionofextractionpathlengthandupdatedtozlib1.2.3(bug#1226381)

F.56.2.3BuildSystem

AddedlinkerscripttoassurecorrectorderofsectionswhenbuildingusingGNUtoolsAddedtesttargetUIsarenowbuiltfromsource

Previous|Contents|Next

Page 524: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 525: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.572.07ReleasedonJune20th,2005

F.57.1ReleaseNotes

NSISUpdatewasremovedandtheupdatecheckwasmovedbacktoMakeNSISw(Help->NSISUpdate).UsethenightlybuildstogetthelatestcompiledbinariesfromCVS.Solidcompressionisnolongerthedefaultforbzip2andlzma,useSetCompressor/SOLIDbzip2orSetCompressor/SOLIDlzmaforsolidcompression.Sourcecodeisnolongersuppliedwiththeinstallerpackage.SourcecodecanbedownloadedfromCVSorfromthedownloadpage.Thedirectorystructureoftheinstallationhasbeenchanged.AlldocumentationisnowintheDocsfolderandallexamplesareintheExamplesfolder.

F.57.2Changelog

F.57.2.1MajorChanges

Added/SOLIDswitchforSetCompressorNewbuildsystem(seeappendixG)Stubs(exeheads)arenolongercompiledintomakensis.exe,butkeptintheStubsfolder

F.57.2.2New/ChangedCommands

EnumRegValuesetstheerrorflag,iftheenumerationindexisoutofrange(bug#1178756)ExpandEnvStringsnowsetstheerrorflagasthedocumentationstatesMadeFile/onamethrowanerrorifthefirstcharacterisaquote

Page 526: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.57.2.3MinorChanges

Added$LOCALAPPDATA(RFE#1172123)ChangedMUIdialogscharsetfromANSI_CHARSETtoDEFAULT_CHARSET(bug#1193736,bug#1201712)Fixed$INSTDIRchanging,evenifuserclickedCancelinbrowsedialogFixedacrashinmakensiswhenusingWindowIconoff(bug#1123353)FixedCall:labelinuninstallcodeFixedcompilationerrorwithoutNSIS_CONFIG_COMPONENTPAGEFixedcompilationerrorsonvariousplatforms(includingpatch#1179116,patch#1193692)FixedCreateDirectorysettingtheerrorflagfordirectorieswithtwoconsecutivebackslashes(bug#1119442)FixedInstallLibsettingtheerrorflagfornewsharedlibraries(bug#1181951)Fixedletterscaseinexamples(patch#1184571)Fixedloggingstatebeingresetafterthedirectorypage(bug#1168711)Fixedoverlappingiconinwelcomepage(bug#1221772)FixedRMDir/REBOOTOKsettingtherebootflagwhentryingtodeletenon-existentdirectory(bug#1073792)Minordocumentationfixesandimprovements(includingbug#1220940)RemovedNSISUpdate,MakeNSISwchecksfornewversionsagain

F.57.2.4IncludeFiles

MoremessagesinWinMessages.nsh(ShengaltsAleksander)SomemoreusefulmacrosinColors.nsh(Joel)

F.57.2.5UtilitiesandPlug-ins

FixedhalibutsegfaultsonPowerPC(patch#1180886)Math:Fixedmemoryleak(brainsucker)zip2exe:upgradedtozlib1.2.2

Page 527: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.57.2.6Translations

AddedMalaysiantranslation(Azwa)AddedWelshtranslation(RhoslynPrys)FixedBretonNLFfile(creditsweren'tcommented)FixedduplicateacceleratorinFrenchtranslation(bug#1168652)ImprovedFrenchtranslation(bug#1220277)UpdatedRussiantranslation(Dmitry)Updatedtranslationcredits(patch#1223362)

Previous|Contents|Next

Page 528: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 529: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.582.06ReleasedonMarch19th,2005

F.58.1Changelog

F.58.1.1MajorChanges

Fixedabug,introducedin2.05,thatmadecomponentsselectionnotfunctionproperlyifthefirstsectioninthescriptwasasectiongroupFixedabug,introducedin2.05,thatcorruptedthestateofsectiongroupsinsidesectiongroups(bug#1155836)

F.58.1.2New/ChangedCommands

AddedMB_RTLREADINGstyletoMessageBox(RFE#1159701)AllregistryinstructionsnowacceptSHCTXwhichisreplacedwithHKLMorHKCUatruntimeaccordingtoSetShellVarContext(RFE#1124901)

F.58.1.3MinorChanges

AddedBelarusianandIcelandiclanguagefilesAddedcomponents.ctotheMakefile(patch#1123154)AddedmissingClearErrorsinGetWindowsVersion(bug#1155588)Fixedabugininstall.shthatmadeittrytoinstallanonexistingdirectoryFixedabugintheRussianlanguagefiledistributedwith2.05FixedabugthatcausedSetFonttonotfunctionproperlywithRTLlanguagesonWindows9x(bug#1159700)Fixedabug,introducedin2.05,thatcausedproblemswithInstType/COMPONENTSONLYONCUSTOM(bug#1155060)Fixedacrashcausedbycompilinglargeuninstallers(bug#1144763)FixedcompileerrorwithoutNSIS_CONFIG_CRC_SUPPORTFixedcompileerrorsofMinGWonPOSIXforsourcecodeunder

Page 530: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Contrib(patch#1164307)Fixedplug-insdirectoryinitializationforextremelyrestrictedguestuserswithnodirectorylistingaccesstothetemporarydirectoryMadeinstall.shnotuse$(tempfile)andinstallfilesunder/usr/shareinsteadof/lib(patch#1120399)MinordocumentationupdatesandfixesUpdatedSlovenian,SerbianandSerbianLatinlanguagefiles

F.58.1.4UtilitiesandPlug-ins

AdvSplash:Fixedasmallmemoryleak(ThanksTakhir)StartMenu:AddedsupportforSetCtlColors(RFE#711900)

Previous|Contents|Next

Page 531: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 532: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.592.05ReleasedonFebruary4th,2005

F.59.1ReleaseNotes

Alotofchangesweremadetothebehaviorofsections/componentsandrelatedinstructions.Thechangeswerethoroughlytested,butmaystillcauseminorincompatibilitieswitholdscripts.Pleaseletusknowifyourscriptnolongerfunctionsasexpectedwiththesechanges.

F.59.2Changelog

F.59.2.1New/ChangedCommands

RenamedSubSectionandSubSectionEndtoSectionGroupandSectionGroupEndSectionSetFlags,whenusedonasectiongroup,togglesitschildrentooSectionSetTextworksbetterwithvariables(parsesimmediatelyandtreatsanemptyvariableasanemptystring)SetCurInstTypeworkswithoutthecomponentspage

F.59.2.2MinorChanges

AddedBretontranslationAdvSplash:FixeddoubledelaytimeinsomecasesDocumentationfixesandenhancements(includingpatch#1098454)FixedcasesensitivenamecomparisonwithFile/x,whennotusingwildcardsFixedextractionstatusendingpriorto100%Fixednegativevaluesofavailablespaceinthedirectorypage(bug#1114876)Fixedsystem.nsiexamplecrash(bug#1102255)

Page 533: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedunusedlabelwarningswithLibrarymacrosImprovedsomeerrormessagesInstallOptions2.42:Addedanimagedisplayingexample,addedTRANSPARENTflagforBITMAPfields(RFE#1079715-fundedbyChrisMorgan)Invisiblesectionsweren'talwaysaffectedbyachangeoftheinstallationtype(bug#1045722)LanguagefilefixesMadepagesrefreshafteranabortedleavefunctionPartiallyselectedsectiongroupscannowbetoggled

Previous|Contents|Next

Page 534: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 535: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.602.04ReleasedonJanuary7th,2005

F.60.1Changelog

F.60.1.1MajorChanges

Fixed$0changedbyFile/rFixedemptydirectorynotincludedbyFile/rFixedinvaliddirectorycreationbyFile/ronPOSIXFixedUnicodeconversionproblemsonPOSIX

F.60.1.2MinorChanges

Addednewtestfordir_reader::matchesFixedLibraryLocalfailurewithUNCpathsFixedVC7.1andGCC3.4compileerrorsLanguagefilefixes

Previous|Contents|Next

Page 536: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 537: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.612.03ReleasedonDecember3rd,2004

F.61.1ReleaseNotes

Ifyou'reusingFile/rfolderinyourscript,it'srecommendedyoureplaceitwithFile/rfolder\*forfastercompilationandsonootherfoldersnamedfolderwillbeincludedCommandlineswitchesprefixonPOSIXhaschangedtoadashTheplug-inAPIchangeisbackwardcompatible

F.61.2Changelog

F.61.2.1MajorChanges

Addedanotherparametertoplug-infunctionswithapointertoexec_flagsandExecuteCodeSegmentFixedhandlingofabsolutepathsonPOSIXMadeRegDLLloadandunloadaDLLexactlyoncetofixcrasheswithCOMDLLsregistration

F.61.2.2New/ChangedCommands

Added/dateswitchto!definefordefinitionofdateandtimeconstantsAdded/xswitchforFileandReserveFiletoexcludefilesanddirectoriesMadeFile's/rswitchalwayssearchinsubdirectories,evenifthegivenpathpointstoanexistingdirectory

F.61.2.3MinorChanges

AddedLIBRARY_SHELL_EXTENSIONandLIBRARY_COMtoLibrary

Page 538: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Addedmissing#includeAddedNSIS_LZMA_COMPRESS_WHOLEtothescriptdefinelistDocumentationfixesandimprovementsFixedanaccessviolationincaseofascriptjumpbeyondthelastentryFixedkeyboardnavigationintheinstfilespagewhileinstallingFixedunpackingwindownotshowingwhenBGGradientisusedFixedunusedlabelwarninginLibrary.nshLanguagefilefixesModernUI1.72:FixedstateofCancelbuttononFinishpagewhenusedininstalleranduninstaller,addedastringforNSIS_CONFIG_COMPONENTPAGE_ALTERNATIVEnsisconf.nshwasnotalwaysparsedwhencompilingusingMakeNSISw

Previous|Contents|Next

Page 539: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 540: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.622.02ReleasedonOctober23rd,2004

F.62.1Changelog

F.62.1.1MajorChanges

AddedlotsofsmallusageexamplestothedocumentationMaderelativejumpsworkwithinstructionsthataddmultipleentriesMadethedatablockoptimizermuchfasterMadetheinstallerdenyrebootswhilerunning(WM_QUERYENDSESSION)MadetheRebootcommandfirstquitandthenrebootsoeverythingisalwayscleaned-up

F.62.1.2New/ChangedCommands

Added<<and>>toIntOpAddedGetErrorLevelandSetErrorLevelFixedCopyFilesusagecheckingproblemMadeRebootcall.onRebootFailedandquitonfailureinsteadofsettingtheerrorflag

F.62.1.3MinorChanges

AddedAlbanianlanguagefilesAddedNSIS_CONFIG_COMPONENTPAGE_ALTERNATIVEconfigurationoptionwhichmakescomponentsonlybetoggledwhentheuserclicksonthecheckboxandmakes.onMouseOverSectiononlybecalledwhentheuserselectsacomponentAddedsomeCppUnittestsBoth_?=and/D=nowrequireaspacebeforethemsotheycansafelyremovethespacefrom$CMDLINEFixedabugthatcausedtheuninstallerCRC-checktofailif!packhdr

Page 541: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

createdanon-512-bytes-alignedexeheadFixedacompilercrashcausedbyusingGetCurrentAddressFixederrorswhenusing'File/r.'onWindowsFixedgcc3.4compileerrorsFixedinconsistenciesbetweenerrorlevelsandthedocumentationFixedsomeminormemoryleaksLanguagefilefixesMakefileimprovementsModernUI1.71:MadetheselectedlanguageonlybesavediftheinstallationwassuccessfulSomecoderefactoringStrFunc:RewroteStrSortandfixedStrStrAdv.Seethereadmeforacompletechangelog

F.62.1.4UtilitiesandPlug-ins

Banner:Fixedsomecaseswherethebannerwouldnotshowontheforeground

Previous|Contents|Next

Page 542: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 543: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.632.01ReleasedonSeptember24th,2004

F.63.1ReleaseNotes

SeeCompilingNSISSourcesforinformationaboutcompilingmakensisonPOSIXplatformsNSISdoesn'tcreateinstallersforLinux/MacOSXetc.,butyoucancompileWindowsinstallersontheseplatformsUpgradeDLLisstillprovidedinUpgradeDLL.nshforbackwardscompatibility

F.63.2Changelog

F.63.2.1MajorChanges

Compiler(makensis)supportsPOSIXplatforms(Linux,*BSD,MacOSX,etc.)NewsystemforDLL/TLBlibrarysetup

F.63.2.2New/ChangedCommands

AddedBGFontthatallowssettingthebackgroundtextfontAddedSW_HIDEtoExecShell'sacceptedshowmodesRMDircannowbeusedwithboth/rand/REBOOTOKatthesametimeExtendedmaximumbinarydataforWriteRegBinto3*NSIS_MAX_STRLENAdded!execute

F.63.2.3MinorChanges

LZMAexeheadisnow34KBandshouldalsodecompressfasterWindows95(OSR2)/98/MEnolongerseedrivefreespacecapped

Page 544: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

to2GBModernUserInterface:NeworangethemebyMoNKiSpeedupbackgroundgradientpaintingLogicLib2.5:AddedAndIf,AndUnless,OrIf,OrUnless.Avoidsunusedvariablewarningsbyrequiring!definesbeforeusingcertainfeatures.StrFunc:Addedsupportforuninstaller,somefixesandimprovements.SeethereadmeforacompletechangelogTheplug-insfolderisproperlyremovedwhenthesystemisrebootedSetOutPath"-"worksagainFixedabugwhichmadeplug-insthatdidn'thavelowercaseextensionnotbefoundFixedabugthatcauseddirectorieswithdrivesthathadtheircurrentdirectorysettoaninvaliddirectorytonotbeacceptedinthedirectoryselectionpageFixedacrashinmakensiscausedbydefiningamacroinafileincludedbyanothermacromakensisshowsmeaningfulerrorsforcompressionerrorsinsteadofjustmagicnumbersFixedabugwithAllowRootDirInstallusedalongwithInstallDirRegKeythatcausedthedirectoryintheregistrytobeignoredFixedFileReadsettingtheerrorflagwhenanullcharacteristhefirstcharacteritreadsFixedabugwhichcausedthebackgroundgradienttopaintslowlyFilepathsrelativetotherootfolderworkagainAddedColors.nshMadeTimesNewRomandefaultfontforthebackgroundtextbecauseitshouldalwayshavesupportforthelocale'slanguageFixedcompilationofNSISdlunderVS.NETSetCtlColors/BRANDINGwasn'tworkingright,ifjustoneofthebackgroundortextcolorwerespecifiedLanguagefilefixesandimprovements

F.63.2.4UtilitiesandPlug-ins

System:New,hopefullymoreinformative,documentation;fixedsomebugs

Page 545: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Banner:AddedgetWindowtoallowgreatercontroloverthebannerwindowInstallOptions2.41:Bitmapsarenowautomaticallycentered,fixedabugwhichpreventedenablingthenextbuttonfromtheleavefunctionofInstallOptionspages,fixedararefreezeZip2Exe0.32:FixedcodepageproblemsnsExec:Alwayscreateavalidinputhandle,fixedaproblemwhencalledfromapathwithspacesVPatch:CloseallopenfilehandleswhenoneofthemfailtoopenNSISdl:Added/NOIEPROXY(basedonmemph'scode)

Previous|Contents|Next

Page 546: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 547: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.642.0ReleasedonFebruary7th,2004

F.64.1ReleaseNotes

Finnish,BulgarianandThailanguagefilesareoutdatedanddonotcontainallneededtranslations

F.64.2Changelog

F.64.2.1Changesfrom1.98

Multiplelanguagesinoneinstallersupport(withRTLsupport)Easierplug-insystemModernUserInterface(optional)LZMAcompressionwhichprovidesinstallers20%smallerthanbzip2Easierpagingsystem(nomore.onNextPage,.onPrevPage)ComponentsarepresentedasatreewhichallowssubcomponentsUservariables($VARNAME)IconandUninstallIconsupportanycolordepthandsizes,notjust32x32x16CheckBitmapsupportsanycolordepthImprovedlargefileshandlingLicensedatacanbeRTFCHMdocumentationforeasybrowsingBettersilentsupportNewincludefilesforeasierscripting:LogicLib,StrFuncandSectionsImprovedplug-ins:InstallOptions,NSISdlandSplashNewplug-ins:AdvSplash,Banner,BgImage,Dialer,LangDLL,Math,nsExec,StartMenu,System,UserInfoandVPatchNewandimprovedutilities:MakeNSISw,NSISMenu(NSIS.exe),NSISUpdate(Bin\NSISUpdate.exe)andzip2exe(Bin\zip2exe.exe)Newcommands:!addplugindir,!echo,!ifmacrodef,!ifmacrondef,!verbose,AddBrandingImage,AllowSkipFiles,ChangeUI,CheckBitmap,CreateFont,DirVar,DirVerify,EnableWindow,

Page 548: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FileBufSize,FlushINI,GetCurInstType,GetDlgItem,GetInstDirError,IfAbort,IfSilent,InitPluginsDir,InstTypeGetText,InstTypeSetText,LangString,LicenseBkColor,LicenseForceSelection,LicenseLangString,LoadLanguageFile,LockWindow,Page,PageEx,ReserveFile,SectionGetInstTypes,SectionGetSize,SectionSetInstTypes,SectionSetSize,SetBrandingImage,SetCompressionLevel,SetCompressor,SetCompressorDictSize,SetCtlColors,SetCurInstType,SetPluginUnload,SetSilent,ShowWindow,SubSection(replacedbySectionGroup),SubSectionEnd(replacedbySectionGroupEnd),Var,VIAddVersionKey,VIProductVersionandXPStyleRemovedcommands:DirShow,DisabledBitmap,EnabledBitmapandSectionDividerAllthisandasmalleroverhead!=)Alotmore...Seebelowformoreinformation

F.64.2.2ChangesfromRC4

CommandlineparserignoredanyswitchesaftertokensthatarenotswitchesLastpartofthepathspecifiedinInstallDirwasappendedevenifselectedfoldernamewasthesameModernUI1.70:Improveddocumentation,newInitcustomfunctionforWelcomeandFinishpageAddedStrFuncbydeguixUpdatedandfixedlanguagefilesUpdated,fixedandimproveddocumentation

Previous|Contents|Next

Page 549: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 550: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.652.0ReleaseCandidate4ReleasedonFebruary2nd,2004

F.65.1Changelog

F.65.1.1MajorChanges

FixedMBCSmishandlinginexehead,InstallOptionsandnsExec

F.65.1.2MinorChanges

LanguagefilesupdatesandfixesFixedlogging(NSIS_CONFIG_LOG)Fixedcompileerrorscausedbyremovingsomeconfig.hoptionsNSIScompileswithoutPSDKagainDocumentationfixes

F.65.1.3UtilitiesandPlug-ins

NSISdl:AllpotentialandrarecrashesshouldbecompletelyfixednowInstallOptions:FixedararecrashrelatedtoListItemsandasmallmemoryleakwhenusingValidateText

Previous|Contents|Next

Page 551: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 552: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.662.0ReleaseCandidate3ReleasedonJanuary26th,2004

F.66.1Changelog

F.66.1.1MinorChanges

FixedsomebugswithLZMA/bzip2andnon-solidcompressionFixedabugthatcausedescapingnottobeignoredonextended!definelinesLanguagefilesupdatesandfixesFixedinstallercrashwhencertainlanguagestringswerenotreferencedinalllanguagesSomenewandimprovedgraphicsMadeCreateShortcutcaseinsensitivewhenparsinghotkeySomedocumentationimprovementsandfix-upsModernUI1.69:Madealluninstallerpagesworkwithoutinstallerpagesandfixedtoptextonuninstallerlicensepage

F.66.1.2UtilitiesandPlug-ins

MakeNSISW:Fixedresizebug,fixedsomeUIissuesinthesettingsdialogNSISUpdate:ImprovedUIInstallOptions:FixedminorproblemswiththenewNOTIFYflag

Previous|Contents|Next

Page 553: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 554: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.672.0ReleaseCandidate2ReleasedonJanuary5th,2004

F.67.1Changelog

F.67.1.1MinorChanges

Setfocustothemaincontrolineachpagetoeasekeyboardcontrol(plug-instoo)LangStringsanduservariableslimitisnow16383andisenforcedFixedcontrolcolorssetusingSetCtlColorsnotchangingwhenthesystemcolorswerechangedLogwindownowrespondstothecontextmenukeyFixedabugwhichcausedbeepingwhenthespacekeyishitonthecomponentstreeAddedcodetopreventweirdusageofWM_COMMANDwhichcancauseweirdbehaviorFixedcompileerrorswhenNSIS_CONFIG_COMPONENTPAGE,NSIS_CONFIG_PLUGIN_SUPPORTorNSIS_SUPPORT_HWNDSarenotdefinedMorelanguagefilesupdatedtothelatestversionFixedCHM'sscripterrorsDocumentationimprovements

F.67.1.2UtilitiesandPlug-ins

InstallOptions2.4:NOTIFYforlink,droplistandlistbox;UIfixesandimprovements.SeeIO'schangelogforacompletelistMakeNSISW:Improveduserinterface,addedsupportfornamedsymbolsetsandfixedbestcompressorselector

Previous|Contents|Next

Page 555: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 556: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.682.0ReleaseCandidate1ReleasedonDecember27th,2003

F.68.1ReleaseNotes

TryingtheLZMAcompressionmethodforyourinstallerisrecommended.Itoftengivesa20%bettercompressionratio.ModernUI1.68:ThesettingtochangethetitlesizeontheWelcomepageandFinishpagehasbeenchanged

F.68.2Changelog

F.68.2.1MajorChanges

LZMAcompressionsupport.AddedSetCompresssorDictSize.ModernUI1.68:NewsettingsforextraspacefortitleandtextonWelcomepageandFinishpage,improvedhandlingofverbosesettings,languagefilestringforuninstallerrebootinformation,moreShellfoldersarenowdetectedusingshellAPIfunctionsandnottheregistry.ThisistherecommendedmethodbyMicrosoft.Newconstantshavebeenaddedintheprocess($FONTS,$SENDTOandmore...).Seesection4.2.3formoredetails.AddedLogicLibtodistribution(easierconditionalexecutionetc.)AddedDirVerifyandGetInstDirErrortoallowcustomerrorcheckingwhentheinstallationdirectoryisinvalidorthedrivedoesnothaveenoughspaceSupportforreadingenvironmentalvariablesatcompiletime:$%envVarName%Added/SDparameterforMessageBox.Allowstosetdefaultforsilentinstallers.Newconditionalcompilationoptions:!ifmacrodefand!ifmacrondef.NewsectionsmacrosformutuallyexclusivesectionselectionImprovedRTLsupportbyaddingWS_EX_RTLREADINGwhereverpossible

Page 557: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.68.2.2UtilitiesandPlug-ins

InstallOptions2.3:Addednewcontroltype"Button",addednewflag"NOTIFY",addednewflag"NOWORDWRAP"formulti-linetextboxes,reducedsizedownto12KMakeNSISW:MoreoptionstosetthecompressionmethodZip2Exe0.31:Fixedcompressionsetting,LZMAcompressionsupportVPatch2.1:BettererrorhandlingandexitcodeforGenPat

Previous|Contents|Next

Page 558: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 559: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.692.0Beta4ReleasedonNovember19th,2003

F.69.1ReleaseNotes

The/LANGparameterisnolongeravailableforanytextsettinginstructions.YoumustuseaLangStringifyouwanttomakeacertaintextmultilingual.Thismeansyoucanalsosetonetextforalllanguages.TomakethelicensedatamultilingualyoushoulduseLicenseLangString.ModernUI1.67:Becauseofthenewsyntaxforpages,renamingofsettingsandvariablenamesetc.,youhavetomakesomechangestoyourscripts,seetheModernUIReadmefordetails.CustomPagesnowhavealeavefunction.Asthisparameterisplacedbeforethecaptionyouhavetoaddanother""emptystringforthetitletowork..onSelChangeisnolongercalledwhenthecomponentspageiscreated.TheiconsfolderhasbeenrenamedtoGraphicsandwasreorganized.IfyouwereusinganyfilesfromContrib\Iconsinyourscript,youshouldupdateittopointtothenewimageoriconpath.UpgradeDLLhasbeenchanged,it'shighlyrecommendthatyouincludethenewversioninyourscriptusing!include"UpgradeDLL.nsh"insteadoftheoldone.

F.69.2Changelog

F.69.2.1MajorChanges

CHMdocumentation-searchableandcomeswithanindexUservariables($VARNAME)thatcanbedeclaredwiththeVarcommandSupportforallpagesinbothinstalleranduninstaller.Components,directoryandlicensepagescanbeusedfortheuninstallerImprovedlargefileshandling(waylowerrequirementstocompilea

Page 560: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2GBinstallernow)FullsupportforRTLlanguages,includingsupportforLTRandRTLlanguagesinoneinstallerModernUI1.67:Newsystem&syntaxforpages,settings(supportformultiplepagesofthesametype,pagespecificsettings,morecustomizationoptionsetc.),Welcome/Finishpagesforuninstaller,LicenseForceSelectionsupport,newoptionsforFinishpage/languageselectiondialog,fixes,moreExtractionprogressNomoreunprocessedstrings,variablescanbeusedeverywhereLeavefunctionforcustompages:InputonInstallOptionspagescanbevalidatedusingscriptcodeInterfaceimprovements:BetterClearTypesupport,nomoreflickeringOnMouseOvertextisonlydisplayedwhenmouseoversectionNLFlanguagefiles(v6):languagespecificfonts,RTLandmorestringsInnerLangStringscanbeusedinthescriptNomore/LANG,onlyLangStrings-easiertosetonestringtoalllanguagesLangStringsarenolongerinstaller/uninstallerspecific(noun.)

F.69.2.2New/ChangedCommands

AddedPageEx,PageCallbacksandDirVar-it'snowaloteasiertoaddthesamepagetypetwiceAddedFileBufSizeAddedVIAddVersionKey:addversioninformationresourcetotheinstallerAddedAllowSkipFiles:setwhethertheusershouldbeabletoskipafilewhenoverwritingfailedAddedLicenseForceSelection:checkboxorradiobuttonsonlicensepagetoletuseragreewithlicenseornotAddedSectionSetSize,SectionGetSize,SetCurInstTypeandGetCurInstTypeReplacedSetBkColorwithSetCtlColorswhichcansettextcolortooAddedIfSilentandSetSilenttoallowbetter/SinteractionAddedsupportforstandardpredefines:${__DATE__},${__TIME__},

Page 561: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

${__TIMESTAMP__},${__FILE__},${__LINE__}AddedifdiffandlastusdforSetOverwrite/oSwitchforSectionprovidesabilitytounselectthesectionbydefaultNewparameterforDirTexttosetthebrowsedialogtextAddedRMDir/REBOOTOK:removefoldersonrebootInstType/NOCUSTOMand/COMPONENTSONLYONCUSTOMworktogetherAddedbase_dirforGetTempFileName

F.69.2.3MinorChanges

ROsectionscannowbeinInstTypestoo(defaultstooldbehavior)IncreasedlimitofInstTypesto32Improvedmacros&functions:UpgradeDLL,GetParent,GetParameters.Usingthenewversionsisrecommended.FixedSetOutPathnotsettingcurrentdirectoryifthedirectorydidn'texistbeforeComponentstree:fixedproblemswithsub-sectionswithROsectionsaschildren,SF_EXPANDnowrefreshesthecomponentstreeandaddedSF_PSELECTEDforpartiallyselectedsub-sectionsImprovedAddBrandingImage:doesn'tdependontheUI,cansetimageonthebottomandontheright,supportforcustompaddingvalueBetterinstallationdirectoryverificationFixedallknownproblemswithtemporaryfilesanddirectoriesDocumentationfixesMinorbugfixesCodeclean-upsandsomemorecommentsMore...

F.69.2.4UtilitiesandPlug-ins

MakeNSISW2.0:UItodefinesymbols,easyaccesstorecentscripts,toolbarandmoreZip2Exe0.3:basedonheaderfiles,improvedinterface,ModernUIsupport,newscriptcode,improvedfolderdetection

Page 562: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

InstallOptions2.2:addedLINKcontrol,addedEXTENDEDSELECTflagforlistboxeswhichreplacesMULTISELECTthatnowactsexactlyastherealstyleflag([double]clickturnsonoroffselection),fixesBgImageplug-instabilityfixesAddedvPatch:patchgeneratorandplug-inthatappliesthepatchesBannerplug-inimprovements:respondstomessagesandsomenew/settricksbybrainsuckerAdvSpalshplug-inimprovements:smaller,bettertransparencysupportandapossiblebugfixSystemplug-inimprovements:Unicode,GUIDandCOMsupportnsExecplug-inimprovments:abilitytorun16bitcodeandtabstospacesconversionMathplug-inDelphiunitforNSISplug-ins

Previous|Contents|Next

Page 563: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 564: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.702.0Beta3ReleasedonMarch16th,2003

ModernUI1.63:Headerbitmapsupport,newdefinestochangethedescriptionarea,singlemacroforlanguageselectiondialog,more!Newtutorialinthedocumentationdefine_if_lastinPagecommandalsoworkswhenadefinehasnotbeenspecifiedforallPagecommands.ThisfixestheproblemwiththeModernUI"ClickNext"/"ClickInstall"texts.AddedSectionSetInstTypesandSectionGetInstTypesRebootcommanddoesnotforcearebootanymore(allowstheusertosavework)!if[n]def/!elsefixesLogSetonnowreallystartsloggingCancelbuttonavailableonallpagesaftertheinstfilespagebutthelastpageunless/ENABLECANCELwasusedinitsPagecommandLicensepage:NomorelimitonRTFsizeLangDLL:Optiontoauto-countnumberoflanguages,shellfontsupportPageandUninstPagecannotbeusedinsidesections/functionsCreateDirectorynowusestheerrorflagEnumRegKey/Valueoutput_varcheckfixedUpdatedtranslationsDreadedBSODafterplug-insenumerationfinallybanishedMinimizebuttonandBGGradientandBGImagecompatibilityfixesWriteINIStrwithemptyvalueworksagainAddedFlushINI

Previous|Contents|Next

Page 565: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 566: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.712.0Beta2ReleasedonFebruary26th,2003

NSISMenu:linkstoallNSISutilities,documentationandwebsitesNSISUpdate:checkfornewreleases,downloadlatestdevelopmentfilesDialerplugintoconnecttotheinternetImprovedfilenamevalidationVC7compilercompatibilityissuesfixedCreateDirectorysetserrorflagInstallOptions:INIFileStatevaluefixedUpdatedtranslationsMinorfixes

Previous|Contents|Next

Page 567: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 568: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.722.0Beta1ReleasedonFebruary9th,2003

Userinterfaceimprovements:betterorder/groupingofcontrols,buttonselectionproblemsfixed,addedminimizebox,transparentBrandingTextLangStringimprovements:canbeusedbeforetheyhavebeendefined,warningifnotpresentinalllanguagetablesNewversionoftheModernUserInterfacewithUIimprovements,bugfixesandsomesmallnewfeaturesInstallOptions2.0withsupportforcustomfontandDPIsettings,groupboxes,groupedcontrols,lotsofbugfixesetc.NomorerandomcompressionratiosSetOutPathnowsetstheworkingdirectoryFilenamesarevalidated,directorygivenbytheuserwillnowalwayswork$QUICKLAUNCHnowworkswithSetShellVarContextallAutomaticallyappendeddirectorynameinthedirectoryselectiondialogwillnolongercontainsquaresifnotallcharactersareASCII.Fixedabugwithremotedrivesandavailablespace(\\remote\drive)Plug-infunction'snamesarenowcaseinsensitiveFixedabugwithspecifyingIcontwiceIncludedirs(!addincludedir)OnleavefunctionforpagesInstallerscannowreallycontainmorethanonebrandingimageAll!if/!else/!endifproblemsshouldbesolvednowSetFont"MSShellDlg"addstheDS_SHELLFONTstyleWin9xrenameonrebootnowalsoworkswhenthedestinationfiledoesnotexistDeleteRegKeyworksondefaultvaluensExeccanbecalledfromaninstallerexecutedbyCreateProcessWriteUninstallersetserrorcodeBanner.dllcompatiblewithModernUIFixedfocusproblemsinMakeNSISwUpdatedandnewtranslationsSomenewbitmapsfortheMUIbyVirtlink

Page 569: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FasterandbetterMakeNSISwintegrationNew.NETFrameworkdetectionfunctionMinorbugfixesCodeclean-ups(compilesonVC7)

Previous|Contents|Next

Page 570: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 571: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.732.0Beta0ReleasedonDecember6th,2002

NewpagingsystemAddedPageandUninstPageRemoved.onNextPage,.onPrevPage,.onInitDialogNeweasierversionoftheModernUserInterfacewithbettermultilanguagesupport,InstallOptionsintegration,welcomeandfinishpageetc.CustompagesnolongerflickerwhencreatedAddedacceleratorkeysAddedLangStringandLangStringUPforuserdefinedmultilingualstringsAddedsupportfortransparentcheckmarksAddedInitPluginsDirRenamednsisconf.nsitonsisconf.nshAddedCreateShortcutcomment/descriptionparameterSplash.exeisnowaplugin(splash.dll)Addednewplugins:System,AdvSplash,nsExec,UserInfo,BgImage,BannerandStartMenu!ifdefandfriendscannowbeusedinmacrosSendMessagecansendstrings(putSTR:beforeaparam)andsupportstimeoutsRightmousebutton"Copytoclipboard"contextmenufortheDetailswindowPluginsyntaxnowrequiresdllname,e.g.dll::funcnotjustfuncLicencetextreceivesinitialfocus(pageup&downworkimmediately,returnkeystillworks)Madewin9xmove/deleteonrebootsupportproperandfunctionlikeonwin2kNowalwaysloadsRichEditv2ifpresent(linksworkonWin9x)DeleteRegKeynowcomplainsifgivenathirdparameter(otherthan/ifempty)RegDLLnowworkswithDLLsdependentonDLLsfromthesamedirectory${LANG_langName}definedasthelanguageidwhenloadingaNLF

Page 572: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

FixedafewbugsthatcausedtheinstallertoloadslowerthanbeforeUninstallcannowgetcommandlineparameterstooAddedReserveFileAddedExDLL.hIncludedmakensisw1.9(lotsofchanges)UpdatedInstallOptionsUpdatedZIP2EXEUpdatedHTTPdownloadplugin,NSIS-dl(timeoutadded,betterproxydetection)AlotofnewlanguagefilesAlotofnewiconsandcheckmarksChangedsectionflagsvaluesSectionSetFlagscannowsetboldtooSectionSetFlagsnowworksinsilentinstallerstooSectionSetNameforsubsectionsdoesn'tneed'-'infrontofthenameAddedSetPluginUnloadHiddensectioncannowuseSectionIntooFile/nonfatalswitchaddedPluginsnolongeraddsizetotheircontainingsectionDefinescannowbeusedinsidedefinenames(${bla${blo}})Newdocsformat(WOOHA!)EXEheadersizealotsmaller,33.5KBforbzip2and34KBforzlibLotsofotherbugsfixed...

Previous|Contents|Next

Page 573: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 574: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.742.0Alpha7ReleasedonAugust29th,2002

Cannowselectthelanguagefrom.onInit($LANGUAGEisavariable)AddedCreateFontAdded.onMouseOverSectionAdded.onInitDialogandun.onInitDialogAddedSetStaticBkColorDisabledUseOuterUIItemSendMessageWM_SETTEXTtreatslParamasastringandnotanumberCopyFilesscriptmessagenolongeralwaysprints(silent)CustominstalltypetextcannowbechangedChangeUIcannowchangeIDD_VERIFYDefaultlicensecolornowfitstheusersystemSummaryreportstherightnumberofrequiredsectionsCheckboxisonlyrequiredinIDD_DIRifloggingisenabledNotusing/LANGnowreallycausesthescriptcompilertousethelastusedlanguageFixedabugwithMBCSandtheuninstallertextMBCStoUnicodeandUnicodetoMBCSconversionbugsfixedFixedabugthatcausedRTFnottoshowonWindows9xAddedadialogthatshowsupifcompresswholeisusedandinitialdecompressinglastslongerthanasecondUpdatedtoInstallOptions1.3MakeNSISw1.7includedAddedmodernUIbyJoostVerburg(Examples\ModernUI)Addednewfullcoloriconsbyadni18AddedDutch,Korean,Russian,SwedishandTraditionalChineselanguagefilesUpdatedSpanishlanguagefileversion(thankstoLsMoNKi)Added/TRIM(LEFT|RIGHT|CENTER)forBrandingTextEXEheadersizedownto36.5KBAddedyi-pixel.icoandyi-pixel-uninstall.icobyJanT.SottFixedabugwithmacrosattheendofthefile

Page 575: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Sub-sectionscannowhavedefinednamestooAddedLangDLL.dllpluginCallInstDLL/NOUNLOADadded(worksonplugincallstoo)

Previous|Contents|Next

Page 576: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 577: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.752.0Alpha6ReleasedonAugust10th,2002

Fixedtwobugswiththeplug-inmechanismFixedinfiniteloopbug

Previous|Contents|Next

Page 578: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 579: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.762.0Alpha5ReleasedonAugust9th,2002

AddedUseOuterUIItemEnhancedChangeUIEnhancedSetDlgItemTextAddedone-section.nsiexamplefileOptimizedXimon'scodeforplug-inDLLs(backto37KB)Ifdefaultuserlanguagedoesn'tfitexactly,willtrytofindprimarylanguagematchFixedsomestringsthatgotreplaced(spaceavailableandrequiredetc.)CompileswithoutMSPlatformSDKIncludedSpanish.nlfIncludedMagicLime.exebysnowchyld

Previous|Contents|Next

Page 580: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 581: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.772.0Alpha4ReleasedonAugust5th,2002

Addedautomaticdetection,packing,unpackinganddeletionofplugindllsAddedsimplifiedcallingsyntaxforplugindllsAddedPluginDir

Previous|Contents|Next

Page 582: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 583: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.782.0Alpha3ReleasedonAugust4th,2002

AddedLoadLanguageFileAdded$LANGUAGEAdded/LANGoptiontostringsetters(Name,Caption,etc.)'LogSeton'nowbuildsalogfileifnotalreadycreated

Previous|Contents|Next

Page 584: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 585: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.792.0Alpha2ReleasedonJuly31st,2002

Added${NSISDIR}AddedXPStyleAddedSetFontAddedChangeUIAddedAddBrandingImage,andSetBrandingImageAddedSetCompressor(nomoremakensis-bz2.exe)AddedLicenseBkColor'SpaceTextsnone'nowcausesnospacetextstoappearIconandUninstallIconnowsupporticonsofanytypeCheckBitmapnowsupportbitmapswithanycolortable/depthUnusedresourcesareremovedbeforewritingouttheinstallerDocumented!errorand!warningAdded!echoand!verboseAddedforceoptionforCRCCheckUpdatedtoMakensisw1.6UpdatedtoInstallOptions1.2InstallercannowbecompressedusingUPXAhintisshownifalineislongerthanthedetailwindowModernstylefolderselectdialogLicensedatacannowbeRTFWindowIconisnowhandledinthecompilerRemoveddebugversion(itneverworkedanyway)Fastercompiletime(WIN32_LEAN_AND_MEAN)

Previous|Contents|Next

Page 586: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 587: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.802.0Alpha1ReleasedonJuly9th,2002

AddedexpandnodeoptiontoSectionandSubSectionAddedpreservefileattributeoptiontoFilecommandCopy-AllbugfixinMakensiswAddedNSISDIRtothedefinelistReorganizedNSISdirectorystructure

Previous|Contents|Next

Page 588: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 589: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.812.0Alpha0ReleasedonMay22nd,2002

TreeViewcomponentlist(careofJeffDoozan)NomoreSectionDivider,butSubSectionandSubSectionEnd.NomoreEnabledBitmap/DisabledBitmap,justCheckBitmap.(withtonsofbuttonstates)Bugfixesofbrokenness.Added!forSection/SubSectiontomakebold.Madeconfig.hhavehacksforeasierbuildingforme.:)

Previous|Contents|Next

Page 590: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 591: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

F.82OlderVersionsNSIS1.xversionhistory

Previous|Contents|Next

Page 592: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 593: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixG:BuildingNSISNSISversion2.07introducedanewbuildsystem,basedonSCons.ThebuildsystemcanbuildtheentireNSISpackagesoyounolongerneedtobuilditprojectbyproject.Itallowsbuildingusingseveralsimultaneousjobs,installationwithoutaninstalleronbothWindowsandPOSIXandeasycompilationwithdebuggingsymbols.

TheofficialreleaseisbuiltwithMSVC6ServicePack5(Mirror)withtheProcessorPackandtheFebruary2003PlatformSDK(5.2.3790.0).

BuildinginGeneralBuildingonWindowsBuildingonPOSIXNightlyBuilds

Previous|Contents|Next

Page 594: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 595: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

G.1BuildinginGeneralSourcecodeisavailableinSVNandasaseparatepackagewitheveryNSISdistribution.

TobuildNSIS,PythonandSConsmustbeinstalled.Currently,thesupportedversionofSConsisversion1.2.0andabove.AnyversionofPythonabove1.6issupported.

NSISusesthezlibcompressionlibrary.Asaconsequencetheheaderandlibraryfilesofzlibmustbeinstalled.

Incasethesezlibdevelopmentfilesaren'tpresentthentheycouldbeinstalledviaapackagemanager(apt-get,aptitude,rpm,yum)onPOSIXplatforms.Anotheroptionistobuildzlibfromscratchandinstallit.

ForWindowsitisrecommendedtodownloadzlibfromhttp://nsis.sf.net/Zlib.Extractthecontentsofthisziparchivetoafolderofyourchoice,e.g.C:\dev\zlib-1.2.7andsetanenvironmentvariablenamedZLIB_W32containingthispath.

C:\>setZLIB_W32=C:\dev\zlib-1.2.7

AlternativelythecommandlineoptionZLIB_W32specifyingthepathcanbepassedtosconsinsteadoftheenvironmentvariable.

C:\dev\nsis>sconsZLIB_W32=C:\dev\zlib-1.2.7

Theheaderandlibraryfilesareassumedtobein%ZLIB_W32%.Inadditionsconschecksforzlibheaderfilesin%ZLIB_W32%\include,theimportlibraryzdll.libin%ZLIB_W32%\libandthedynamiclinklibraryzlib1.dllin%ZLIB_W32%respectively%ZLIB_W32%\lib.

Tobuild,openaconsole,changetheworkingdirectorytotherootdirectoryofNSISandtypescons.That'sit.Forexample:

C:\>cddev\nsisC:\dev\nsis>scons

Page 596: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

scons:ReadingSConscriptfiles...UsingMicrosofttoolsconfigurationCheckingformain()inClibrarygdi32...(cached)yesCheckingformain()inClibraryuser32...(cached)yesCheckingformain()inClibraryversion...(cached)yesCheckingformain()inClibrarypthread...(cached)noCheckingformain()inClibrarystdc++...(cached)noCheckingformain()inClibraryiconv...(cached)noCheckingformain()inClibrarylibiconv...(cached)noscons:donereadingSConscriptfiles.scons:Buildingtargets......

Toinstallthebuiltfiles,type:

sconsPREFIX="C:\ProgramFiles\NSIS"install

Tocreateaninstaller(onlyonWindows),type:

sconsdist-installer

Tocreateadistributionzipfile,type:

sconsdist-zip

Tocreateboth,type:

sconsdist

Togetacompletelistofoptionsthatthebuildsystemhastooffer,type:

scons-h

TogetacompletelistofoptionsSConshastooffer,type:

scons-H

Previous|Contents|Next

Page 597: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 598: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

G.2BuildingonWindowsSConswillautomaticallydetectMicrosoftVisualC++.IfyouarelookingforafreecompilertocompileNSIS,werecommendMicrosoftVisualC++2005ExpressEdition.

WhenusingtheMicrosoftVisualC++Toolkit2003,addMSTOOLKIT=yestothebuildcommandline:

sconsMSTOOLKIT=yes

IncaseoferrorsaboutthecompilerorthePlatformSDKnotbeingfound,use:

setMSSDK=C:\Path\To\PlatformSDKsetVCToolkitInstallDir=C:\Path\To\VCToolkitsconsMSTOOLKIT=yes

Theopen-sourceMinGWcanalsobeusedtoforbuildingbutthisresultsinnoticeablylargerinstallers.BorlandC++orOpenWatcomC/C++mightalsowork,buthaven'tbeentested.

TocompilethedocumentationasaCHMfile,hhc.exemustbeinthePATH.ItisavailableaspartofHTMLHelpWorkshop.

TobuildNSISMenu,installwxWidgets2.8,createanenvironmentvariablenamedWXWINcontainingthepathtotheinstallationdirectoryofwxWidgets,runContrib\NSISMenu\wx\wxbuild.batandbuildNSISasusual.

ImportantnotesforMicrosoftVisualC++6.0users:The2003PlatformSDKmustbeinstalledbeforebuilding,youcandownloadithereororderitonCD.BecauseofflawsinthelibrariesdistributedwithMicrosoftVisualC++6.0,notinstallingthePlatformSDKwillresultincrasheswhenusingtheCopyFilescommand.Seethisforumtopicformoreinformation.InstallingtheProcessorPackishighlyrecommendedtodecreasethesizeoftheinstalleroverhead.

Page 599: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ImportantnoteforMicrosoftVisualC++2012users:InstallersgeneratedusingthisreleaseandbeyondwillnotbeabletorunonWindows9xorWindows2000.Theminimumrequirementfor2012isWindowsXP.

Previous|Contents|Next

Page 600: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 601: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

G.3BuildingonPOSIXAsofNSIS2.01,thecompiler,makensis,alsocompilesonPOSIXplatforms.POSIXplatformsincludeLinux,*BSD,MacOSXandothers.SincethegeneratedinstallerwilleventuallyrunonWindows,across-compilerisneededinordertocompilethem.

ThecommandlineoptionXGCC_W32_PREFIXcouldbeusedtoexplicitlyselectaspecificwin32targetedcrosscompiler.ThevalueofXGCC_W32_PREFIXhastobetheprefixofthetoolchain.ForexampleXGCC_W32_PREFIX=i686-w64-mingw32-woulddeploythewin32targetedMinGW-w64crosscompilerifitisavailableonthebuildsystem.

Ifnocross-compilerisavailable,usethefollowing:

sconsSKIPSTUBS=allSKIPPLUGINS=allSKIPUTILS=allSKIPMISC=allNSIS_CONFIG_CONST_DATA_PATH=noPREFIX=/path/to/extracted/zipinstall-compiler

sconsNSIS_CONFIG_CONST_DATA_PATH=noPREFIX=/path/to/extracted/zip/path/to/extracted/zip/LibraryLocal

Thisshouldonlybuildmakensisandinstallittothedirectorywhereaprecompiledpackage,suchasthenightlybuildorazippedreleaseversion(nsis-x.xx.zip),isextracted.Notethattheinorderforthistowork,theprecompiledpackagemustbecompiledusingtheexactsamesourcesasmakensis.Inparticular,Source\exehead\config.h,theoptionspassedtosconsandSource\exehead\fileform.hmustbeidentical.Nightlybuildsandzippedreleaseversionsarebuiltwiththedefaultoptions.

TobuildanativeversionofNSISMenu,installwxWidgets2.8andbuildasusual.wx-configmustbeinthepath.

Previous|Contents|Next

Page 602: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 603: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

G.4NightlyBuildsThereisnoneedtomanuallybuildthelatestSVNversionforWindows.Anightlybuildisavailable.Thenightlybuildisautomaticallygeneratedeverynight,usingthelatestversionofthesourcecodefromSVN.Thereisnoofficialnightlybuildforotherplatforms.

Previous|Contents|Next

Page 604: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 605: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixH:CreditsProgrammersTestersDesignersTranslatorsWriters

Previous|Contents|Next

Page 606: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 607: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

H.1ProgrammersJustinFrankelaka0xDEADBEEF

CreatingtheallmightyNSIS

Amir"makemestop"SzekelyakaKiCHiK

MultilingualNSISRTFlicensetextThenewpagingsystemFullcolorsupportforiconsandbitmapsBrandingimageCustomizableUIOnemakensis.exeforbothzlibandbzip2

JoostVerburg

ModernUserInterfaceNSISwebsiteNSISMenuSystemforDLL/TLBlibrarysetupNSISUpdateforNSISdistribution(originalversionbyNathanPurciful)

RobertRainwater

MakeNSISWNewdocumentationformatEnhancingtheTreeViewReorganizingNSISdirectorystructure

Dave"bit-by-bit"Laundonakaeccles

Massiveoptimizing

XimonEighteenakaSunjammer

Thenewplug-inssystem

Page 608: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

"Copytoclipboard"contextmenufortheDetailswindowLicensetextinitialfocus

RamonakaRamon18

VersioninformationresourcecommandsNameduservariablesLotsofUIfixesInstallOptionsimprovements

JimPark

Unicodesupport

OlivierMarcouxakaWizou

Unicodemerge

[email protected]

RyanGeiss

AndrasVarga

DrewDavidson

PeterWindridge

YaroslavFaybishenko

JeffDoozan

NSIS2'snewTreeView

Nike([email protected])

HTMLHelpsupportforHalibut

DiegoPedrosoakadeguix

NewNSISWiki

Page 609: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

ShengaltsAleksanderakaInstructor

StuartWelchakaAfrowUK

DavidWeissakaComm@nder21

AndersKjersem

NSIS3patronsaint64-bitsupportUnicodemerge&supportNSIS3POSIXsupport

Previous|Contents|Next

Page 610: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 611: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

H.2TestersJasonRossakaJasonFriday13

NSIS3POSIXsupport

Previous|Contents|Next

Page 612: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 613: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

H.3DesignersNikosAdamamas

Thenewmodernicons

JanT.Sott/whyEye.org

Lotsoficonsandcheckmarks

Previous|Contents|Next

Page 614: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 615: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

H.4TranslatorsAlbanian-BesnikBleta

Afrikaans-FriedelWolff

Arabic-asdfuae,RamiKattan

Armenian-HrantOhanyan

Asturian-Marcos([email protected])

Basque-IñakiSanVicente

Belarusian-SitnikovVjacheslav

Bosnian-SalihCAVKIC

Breton-KorvigelloùAnDrouizig

Bulgarian-AsparouhKalyandjiev,PlamenPenkov

Catalan-falanko

Chinese(Simplified)-KiiAli

Chinese(Traditional)-KiiAli,WalterCheuk

Corsican-PatriccolludiSantaMariaèSichè

Croatian-IgorOstriz,Vedran"RIV@NVX"Miletic

Czech-T.V.Zuggy,SELiCE

Danish-Christopher,CasperBergenstoff,ClausFuttrup

Dutch-HendriAdriaens,JoostVerburg

Esperanto-FelipeCastro

Page 616: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Estonian-izzo

Farsi-MasoudAlinaqian,FzerorubigD,ElnazSarbar

Finnish-AKX,Eclipser

French-veekee,SebastienDelahaye,JeromeCharaoui

Galician-RamonFlores

Georgian-DavidHuriev

German-L.King,K.Windszus,R.Bisswanger,M.Simmack,TimKosse

Greek-MakidisN.Michael

Hebrew-AmirSzekely(akaKiCHiK),YaronShahrabani

Hungarian-Soft-TransBt.,JozsefTamasHerczeg,LajosMolnar(Orfanik)

Icelandic-GretarOrriKristinsson

Indonesian-ariel825010106

Italian-Orfanik,sanface,AlessandroStaltari,LorenzoBevilacqua

Japanese-Dnanako,TakahiroYoshimura

Khmer-yisophally

Korean-dTomoyo,linak,koder

Kurdish-ErdalRonahi

Latvian-ValdisGriíis,KristapsMeòìelis

Lithuanian-NorCis,VytautasKrivickas,DanieliusScepanskis

Luxembourgish-JoHoeser

Page 617: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Macedonian-SaskoZdravkin

Mongolian-BayarsaikhanEnkhtaivan

Norwegian-JonasChristofferLindstrom,JanIvarBeddari

NorwegianNynorsk-VebjørnSture

Pashto-Pakhtosoft

Polish-PiotrMurawski,RafałLampe,cube,SYSTEMsoftGroup,MarekStępień,MateuszGola,PawełPorwisz

Portuguese-DragonSoull,Dre',Ramon

PortugueseBrasil-LayoutdoBrasil,deguix

Romanian-SorinSbarnea,CristianPirvu,GeorgeRadu,VladRusu

Russian-Sergey`Timon`Kusnetsov,NikMedved,Scam,THRaSH,DmitryYerokhin

Serbian-SrdjanObucina

SerbianLatin-SrdjanObucina,VladanObradovic

Slovak-trace,Kypec,MariánHikaník

Slovenian-JanezDolinar,MartinSebotnjak

Spanish-MoNKi,LoboLunar,DarwinRodrigoToledoCáceres

Swedish-PeterGustafsson,MagnusBonnevier,RickardAngbratt

Thai-SoKoOLz,TuW@nNu(asdfuae)

Turkish-BertanKodamanoglu,CagatayDilsiz,FatihBOY

Ukrainian-YuriHolubow,Nash-Soft

Uzbek-EmilGaripov([email protected])

Page 618: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Valencian-BernardoArlandisMañó

Vietnamese-ClytieSiddall

Welsh-RhoslynPrys,Meddal.com

Previous|Contents|Next

Page 619: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 620: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

H.5WritersSebastianArmbrustakaflizebogen

Tutorial

Previous|Contents|Next

Page 621: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 622: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

AppendixI:LicenseCopyrightApplicablelicenseszlib/libpnglicensebzip2licenseCommonPublicLicenseversion1.0SpecialexceptionforLZMAcompressionmodule

Previous|Contents|Next

Page 623: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 624: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.1CopyrightCopyright(C)1999-2017Contributors

Moredetailedcopyrightinformationcanbefoundintheindividualsourcecodefiles.

Previous|Contents|Next

Page 625: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 626: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.2ApplicablelicensesAllNSISsourcecode,plug-ins,documentation,examples,headerfilesandgraphics,withtheexceptionofthecompressionmodulesandwhereotherwisenoted,arelicensedunderthezlib/libpnglicense.ThezlibcompressionmoduleforNSISislicensedunderthezlib/libpnglicense.Thebzip2compressionmoduleforNSISislicensedunderthebzip2license.ThelzmacompressionmoduleforNSISislicensedundertheCommonPublicLicenseversion1.0.

Previous|Contents|Next

Page 627: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 628: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.3zlib/libpnglicenseThissoftwareisprovided'as-is',withoutanyexpressorimpliedwarranty.Innoeventwilltheauthorsbeheldliableforanydamagesarisingfromtheuseofthissoftware.

Permissionisgrantedtoanyonetousethissoftwareforanypurpose,includingcommercialapplications,andtoalteritandredistributeitfreely,subjecttothefollowingrestrictions:

1. Theoriginofthissoftwaremustnotbemisrepresented;youmustnotclaimthatyouwrotetheoriginalsoftware.Ifyouusethissoftwareinaproduct,anacknowledgmentintheproductdocumentationwouldbeappreciatedbutisnotrequired.

2. Alteredsourceversionsmustbeplainlymarkedassuch,andmustnotbemisrepresentedasbeingtheoriginalsoftware.

3. Thisnoticemaynotberemovedoralteredfromanysourcedistribution.

Previous|Contents|Next

Page 629: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 630: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.4bzip2licenseRedistributionanduseinsourceandbinaryforms,withorwithoutmodification,arepermittedprovidedthatthefollowingconditionsaremet:

1. Redistributionsofsourcecodemustretaintheabovecopyrightnotice,thislistofconditionsandthefollowingdisclaimer.

2. Theoriginofthissoftwaremustnotbemisrepresented;youmustnotclaimthatyouwrotetheoriginalsoftware.Ifyouusethissoftwareinaproduct,anacknowledgmentintheproductdocumentationwouldbeappreciatedbutisnotrequired.

3. Alteredsourceversionsmustbeplainlymarkedassuch,andmustnotbemisrepresentedasbeingtheoriginalsoftware.

4. Thenameoftheauthormaynotbeusedtoendorseorpromoteproductsderivedfromthissoftwarewithoutspecificpriorwrittenpermission.

THISSOFTWAREISPROVIDEDBYTHEAUTHOR``ASIS''ANDANYEXPRESSORIMPLIEDWARRANTIES,INCLUDING,BUTNOTLIMITEDTO,THEIMPLIEDWARRANTIESOFMERCHANTABILITYANDFITNESSFORAPARTICULARPURPOSEAREDISCLAIMED.INNOEVENTSHALLTHEAUTHORBELIABLEFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDING,BUTNOTLIMITEDTO,PROCUREMENTOFSUBSTITUTEGOODSORSERVICES;LOSSOFUSE,DATA,ORPROFITS;ORBUSINESSINTERRUPTION)HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEOFTHISSOFTWARE,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGE.

JulianSeward,Cambridge,UK.

[email protected]

Previous|Contents|Next

Page 631: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 632: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.5CommonPublicLicenseversion1.0THEACCOMPANYINGPROGRAMISPROVIDEDUNDERTHETERMSOFTHISCOMMONPUBLICLICENSE("AGREEMENT").ANYUSE,REPRODUCTIONORDISTRIBUTIONOFTHEPROGRAMCONSTITUTESRECIPIENT'SACCEPTANCEOFTHISAGREEMENT.

1.DEFINITIONS

"Contribution"means:

a)inthecaseoftheinitialContributor,theinitialcodeanddocumentationdistributedunderthisAgreement,andb)inthecaseofeachsubsequentContributor:

i)changestotheProgram,and

ii)additionstotheProgram;

wheresuchchangesand/oradditionstotheProgramoriginatefromandaredistributedbythatparticularContributor.AContribution'originates'fromaContributorifitwasaddedtotheProgrambysuchContributoritselforanyoneactingonsuchContributor'sbehalf.ContributionsdonotincludeadditionstotheProgramwhich:(i)areseparatemodulesofsoftwaredistributedinconjunctionwiththeProgramundertheirownlicenseagreement,and(ii)arenotderivativeworksoftheProgram.

"Contributor"meansanypersonorentitythatdistributestheProgram.

"LicensedPatents"meanpatentclaimslicensablebyaContributorwhicharenecessarilyinfringedbytheuseorsaleofitsContributionaloneorwhencombinedwiththeProgram.

"Program"meanstheContributionsdistributedinaccordancewiththisAgreement.

"Recipient"meansanyonewhoreceivestheProgramunderthisAgreement,includingallContributors.

Page 633: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

2.GRANTOFRIGHTS

a)SubjecttothetermsofthisAgreement,eachContributorherebygrantsRecipientanon-exclusive,worldwide,royalty-freecopyrightlicensetoreproduce,preparederivativeworksof,publiclydisplay,publiclyperform,distributeandsublicensetheContributionofsuchContributor,ifany,andsuchderivativeworks,insourcecodeandobjectcodeform.

b)SubjecttothetermsofthisAgreement,eachContributorherebygrantsRecipientanon-exclusive,worldwide,royalty-freepatentlicenseunderLicensedPatentstomake,use,sell,offertosell,importandotherwisetransfertheContributionofsuchContributor,ifany,insourcecodeandobjectcodeform.ThispatentlicenseshallapplytothecombinationoftheContributionandtheProgramif,atthetimetheContributionisaddedbytheContributor,suchadditionoftheContributioncausessuchcombinationtobecoveredbytheLicensedPatents.ThepatentlicenseshallnotapplytoanyothercombinationswhichincludetheContribution.Nohardwareperseislicensedhereunder.

c)RecipientunderstandsthatalthougheachContributorgrantsthelicensestoitsContributionssetforthherein,noassurancesareprovidedbyanyContributorthattheProgramdoesnotinfringethepatentorotherintellectualpropertyrightsofanyotherentity.EachContributordisclaimsanyliabilitytoRecipientforclaimsbroughtbyanyotherentitybasedoninfringementofintellectualpropertyrightsorotherwise.Asaconditiontoexercisingtherightsandlicensesgrantedhereunder,eachRecipientherebyassumessoleresponsibilitytosecureanyotherintellectualpropertyrightsneeded,ifany.Forexample,ifathirdpartypatentlicenseisrequiredtoallowRecipienttodistributetheProgram,itisRecipient'sresponsibilitytoacquirethatlicensebeforedistributingtheProgram.

d)EachContributorrepresentsthattoitsknowledgeithassufficientcopyrightrightsinitsContribution,ifany,tograntthecopyrightlicensesetforthinthisAgreement.

3.REQUIREMENTS

AContributormaychoosetodistributethePrograminobjectcodeformunderitsownlicenseagreement,providedthat:

Page 634: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

a)itcomplieswiththetermsandconditionsofthisAgreement;and

b)itslicenseagreement:

i)effectivelydisclaimsonbehalfofallContributorsallwarrantiesandconditions,expressandimplied,includingwarrantiesorconditionsoftitleandnon-infringement,andimpliedwarrantiesorconditionsofmerchantabilityandfitnessforaparticularpurpose;

ii)effectivelyexcludesonbehalfofallContributorsallliabilityfordamages,includingdirect,indirect,special,incidentalandconsequentialdamages,suchaslostprofits;

iii)statesthatanyprovisionswhichdifferfromthisAgreementareofferedbythatContributoraloneandnotbyanyotherparty;and

iv)statesthatsourcecodefortheProgramisavailablefromsuchContributor,andinformslicenseeshowtoobtainitinareasonablemanneronorthroughamediumcustomarilyusedforsoftwareexchange.

WhentheProgramismadeavailableinsourcecodeform:

a)itmustbemadeavailableunderthisAgreement;and

b)acopyofthisAgreementmustbeincludedwitheachcopyoftheProgram.

ContributorsmaynotremoveoralteranycopyrightnoticescontainedwithintheProgram.

EachContributormustidentifyitselfastheoriginatorofitsContribution,ifany,inamannerthatreasonablyallowssubsequentRecipientstoidentifytheoriginatoroftheContribution.

4.COMMERCIALDISTRIBUTION

Commercialdistributorsofsoftwaremayacceptcertainresponsibilitieswithrespecttoendusers,businesspartnersandthelike.WhilethislicenseisintendedtofacilitatethecommercialuseoftheProgram,theContributorwhoincludesthePrograminacommercialproductoffering

Page 635: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

shoulddosoinamannerwhichdoesnotcreatepotentialliabilityforotherContributors.Therefore,ifaContributorincludesthePrograminacommercialproductoffering,suchContributor("CommercialContributor")herebyagreestodefendandindemnifyeveryotherContributor("IndemnifiedContributor")againstanylosses,damagesandcosts(collectively"Losses")arisingfromclaims,lawsuitsandotherlegalactionsbroughtbyathirdpartyagainsttheIndemnifiedContributortotheextentcausedbytheactsoromissionsofsuchCommercialContributorinconnectionwithitsdistributionofthePrograminacommercialproductoffering.TheobligationsinthissectiondonotapplytoanyclaimsorLossesrelatingtoanyactualorallegedintellectualpropertyinfringement.Inordertoqualify,anIndemnifiedContributormust:a)promptlynotifytheCommercialContributorinwritingofsuchclaim,andb)allowtheCommercialContributortocontrol,andcooperatewiththeCommercialContributorin,thedefenseandanyrelatedsettlementnegotiations.TheIndemnifiedContributormayparticipateinanysuchclaimatitsownexpense.

Forexample,aContributormightincludethePrograminacommercialproductoffering,ProductX.ThatContributoristhenaCommercialContributor.IfthatCommercialContributorthenmakesperformanceclaims,orofferswarrantiesrelatedtoProductX,thoseperformanceclaimsandwarrantiesaresuchCommercialContributor'sresponsibilityalone.Underthissection,theCommercialContributorwouldhavetodefendclaimsagainsttheotherContributorsrelatedtothoseperformanceclaimsandwarranties,andifacourtrequiresanyotherContributortopayanydamagesasaresult,theCommercialContributormustpaythosedamages.

5.NOWARRANTY

EXCEPTASEXPRESSLYSETFORTHINTHISAGREEMENT,THEPROGRAMISPROVIDEDONAN"ASIS"BASIS,WITHOUTWARRANTIESORCONDITIONSOFANYKIND,EITHEREXPRESSORIMPLIEDINCLUDING,WITHOUTLIMITATION,ANYWARRANTIESORCONDITIONSOFTITLE,NON-INFRINGEMENT,MERCHANTABILITYORFITNESSFORAPARTICULARPURPOSE.EachRecipientissolelyresponsiblefordeterminingtheappropriatenessofusinganddistributingtheProgramandassumesallrisksassociated

Page 636: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

withitsexerciseofrightsunderthisAgreement,includingbutnotlimitedtotherisksandcostsofprogramerrors,compliancewithapplicablelaws,damagetoorlossofdata,programsorequipment,andunavailabilityorinterruptionofoperations.

6.DISCLAIMEROFLIABILITY

EXCEPTASEXPRESSLYSETFORTHINTHISAGREEMENT,NEITHERRECIPIENTNORANYCONTRIBUTORSSHALLHAVEANYLIABILITYFORANYDIRECT,INDIRECT,INCIDENTAL,SPECIAL,EXEMPLARY,ORCONSEQUENTIALDAMAGES(INCLUDINGWITHOUTLIMITATIONLOSTPROFITS),HOWEVERCAUSEDANDONANYTHEORYOFLIABILITY,WHETHERINCONTRACT,STRICTLIABILITY,ORTORT(INCLUDINGNEGLIGENCEOROTHERWISE)ARISINGINANYWAYOUTOFTHEUSEORDISTRIBUTIONOFTHEPROGRAMORTHEEXERCISEOFANYRIGHTSGRANTEDHEREUNDER,EVENIFADVISEDOFTHEPOSSIBILITYOFSUCHDAMAGES.

7.GENERAL

IfanyprovisionofthisAgreementisinvalidorunenforceableunderapplicablelaw,itshallnotaffectthevalidityorenforceabilityoftheremainderofthetermsofthisAgreement,andwithoutfurtheractionbythepartieshereto,suchprovisionshallbereformedtotheminimumextentnecessarytomakesuchprovisionvalidandenforceable.

IfRecipientinstitutespatentlitigationagainstaContributorwithrespecttoapatentapplicabletosoftware(includingacross-claimorcounterclaiminalawsuit),thenanypatentlicensesgrantedbythatContributortosuchRecipientunderthisAgreementshallterminateasofthedatesuchlitigationisfiled.Inaddition,ifRecipientinstitutespatentlitigationagainstanyentity(includingacross-claimorcounterclaiminalawsuit)allegingthattheProgramitself(excludingcombinationsoftheProgramwithothersoftwareorhardware)infringessuchRecipient'spatent(s),thensuchRecipient'srightsgrantedunderSection2(b)shallterminateasofthedatesuchlitigationisfiled.

AllRecipient'srightsunderthisAgreementshallterminateifitfailsto

Page 637: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

complywithanyofthematerialtermsorconditionsofthisAgreementanddoesnotcuresuchfailureinareasonableperiodoftimeafterbecomingawareofsuchnoncompliance.IfallRecipient'srightsunderthisAgreementterminate,RecipientagreestoceaseuseanddistributionoftheProgramassoonasreasonablypracticable.However,Recipient'sobligationsunderthisAgreementandanylicensesgrantedbyRecipientrelatingtotheProgramshallcontinueandsurvive.

EveryoneispermittedtocopyanddistributecopiesofthisAgreement,butinordertoavoidinconsistencytheAgreementiscopyrightedandmayonlybemodifiedinthefollowingmanner.TheAgreementStewardreservestherighttopublishnewversions(includingrevisions)ofthisAgreementfromtimetotime.NooneotherthantheAgreementStewardhastherighttomodifythisAgreement.IBMistheinitialAgreementSteward.IBMmayassigntheresponsibilitytoserveastheAgreementStewardtoasuitableseparateentity.EachnewversionoftheAgreementwillbegivenadistinguishingversionnumber.TheProgram(includingContributions)mayalwaysbedistributedsubjecttotheversionoftheAgreementunderwhichitwasreceived.Inaddition,afteranewversionoftheAgreementispublished,ContributormayelecttodistributetheProgram(includingitsContributions)underthenewversion.ExceptasexpresslystatedinSections2(a)and2(b)above,RecipientreceivesnorightsorlicensestotheintellectualpropertyofanyContributorunderthisAgreement,whetherexpressly,byimplication,estoppelorotherwise.AllrightsintheProgramnotexpresslygrantedunderthisAgreementarereserved.

ThisAgreementisgovernedbythelawsoftheStateofNewYorkandtheintellectualpropertylawsoftheUnitedStatesofAmerica.NopartytothisAgreementwillbringalegalactionunderthisAgreementmorethanoneyearafterthecauseofactionarose.Eachpartywaivesitsrightstoajurytrialinanyresultinglitigation.

Previous|Contents|Next

Page 638: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Page 639: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

I.6SpecialexceptionforLZMAcompressionmoduleIgorPavlovandAmirSzekely,theauthorsoftheLZMAcompressionmoduleforNSIS,expresslypermityoutostaticallyordynamicallylinkyourcode(orbindbyname)tothefilesfromtheLZMAcompressionmoduleforNSISwithoutsubjectingyourlinkedcodetothetermsoftheCommonPubliclicenseversion1.0.AnymodificationsoradditionstofilesfromtheLZMAcompressionmoduleforNSIS,however,aresubjecttothetermsoftheCommonPublicLicenseversion1.0.

Previous|Contents|Next

Page 640: NSIS Users Manual - documentation.help · Appendix F: Changelog and Release Notes 3.02 Changelog Major Changes Minor Changes Translations 3.01 Changelog Major Changes Minor Changes

Previous|Contents|Next

Previous|Contents|Next