Chapter 1: Introduction to NSIS Chapter 2: Tutorial: The Basics Section 2.1: Introduction Section 2.2: Script Files Section 2.3: Scripting structure Section 2.3.1: Installer Attributes Section 2.3.2: Sections Section 2.3.3: Functions Section 2.3.4: Working with Scripts Section 2.3.4.1: Variables Section 2.3.4.2: Debugging Scripts Section 2.3.5: Compiler Commands Section 2.4: Compiler Section 2.5: Enhancing NSIS Chapter 3: MakeNSIS Usage Chapter 4: Scripting Reference Section 4.1: Script File Format Section 4.2: Variables Section 4.2: Variables Section 4.2.1: Modifiable Variables Used in Instructions Section 4.2.2: Constant Variables Used in Instructions and InstallDir Section 4.2.3: Variables Used in Strings Section 4.3: Labels Section 4.4: Relative Jumps Section 4.5: Pages Section 4.5: Pages Section 4.5.1: Ordering Section 4.5.2: Callbacks Section 4.5.3: Page Section 4.5.4: UninstPage Section 4.6: Sections Section 4.6.1: Section Commands Section 4.6.1.1: AddSize Section 4.6.1.2: Section Section 4.6.1.3: SectionEnd Section 4.6.1.4: SectionIn Section 4.6.1.5: SubSection Section 4.6.1.6: SubSectionEnd Section 4.6.2: Uninstall Section Section 4.7: Functions Section 4.7.1: Function Commands Section 4.7.1.1: Function Section 4.7.1.2: FunctionEnd Section 4.7.2: Callback Functions Section 4.7.2.1: Install Callbacks Section 4.7.2.1.1: .onGUIInit Section 4.7.2.1.2: .onInit Section 4.7.2.1.3: .onInstFailed Section 4.7.2.1.4: .onInstSuccess Section 4.7.2.1.5: .onMouseOverSection Section 4.7.2.1.6: .onSelChange Section 4.7.2.1.7: .onUserAbort Section 4.7.2.1.8: .onVerifyInstDir Section 4.7.2.2: Uninstall Callbacks Section 4.7.2.2.1: un.onGUIInit Section 4.7.2.2.2: un.onInit Section 4.7.2.2.3: un.onUninstFailed Section 4.7.2.2.4: un.onUninstSuccess Section 4.7.2.2.5: un.onUserAbort Section 4.8: Installer Attributes Section 4.8.1: General Attributes Section 4.8.1.1: AddBrandingImage Section 4.8.1.2: AllowRootDirInstall Section 4.8.1.3: AutoCloseWindow Section 4.8.1.4: BGGradient Section 4.8.1.5: BrandingText Section 4.8.1.6: Caption Section 4.8.1.7: ChangeUI Section 4.8.1.8: CheckBitmap Section 4.8.1.9: CompletedText Section 4.8.1.10: ComponentText Section 4.8.1.11: CRCCheck Section 4.8.1.12: DetailsButtonText Section 4.8.1.13: DirShow Section 4.8.1.14: DirText Section 4.8.1.15: FileErrorText Section 4.8.1.16: Icon Section 4.8.1.17: InstallButtonText Section 4.8.1.18: InstallColors Section 4.8.1.19: InstallDir Section 4.8.1.20: InstallDirRegKey Section 4.8.1.21: InstProgressFlags Section 4.8.1.22: InstType Section 4.8.1.23: LicenseBkColor Section 4.8.1.24: LicenseData Section 4.8.1.25: LicenseForceSelection Section 4.8.1.26: LicenseText Section 4.8.1.27: MiscButtonText Section 4.8.1.28: Name Section 4.8.1.29: OutFile Section 4.8.1.30: SetFont Section 4.8.1.31: ShowInstDetails Section 4.8.1.32: ShowUninstDetails Section 4.8.1.33: SilentInstall Section 4.8.1.34: SilentUnInstall Section 4.8.1.35: SpaceTexts Section 4.8.1.36: SubCaption Section 4.8.1.37: UninstallButtonText Section 4.8.1.38: UninstallCaption Section 4.8.1.39: UninstallIcon Section 4.8.1.40: UninstallSubCaption Section 4.8.1.41: UninstallText Section 4.8.1.42: WindowIcon Section 4.8.1.43: XPStyle Section 4.8.2: Compiler Flags Section 4.8.2.1: SetCompress Section 4.8.2.2: SetCompressor Section 4.8.2.3: SetDatablockOptimize Section 4.8.2.4: SetDateSave Section 4.8.2.5: SetOverwrite Section 4.8.2.6: SetPluginUnload Section 4.9: Instructions Section 4.9.1: Basic Instructions Section 4.9.1.1: Delete Section 4.9.1.2: Exec Section 4.9.1.3: ExecShell Section 4.9.1.4: ExecWait Section 4.9.1.5: File Section 4.9.1.6: Rename Section 4.9.1.7: ReserveFile Section 4.9.1.8: RMDir Section 4.9.1.9: SetOutPath Section 4.9.2: Registry, INI, File Instructions Section 4.9.2.1: DeleteINISec Section 4.9.2.2: DeleteINIStr Section 4.9.2.3: DeleteRegKey Section 4.9.2.4: DeleteRegValue Section 4.9.2.5: EnumRegKey Section 4.9.2.6: EnumRegValue Section 4.9.2.7: ExpandEnvStrings Section 4.9.2.8: FlushINI Section 4.9.2.9: ReadEnvStr Section 4.9.2.10: ReadINIStr Section 4.9.2.11: ReadRegDWORD Section 4.9.2.12: ReadRegStr Section 4.9.2.13: WriteINIStr Section 4.9.2.14: WriteRegBin Section 4.9.2.15: WriteRegDWORD Section 4.9.2.16: WriteRegStr Section 4.9.3: General Purpose Instructions Section 4.9.3.1: CallInstDLL Section 4.9.3.2: CopyFiles Section 4.9.3.3: CreateDirectory Section 4.9.3.4: CreateShortCut Section 4.9.3.5: GetDLLVersion Section 4.9.3.6: GetDLLVersionLocal Section 4.9.3.7: GetFileTime Section 4.9.3.8: GetFileTimeLocal Section 4.9.3.9: GetFullPathName Section 4.9.3.10: GetTempFileName Section 4.9.3.11: SearchPath Section 4.9.3.12: SetFileAttributes Section 4.9.3.13: RegDLL Section 4.9.3.14: UnRegDLL Section 4.9.4: Flow Control Instructions Section 4.9.4.1: Abort Section 4.9.4.2: Call Section 4.9.4.3: ClearErrors Section 4.9.4.4: GetCurrentAddress Section 4.9.4.5: GetFunctionAddress Section 4.9.4.6: GetLabelAddress Section 4.9.4.7: Goto Section 4.9.4.8: IfErrors Section 4.9.4.9: IfFileExists Section 4.9.4.10: IfRebootFlag Section 4.9.4.11: IntCmp Section 4.9.4.12: IntCmpU Section 4.9.4.13: MessageBox Section 4.9.4.14: Return Section 4.9.4.15: Quit Section 4.9.4.16: SetErrors Section 4.9.4.17: StrCmp Section 4.9.5: File Instructions Section 4.9.5.1: FileClose Section 4.9.5.2: FileOpen Section 4.9.5.3: FileRead Section 4.9.5.4: FileReadByte Section 4.9.5.5: FileSeek Section 4.9.5.6: FileWrite Section 4.9.5.7: FileWriteByte Section 4.9.5.8: FindClose Section 4.9.5.9: FindFirst Section 4.9.5.10: FindNext Section 4.9.6: Uninstaller Instructions Section 4.9.6.1: WriteUninstaller Section 4.9.7: Miscellaneous Instructions Section 4.9.7.1: InitPluginsDir Section 4.9.7.2: SetShellVarContext Section 4.9.7.3: Sleep Section 4.9.8: String Manipulation Instructions Section 4.9.8.1: StrCpy Section 4.9.8.2: StrLen Section 4.9.9: Stack Support Section 4.9.9.1: Exch Section 4.9.9.2: Pop Section 4.9.9.3: Push Section 4.9.10: Integer Support Section 4.9.10.1: IntFmt Section 4.9.10.2: IntOp Section 4.9.11: Reboot Instructions Section 4.9.11.1: Reboot Section 4.9.11.2: SetRebootFlag Section 4.9.12: Install Logging Instructions Section 4.9.12.1: LogSet Section 4.9.12.2: LogText Section 4.9.13: Section Management Section 4.9.13.1: SectionSetFlags Section 4.9.13.2: SectionGetFlags Section 4.9.13.3: SectionSetText Section 4.9.13.4: SectionGetText Section 4.9.13.5: SectionSetInstTypes Section 4.9.13.6: SectionGetInstTypes Section 4.9.14: User Interface Instructions Section 4.9.14.1: BringToFront Section 4.9.14.2: CreateFont Section 4.9.14.3: DetailPrint Section 4.9.14.4: FindWindow Section 4.9.14.5: GetDlgItem Section 4.9.14.6: HideWindow Section 4.9.14.7: IsWindow Section 4.9.14.8: SendMessage Section 4.9.14.9: SetAutoClose Section 4.9.14.10: SetBrandingImage Section 4.9.14.11: SetDetailsView Section 4.9.14.12: SetDetailsPrint Section 4.9.14.13: SetBkColor Section 4.9.14.14: ShowWindow Section 4.9.15: Multiple Languages Instructions Section 4.9.15.1: LoadLanguageFile Section 4.9.15.2: LangString and LangStringUP Section 4.10: Multiple Languages Section 4.10.1: Language Selection Section 4.10.2: The /LANG Parameter Section 4.10.3: LangDLL Plug-in Section 4.11: Plugin DLLs Section 4.11.1: Using Plugin Commands Section 4.11.2: Disabling Plugin Unloading Chapter 5: Compile Time Commands Section 5.1: Compiler Utility Commands Section 5.1.1: !include Section 5.1.2: !addincludedir Section 5.1.2: !addincludedir Section 5.1.2.1: !addplugindir Section 5.1.3: !cd Section 5.1.4: !echo Section 5.1.5: !error Section 5.1.6: !packhdr Section 5.1.7: !system Section 5.1.8: !warning Section 5.1.9: !verbose Section 5.2: Conditional Compilation Appendix A: Modern User Interface Appendix B: Useful Functions Section B.1: Get parent directory Section B.2: Trim newlines Section B.3: Get command line parameters Section B.4: Search in a string Section B.5: Get Windows version Section B.6: Get Internet Explorer version Section B.7: Is .NET Framework installed? Section B.8: Is Macromedia Flash Player installed? Section B.9: Add a shared DLL Section B.10: Remove a shared DLL Section B.11: Upgrade a DLL (macro) Section B.12: Connect to the internet Section B.13: More Appendix C: Useful Information Section C.1: Add uninstall information to Add/Remove Programs Section C.2: How to install the VB6 runtimes Section C.3: Calling an external DLL using the System.dll plugin Section C.4: Dump Content of Log Window to File Appendix D: Release History Appendix E: Credits Section E.1: Programmers Section E.2: Designers Section E.3: Translators Section E.4: Maintenance Staff Appendix F: NSIS License