home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Programming / nsis-2.46-setup.exe / Examples / makensis.nsi < prev    next >
Text File  |  2009-02-04  |  33KB  |  1,052 lines

  1. ;NSIS Setup Script
  2. ;--------------------------------
  3.  
  4. !ifndef VERSION
  5.   !define VERSION 'anonymous-build'
  6. !endif
  7.  
  8. ;--------------------------------
  9. ;Configuration
  10.  
  11. !ifdef OUTFILE
  12.   OutFile "${OUTFILE}"
  13. !else
  14.   OutFile ..\nsis-${VERSION}-setup.exe
  15. !endif
  16.  
  17. SetCompressor /SOLID lzma
  18.  
  19. InstType "Full"
  20. InstType "Lite"
  21. InstType "Minimal"
  22.  
  23. InstallDir $PROGRAMFILES\NSIS
  24. InstallDirRegKey HKLM Software\NSIS ""
  25.  
  26. RequestExecutionLevel admin
  27.  
  28. ;--------------------------------
  29. ;Header Files
  30.  
  31. !include "MUI2.nsh"
  32. !include "Sections.nsh"
  33. !include "LogicLib.nsh"
  34. !include "Memento.nsh"
  35. !include "WordFunc.nsh"
  36.  
  37. ;--------------------------------
  38. ;Functions
  39.  
  40. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  41.  
  42.   !insertmacro VersionCompare
  43.  
  44. !endif
  45.  
  46. ;--------------------------------
  47. ;Definitions
  48.  
  49. !define SHCNE_ASSOCCHANGED 0x8000000
  50. !define SHCNF_IDLIST 0
  51.  
  52. ;--------------------------------
  53. ;Configuration
  54.  
  55. ;Names
  56. Name "NSIS"
  57. Caption "NSIS ${VERSION} Setup"
  58.  
  59. ;Memento Settings
  60. !define MEMENTO_REGISTRY_ROOT HKLM
  61. !define MEMENTO_REGISTRY_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS"
  62.  
  63. ;Interface Settings
  64. !define MUI_ABORTWARNING
  65.  
  66. !define MUI_HEADERIMAGE
  67. !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\nsis.bmp"
  68.  
  69. !define MUI_COMPONENTSPAGE_SMALLDESC
  70.  
  71. ;Pages
  72. !define MUI_WELCOMEPAGE_TITLE "Welcome to the NSIS ${VERSION} Setup Wizard"
  73. !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of NSIS (Nullsoft Scriptable Install System) ${VERSION}, the next generation of the Windows installer and uninstaller system that doesn't suck and isn't huge.$\r$\n$\r$\nNSIS 2 includes a new Modern User Interface, LZMA compression, support for multiple languages and an easy plug-in system.$\r$\n$\r$\n$_CLICK"
  74.  
  75. !insertmacro MUI_PAGE_WELCOME
  76. !insertmacro MUI_PAGE_LICENSE "..\COPYING"
  77. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  78. Page custom PageReinstall PageLeaveReinstall
  79. !endif
  80. !insertmacro MUI_PAGE_COMPONENTS
  81. !insertmacro MUI_PAGE_DIRECTORY
  82. !insertmacro MUI_PAGE_INSTFILES
  83.  
  84. !define MUI_FINISHPAGE_LINK "Visit the NSIS site for the latest news, FAQs and support"
  85. !define MUI_FINISHPAGE_LINK_LOCATION "http://nsis.sf.net/"
  86.  
  87. !define MUI_FINISHPAGE_RUN "$INSTDIR\NSIS.exe"
  88. !define MUI_FINISHPAGE_NOREBOOTSUPPORT
  89.  
  90. !define MUI_FINISHPAGE_SHOWREADME
  91. !define MUI_FINISHPAGE_SHOWREADME_TEXT "Show release notes"
  92. !define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReleaseNotes
  93.  
  94. !insertmacro MUI_PAGE_FINISH
  95.  
  96. !insertmacro MUI_UNPAGE_CONFIRM
  97. !insertmacro MUI_UNPAGE_INSTFILES
  98.  
  99. ;--------------------------------
  100. ;Languages
  101.  
  102. !insertmacro MUI_LANGUAGE "English"
  103.  
  104. ;--------------------------------
  105. ;Installer Sections
  106.  
  107. ${MementoSection} "NSIS Core Files (required)" SecCore
  108.  
  109.   SetDetailsPrint textonly
  110.   DetailPrint "Installing NSIS Core Files..."
  111.   SetDetailsPrint listonly
  112.  
  113.   SectionIn 1 2 3 RO
  114.   SetOutPath $INSTDIR
  115.   RMDir /r $SMPROGRAMS\NSIS
  116.  
  117.   SetOverwrite on
  118.   File ..\makensis.exe
  119.   File ..\makensisw.exe
  120.   File ..\COPYING
  121.   File ..\NSIS.chm
  122.   File ..\NSIS.exe
  123.   File /nonfatal ..\NSIS.exe.manifest
  124.  
  125.   IfFileExists $INSTDIR\nsisconf.nsi "" +2
  126.   Rename $INSTDIR\nsisconf.nsi $INSTDIR\nsisconf.nsh
  127.   SetOverwrite off
  128.   File ..\nsisconf.nsh
  129.   SetOverwrite on
  130.  
  131.   SetOutPath $INSTDIR\Stubs
  132.   File ..\Stubs\bzip2
  133.   File ..\Stubs\bzip2_solid
  134.   File ..\Stubs\lzma
  135.   File ..\Stubs\lzma_solid
  136.   File ..\Stubs\zlib
  137.   File ..\Stubs\zlib_solid
  138.   File ..\Stubs\uninst
  139.  
  140.   SetOutPath $INSTDIR\Include
  141.   File ..\Include\WinMessages.nsh
  142.   File ..\Include\Sections.nsh
  143.   File ..\Include\Library.nsh
  144.   File ..\Include\UpgradeDLL.nsh
  145.   File ..\Include\LogicLib.nsh
  146.   File ..\Include\StrFunc.nsh
  147.   File ..\Include\Colors.nsh
  148.   File ..\Include\FileFunc.nsh
  149.   File ..\Include\TextFunc.nsh
  150.   File ..\Include\WordFunc.nsh
  151.   File ..\Include\WinVer.nsh
  152.   File ..\Include\x64.nsh
  153.   File ..\Include\Memento.nsh
  154.   File ..\Include\LangFile.nsh
  155.   File ..\Include\InstallOptions.nsh
  156.   File ..\Include\MultiUser.nsh
  157.   File ..\Include\VB6RunTime.nsh
  158.   File ..\Include\Util.nsh
  159.   File ..\Include\WinCore.nsh
  160.  
  161.   SetOutPath $INSTDIR\Include\Win
  162.   File ..\Include\Win\WinDef.nsh
  163.   File ..\Include\Win\WinError.nsh
  164.   File ..\Include\Win\WinNT.nsh
  165.   File ..\Include\Win\WinUser.nsh
  166.  
  167.   SetOutPath $INSTDIR\Docs\StrFunc
  168.   File ..\Docs\StrFunc\StrFunc.txt
  169.  
  170.   SetOutPath $INSTDIR\Docs\MultiUser
  171.   File ..\Docs\MultiUser\Readme.html
  172.  
  173.   SetOutPath $INSTDIR\Docs\makensisw
  174.   File ..\Docs\makensisw\*.txt
  175.  
  176.   SetOutPath $INSTDIR\Menu
  177.   File ..\Menu\*.html
  178.   SetOutPath $INSTDIR\Menu\images
  179.   File ..\Menu\images\header.gif
  180.   File ..\Menu\images\line.gif
  181.   File ..\Menu\images\site.gif
  182.  
  183.   Delete $INSTDIR\makensis.htm
  184.   Delete $INSTDIR\Docs\*.html
  185.   Delete $INSTDIR\Docs\style.css
  186.   RMDir $INSTDIR\Docs
  187.  
  188.   SetOutPath $INSTDIR\Bin
  189.   File ..\Bin\LibraryLocal.exe
  190.   File ..\Bin\RegTool.bin
  191.  
  192.   SetOutPath $INSTDIR\Plugins
  193.   File ..\Plugins\TypeLib.dll
  194.  
  195.   ReadRegStr $R0 HKCR ".nsi" ""
  196.   StrCmp $R0 "NSISFile" 0 +2
  197.     DeleteRegKey HKCR "NSISFile"
  198.  
  199.   WriteRegStr HKCR ".nsi" "" "NSIS.Script"
  200.   WriteRegStr HKCR "NSIS.Script" "" "NSIS Script File"
  201.   WriteRegStr HKCR "NSIS.Script\DefaultIcon" "" "$INSTDIR\makensisw.exe,1"
  202.   ReadRegStr $R0 HKCR "NSIS.Script\shell\open\command" ""
  203.   StrCmp $R0 "" 0 no_nsiopen
  204.     WriteRegStr HKCR "NSIS.Script\shell" "" "open"
  205.     WriteRegStr HKCR "NSIS.Script\shell\open\command" "" 'notepad.exe "%1"'
  206.   no_nsiopen:
  207.   WriteRegStr HKCR "NSIS.Script\shell\compile" "" "Compile NSIS Script"
  208.   WriteRegStr HKCR "NSIS.Script\shell\compile\command" "" '"$INSTDIR\makensisw.exe" "%1"'
  209.   WriteRegStr HKCR "NSIS.Script\shell\compile-compressor" "" "Compile NSIS Script (Choose Compressor)"
  210.   WriteRegStr HKCR "NSIS.Script\shell\compile-compressor\command" "" '"$INSTDIR\makensisw.exe" /ChooseCompressor "%1"'
  211.  
  212.   ReadRegStr $R0 HKCR ".nsh" ""
  213.   StrCmp $R0 "NSHFile" 0 +2
  214.     DeleteRegKey HKCR "NSHFile"
  215.  
  216.   WriteRegStr HKCR ".nsh" "" "NSIS.Header"
  217.   WriteRegStr HKCR "NSIS.Header" "" "NSIS Header File"
  218.   WriteRegStr HKCR "NSIS.Header\DefaultIcon" "" "$INSTDIR\makensisw.exe,1"
  219.   ReadRegStr $R0 HKCR "NSIS.Header\shell\open\command" ""
  220.   StrCmp $R0 "" 0 no_nshopen
  221.     WriteRegStr HKCR "NSIS.Header\shell" "" "open"
  222.     WriteRegStr HKCR "NSIS.Header\shell\open\command" "" 'notepad.exe "%1"'
  223.   no_nshopen:
  224.  
  225.   System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
  226.  
  227. ${MementoSectionEnd}
  228.  
  229. ${MementoSection} "Script Examples" SecExample
  230.  
  231.   SetDetailsPrint textonly
  232.   DetailPrint "Installing Script Examples..."
  233.   SetDetailsPrint listonly
  234.  
  235.   SectionIn 1 2
  236.   SetOutPath $INSTDIR\Examples
  237.   File ..\Examples\makensis.nsi
  238.   File ..\Examples\example1.nsi
  239.   File ..\Examples\example2.nsi
  240.   File ..\Examples\viewhtml.nsi
  241.   File ..\Examples\waplugin.nsi
  242.   File ..\Examples\bigtest.nsi
  243.   File ..\Examples\primes.nsi
  244.   File ..\Examples\rtest.nsi
  245.   File ..\Examples\gfx.nsi
  246.   File ..\Examples\one-section.nsi
  247.   File ..\Examples\languages.nsi
  248.   File ..\Examples\Library.nsi
  249.   File ..\Examples\VersionInfo.nsi
  250.   File ..\Examples\UserVars.nsi
  251.   File ..\Examples\LogicLib.nsi
  252.   File ..\Examples\silent.nsi
  253.   File ..\Examples\StrFunc.nsi
  254.   File ..\Examples\FileFunc.nsi
  255.   File ..\Examples\FileFunc.ini
  256.   File ..\Examples\FileFuncTest.nsi
  257.   File ..\Examples\TextFunc.nsi
  258.   File ..\Examples\TextFunc.ini
  259.   File ..\Examples\TextFuncTest.nsi
  260.   File ..\Examples\WordFunc.nsi
  261.   File ..\Examples\WordFunc.ini
  262.   File ..\Examples\WordFuncTest.nsi
  263.   File ..\Examples\Memento.nsi
  264.  
  265.   SetOutPath $INSTDIR\Examples\Plugin
  266.   File ..\Examples\Plugin\exdll.c
  267.   File ..\Examples\Plugin\exdll.dpr
  268.   File ..\Examples\Plugin\exdll.dsp
  269.   File ..\Examples\Plugin\exdll.dsw
  270.   File ..\Examples\Plugin\exdll_with_unit.dpr
  271.   File ..\Examples\Plugin\exdll-vs2008.sln
  272.   File ..\Examples\Plugin\exdll-vs2008.vcproj
  273.   File ..\Examples\Plugin\extdll.inc
  274.   File ..\Examples\Plugin\nsis.pas
  275.  
  276.   SetOutPath $INSTDIR\Examples\Plugin\nsis
  277.   File ..\Examples\Plugin\nsis\pluginapi.h
  278.   File ..\Examples\Plugin\nsis\pluginapi.lib
  279.   File ..\Examples\Plugin\nsis\api.h
  280.  
  281. ${MementoSectionEnd}
  282.  
  283. !ifndef NO_STARTMENUSHORTCUTS
  284. ${MementoSection} "Start Menu and Desktop Shortcuts" SecShortcuts
  285.  
  286.   SetDetailsPrint textonly
  287.   DetailPrint "Installing Start Menu and Desktop Shortcuts..."
  288.   SetDetailsPrint listonly
  289.  
  290. !else
  291. ${MementoSection} "Desktop Shortcut" SecShortcuts
  292.  
  293.   SetDetailsPrint textonly
  294.   DetailPrint "Installing Desktop Shortcut..."
  295.   SetDetailsPrint listonly
  296.  
  297. !endif
  298.   SectionIn 1 2
  299.   SetOutPath $INSTDIR
  300. !ifndef NO_STARTMENUSHORTCUTS
  301.   CreateShortCut "$SMPROGRAMS\NSIS.lnk" "$INSTDIR\NSIS.exe"
  302. !endif
  303.  
  304.   CreateShortCut "$DESKTOP\NSIS.lnk" "$INSTDIR\NSIS.exe"
  305.  
  306. ${MementoSectionEnd}
  307.  
  308. SectionGroup "User Interfaces" SecInterfaces
  309.  
  310. ${MementoSection} "Modern User Interface" SecInterfacesModernUI
  311.  
  312.   SetDetailsPrint textonly
  313.   DetailPrint "Installing User Interfaces | Modern User Interface..."
  314.   SetDetailsPrint listonly
  315.  
  316.   SectionIn 1 2
  317.  
  318.   SetOutPath "$INSTDIR\Examples\Modern UI"
  319.   File "..\Examples\Modern UI\Basic.nsi"
  320.   File "..\Examples\Modern UI\HeaderBitmap.nsi"
  321.   File "..\Examples\Modern UI\MultiLanguage.nsi"
  322.   File "..\Examples\Modern UI\StartMenu.nsi"
  323.   File "..\Examples\Modern UI\WelcomeFinish.nsi"
  324.  
  325.   SetOutPath "$INSTDIR\Contrib\Modern UI"
  326.   File "..\Contrib\Modern UI\System.nsh"
  327.   File "..\Contrib\Modern UI\ioSpecial.ini"
  328.  
  329.   SetOutPath "$INSTDIR\Docs\Modern UI"
  330.   File "..\Docs\Modern UI\Readme.html"
  331.   File "..\Docs\Modern UI\Changelog.txt"
  332.   File "..\Docs\Modern UI\License.txt"
  333.  
  334.   SetOutPath "$INSTDIR\Docs\Modern UI\images"
  335.   File "..\Docs\Modern UI\images\header.gif"
  336.   File "..\Docs\Modern UI\images\screen1.png"
  337.   File "..\Docs\Modern UI\images\screen2.png"
  338.   File "..\Docs\Modern UI\images\open.gif"
  339.   File "..\Docs\Modern UI\images\closed.gif"
  340.  
  341.   SetOutPath $INSTDIR\Contrib\UIs
  342.   File "..\Contrib\UIs\modern.exe"
  343.   File "..\Contrib\UIs\modern_headerbmp.exe"
  344.   File "..\Contrib\UIs\modern_headerbmpr.exe"
  345.   File "..\Contrib\UIs\modern_nodesc.exe"
  346.   File "..\Contrib\UIs\modern_smalldesc.exe"
  347.  
  348.   SetOutPath $INSTDIR\Include
  349.   File "..\Include\MUI.nsh"
  350.  
  351.   SetOutPath "$INSTDIR\Contrib\Modern UI 2"
  352.   File "..\Contrib\Modern UI 2\Deprecated.nsh"
  353.   File "..\Contrib\Modern UI 2\Interface.nsh"
  354.   File "..\Contrib\Modern UI 2\Localization.nsh"
  355.   File "..\Contrib\Modern UI 2\MUI2.nsh"
  356.   File "..\Contrib\Modern UI 2\Pages.nsh"
  357.  
  358.   SetOutPath "$INSTDIR\Contrib\Modern UI 2\Pages"
  359.   File "..\Contrib\Modern UI 2\Pages\Components.nsh"
  360.   File "..\Contrib\Modern UI 2\Pages\Directory.nsh"
  361.   File "..\Contrib\Modern UI 2\Pages\Finish.nsh"
  362.   File "..\Contrib\Modern UI 2\Pages\InstallFiles.nsh"
  363.   File "..\Contrib\Modern UI 2\Pages\License.nsh"
  364.   File "..\Contrib\Modern UI 2\Pages\StartMenu.nsh"
  365.   File "..\Contrib\Modern UI 2\Pages\UninstallConfirm.nsh"
  366.   File "..\Contrib\Modern UI 2\Pages\Welcome.nsh"
  367.  
  368.   SetOutPath "$INSTDIR\Docs\Modern UI 2"
  369.   File "..\Docs\Modern UI 2\Readme.html"
  370.   File "..\Docs\Modern UI 2\License.txt"
  371.  
  372.   SetOutPath "$INSTDIR\Docs\Modern UI 2\images"
  373.   File "..\Docs\Modern UI 2\images\header.gif"
  374.   File "..\Docs\Modern UI 2\images\screen1.png"
  375.   File "..\Docs\Modern UI 2\images\screen2.png"
  376.   File "..\Docs\Modern UI 2\images\open.gif"
  377.   File "..\Docs\Modern UI 2\images\closed.gif"
  378.  
  379.   SetOutPath $INSTDIR\Include
  380.   File "..\Include\MUI2.nsh"
  381.  
  382. ${MementoSectionEnd}
  383.  
  384. ${MementoSection} "Default User Interface" SecInterfacesDefaultUI
  385.  
  386.   SetDetailsPrint textonly
  387.   DetailPrint "Installing User Interfaces | Default User Interface..."
  388.   SetDetailsPrint listonly
  389.  
  390.   SectionIn 1
  391.  
  392.   SetOutPath "$INSTDIR\Contrib\UIs"
  393.   File "..\Contrib\UIs\default.exe"
  394.  
  395. ${MementoSectionEnd}
  396.  
  397. ${MementoSection} "Tiny User Interface" SecInterfacesTinyUI
  398.  
  399.   SetDetailsPrint textonly
  400.   DetailPrint "Installing User Interfaces | Tiny User Interface..."
  401.   SetDetailsPrint listonly
  402.  
  403.   SectionIn 1
  404.  
  405.   SetOutPath "$INSTDIR\Contrib\UIs"
  406.   File "..\Contrib\UIs\sdbarker_tiny.exe"
  407.  
  408. ${MementoSectionEnd}
  409.  
  410. SectionGroupEnd
  411.  
  412. ${MementoSection} "Graphics" SecGraphics
  413.  
  414.   SetDetailsPrint textonly
  415.   DetailPrint "Installing Graphics..."
  416.   SetDetailsPrint listonly
  417.  
  418.   SectionIn 1
  419.  
  420.   Delete $INSTDIR\Contrib\Icons\*.ico
  421.   Delete $INSTDIR\Contrib\Icons\*.bmp
  422.   RMDir $INSTDIR\Contrib\Icons
  423.   SetOutPath $INSTDIR\Contrib\Graphics
  424.   File /r "..\Contrib\Graphics\*.ico"
  425.   File /r "..\Contrib\Graphics\*.bmp"
  426. ${MementoSectionEnd}
  427.  
  428. ${MementoSection} "Language Files" SecLangFiles
  429.  
  430.   SetDetailsPrint textonly
  431.   DetailPrint "Installing Language Files..."
  432.   SetDetailsPrint listonly
  433.  
  434.   SectionIn 1
  435.  
  436.   SetOutPath "$INSTDIR\Contrib\Language files"
  437.   File "..\Contrib\Language files\*.nlf"
  438.  
  439.   SetOutPath $INSTDIR\Bin
  440.   File ..\Bin\MakeLangID.exe
  441.  
  442.   !insertmacro SectionFlagIsSet ${SecInterfacesModernUI} ${SF_SELECTED} mui nomui
  443.   mui:
  444.     SetOutPath "$INSTDIR\Contrib\Language files"
  445.     File "..\Contrib\Language files\*.nsh"
  446.   nomui:
  447.  
  448. ${MementoSectionEnd}
  449.  
  450. SectionGroup "Tools" SecTools
  451.  
  452. ${MementoSection} "Zip2Exe" SecToolsZ2E
  453.  
  454.   SetDetailsPrint textonly
  455.   DetailPrint "Installing Tools | Zip2Exe..."
  456.   SetDetailsPrint listonly
  457.  
  458.   SectionIn 1
  459.  
  460.   SetOutPath $INSTDIR\Bin
  461.   File ..\Bin\zip2exe.exe
  462.   SetOutPath $INSTDIR\Contrib\zip2exe
  463.   File ..\Contrib\zip2exe\Base.nsh
  464.   File ..\Contrib\zip2exe\Modern.nsh
  465.   File ..\Contrib\zip2exe\Classic.nsh
  466.  
  467. ${MementoSectionEnd}
  468.  
  469. SectionGroupEnd
  470.  
  471. SectionGroup "Plug-ins" SecPluginsPlugins
  472.  
  473. ${MementoSection} "Banner" SecPluginsBanner
  474.  
  475.   SetDetailsPrint textonly
  476.   DetailPrint "Installing Plug-ins | Banner..."
  477.   SetDetailsPrint listonly
  478.  
  479.   SectionIn 1
  480.  
  481.   SetOutPath $INSTDIR\Plugins
  482.   File ..\Plugins\Banner.dll
  483.   SetOutPath $INSTDIR\Docs\Banner
  484.   File ..\Docs\Banner\Readme.txt
  485.   SetOutPath $INSTDIR\Examples\Banner
  486.   File ..\Examples\Banner\Example.nsi
  487. ${MementoSectionEnd}
  488.  
  489. ${MementoSection} "Language DLL" SecPluginsLangDLL
  490.  
  491.   SetDetailsPrint textonly
  492.   DetailPrint "Installing Plug-ins | Language DLL..."
  493.   SetDetailsPrint listonly
  494.  
  495.   SectionIn 1
  496.   SetOutPath $INSTDIR\Plugins
  497.   File ..\Plugins\LangDLL.dll
  498. ${MementoSectionEnd}
  499.  
  500. ${MementoSection} "nsExec" SecPluginsnsExec
  501.  
  502.   SetDetailsPrint textonly
  503.   DetailPrint "Installing Plug-ins | nsExec..."
  504.   SetDetailsPrint listonly
  505.  
  506.   SectionIn 1
  507.  
  508.   SetOutPath $INSTDIR\Plugins
  509.   File ..\Plugins\nsExec.dll
  510.   SetOutPath $INSTDIR\Docs\nsExec
  511.   File ..\Docs\nsExec\nsExec.txt
  512.   SetOutPath $INSTDIR\Examples\nsExec
  513.   File ..\Examples\nsExec\test.nsi
  514. ${MementoSectionEnd}
  515.  
  516. ${MementoSection} "Splash" SecPluginsSplash
  517.  
  518.   SetDetailsPrint textonly
  519.   DetailPrint "Installing Plug-ins | Splash..."
  520.   SetDetailsPrint listonly
  521.  
  522.   SectionIn 1
  523.  
  524.   SetOutPath $INSTDIR\Plugins
  525.   File ..\Plugins\splash.dll
  526.   SetOutPath $INSTDIR\Docs\Splash
  527.   File ..\Docs\Splash\splash.txt
  528.   SetOutPath $INSTDIR\Examples\Splash
  529.   File ..\Examples\Splash\Example.nsi
  530. ${MementoSectionEnd}
  531.  
  532. ${MementoSection} "AdvSplash" SecPluginsSplashT
  533.  
  534.   SetDetailsPrint textonly
  535.   DetailPrint "Installing Plug-ins | AdvSplash..."
  536.   SetDetailsPrint listonly
  537.  
  538.   SectionIn 1
  539.  
  540.   SetOutPath $INSTDIR\Plugins
  541.   File ..\Plugins\advsplash.dll
  542.   SetOutPath $INSTDIR\Docs\AdvSplash
  543.   File ..\Docs\AdvSplash\advsplash.txt
  544.   SetOutPath $INSTDIR\Examples\AdvSplash
  545.   File ..\Examples\AdvSplash\Example.nsi
  546. ${MementoSectionEnd}
  547.  
  548. ${MementoSection} "BgImage" SecPluginsBgImage
  549.  
  550.   SetDetailsPrint textonly
  551.   DetailPrint "Installing Plug-ins | BgImage..."
  552.   SetDetailsPrint listonly
  553.  
  554.   SectionIn 1
  555.  
  556.   SetOutPath $INSTDIR\Plugins
  557.   File ..\Plugins\BgImage.dll
  558.   SetOutPath $INSTDIR\Docs\BgImage
  559.   File ..\Docs\BgImage\BgImage.txt
  560.   SetOutPath $INSTDIR\Examples\BgImage
  561.   File ..\Examples\BgImage\Example.nsi
  562. ${MementoSectionEnd}
  563.  
  564. ${MementoSection} "InstallOptions" SecPluginsIO
  565.  
  566.   SetDetailsPrint textonly
  567.   DetailPrint "Installing Plug-ins | InstallOptions..."
  568.   SetDetailsPrint listonly
  569.  
  570.   SectionIn 1
  571.  
  572.   SetOutPath $INSTDIR\Plugins
  573.   File ..\Plugins\InstallOptions.dll
  574.   SetOutPath $INSTDIR\Docs\InstallOptions
  575.   File ..\Docs\InstallOptions\Readme.html
  576.   File ..\Docs\InstallOptions\Changelog.txt
  577.   SetOutPath $INSTDIR\Examples\InstallOptions
  578.   File ..\Examples\InstallOptions\test.ini
  579.   File ..\Examples\InstallOptions\test.nsi
  580.   File ..\Examples\InstallOptions\testimgs.ini
  581.   File ..\Examples\InstallOptions\testimgs.nsi
  582.   File ..\Examples\InstallOptions\testlink.ini
  583.   File ..\Examples\InstallOptions\testlink.nsi
  584.   File ..\Examples\InstallOptions\testnotify.ini
  585.   File ..\Examples\InstallOptions\testnotify.nsi
  586. ${MementoSectionEnd}
  587.  
  588. ${MementoSection} "nsDialogs" SecPluginsDialogs
  589.  
  590.   SetDetailsPrint textonly
  591.   DetailPrint "Installing Plug-ins | nsDialogs..."
  592.   SetDetailsPrint listonly
  593.  
  594.   SectionIn 1
  595.  
  596.   SetOutPath $INSTDIR\Plugins
  597.   File ..\Plugins\nsDialogs.dll
  598.   SetOutPath $INSTDIR\Examples\nsDialogs
  599.   File ..\Examples\nsDialogs\example.nsi
  600.   File ..\Examples\nsDialogs\InstallOptions.nsi
  601.   File ..\Examples\nsDialogs\timer.nsi
  602.   File ..\Examples\nsDialogs\welcome.nsi
  603.   SetOutPath $INSTDIR\Include
  604.   File ..\Include\nsDialogs.nsh
  605.   SetOutPath $INSTDIR\Docs\nsDialogs
  606.   File ..\Docs\nsDialogs\Readme.html
  607. ${MementoSectionEnd}
  608.  
  609. ${MementoSection} "Math" SecPluginsMath
  610.  
  611.   SetDetailsPrint textonly
  612.   DetailPrint "Installing Plug-ins | Math..."
  613.   SetDetailsPrint listonly
  614.  
  615.   SectionIn 1
  616.  
  617.   SetOutPath $INSTDIR\Plugins
  618.   File ..\Plugins\Math.dll
  619.   SetOutPath $INSTDIR\Docs\Math
  620.   File ..\Docs\Math\Math.txt
  621.   SetOutPath $INSTDIR\Examples\Math
  622.   File ..\Examples\Math\math.nsi
  623.   File ..\Examples\Math\mathtest.txt
  624.   File ..\Examples\Math\mathtest.nsi
  625.   File ..\Examples\Math\mathtest.ini
  626.  
  627. ${MementoSectionEnd}
  628.  
  629. ${MementoSection} "NSISdl" SecPluginsNSISDL
  630.  
  631.   SetDetailsPrint textonly
  632.   DetailPrint "Installing Plug-ins | NSISdl..."
  633.   SetDetailsPrint listonly
  634.  
  635.   SectionIn 1
  636.  
  637.   SetOutPath $INSTDIR\Plugins
  638.   File ..\Plugins\nsisdl.dll
  639.   SetOutPath $INSTDIR\Docs\NSISdl
  640.   File ..\Docs\NSISdl\ReadMe.txt
  641.   File ..\Docs\NSISdl\License.txt
  642. ${MementoSectionEnd}
  643.  
  644. ${MementoSection} "System" SecPluginsSystem
  645.  
  646.   SetDetailsPrint textonly
  647.   DetailPrint "Installing Plug-ins | System..."
  648.   SetDetailsPrint listonly
  649.  
  650.   SectionIn 1
  651.  
  652.   SetOutPath $INSTDIR\Plugins
  653.   File ..\Plugins\System.dll
  654.   SetOutPath $INSTDIR\Docs\System
  655.   File ..\Docs\System\System.html
  656.   File ..\Docs\System\WhatsNew.txt
  657.   SetOutPath $INSTDIR\Examples\System
  658.   File ..\Examples\System\Resource.dll
  659.   File ..\Examples\System\SysFunc.nsh
  660.   File ..\Examples\System\System.nsh
  661.   File ..\Examples\System\System.nsi
  662. ${MementoSectionEnd}
  663.  
  664. ${MementoSection} "StartMenu" SecPluginsStartMenu
  665.  
  666.   SetDetailsPrint textonly
  667.   DetailPrint "Installing Plug-ins | StartMenu..."
  668.   SetDetailsPrint listonly
  669.  
  670.   SectionIn 1
  671.  
  672.   SetOutPath $INSTDIR\Plugins
  673.   File ..\Plugins\StartMenu.dll
  674.   SetOutPath $INSTDIR\Docs\StartMenu
  675.   File ..\Docs\StartMenu\Readme.txt
  676.   SetOutPath $INSTDIR\Examples\StartMenu
  677.   File ..\Examples\StartMenu\Example.nsi
  678. ${MementoSectionEnd}
  679.  
  680. ${MementoSection} "UserInfo" SecPluginsUserInfo
  681.  
  682.   SetDetailsPrint textonly
  683.   DetailPrint "Installing Plug-ins | UserInfo..."
  684.   SetDetailsPrint listonly
  685.  
  686.   SectionIn 1
  687.  
  688.   SetOutPath $INSTDIR\Plugins
  689.   File ..\Plugins\UserInfo.dll
  690.   SetOutPath $INSTDIR\Examples\UserInfo
  691.   File ..\Examples\UserInfo\UserInfo.nsi
  692. ${MementoSectionEnd}
  693.  
  694. ${MementoSection} "Dialer" SecPluginsDialer
  695.  
  696.   SetDetailsPrint textonly
  697.   DetailPrint "Installing Plug-ins | Dialer..."
  698.   SetDetailsPrint listonly
  699.  
  700.   SectionIn 1
  701.  
  702.   SetOutPath $INSTDIR\Plugins
  703.   File ..\Plugins\Dialer.dll
  704.   SetOutPath $INSTDIR\Docs\Dialer
  705.   File ..\Docs\Dialer\Dialer.txt
  706. ${MementoSectionEnd}
  707.  
  708. ${MementoSection} "VPatch" SecPluginsVPatch
  709.  
  710.   SetDetailsPrint textonly
  711.   DetailPrint "Installing Plug-ins | VPatch..."
  712.   SetDetailsPrint listonly
  713.  
  714.   SectionIn 1
  715.  
  716.   SetOutPath $INSTDIR\Plugins
  717.   File ..\Plugins\VPatch.dll
  718.   SetOutPath $INSTDIR\Examples\VPatch
  719.   File ..\Examples\VPatch\example.nsi
  720.   File ..\Examples\VPatch\oldfile.txt
  721.   File ..\Examples\VPatch\newfile.txt
  722.   File ..\Examples\VPatch\patch.pat
  723.   SetOutPath $INSTDIR\Docs\VPatch
  724.   File ..\Docs\VPatch\Readme.html
  725.   SetOutPath $INSTDIR\Bin
  726.   File ..\Bin\GenPat.exe
  727.   SetOutPath $INSTDIR\Include
  728.   File ..\Include\VPatchLib.nsh
  729. ${MementoSectionEnd}
  730.  
  731. ${MementoSectionDone}
  732.  
  733. SectionGroupEnd
  734.  
  735. Section -post
  736.  
  737.   ; When Modern UI is installed:
  738.   ; * Always install the English language file
  739.   ; * Always install default icons / bitmaps
  740.  
  741.   !insertmacro SectionFlagIsSet ${SecInterfacesModernUI} ${SF_SELECTED} mui nomui
  742.  
  743.     mui:
  744.  
  745.     SetDetailsPrint textonly
  746.     DetailPrint "Configuring Modern UI..."
  747.     SetDetailsPrint listonly
  748.  
  749.     !insertmacro SectionFlagIsSet ${SecLangFiles} ${SF_SELECTED} langfiles nolangfiles
  750.  
  751.       nolangfiles:
  752.  
  753.       SetOutPath "$INSTDIR\Contrib\Language files"
  754.       File "..\Contrib\Language files\English.nlf"
  755.       SetOutPath "$INSTDIR\Contrib\Language files"
  756.       File "..\Contrib\Language files\English.nsh"
  757.  
  758.     langfiles:
  759.  
  760.     !insertmacro SectionFlagIsSet ${SecGraphics} ${SF_SELECTED} graphics nographics
  761.  
  762.       nographics:
  763.  
  764.       SetOutPath $INSTDIR\Contrib\Graphics
  765.       SetOutPath $INSTDIR\Contrib\Graphics\Checks
  766.       File "..\Contrib\Graphics\Checks\modern.bmp"
  767.       SetOutPath $INSTDIR\Contrib\Graphics\Icons
  768.       File "..\Contrib\Graphics\Icons\modern-install.ico"
  769.       File "..\Contrib\Graphics\Icons\modern-uninstall.ico"
  770.       SetOutPath $INSTDIR\Contrib\Graphics\Header
  771.       File "..\Contrib\Graphics\Header\nsis.bmp"
  772.       SetOutPath $INSTDIR\Contrib\Graphics\Wizard
  773.       File "..\Contrib\Graphics\Wizard\win.bmp"
  774.  
  775.     graphics:
  776.  
  777.   nomui:
  778.  
  779.   SetDetailsPrint textonly
  780.   DetailPrint "Creating Registry Keys..."
  781.   SetDetailsPrint listonly
  782.  
  783.   SetOutPath $INSTDIR
  784.  
  785.   WriteRegStr HKLM "Software\NSIS" "" $INSTDIR
  786. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  787.   WriteRegDword HKLM "Software\NSIS" "VersionMajor" "${VER_MAJOR}"
  788.   WriteRegDword HKLM "Software\NSIS" "VersionMinor" "${VER_MINOR}"
  789.   WriteRegDword HKLM "Software\NSIS" "VersionRevision" "${VER_REVISION}"
  790.   WriteRegDword HKLM "Software\NSIS" "VersionBuild" "${VER_BUILD}"
  791. !endif
  792.  
  793.   WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "UninstallString" '"$INSTDIR\uninst-nsis.exe"'
  794.   WriteRegExpandStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "InstallLocation" "$INSTDIR"
  795.   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "DisplayName" "Nullsoft Install System"
  796.   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "DisplayIcon" "$INSTDIR\NSIS.exe,0"
  797.   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "DisplayVersion" "${VERSION}"
  798. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  799.   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "VersionMajor" "${VER_MAJOR}"
  800.   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "VersionMinor" "${VER_MINOR}.${VER_REVISION}"
  801. !endif
  802.   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "URLInfoAbout" "http://nsis.sourceforge.net/"
  803.   WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "HelpLink" "http://nsis.sourceforge.net/Support"
  804.   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "NoModify" "1"
  805.   WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "NoRepair" "1"
  806.  
  807.   WriteUninstaller $INSTDIR\uninst-nsis.exe
  808.  
  809.   ${MementoSectionSave}
  810.  
  811.   SetDetailsPrint both
  812.  
  813. SectionEnd
  814.  
  815. ;--------------------------------
  816. ;Descriptions
  817.  
  818. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  819.   !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "The core files required to use NSIS (compiler etc.)"
  820.   !insertmacro MUI_DESCRIPTION_TEXT ${SecExample} "Example installation scripts that show you how to use NSIS"
  821.   !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} "Adds icons to your start menu and your desktop for easy access"
  822.   !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfaces} "User interface designs that can be used to change the installer look and feel"
  823.   !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesModernUI} "A modern user interface like the wizards of recent Windows versions"
  824.   !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesDefaultUI} "The default NSIS user interface which you can customize to make your own UI"
  825.   !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesTinyUI} "A tiny version of the default user interface"
  826.   !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} "Tools that help you with NSIS development"
  827.   !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsZ2E} "A utility that converts a ZIP file to a NSIS installer"
  828.   !insertmacro MUI_DESCRIPTION_TEXT ${SecGraphics} "Icons, checkbox images and other graphics"
  829.   !insertmacro MUI_DESCRIPTION_TEXT ${SecLangFiles} "Language files used to support multiple languages in an installer"
  830.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsPlugins} "Useful plugins that extend NSIS's functionality"
  831.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBanner} "Plugin that lets you show a banner before installation starts"
  832.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsLangDLL} "Plugin that lets you add a language select dialog to your installer"
  833.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsnsExec} "Plugin that executes console programs and prints its output in the NSIS log window or hides it"
  834.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplash} "Splash screen add-on that lets you add a splash screen to an installer"
  835.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplashT} "Splash screen add-on with transparency support that lets you add a splash screen to an installer"
  836.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSystem} "Plugin that lets you call Win32 API or external DLLs"
  837.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsMath} "Plugin that lets you evaluate complicated mathematical expressions"
  838.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialer} "Plugin that provides internet connection functions"
  839.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsIO} "Plugin that lets you add custom pages to an installer"
  840.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialogs} "Plugin that lets you add custom pages to an installer"
  841.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsStartMenu} "Plugin that lets the user select the start menu folder"
  842.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBgImage} "Plugin that lets you show a persistent background image plugin and play sounds"
  843.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsUserInfo} "Plugin that that gives you the user name and the user account type"
  844.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsNSISDL} "Plugin that lets you create a web based installer"
  845.   !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsVPatch} "Plugin that lets you create patches to upgrade older files"
  846. !insertmacro MUI_FUNCTION_DESCRIPTION_END
  847.  
  848. ;--------------------------------
  849. ;Installer Functions
  850.  
  851. Function .onInit
  852.  
  853.   ${MementoSectionRestore}
  854.  
  855. FunctionEnd
  856.  
  857. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  858.  
  859. Var ReinstallPageCheck
  860.  
  861. Function PageReinstall
  862.  
  863.   ReadRegStr $R0 HKLM "Software\NSIS" ""
  864.  
  865.   ${If} $R0 == ""
  866.     Abort
  867.   ${EndIf}
  868.  
  869.   ReadRegDWORD $R0 HKLM "Software\NSIS" "VersionMajor"
  870.   ReadRegDWORD $R1 HKLM "Software\NSIS" "VersionMinor"
  871.   ReadRegDWORD $R2 HKLM "Software\NSIS" "VersionRevision"
  872.   ReadRegDWORD $R3 HKLM "Software\NSIS" "VersionBuild"
  873.   StrCpy $R0 $R0.$R1.$R2.$R3
  874.  
  875.   ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
  876.   ${If} $R0 == 0
  877.     StrCpy $R1 "NSIS ${VERSION} is already installed. Select the operation you want to perform and click Next to continue."
  878.     StrCpy $R2 "Add/Reinstall components"
  879.     StrCpy $R3 "Uninstall NSIS"
  880.     !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
  881.     StrCpy $R0 "2"
  882.   ${ElseIf} $R0 == 1
  883.     StrCpy $R1 "An older version of NSIS is installed on your system. It's recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
  884.     StrCpy $R2 "Uninstall before installing"
  885.     StrCpy $R3 "Do not uninstall"
  886.     !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS."
  887.     StrCpy $R0 "1"
  888.   ${ElseIf} $R0 == 2
  889.     StrCpy $R1 "A newer version of NSIS is already installed! It is not recommended that you install an older version. If you really want to install this older version, it's better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
  890.     StrCpy $R2 "Uninstall before installing"
  891.     StrCpy $R3 "Do not uninstall"
  892.     !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS."
  893.     StrCpy $R0 "1"
  894.   ${Else}
  895.     Abort
  896.   ${EndIf}
  897.  
  898.   nsDialogs::Create 1018
  899.   Pop $R4
  900.  
  901.   ${NSD_CreateLabel} 0 0 100% 24u $R1
  902.   Pop $R1
  903.  
  904.   ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
  905.   Pop $R2
  906.   ${NSD_OnClick} $R2 PageReinstallUpdateSelection
  907.  
  908.   ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
  909.   Pop $R3
  910.   ${NSD_OnClick} $R3 PageReinstallUpdateSelection
  911.  
  912.   ${If} $ReinstallPageCheck != 2
  913.     SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
  914.   ${Else}
  915.     SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
  916.   ${EndIf}
  917.  
  918.   ${NSD_SetFocus} $R2
  919.  
  920.   nsDialogs::Show
  921.  
  922. FunctionEnd
  923.  
  924. Function PageReinstallUpdateSelection
  925.  
  926.   Pop $R1
  927.  
  928.   ${NSD_GetState} $R2 $R1
  929.  
  930.   ${If} $R1 == ${BST_CHECKED}
  931.     StrCpy $ReinstallPageCheck 1
  932.   ${Else}
  933.     StrCpy $ReinstallPageCheck 2
  934.   ${EndIf}
  935.  
  936. FunctionEnd
  937.  
  938. Function PageLeaveReinstall
  939.  
  940.   ${NSD_GetState} $R2 $R1
  941.  
  942.   StrCmp $R0 "1" 0 +2
  943.     StrCmp $R1 "1" reinst_uninstall reinst_done
  944.  
  945.   StrCmp $R0 "2" 0 +3
  946.     StrCmp $R1 "1" reinst_done reinst_uninstall
  947.  
  948.   reinst_uninstall:
  949.   ReadRegStr $R1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS" "UninstallString"
  950.  
  951.   ;Run uninstaller
  952.   HideWindow
  953.  
  954.     ClearErrors
  955.     ExecWait '$R1 _?=$INSTDIR'
  956.  
  957.     IfErrors no_remove_uninstaller
  958.     IfFileExists "$INSTDIR\makensis.exe" no_remove_uninstaller
  959.  
  960.       Delete $R1
  961.       RMDir $INSTDIR
  962.  
  963.     no_remove_uninstaller:
  964.  
  965.   StrCmp $R0 "2" 0 +2
  966.     Quit
  967.  
  968.   BringToFront
  969.  
  970.   reinst_done:
  971.  
  972. FunctionEnd
  973.  
  974. !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  975.  
  976. Function ShowReleaseNotes
  977.   ${If} ${FileExists} $WINDIR\hh.exe
  978.     StrCpy $0 $WINDIR\hh.exe
  979.     Exec '"$0" mk:@MSITStore:$INSTDIR\NSIS.chm::/SectionF.1.html'
  980.   ${Else}
  981.     SearchPath $0 hh.exe
  982.     ${If} ${FileExists} $0
  983.       Exec '"$0" mk:@MSITStore:$INSTDIR\NSIS.chm::/SectionF.1.html'
  984.     ${Else}
  985.       ExecShell "open" "http://nsis.sourceforge.net/Docs/AppendixF.html#F.1"
  986.     ${EndIf}
  987.   ${EndIf}
  988. FunctionEnd
  989.  
  990. ;--------------------------------
  991. ;Uninstaller Section
  992.  
  993. Section Uninstall
  994.  
  995.   SetDetailsPrint textonly
  996.   DetailPrint "Uninstalling NSI Development Shell Extensions..."
  997.   SetDetailsPrint listonly
  998.  
  999.   IfFileExists $INSTDIR\makensis.exe nsis_installed
  1000.     MessageBox MB_YESNO "It does not appear that NSIS is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES nsis_installed
  1001.     Abort "Uninstall aborted by user"
  1002.   nsis_installed:
  1003.  
  1004.   SetDetailsPrint textonly
  1005.   DetailPrint "Deleting Registry Keys..."
  1006.   SetDetailsPrint listonly
  1007.  
  1008.   ReadRegStr $R0 HKCR ".nsi" ""
  1009.   StrCmp $R0 "NSIS.Script" 0 +2
  1010.     DeleteRegKey HKCR ".nsi"
  1011.  
  1012.   ReadRegStr $R0 HKCR ".nsh" ""
  1013.   StrCmp $R0 "NSIS.Header" 0 +2
  1014.     DeleteRegKey HKCR ".nsh"
  1015.  
  1016.   DeleteRegKey HKCR "NSIS.Script"
  1017.   DeleteRegKey HKCR "NSIS.Header"
  1018.  
  1019.   System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
  1020.  
  1021.   DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS"
  1022.   DeleteRegKey HKLM "Software\NSIS"
  1023.  
  1024.   SetDetailsPrint textonly
  1025.   DetailPrint "Deleting Files..."
  1026.   SetDetailsPrint listonly
  1027.  
  1028.   Delete $SMPROGRAMS\NSIS.lnk
  1029.   Delete $DESKTOP\NSIS.lnk
  1030.   Delete $INSTDIR\makensis.exe
  1031.   Delete $INSTDIR\makensisw.exe
  1032.   Delete $INSTDIR\NSIS.exe
  1033.   Delete $INSTDIR\license.txt
  1034.   Delete $INSTDIR\COPYING
  1035.   Delete $INSTDIR\uninst-nsis.exe
  1036.   Delete $INSTDIR\nsisconf.nsi
  1037.   Delete $INSTDIR\nsisconf.nsh
  1038.   Delete $INSTDIR\NSIS.chm
  1039.   RMDir /r $INSTDIR\Bin
  1040.   RMDir /r $INSTDIR\Contrib
  1041.   RMDir /r $INSTDIR\Docs
  1042.   RMDir /r $INSTDIR\Examples
  1043.   RMDir /r $INSTDIR\Include
  1044.   RMDir /r $INSTDIR\Menu
  1045.   RMDir /r $INSTDIR\Plugins
  1046.   RMDir /r $INSTDIR\Stubs
  1047.   RMDir $INSTDIR
  1048.  
  1049.   SetDetailsPrint both
  1050.  
  1051. SectionEnd
  1052.