makensis.nsi 33 KB

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