makensis.nsi 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  1. ;NSIS Setup Script
  2. ;--------------------------------
  3. !pragma warning error all
  4. !pragma warning warning 7010 ; File /NonFatal
  5. !ifdef VER_MAJOR & VER_MINOR
  6. !define /ifndef VER_REVISION 0
  7. !define /ifndef VER_BUILD 0
  8. !endif
  9. !define /ifndef VERSION 'anonymous-build'
  10. ;--------------------------------
  11. ;Configuration
  12. !if ${NSIS_PTR_SIZE} > 4
  13. !define BITS 64
  14. !define NAMESUFFIX " (64 bit)"
  15. !else
  16. !define BITS 32
  17. !define NAMESUFFIX ""
  18. !endif
  19. !ifndef OUTFILE
  20. !define OUTFILE "..\nsis${BITS}-${VERSION}-setup.exe"
  21. !searchreplace OUTFILE "${OUTFILE}" nsis32 nsis
  22. !endif
  23. OutFile "${OUTFILE}"
  24. Unicode true
  25. SetCompressor /SOLID lzma
  26. InstType "Full"
  27. InstType "Lite"
  28. InstType "Minimal"
  29. InstallDir $PROGRAMFILES${BITS}\NSIS
  30. InstallDirRegKey HKLM Software\NSIS ""
  31. RequestExecutionLevel admin
  32. ;--------------------------------
  33. ;Header Files
  34. !include "MUI2.nsh"
  35. !include "Sections.nsh"
  36. !include "LogicLib.nsh"
  37. !include "Memento.nsh"
  38. !include "WordFunc.nsh"
  39. !include "Util.nsh"
  40. !include "Integration.nsh"
  41. ;--------------------------------
  42. ;Configuration
  43. ;Names
  44. Name "NSIS"
  45. Caption "NSIS ${VERSION}${NAMESUFFIX} Setup"
  46. !define REG_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\NSIS"
  47. ;Memento Settings
  48. !define MEMENTO_REGISTRY_ROOT HKLM
  49. !define MEMENTO_REGISTRY_KEY "${REG_UNINST_KEY}"
  50. ;Interface Settings
  51. !define MUI_ABORTWARNING
  52. !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico"
  53. !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
  54. !define MUI_HEADERIMAGE
  55. !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\nsis3-branding.bmp"
  56. !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\nsis3-branding.bmp"
  57. !define MUI_COMPONENTSPAGE_SMALLDESC
  58. ;Pages
  59. !define MUI_WELCOMEPAGE_TITLE "Welcome to the NSIS ${VERSION} Setup Wizard"
  60. !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 includes a Modern User Interface, LZMA compression, support for multiple languages and an easy plug-in system.$\r$\n$\r$\n$_CLICK"
  61. !insertmacro MUI_PAGE_WELCOME
  62. !insertmacro MUI_PAGE_LICENSE "..\COPYING"
  63. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  64. Page custom PageReinstall PageLeaveReinstall
  65. !endif
  66. !insertmacro MUI_PAGE_COMPONENTS
  67. !insertmacro MUI_PAGE_DIRECTORY
  68. !insertmacro MUI_PAGE_INSTFILES
  69. !define MUI_FINISHPAGE_LINK "Visit the NSIS site for the latest news, FAQs and support"
  70. !define MUI_FINISHPAGE_LINK_LOCATION "http://nsis.sf.net/"
  71. !define MUI_FINISHPAGE_RUN "$INSTDIR\NSIS.exe"
  72. !define MUI_FINISHPAGE_NOREBOOTSUPPORT
  73. !define MUI_FINISHPAGE_SHOWREADME
  74. !define MUI_FINISHPAGE_SHOWREADME_TEXT "Show release notes"
  75. !define MUI_FINISHPAGE_SHOWREADME_FUNCTION ShowReleaseNotes
  76. !insertmacro MUI_PAGE_FINISH
  77. !insertmacro MUI_UNPAGE_CONFIRM
  78. !insertmacro MUI_UNPAGE_INSTFILES
  79. ;--------------------------------
  80. ;Languages
  81. !insertmacro MUI_LANGUAGE "English"
  82. ;--------------------------------
  83. ;Version information
  84. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  85. VIProductVersion ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD}
  86. VIAddVersionKey "FileVersion" "${VERSION}"
  87. VIAddVersionKey "FileDescription" "NSIS Setup"
  88. VIAddVersionKey "LegalCopyright" "http://nsis.sf.net/License"
  89. !endif
  90. ;--------------------------------
  91. ;Installer Sections
  92. !macro InstallPlugin pi
  93. !if ${BITS} >= 64
  94. File "/oname=$InstDir\Plugins\amd64-unicode\${pi}.dll" ..\Plugins\amd64-unicode\${pi}.dll
  95. !else
  96. File "/oname=$InstDir\Plugins\x86-ansi\${pi}.dll" ..\Plugins\x86-ansi\${pi}.dll
  97. File "/oname=$InstDir\Plugins\x86-unicode\${pi}.dll" ..\Plugins\x86-unicode\${pi}.dll
  98. !endif
  99. !macroend
  100. !macro InstallStub stub
  101. !if ${BITS} >= 64
  102. File ..\Stubs\${stub}-amd64-unicode
  103. !else
  104. File ..\Stubs\${stub}-x86-ansi
  105. File ..\Stubs\${stub}-x86-unicode
  106. !endif
  107. !macroend
  108. ${MementoSection} "NSIS Core Files (required)" SecCore
  109. SetDetailsPrint textonly
  110. DetailPrint "Installing NSIS Core Files..."
  111. SetDetailsPrint listonly
  112. SectionIn 1 2 3 RO
  113. SetOutPath $INSTDIR
  114. IfFileExists $INSTDIR\nsisconf.nsi "" +2
  115. Rename $INSTDIR\nsisconf.nsi $INSTDIR\nsisconf.nsh
  116. SetOverwrite off
  117. File ..\nsisconf.nsh
  118. SetOverwrite on
  119. File ..\makensis.exe
  120. File ..\makensisw.exe
  121. File ..\COPYING
  122. File ..\NSIS.chm
  123. !pragma verifychm "..\NSIS.chm"
  124. !if /FileExists "..\NSIS.exe"
  125. !if /FileExists "..\NSIS.exe.manifest"
  126. File "..\NSIS.exe.manifest"
  127. !endif
  128. !else
  129. !define NO_NSISMENU_HTML 1
  130. !makensis '-v2 "NSISMenu.nsi" "-XOutFile ..\NSIS.exe"' = 0
  131. !endif
  132. File ..\NSIS.exe
  133. SetOutPath $INSTDIR\Bin
  134. File ..\Bin\makensis.exe
  135. !ifdef USE_NEW_ZLIB
  136. File ..\Bin\zlib.dll
  137. !else
  138. File ..\Bin\zlib1.dll
  139. !endif
  140. SetOutPath $INSTDIR\Stubs
  141. File ..\Stubs\uninst
  142. !insertmacro InstallStub bzip2
  143. !insertmacro InstallStub bzip2_solid
  144. !insertmacro InstallStub lzma
  145. !insertmacro InstallStub lzma_solid
  146. !insertmacro InstallStub zlib
  147. !insertmacro InstallStub zlib_solid
  148. SetOutPath $INSTDIR\Include
  149. File ..\Include\WinMessages.nsh
  150. File ..\Include\Sections.nsh
  151. File ..\Include\Library.nsh
  152. File ..\Include\UpgradeDLL.nsh
  153. File ..\Include\LogicLib.nsh
  154. File ..\Include\StrFunc.nsh
  155. File ..\Include\Colors.nsh
  156. File ..\Include\FileFunc.nsh
  157. File ..\Include\TextFunc.nsh
  158. File ..\Include\WordFunc.nsh
  159. File ..\Include\WinVer.nsh
  160. File ..\Include\x64.nsh
  161. File ..\Include\Memento.nsh
  162. File ..\Include\LangFile.nsh
  163. File ..\Include\InstallOptions.nsh
  164. File ..\Include\MultiUser.nsh
  165. File ..\Include\VB6RunTime.nsh
  166. File ..\Include\Util.nsh
  167. File ..\Include\Integration.nsh
  168. File ..\Include\WinCore.nsh
  169. SetOutPath $INSTDIR\Include\Win
  170. File ..\Include\Win\WinDef.nsh
  171. File ..\Include\Win\WinError.nsh
  172. File ..\Include\Win\WinNT.nsh
  173. File ..\Include\Win\WinUser.nsh
  174. File ..\Include\Win\COM.nsh
  175. File ..\Include\Win\Propkey.nsh
  176. SetOutPath $INSTDIR\Docs\StrFunc
  177. File ..\Docs\StrFunc\StrFunc.txt
  178. SetOutPath $INSTDIR\Docs\MultiUser
  179. File ..\Docs\MultiUser\Readme.html
  180. SetOutPath $INSTDIR\Docs\makensisw
  181. File ..\Docs\makensisw\*.txt
  182. !ifndef NO_NSISMENU_HTML
  183. SetOutPath $INSTDIR\Menu
  184. File ..\Menu\*.html
  185. SetOutPath $INSTDIR\Menu\images
  186. File ..\Menu\images\header.gif
  187. File ..\Menu\images\line.gif
  188. File ..\Menu\images\site.gif
  189. !endif
  190. Delete $INSTDIR\makensis.htm
  191. Delete $INSTDIR\Docs\*.html
  192. Delete $INSTDIR\Docs\style.css
  193. RMDir $INSTDIR\Docs
  194. SetOutPath $INSTDIR\Bin
  195. !if ${BITS} >= 64
  196. File /NonFatal ..\Bin\RegTool-x86.bin
  197. File ..\Bin\RegTool-amd64.bin
  198. !else
  199. File ..\Bin\RegTool-x86.bin
  200. !if /FileExists ..\Bin\RegTool-amd64.bin ; It is unlikely that this exists, avoid the /NonFatal warning.
  201. File ..\Bin\RegTool-amd64.bin
  202. !endif
  203. !endif
  204. CreateDirectory $INSTDIR\Plugins\x86-ansi
  205. CreateDirectory $INSTDIR\Plugins\x86-unicode
  206. !if ${BITS} >= 64
  207. CreateDirectory $INSTDIR\Plugins\amd64-unicode
  208. !endif
  209. !insertmacro InstallPlugin TypeLib
  210. ReadRegStr $R0 HKCR ".nsi" ""
  211. StrCmp $R0 "NSISFile" 0 +2
  212. DeleteRegKey HKCR "NSISFile"
  213. WriteRegStr HKCR ".nsi" "" "NSIS.Script"
  214. WriteRegStr HKCR ".nsi" "PerceivedType" "text"
  215. WriteRegStr HKCR "NSIS.Script" "" "NSIS Script File"
  216. WriteRegStr HKCR "NSIS.Script\DefaultIcon" "" "$INSTDIR\makensisw.exe,1"
  217. ReadRegStr $R0 HKCR "NSIS.Script\shell\open\command" ""
  218. ${If} $R0 == ""
  219. WriteRegStr HKCR "NSIS.Script\shell" "" "open"
  220. WriteRegStr HKCR "NSIS.Script\shell\open\command" "" 'notepad.exe "%1"'
  221. ${EndIf}
  222. WriteRegStr HKCR "NSIS.Script\shell\compile" "" "Compile NSIS Script"
  223. WriteRegStr HKCR "NSIS.Script\shell\compile\command" "" '"$INSTDIR\makensisw.exe" "%1"'
  224. WriteRegStr HKCR "NSIS.Script\shell\compile-compressor" "" "Compile NSIS Script (Choose Compressor)"
  225. WriteRegStr HKCR "NSIS.Script\shell\compile-compressor\command" "" '"$INSTDIR\makensisw.exe" /ChooseCompressor "%1"'
  226. ReadRegStr $R0 HKCR ".nsh" ""
  227. StrCmp $R0 "NSHFile" 0 +2
  228. DeleteRegKey HKCR "NSHFile"
  229. WriteRegStr HKCR ".nsh" "" "NSIS.Header"
  230. WriteRegStr HKCR ".nsh" "PerceivedType" "text"
  231. WriteRegStr HKCR "NSIS.Header" "" "NSIS Header File"
  232. WriteRegStr HKCR "NSIS.Header\DefaultIcon" "" "$INSTDIR\makensisw.exe,2"
  233. ReadRegStr $R0 HKCR "NSIS.Header\shell\open\command" ""
  234. ${If} $R0 == ""
  235. WriteRegStr HKCR "NSIS.Header\shell" "" "open"
  236. WriteRegStr HKCR "NSIS.Header\shell\open\command" "" 'notepad.exe "%1"'
  237. ${EndIf}
  238. ${NotifyShell_AssocChanged}
  239. ${MementoSectionEnd}
  240. ${MementoSection} "Script Examples" SecExample
  241. SetDetailsPrint textonly
  242. DetailPrint "Installing Script Examples..."
  243. SetDetailsPrint listonly
  244. SectionIn 1 2
  245. SetOutPath $INSTDIR\Examples
  246. File ..\Examples\makensis.nsi
  247. File ..\Examples\example1.nsi
  248. File ..\Examples\example2.nsi
  249. File ..\Examples\AppGen.nsi
  250. File ..\Examples\install-per-user.nsi
  251. File ..\Examples\install-shared.nsi
  252. File ..\Examples\waplugin.nsi
  253. File ..\Examples\bigtest.nsi
  254. File ..\Examples\primes.nsi
  255. File ..\Examples\rtest.nsi
  256. File ..\Examples\gfx.nsi
  257. File ..\Examples\one-section.nsi
  258. File ..\Examples\languages.nsi
  259. File ..\Examples\Library.nsi
  260. File ..\Examples\VersionInfo.nsi
  261. File ..\Examples\LogicLib.nsi
  262. File ..\Examples\silent.nsi
  263. File ..\Examples\StrFunc.nsi
  264. File ..\Examples\FileFunc.nsi
  265. File ..\Examples\FileFunc.ini
  266. File ..\Examples\FileFuncTest.nsi
  267. File ..\Examples\TextFunc.nsi
  268. File ..\Examples\TextFunc.ini
  269. File ..\Examples\TextFuncTest.nsi
  270. File ..\Examples\WordFunc.nsi
  271. File ..\Examples\WordFunc.ini
  272. File ..\Examples\WordFuncTest.nsi
  273. File ..\Examples\Memento.nsi
  274. File ..\Examples\unicode.nsi
  275. File ..\Examples\NSISMenu.nsi
  276. SetOutPath $INSTDIR\Examples\Plugin
  277. File ..\Examples\Plugin\exdll.c
  278. File ..\Examples\Plugin\exdll.dpr
  279. File ..\Examples\Plugin\exdll.dsp
  280. File ..\Examples\Plugin\exdll.dsw
  281. File ..\Examples\Plugin\exdll_with_unit.dpr
  282. File ..\Examples\Plugin\exdll-vs2008.sln
  283. File ..\Examples\Plugin\exdll-vs2008.vcproj
  284. File ..\Examples\Plugin\extdll.inc
  285. File ..\Examples\Plugin\nsis.pas
  286. SetOutPath $INSTDIR\Examples\Plugin\nsis
  287. File ..\Examples\Plugin\nsis\pluginapi.h
  288. File /nonfatal ..\Examples\Plugin\nsis\pluginapi*.lib
  289. File ..\Examples\Plugin\nsis\api.h
  290. File ..\Examples\Plugin\nsis\nsis_tchar.h
  291. ${MementoSectionEnd}
  292. ${MementoSection} "Start Menu Shortcut" SecShortcuts
  293. SetDetailsPrint textonly
  294. DetailPrint "Installing Start Menu shortcut..."
  295. SetDetailsPrint listonly
  296. SectionIn 1 2
  297. SetOutPath $INSTDIR
  298. CreateShortcut "$SMPROGRAMS\NSIS${NAMESUFFIX}.lnk" "$INSTDIR\NSIS.exe"
  299. ${MementoSectionEnd}
  300. SectionGroup "User Interfaces" SecInterfaces
  301. ${MementoSection} "Modern User Interface" SecInterfacesModernUI
  302. SetDetailsPrint textonly
  303. DetailPrint "Installing User Interfaces | Modern User Interface..."
  304. SetDetailsPrint listonly
  305. SectionIn 1 2
  306. SetOutPath "$INSTDIR\Examples\Modern UI"
  307. File "..\Examples\Modern UI\Basic.nsi"
  308. File "..\Examples\Modern UI\HeaderBitmap.nsi"
  309. File "..\Examples\Modern UI\MultiLanguage.nsi"
  310. File "..\Examples\Modern UI\StartMenu.nsi"
  311. File "..\Examples\Modern UI\WelcomeFinish.nsi"
  312. SetOutPath "$INSTDIR\Contrib\Modern UI"
  313. File "..\Contrib\Modern UI\System.nsh"
  314. File "..\Contrib\Modern UI\ioSpecial.ini"
  315. SetOutPath "$INSTDIR\Docs\Modern UI"
  316. File "..\Docs\Modern UI\Readme.html"
  317. File "..\Docs\Modern UI\Changelog.txt"
  318. File "..\Docs\Modern UI\License.txt"
  319. SetOutPath "$INSTDIR\Docs\Modern UI\images"
  320. File "..\Docs\Modern UI\images\header.gif"
  321. File "..\Docs\Modern UI\images\screen1.png"
  322. File "..\Docs\Modern UI\images\screen2.png"
  323. File "..\Docs\Modern UI\images\open.gif"
  324. File "..\Docs\Modern UI\images\closed.gif"
  325. SetOutPath $INSTDIR\Contrib\UIs
  326. File "..\Contrib\UIs\modern.exe"
  327. File "..\Contrib\UIs\modern_headerbmp.exe"
  328. File "..\Contrib\UIs\modern_headerbmpr.exe"
  329. File "..\Contrib\UIs\modern_nodesc.exe"
  330. File "..\Contrib\UIs\modern_smalldesc.exe"
  331. SetOutPath $INSTDIR\Include
  332. File "..\Include\MUI.nsh"
  333. SetOutPath "$INSTDIR\Contrib\Modern UI 2"
  334. File "..\Contrib\Modern UI 2\Deprecated.nsh"
  335. File "..\Contrib\Modern UI 2\Interface.nsh"
  336. File "..\Contrib\Modern UI 2\Localization.nsh"
  337. File "..\Contrib\Modern UI 2\MUI2.nsh"
  338. File "..\Contrib\Modern UI 2\Pages.nsh"
  339. SetOutPath "$INSTDIR\Contrib\Modern UI 2\Pages"
  340. File "..\Contrib\Modern UI 2\Pages\Components.nsh"
  341. File "..\Contrib\Modern UI 2\Pages\Directory.nsh"
  342. File "..\Contrib\Modern UI 2\Pages\Finish.nsh"
  343. File "..\Contrib\Modern UI 2\Pages\InstallFiles.nsh"
  344. File "..\Contrib\Modern UI 2\Pages\License.nsh"
  345. File "..\Contrib\Modern UI 2\Pages\StartMenu.nsh"
  346. File "..\Contrib\Modern UI 2\Pages\UninstallConfirm.nsh"
  347. File "..\Contrib\Modern UI 2\Pages\Welcome.nsh"
  348. SetOutPath "$INSTDIR\Docs\Modern UI 2"
  349. File "..\Docs\Modern UI 2\Readme.html"
  350. File "..\Docs\Modern UI 2\License.txt"
  351. SetOutPath "$INSTDIR\Docs\Modern UI 2\images"
  352. File "..\Docs\Modern UI 2\images\header.gif"
  353. File "..\Docs\Modern UI 2\images\screen1.png"
  354. File "..\Docs\Modern UI 2\images\screen2.png"
  355. File "..\Docs\Modern UI 2\images\open.gif"
  356. File "..\Docs\Modern UI 2\images\closed.gif"
  357. SetOutPath $INSTDIR\Include
  358. File "..\Include\MUI2.nsh"
  359. ${MementoSectionEnd}
  360. ${MementoSection} "Default User Interface" SecInterfacesDefaultUI
  361. SetDetailsPrint textonly
  362. DetailPrint "Installing User Interfaces | Default User Interface..."
  363. SetDetailsPrint listonly
  364. SectionIn 1
  365. SetOutPath "$INSTDIR\Contrib\UIs"
  366. File "..\Contrib\UIs\default.exe"
  367. ${MementoSectionEnd}
  368. ${MementoSection} "Tiny User Interface" SecInterfacesTinyUI
  369. SetDetailsPrint textonly
  370. DetailPrint "Installing User Interfaces | Tiny User Interface..."
  371. SetDetailsPrint listonly
  372. SectionIn 1
  373. SetOutPath "$INSTDIR\Contrib\UIs"
  374. File "..\Contrib\UIs\sdbarker_tiny.exe"
  375. ${MementoSectionEnd}
  376. SectionGroupEnd
  377. ${MementoSection} "Graphics" SecGraphics
  378. SetDetailsPrint textonly
  379. DetailPrint "Installing Graphics..."
  380. SetDetailsPrint listonly
  381. SectionIn 1
  382. Delete $INSTDIR\Contrib\Icons\*.ico
  383. Delete $INSTDIR\Contrib\Icons\*.bmp
  384. RMDir $INSTDIR\Contrib\Icons
  385. SetOutPath $INSTDIR\Contrib\Graphics
  386. File /r "..\Contrib\Graphics\*.ico"
  387. File /r "..\Contrib\Graphics\*.bmp"
  388. ${MementoSectionEnd}
  389. ${MementoSection} "Language Files" SecLangFiles
  390. SetDetailsPrint textonly
  391. DetailPrint "Installing Language Files..."
  392. SetDetailsPrint listonly
  393. SectionIn 1
  394. SetOutPath "$INSTDIR\Contrib\Language files"
  395. File "..\Contrib\Language files\*.nlf"
  396. SetOutPath $INSTDIR\Bin
  397. File ..\Bin\MakeLangID.exe
  398. ${If} ${SectionIsSelected} ${SecInterfacesModernUI}
  399. SetOutPath "$INSTDIR\Contrib\Language files"
  400. File "..\Contrib\Language files\*.nsh"
  401. ${EndIf}
  402. ${MementoSectionEnd}
  403. SectionGroup "Tools" SecTools
  404. ${MementoSection} "Zip2Exe" SecToolsZ2E
  405. SetDetailsPrint textonly
  406. DetailPrint "Installing Tools | Zip2Exe..."
  407. SetDetailsPrint listonly
  408. SectionIn 1
  409. SetOutPath $INSTDIR\Bin
  410. File ..\Bin\zip2exe.exe
  411. SetOutPath $INSTDIR\Contrib\zip2exe
  412. File ..\Contrib\zip2exe\Base.nsh
  413. File ..\Contrib\zip2exe\Modern.nsh
  414. File ..\Contrib\zip2exe\Classic.nsh
  415. ${MementoSectionEnd}
  416. SectionGroupEnd
  417. SectionGroup "Plug-ins" SecPluginsPlugins
  418. ${MementoSection} "Banner" SecPluginsBanner
  419. SetDetailsPrint textonly
  420. DetailPrint "Installing Plug-ins | Banner..."
  421. SetDetailsPrint listonly
  422. SectionIn 1
  423. !insertmacro InstallPlugin Banner
  424. SetOutPath $INSTDIR\Docs\Banner
  425. File ..\Docs\Banner\Readme.txt
  426. SetOutPath $INSTDIR\Examples\Banner
  427. File ..\Examples\Banner\Example.nsi
  428. ${MementoSectionEnd}
  429. ${MementoSection} "Language DLL" SecPluginsLangDLL
  430. SetDetailsPrint textonly
  431. DetailPrint "Installing Plug-ins | Language DLL..."
  432. SetDetailsPrint listonly
  433. SectionIn 1
  434. !insertmacro InstallPlugin LangDLL
  435. ${MementoSectionEnd}
  436. ${MementoSection} "nsExec" SecPluginsnsExec
  437. SetDetailsPrint textonly
  438. DetailPrint "Installing Plug-ins | nsExec..."
  439. SetDetailsPrint listonly
  440. SectionIn 1
  441. !insertmacro InstallPlugin nsExec
  442. SetOutPath $INSTDIR\Docs\nsExec
  443. File ..\Docs\nsExec\nsExec.txt
  444. SetOutPath $INSTDIR\Examples\nsExec
  445. File ..\Examples\nsExec\test.nsi
  446. ${MementoSectionEnd}
  447. ${MementoSection} "Splash" SecPluginsSplash
  448. SetDetailsPrint textonly
  449. DetailPrint "Installing Plug-ins | Splash..."
  450. SetDetailsPrint listonly
  451. SectionIn 1
  452. !insertmacro InstallPlugin splash
  453. SetOutPath $INSTDIR\Docs\Splash
  454. File ..\Docs\Splash\splash.txt
  455. SetOutPath $INSTDIR\Examples\Splash
  456. File ..\Examples\Splash\Example.nsi
  457. ${MementoSectionEnd}
  458. ${MementoSection} "AdvSplash" SecPluginsSplashT
  459. SetDetailsPrint textonly
  460. DetailPrint "Installing Plug-ins | AdvSplash..."
  461. SetDetailsPrint listonly
  462. SectionIn 1
  463. !insertmacro InstallPlugin advsplash
  464. SetOutPath $INSTDIR\Docs\AdvSplash
  465. File ..\Docs\AdvSplash\advsplash.txt
  466. SetOutPath $INSTDIR\Examples\AdvSplash
  467. File ..\Examples\AdvSplash\Example.nsi
  468. ${MementoSectionEnd}
  469. ${MementoSection} "BgImage" SecPluginsBgImage
  470. SetDetailsPrint textonly
  471. DetailPrint "Installing Plug-ins | BgImage..."
  472. SetDetailsPrint listonly
  473. SectionIn 1
  474. !insertmacro InstallPlugin BgImage
  475. SetOutPath $INSTDIR\Docs\BgImage
  476. File ..\Docs\BgImage\BgImage.txt
  477. SetOutPath $INSTDIR\Examples\BgImage
  478. File ..\Examples\BgImage\Example.nsi
  479. ${MementoSectionEnd}
  480. ${MementoSection} "InstallOptions" SecPluginsIO
  481. SetDetailsPrint textonly
  482. DetailPrint "Installing Plug-ins | InstallOptions..."
  483. SetDetailsPrint listonly
  484. SectionIn 1
  485. !insertmacro InstallPlugin InstallOptions
  486. SetOutPath $INSTDIR\Docs\InstallOptions
  487. File ..\Docs\InstallOptions\Readme.html
  488. File ..\Docs\InstallOptions\Changelog.txt
  489. SetOutPath $INSTDIR\Examples\InstallOptions
  490. File ..\Examples\InstallOptions\test.ini
  491. File ..\Examples\InstallOptions\test.nsi
  492. File ..\Examples\InstallOptions\testimgs.ini
  493. File ..\Examples\InstallOptions\testimgs.nsi
  494. File ..\Examples\InstallOptions\testlink.ini
  495. File ..\Examples\InstallOptions\testlink.nsi
  496. File ..\Examples\InstallOptions\testnotify.ini
  497. File ..\Examples\InstallOptions\testnotify.nsi
  498. ${MementoSectionEnd}
  499. ${MementoSection} "nsDialogs" SecPluginsDialogs
  500. SetDetailsPrint textonly
  501. DetailPrint "Installing Plug-ins | nsDialogs..."
  502. SetDetailsPrint listonly
  503. SectionIn 1
  504. !insertmacro InstallPlugin nsDialogs
  505. SetOutPath $INSTDIR\Examples\nsDialogs
  506. File ..\Examples\nsDialogs\example.nsi
  507. File ..\Examples\nsDialogs\InstallOptions.nsi
  508. File ..\Examples\nsDialogs\timer.nsi
  509. File ..\Examples\nsDialogs\welcome.nsi
  510. SetOutPath $INSTDIR\Include
  511. File ..\Include\nsDialogs.nsh
  512. SetOutPath $INSTDIR\Docs\nsDialogs
  513. File ..\Docs\nsDialogs\Readme.html
  514. ${MementoSectionEnd}
  515. ${MementoSection} "Math" SecPluginsMath
  516. SetDetailsPrint textonly
  517. DetailPrint "Installing Plug-ins | Math..."
  518. SetDetailsPrint listonly
  519. SectionIn 1
  520. !insertmacro InstallPlugin Math
  521. SetOutPath $INSTDIR\Docs\Math
  522. File ..\Docs\Math\Math.txt
  523. SetOutPath $INSTDIR\Examples\Math
  524. File ..\Examples\Math\math.nsi
  525. File ..\Examples\Math\mathtest.txt
  526. File ..\Examples\Math\mathtest.nsi
  527. File ..\Examples\Math\mathtest.ini
  528. ${MementoSectionEnd}
  529. ${MementoSection} "NSISdl" SecPluginsNSISDL
  530. SetDetailsPrint textonly
  531. DetailPrint "Installing Plug-ins | NSISdl..."
  532. SetDetailsPrint listonly
  533. SectionIn 1
  534. !insertmacro InstallPlugin nsisdl
  535. SetOutPath $INSTDIR\Docs\NSISdl
  536. File ..\Docs\NSISdl\ReadMe.txt
  537. File ..\Docs\NSISdl\License.txt
  538. ${MementoSectionEnd}
  539. ${MementoSection} "System" SecPluginsSystem
  540. SetDetailsPrint textonly
  541. DetailPrint "Installing Plug-ins | System..."
  542. SetDetailsPrint listonly
  543. SectionIn 1
  544. !insertmacro InstallPlugin System
  545. SetOutPath $INSTDIR\Docs\System
  546. File ..\Docs\System\System.html
  547. File ..\Docs\System\WhatsNew.txt
  548. SetOutPath $INSTDIR\Examples\System
  549. File ..\Examples\System\Resource.dll
  550. File ..\Examples\System\SysFunc.nsh
  551. File ..\Examples\System\System.nsh
  552. File ..\Examples\System\System.nsi
  553. ${MementoSectionEnd}
  554. ${MementoSection} "StartMenu" SecPluginsStartMenu
  555. SetDetailsPrint textonly
  556. DetailPrint "Installing Plug-ins | StartMenu..."
  557. SetDetailsPrint listonly
  558. SectionIn 1
  559. !insertmacro InstallPlugin StartMenu
  560. SetOutPath $INSTDIR\Docs\StartMenu
  561. File ..\Docs\StartMenu\Readme.txt
  562. SetOutPath $INSTDIR\Examples\StartMenu
  563. File ..\Examples\StartMenu\Example.nsi
  564. ${MementoSectionEnd}
  565. ${MementoSection} "UserInfo" SecPluginsUserInfo
  566. SetDetailsPrint textonly
  567. DetailPrint "Installing Plug-ins | UserInfo..."
  568. SetDetailsPrint listonly
  569. SectionIn 1
  570. !insertmacro InstallPlugin UserInfo
  571. SetOutPath $INSTDIR\Examples\UserInfo
  572. File ..\Examples\UserInfo\UserInfo.nsi
  573. ${MementoSectionEnd}
  574. ${MementoSection} "Dialer" SecPluginsDialer
  575. SetDetailsPrint textonly
  576. DetailPrint "Installing Plug-ins | Dialer..."
  577. SetDetailsPrint listonly
  578. SectionIn 1
  579. !insertmacro InstallPlugin Dialer
  580. SetOutPath $INSTDIR\Docs\Dialer
  581. File ..\Docs\Dialer\Dialer.txt
  582. ${MementoSectionEnd}
  583. ${MementoSection} "VPatch" SecPluginsVPatch
  584. SetDetailsPrint textonly
  585. DetailPrint "Installing Plug-ins | VPatch..."
  586. SetDetailsPrint listonly
  587. SectionIn 1
  588. !insertmacro InstallPlugin VPatch
  589. SetOutPath $INSTDIR\Examples\VPatch
  590. File ..\Examples\VPatch\example.nsi
  591. File ..\Examples\VPatch\oldfile.txt
  592. File ..\Examples\VPatch\newfile.txt
  593. File ..\Examples\VPatch\patch.pat
  594. SetOutPath $INSTDIR\Docs\VPatch
  595. File ..\Docs\VPatch\Readme.html
  596. SetOutPath $INSTDIR\Bin
  597. File ..\Bin\GenPat.exe
  598. SetOutPath $INSTDIR\Include
  599. File ..\Include\VPatchLib.nsh
  600. ${MementoSectionEnd}
  601. ${MementoSectionDone}
  602. SectionGroupEnd
  603. Section -post
  604. ; When Modern UI is installed:
  605. ; * Always install the English language file
  606. ; * Always install default icons / bitmaps
  607. ${If} ${SectionIsSelected} ${SecInterfacesModernUI}
  608. SetDetailsPrint textonly
  609. DetailPrint "Configuring Modern UI..."
  610. SetDetailsPrint listonly
  611. ${IfNot} ${SectionIsSelected} ${SecLangFiles}
  612. SetOutPath "$INSTDIR\Contrib\Language files"
  613. File "..\Contrib\Language files\English.nlf"
  614. File "..\Contrib\Language files\English.nsh"
  615. ${EndIf}
  616. ${IfNot} ${SectionIsSelected} ${SecGraphics}
  617. SetOutPath $INSTDIR\Contrib\Graphics\Checks
  618. File "..\Contrib\Graphics\Checks\modern.bmp"
  619. SetOutPath $INSTDIR\Contrib\Graphics\Icons
  620. File "..\Contrib\Graphics\Icons\modern-install.ico"
  621. File "..\Contrib\Graphics\Icons\modern-uninstall.ico"
  622. SetOutPath $INSTDIR\Contrib\Graphics\Header
  623. File "..\Contrib\Graphics\Header\nsis.bmp"
  624. SetOutPath $INSTDIR\Contrib\Graphics\Wizard
  625. File "..\Contrib\Graphics\Wizard\win.bmp"
  626. ${EndIf}
  627. ${EndIf}
  628. SetDetailsPrint textonly
  629. DetailPrint "Creating Registry Keys..."
  630. SetDetailsPrint listonly
  631. SetOutPath $INSTDIR
  632. WriteRegStr HKLM "Software\NSIS" "" $INSTDIR
  633. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  634. WriteRegDword HKLM "Software\NSIS" "VersionMajor" "${VER_MAJOR}"
  635. WriteRegDword HKLM "Software\NSIS" "VersionMinor" "${VER_MINOR}"
  636. WriteRegDword HKLM "Software\NSIS" "VersionRevision" "${VER_REVISION}"
  637. WriteRegDword HKLM "Software\NSIS" "VersionBuild" "${VER_BUILD}"
  638. !endif
  639. WriteRegStr HKLM "${REG_UNINST_KEY}" "UninstallString" '"$INSTDIR\uninst-nsis.exe"'
  640. WriteRegStr HKLM "${REG_UNINST_KEY}" "QuietUninstallString" '"$INSTDIR\uninst-nsis.exe" /S'
  641. WriteRegStr HKLM "${REG_UNINST_KEY}" "InstallLocation" "$INSTDIR"
  642. WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayName" "Nullsoft Install System${NAMESUFFIX}"
  643. WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayIcon" "$INSTDIR\uninst-nsis.exe,0"
  644. WriteRegStr HKLM "${REG_UNINST_KEY}" "DisplayVersion" "${VERSION}"
  645. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  646. WriteRegDWORD HKLM "${REG_UNINST_KEY}" "VersionMajor" "${VER_MAJOR}" ; Required by WACK
  647. WriteRegDWORD HKLM "${REG_UNINST_KEY}" "VersionMinor" "${VER_MINOR}" ; Required by WACK
  648. !endif
  649. WriteRegStr HKLM "${REG_UNINST_KEY}" "Publisher" "Nullsoft and Contributors" ; Required by WACK
  650. WriteRegStr HKLM "${REG_UNINST_KEY}" "URLInfoAbout" "https://nsis.sourceforge.io/"
  651. WriteRegStr HKLM "${REG_UNINST_KEY}" "HelpLink" "https://nsis.sourceforge.io/Support"
  652. WriteRegDWORD HKLM "${REG_UNINST_KEY}" "NoModify" "1"
  653. WriteRegDWORD HKLM "${REG_UNINST_KEY}" "NoRepair" "1"
  654. ${MakeARPInstallDate} $1
  655. WriteRegStr HKLM "${REG_UNINST_KEY}" "InstallDate" $1
  656. WriteUninstaller $INSTDIR\uninst-nsis.exe
  657. ${MementoSectionSave}
  658. SetDetailsPrint both
  659. SectionEnd
  660. ;--------------------------------
  661. ;Descriptions
  662. !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
  663. !insertmacro MUI_DESCRIPTION_TEXT ${SecCore} "The core files required to use NSIS (compiler etc.)"
  664. !insertmacro MUI_DESCRIPTION_TEXT ${SecExample} "Example installation scripts that show you how to use NSIS"
  665. !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcuts} "Add icon to your start menu for easy access"
  666. !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfaces} "User interface designs that can be used to change the installer look and feel"
  667. !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesModernUI} "A modern user interface like the wizards of recent Windows versions"
  668. !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesDefaultUI} "The default NSIS user interface which you can customize to make your own UI"
  669. !insertmacro MUI_DESCRIPTION_TEXT ${SecInterfacesTinyUI} "A tiny version of the default user interface"
  670. !insertmacro MUI_DESCRIPTION_TEXT ${SecTools} "Tools that help you with NSIS development"
  671. !insertmacro MUI_DESCRIPTION_TEXT ${SecToolsZ2E} "A utility that converts a ZIP file to a NSIS installer"
  672. !insertmacro MUI_DESCRIPTION_TEXT ${SecGraphics} "Icons, checkbox images and other graphics"
  673. !insertmacro MUI_DESCRIPTION_TEXT ${SecLangFiles} "Language files used to support multiple languages in an installer"
  674. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsPlugins} "Useful plugins that extend NSIS's functionality"
  675. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBanner} "Plugin that lets you show a banner before installation starts"
  676. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsLangDLL} "Plugin that lets you add a language select dialog to your installer"
  677. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsnsExec} "Plugin that executes console programs and prints its output in the NSIS log window or hides it"
  678. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplash} "Splash screen add-on that lets you add a splash screen to an installer"
  679. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSplashT} "Splash screen add-on with transparency support that lets you add a splash screen to an installer"
  680. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsSystem} "Plugin that lets you call Win32 API or external DLLs"
  681. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsMath} "Plugin that lets you evaluate complicated mathematical expressions"
  682. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialer} "Plugin that provides internet connection functions"
  683. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsIO} "Plugin that lets you add custom pages to an installer"
  684. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsDialogs} "Plugin that lets you add custom pages to an installer"
  685. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsStartMenu} "Plugin that lets the user select the start menu folder"
  686. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsBgImage} "Plugin that lets you show a persistent background image plugin and play sounds"
  687. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsUserInfo} "Plugin that that gives you the user name and the user account type"
  688. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsNSISDL} "Plugin that lets you create a web based installer"
  689. !insertmacro MUI_DESCRIPTION_TEXT ${SecPluginsVPatch} "Plugin that lets you create patches to upgrade older files"
  690. !insertmacro MUI_FUNCTION_DESCRIPTION_END
  691. ;--------------------------------
  692. ;Installer Functions
  693. Function .onInit
  694. ${MementoSectionRestore}
  695. FunctionEnd
  696. !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  697. Var ReinstallPageCheck
  698. Function PageReinstall
  699. ReadRegStr $R0 HKLM "Software\NSIS" ""
  700. ReadRegStr $R1 HKLM "${REG_UNINST_KEY}" "UninstallString"
  701. ${IfThen} "$R0$R1" == "" ${|} Abort ${|}
  702. StrCpy $R4 "older"
  703. ReadRegDWORD $R0 HKLM "Software\NSIS" "VersionMajor"
  704. ReadRegDWORD $R1 HKLM "Software\NSIS" "VersionMinor"
  705. ReadRegDWORD $R2 HKLM "Software\NSIS" "VersionRevision"
  706. ReadRegDWORD $R3 HKLM "Software\NSIS" "VersionBuild"
  707. ${IfThen} $R0 = 0 ${|} StrCpy $R4 "unknown" ${|} ; Anonymous builds have no version number
  708. StrCpy $R0 $R0.$R1.$R2.$R3
  709. ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
  710. ${If} $R0 == 0
  711. StrCpy $R1 "NSIS ${VERSION} is already installed. Select the operation you want to perform and click Next to continue."
  712. StrCpy $R2 "Add/Reinstall components"
  713. StrCpy $R3 "Uninstall NSIS"
  714. !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
  715. StrCpy $R0 "2"
  716. ${ElseIf} $R0 == 1
  717. StrCpy $R1 "An $R4 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."
  718. StrCpy $R2 "Uninstall before installing"
  719. StrCpy $R3 "Do not uninstall"
  720. !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS."
  721. StrCpy $R0 "1"
  722. ${ElseIf} $R0 == 2
  723. 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."
  724. StrCpy $R2 "Uninstall before installing"
  725. StrCpy $R3 "Do not uninstall"
  726. !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install NSIS."
  727. StrCpy $R0 "1"
  728. ${Else}
  729. Abort
  730. ${EndIf}
  731. nsDialogs::Create 1018
  732. Pop $R4
  733. ${NSD_CreateLabel} 0 0 100% 24u $R1
  734. Pop $R1
  735. ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
  736. Pop $R2
  737. ${NSD_OnClick} $R2 PageReinstallUpdateSelection
  738. ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
  739. Pop $R3
  740. ${NSD_OnClick} $R3 PageReinstallUpdateSelection
  741. ${If} $ReinstallPageCheck != 2
  742. SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
  743. ${Else}
  744. SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
  745. ${EndIf}
  746. ${NSD_SetFocus} $R2
  747. nsDialogs::Show
  748. FunctionEnd
  749. Function PageReinstallUpdateSelection
  750. Pop $R1
  751. ${NSD_GetState} $R2 $R1
  752. ${If} $R1 == ${BST_CHECKED}
  753. StrCpy $ReinstallPageCheck 1
  754. ${Else}
  755. StrCpy $ReinstallPageCheck 2
  756. ${EndIf}
  757. FunctionEnd
  758. Function PageLeaveReinstall
  759. ${NSD_GetState} $R2 $R1
  760. StrCmp $R0 "1" 0 +2 ; Existing install is not the same version?
  761. StrCmp $R1 "1" reinst_uninstall reinst_done
  762. StrCmp $R1 "1" reinst_done ; Same version, skip to add/reinstall components?
  763. reinst_uninstall:
  764. ReadRegStr $R1 HKLM "${REG_UNINST_KEY}" "UninstallString"
  765. ;Run uninstaller
  766. HideWindow
  767. ClearErrors
  768. ExecWait '$R1 _?=$INSTDIR' $0
  769. BringToFront
  770. ${IfThen} ${Errors} ${|} StrCpy $0 2 ${|} ; ExecWait failed, set fake exit code
  771. ${If} $0 <> 0
  772. ${OrIf} ${FileExists} "$INSTDIR\Bin\makensis.exe"
  773. ${If} $0 = 1 ; User aborted uninstaller?
  774. StrCmp $R0 "2" 0 +2 ; Is the existing install the same version?
  775. Quit ; ...yes, already installed, we are done
  776. Abort
  777. ${EndIf}
  778. MessageBox MB_ICONEXCLAMATION "Unable to uninstall!"
  779. Abort
  780. ${Else}
  781. StrCpy $0 $R1 1
  782. ${IfThen} $0 == '"' ${|} StrCpy $R1 $R1 -1 1 ${|} ; Strip quotes from UninstallString
  783. Delete $R1
  784. RMDir $INSTDIR
  785. ${EndIf}
  786. reinst_done:
  787. FunctionEnd
  788. !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
  789. Function ShowReleaseNotes
  790. StrCpy $0 $WINDIR\hh.exe
  791. ${IfNotThen} ${FileExists} $0 ${|} SearchPath $0 hh.exe ${|}
  792. ${If} ${FileExists} $0
  793. Exec '"$0" mk:@MSITStore:$INSTDIR\NSIS.chm::/SectionF.1.html'
  794. ${Else}
  795. ExecShell "" "https://nsis.sourceforge.io/Docs/AppendixF.html#F.1"
  796. ${EndIf}
  797. FunctionEnd
  798. ;--------------------------------
  799. ;Uninstaller Section
  800. Section Uninstall
  801. SetDetailsPrint textonly
  802. DetailPrint "Uninstalling NSI Development Shell Extensions..."
  803. SetDetailsPrint listonly
  804. IfFileExists $INSTDIR\Bin\makensis.exe nsis_installed
  805. MessageBox MB_YESNO "It does not appear that NSIS is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" IDYES nsis_installed
  806. Abort "Uninstall aborted by user"
  807. nsis_installed:
  808. SetDetailsPrint textonly
  809. DetailPrint "Deleting Registry Keys..."
  810. SetDetailsPrint listonly
  811. !macro AssocDeleteFileExtAndProgId _hkey _dotext _pid
  812. ReadRegStr $R0 ${_hkey} "Software\Classes\${_dotext}" ""
  813. StrCmp $R0 "${_pid}" 0 +2
  814. DeleteRegKey ${_hkey} "Software\Classes\${_dotext}"
  815. DeleteRegKey ${_hkey} "Software\Classes\${_pid}"
  816. !macroend
  817. !insertmacro AssocDeleteFileExtAndProgId HKLM ".nsi" "NSIS.Script"
  818. !insertmacro AssocDeleteFileExtAndProgId HKLM ".nsh" "NSIS.Header"
  819. ${NotifyShell_AssocChanged}
  820. DeleteRegKey HKLM "${REG_UNINST_KEY}"
  821. DeleteRegKey HKLM "Software\NSIS"
  822. SetDetailsPrint textonly
  823. DetailPrint "Deleting Files..."
  824. SetDetailsPrint listonly
  825. Delete "$SMPROGRAMS\NSIS${NAMESUFFIX}.lnk"
  826. Delete "$DESKTOP\NSIS${NAMESUFFIX}.lnk" ; Remove legacy shortcut
  827. Delete $INSTDIR\makensis.exe
  828. Delete $INSTDIR\makensisw.exe
  829. Delete $INSTDIR\NSIS.exe
  830. Delete $INSTDIR\NSIS.exe.manifest
  831. Delete $INSTDIR\license.txt
  832. Delete $INSTDIR\COPYING
  833. Delete $INSTDIR\uninst-nsis.exe
  834. Delete $INSTDIR\nsisconf.nsi
  835. Delete $INSTDIR\nsisconf.nsh
  836. Delete $INSTDIR\NSIS.chm
  837. RMDir /r $INSTDIR\Bin
  838. RMDir /r $INSTDIR\Contrib
  839. RMDir /r $INSTDIR\Docs
  840. RMDir /r $INSTDIR\Examples
  841. RMDir /r $INSTDIR\Include
  842. RMDir /r $INSTDIR\Menu
  843. RMDir /r $INSTDIR\Plugins
  844. RMDir /r $INSTDIR\Stubs
  845. RMDir $INSTDIR
  846. SetDetailsPrint both
  847. SectionEnd