1 # sdcc.nsi - NSIS installer script for SDCC
3 # Copyright (c) 2003-2008 Borut Razem
5 # This file is part of sdcc.
7 # This software is provided 'as-is', without any express or implied
8 # warranty. In no event will the authors be held liable for any damages
9 # arising from the use of this software.
11 # Permission is granted to anyone to use this software for any purpose,
12 # including commercial applications, and to alter it and redistribute it
13 # freely, subject to the following restrictions:
15 # 1. The origin of this software must not be misrepresented; you must not
16 # claim that you wrote the original software. If you use this software
17 # in a product, an acknowledgment in the product documentation would be
18 # appreciated but is not required.
19 # 2. Altered source versions must be plainly marked as such, and must not be
20 # misrepresented as being the original software.
21 # 3. This notice may not be removed or altered from any source distribution.
24 # borut.razem@siol.net
26 # How to create WIN32 setup.exe
28 # - unpack WIN32 mingw daily snapshot sdcc-snapshot-i586-mingw32msvc-yyyymmdd-rrrr.zip
29 # to a clean directory (the option to create directories should be enabled).
30 # A sub directory sdcc is created (referenced as PKGDIR in continuation).
31 # - copy files sdcc/support/scripts/sdcc.ico and sdcc/support/scripts/sdcc.nsi
32 # (this file) from the sdcc Subversion snapshot to the PKGDIR directory
33 # - copy file COPYING from the sdcc Subversion snapshot to the PKGDIR directory,
34 # rename it to COPYING.txt and convert it to DOS format:
35 # unix2dos COPYING.txt
36 # - copy readline5.dll to PKGDIR/bin/readline5.dll
37 # - run NSIS installer from PKGDIR directory:
38 # "c:\Program Files\NSIS\makensis.exe" -DVER_MAJOR=<SDCC_VER_MAJOR> -DVER_MINOR=<SDCC_VER_MINOR> -DVER_REVISION=<SDCC_VER_DEVEL> -DVER_BUILD=<SDCC_REVISION> sdcc.nsi
39 # replace <VER_XXX> with the appropriate values, for example for SDCC 2.7.4:
40 # <SDCC_VER_MAJOR> = 2
41 # <SDCC_VER_MINOR> = 7
42 # <SDCC_VER_DEVEL> = 4
43 # replace <SDCC_REVISION> with the current svn revision number
44 # - A setup file setup.exe is created in PKGDIR directory.
45 # Rename it to sdcc-yyyymmdd-rrrr-setup.exe and upload it
46 # to sdcc download repository at sourceforge.net
49 # How to create WIN32 release setup.exe package
51 # - unpack WIN32 mingw daily snapshot sdcc-snapshot-i586-mingw32msvc-yyyymmdd-rrrr.zip
52 # to a clean directory (the option to create directories should be enabled).
53 # A sub directory sdcc is created (referenced as PKGDIR in continuation).
54 # - remove the PKGDIR/doc/ directory
55 # - unpack sdcc-doc-yyyymmdd-rrrr.zip to the PKGDIR/doc directory
56 # - copy files sdcc/support/scripts/sdcc.ico and sdcc/support/scripts/sdcc.nsi
57 # (this file) from the sdcc Subversion snapshot to the PKGDIR directory
58 # - copy file COPYING from the sdcc Subversion snapshot to the PKGDIR directory,
59 # rename it to COPYING.txt and convert it to DOS format:
60 # unix2dos COPYING.txt
61 # - copy readline5.dll to PKGDIR/bin/readline5.dll
62 # - run NSIS installer from PKGDIR directory:
63 # "c:\Program Files\NSIS\makensis.exe" -DFULL_DOC -DVER_MAJOR=<VER_MAJOR> -DVER_MINOR=<VER_MINOR> -DVER_REVISION=<VER_PATCH> -DVER_BUILD=<REVISION> sdcc.nsi
64 # - A setup file setup.exe is created in PKGDIR directory.
65 # Rename it to sdcc-x.x.x-setup.exe and upload it
66 # to sdcc download repository at sourceforge.net
68 # How to upload secc setup.exe tosourceforge.net
70 # Execute following commands from the cmd prompt:
71 # - sftp sdcc.sourceforge.net
72 # - cd /home/groups/s/sd/sdcc/htdocs/snapshots/i586-mingw32msvc-setup
73 # - put sdcc_yyyymmdd_setup.exe
76 # For debugging define -DSDCC.DEBUG command line option
78 ;--------------------------------
89 !define SDCC.PushStr "!insertmacro MACRO_SDCC_PushStr"
90 !macro MACRO_SDCC_PushStr NAME
91 StrCpy $SDCC.StrStack4 $SDCC.StrStack3
92 StrCpy $SDCC.StrStack3 $SDCC.StrStack2
93 StrCpy $SDCC.StrStack2 $SDCC.StrStack1
94 StrCpy $SDCC.StrStack1 $SDCC.StrStack0
95 StrCpy $SDCC.StrStack0 $SDCC.FunctionName
96 StrCpy $SDCC.FunctionName "${NAME}"
99 !define SDCC.PopStr "!insertmacro MACRO_SDCC_PopStr"
100 !macro MACRO_SDCC_PopStr
101 StrCpy $SDCC.FunctionName $SDCC.StrStack0
102 StrCpy $SDCC.StrStack0 $SDCC.StrStack1
103 StrCpy $SDCC.StrStack1 $SDCC.StrStack2
104 StrCpy $SDCC.StrStack2 $SDCC.StrStack3
105 StrCpy $SDCC.StrStack3 $SDCC.StrStack4
109 !define DebugMsg "!insertmacro MACRO_SDCC_DebugMsg"
110 !macro MACRO_SDCC_DebugMsg MSG
112 MessageBox MB_OK "*** $SDCC.FunctionName: ${MSG} ***"
116 !define Function "!insertmacro MACRO_SDCC_Function"
117 !macro MACRO_SDCC_Function NAME
120 ${SDCC.PushStr} ${NAME}
124 !define FunctionEnd "!insertmacro MACRO_SDCC_FunctionEnd"
125 !macro MACRO_SDCC_FunctionEnd
132 !define Section "!insertmacro MACRO_SDCC_Section"
133 !macro MACRO_SDCC_Section NAME ID
134 Section "${NAME}" "${ID}"
136 ${SDCC.PushStr} "${NAME}"
140 !define UnselectedSection "!insertmacro MACRO_SDCC_UnselectedSection"
141 !macro MACRO_SDCC_UnselectedSection NAME ID
142 Section /o ${NAME} ${ID}
144 ${SDCC.PushStr} "${NAME}"
148 !define SectionEnd "!insertmacro MACRO_SDCC_SectionEnd"
149 !macro MACRO_SDCC_SectionEnd
157 !define PRODUCT_NAME "SDCC"
160 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
161 !define PRODUCT_VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}"
163 !define PRODUCT_VERSION "XX.XX"
166 SetCompressor /SOLID lzma
168 !define SDCC_ROOT "."
170 !define DEV_ROOT "${SDCC_ROOT}"
173 !system "unix2dos ${SDCC_ROOT}\doc\ChangeLog.txt" = 0
175 !system "unix2dos ${SDCC_ROOT}\doc\ChangeLog_head.txt" = 0
177 !system "unix2dos ${SDCC_ROOT}\doc\README.TXT" = 0
179 InstType "Full (Bin, ucSim, SDCDB, Doc, Lib, Src)"
180 InstType "Medium (Bin, ucSim, SDCDB, Doc, Lib)"
181 InstType "Compact (Bin, ucSim, SDCDB, Doc)"
183 ;--------------------------------
186 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
187 !define UNINST_ROOT_KEY HKLM
188 !define SDCC_ROOT_KEY HKLM
190 ;--------------------------------
194 !include WordFunc.nsh
199 ;--------------------------------
202 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
203 !insertmacro VersionCompare
206 ;--------------------------------
209 Var SDCC.PathToRemove
211 ;--------------------------------
215 !define MUI_ABORTWARNING
216 !define MUI_ICON ".\sdcc.ico"
219 !insertmacro MUI_PAGE_WELCOME
222 !insertmacro MUI_PAGE_LICENSE "${SDCC_ROOT}\COPYING.txt"
224 ; Uninstall/reinstall page
225 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
226 Page custom SDCC.PageReinstall SDCC.PageLeaveReinstall
230 !define MUI_STARTMENUPAGE_DEFAULTFOLDER ${PRODUCT_NAME}
231 !define MUI_STARTMENUPAGE_REGISTRY_ROOT ${UNINST_ROOT_KEY}
232 !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
233 !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "NSIS:StartMenuDir"
234 !define MUI_STARTMENUPAGE_NODISABLE
235 Var MUI_STARTMENUPAGE_VARIABLE
236 !insertmacro MUI_PAGE_STARTMENU Application $MUI_STARTMENUPAGE_VARIABLE
239 !define MUI_COMPONENTSPAGE_SMALLDESC
240 !insertmacro MUI_PAGE_COMPONENTS
243 !insertmacro MUI_PAGE_DIRECTORY
246 !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "SDCC.InstFilesLeave"
247 !insertmacro MUI_PAGE_INSTFILES
249 ${Function} SDCC.InstFilesLeave
250 ; Remove old path if reinstallation
251 ${If} $SDCC.PathToRemove != ""
252 ${DebugMsg} "removing path $SDCC.PathToRemove"
253 Push $SDCC.PathToRemove
254 Call SDCC.RemoveFromPath
258 ; Finish page - add to path
259 !define MUI_FINISHPAGE_TEXT "Confirm the checkbox if you won to add SDCC binary directory to the PATH environment variable"
260 !define MUI_FINISHPAGE_SHOWREADME_TEXT "Add $INSTDIR\bin to the PATH"
261 !define MUI_FINISHPAGE_SHOWREADME_FUNCTION SDCC.AddBinToPath
262 !define MUI_FINISHPAGE_SHOWREADME
263 !define MUI_FINISHPAGE_BUTTON "Next"
264 !insertmacro MUI_PAGE_FINISH
266 ; Finish page - reboot
267 !insertmacro MUI_PAGE_FINISH
269 ${Function} SDCC.AddBinToPath
271 ${DebugMsg} "adding path $INSTDIR\bin"
277 !insertmacro MUI_UNPAGE_CONFIRM
278 !insertmacro MUI_UNPAGE_INSTFILES
279 !insertmacro MUI_UNPAGE_FINISH
282 !insertmacro MUI_LANGUAGE "English"
284 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
287 InstallDir "$PROGRAMFILES\SDCC"
288 ;;;;ShowInstDetails show
289 ;;;;ShowUnInstDetails show
293 ${DebugMsg} "Pre INSTDIR = $INSTDIR"
295 !ifndef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
296 ; Old unistallation method
297 ; Uninstall the old version, if present
298 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
301 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
302 "$(^Name) is already installed. $\n$\nClick 'OK' to remove the \
303 previous version or 'Cancel' to cancel this upgrade." \
308 ; Run the uninstaller
315 ; Install the new version
316 MessageBox MB_YESNO|MB_ICONQUESTION "This will install $(^Name). Do you wish to continue?" IDYES +2
321 ; If the registry key exists it is an uninstallation or reinstallation:
322 ; take the old installation directory
325 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation"
328 StrCpy $SDCC.PathToRemove "$INSTDIR\bin"
333 ${DebugMsg} "Post INSTDIR = $INSTDIR"
336 ${Function} un.onInit
338 ${DebugMsg} "Pre INSTDIR = $INSTDIR"
341 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation"
347 ${DebugMsg} "Post INSTDIR = $INSTDIR"
351 ${Section} -Common SECCOMMON
352 SetOutPath "$INSTDIR"
354 File "${SDCC_ROOT}\COPYING.txt"
357 ${Section} "SDCC application files" SEC01
359 SetOutPath "$INSTDIR\bin"
360 File "${SDCC_ROOT}\bin\as-gbz80.exe"
361 File "${SDCC_ROOT}\bin\as-hc08.exe"
362 File "${SDCC_ROOT}\bin\as-z80.exe"
363 File "${SDCC_ROOT}\bin\asx8051.exe"
364 File "${SDCC_ROOT}\bin\aslink.exe"
365 File "${SDCC_ROOT}\bin\link-gbz80.exe"
366 File "${SDCC_ROOT}\bin\link-hc08.exe"
367 File "${SDCC_ROOT}\bin\link-z80.exe"
368 File "${SDCC_ROOT}\bin\makebin.exe"
369 File "${SDCC_ROOT}\bin\packihx.exe"
370 File "${SDCC_ROOT}\bin\sdcc.exe"
371 File "${SDCC_ROOT}\bin\sdcclib.exe"
372 File "${SDCC_ROOT}\bin\sdcpp.exe"
373 File "${SDCC_ROOT}\bin\readline5.dll"
376 ${Section} "ucSim application files" SEC02
378 SetOutPath "$INSTDIR\bin"
379 File "${SDCC_ROOT}\bin\s51.exe"
380 File "${SDCC_ROOT}\bin\savr.exe"
381 File "${SDCC_ROOT}\bin\shc08.exe"
382 File "${SDCC_ROOT}\bin\sz80.exe"
385 ${Section} "SDCDB files" SEC03
387 File "${SDCC_ROOT}\bin\sdcdb.exe"
388 File "${SDCC_ROOT}\bin\sdcdb.el"
389 File "${SDCC_ROOT}\bin\sdcdbsrc.el"
392 ${Section} "SDCC documentation" SEC04
394 SetOutPath "$INSTDIR\doc"
396 File /r "${SDCC_ROOT}\doc\*"
398 File "${SDCC_ROOT}\doc\ChangeLog_head.txt"
399 File "${SDCC_ROOT}\doc\README.TXT"
403 ${Section} "SDCC include files" SEC05
405 SetOutPath "$INSTDIR\include\asm\default"
406 File "${DEV_ROOT}\include\asm\default\features.h"
407 SetOutPath "$INSTDIR\include\asm\ds390"
408 File "${DEV_ROOT}\include\asm\ds390\features.h"
409 SetOutPath "$INSTDIR\include\asm\gbz80"
410 File "${DEV_ROOT}\include\asm\gbz80\features.h"
411 SetOutPath "$INSTDIR\include\asm\mcs51"
412 File "${DEV_ROOT}\include\asm\mcs51\features.h"
413 SetOutPath "$INSTDIR\include\asm\pic"
414 File "${DEV_ROOT}\include\asm\pic\features.h"
415 SetOutPath "$INSTDIR\include\asm\pic16"
416 File "${DEV_ROOT}\include\asm\pic16\features.h"
417 SetOutPath "$INSTDIR\include\asm\z80"
418 File "${DEV_ROOT}\include\asm\z80\features.h"
419 SetOutPath "$INSTDIR\include\hc08"
420 File "${DEV_ROOT}\include\hc08\*.h"
421 SetOutPath "$INSTDIR\include\mcs51"
422 File "${DEV_ROOT}\include\mcs51\*.h"
423 SetOutPath "$INSTDIR\include\pic"
424 File "${DEV_ROOT}\include\pic\*.h"
425 File "${DEV_ROOT}\include\pic\*.txt"
426 File "${DEV_ROOT}\include\pic\*.inc"
427 SetOutPath "$INSTDIR\include\pic16"
428 File "${DEV_ROOT}\include\pic16\*.h"
429 File "${DEV_ROOT}\include\pic16\*.txt"
430 SetOutPath "$INSTDIR\include\z80"
431 File "${DEV_ROOT}\include\z80\*.h"
432 SetOutPath "$INSTDIR\include"
433 File "${DEV_ROOT}\include\*.h"
436 ${Section} "SDCC DS390 library" SEC06
438 SetOutPath "$INSTDIR\lib\ds390"
439 File "${DEV_ROOT}\lib\ds390\*.rel"
440 File "${DEV_ROOT}\lib\ds390\*.lib"
443 ${Section} "SDCC DS400 library" SEC07
445 SetOutPath "$INSTDIR\lib\ds400"
446 File "${DEV_ROOT}\lib\ds400\*.rel"
447 File "${DEV_ROOT}\lib\ds400\*.lib"
450 ${Section} "SDCC GBZ80 library" SEC08
452 SetOutPath "$INSTDIR\lib\gbz80"
453 File "${DEV_ROOT}\lib\gbz80\*.o"
454 File "${DEV_ROOT}\lib\gbz80\*.lib"
457 ${Section} "SDCC Z80 library" SEC09
459 SetOutPath "$INSTDIR\lib\z80"
460 File "${DEV_ROOT}\lib\z80\*.o"
461 File "${DEV_ROOT}\lib\z80\*.lib"
464 ${Section} "SDCC small model library" SEC10
466 SetOutPath "$INSTDIR\lib\small"
467 File "${DEV_ROOT}\lib\small\*.rel"
468 File "${DEV_ROOT}\lib\small\*.lib"
471 ${Section} "SDCC medium model library" SEC11
473 SetOutPath "$INSTDIR\lib\medium"
474 File "${DEV_ROOT}\lib\medium\*.rel"
475 File "${DEV_ROOT}\lib\medium\*.lib"
478 ${Section} "SDCC large model library" SEC12
480 SetOutPath "$INSTDIR\lib\large"
481 File "${DEV_ROOT}\lib\large\*.rel"
482 File "${DEV_ROOT}\lib\large\*.lib"
485 ${Section} "SDCC small-stack-auto model library" SEC13
487 SetOutPath "$INSTDIR\lib\small-stack-auto"
488 File "${DEV_ROOT}\lib\small-stack-auto\*.rel"
489 File "${DEV_ROOT}\lib\small-stack-auto\*.lib"
492 ${Section} "SDCC HC08 library" SEC14
494 SetOutPath "$INSTDIR\lib\hc08"
495 File "${DEV_ROOT}\lib\hc08\*.rel"
496 File "${DEV_ROOT}\lib\hc08\*.lib"
499 ${Section} "SDCC PIC16 library" SEC15
501 SetOutPath "$INSTDIR\lib\pic16"
502 File "${DEV_ROOT}\lib\pic16\*.o"
503 File "${DEV_ROOT}\lib\pic16\*.lib"
506 ${Section} "SDCC PIC library" SEC16
508 SetOutPath "$INSTDIR\lib\pic"
509 File "${DEV_ROOT}\lib\pic\*.lib"
512 ${Section} "SDCC library sources" SEC17
514 SetOutPath "$INSTDIR\lib\src\ds390\examples"
515 File "${DEV_ROOT}\lib\src\ds390\examples\MOVED"
517 SetOutPath "$INSTDIR\lib\src\ds390"
518 File "${DEV_ROOT}\lib\src\ds390\*.c"
519 # File "${DEV_ROOT}\lib\src\ds390\Makefile"
521 SetOutPath "$INSTDIR\lib\src\ds400"
522 File "${DEV_ROOT}\lib\src\ds400\*.c"
523 # File "${DEV_ROOT}\lib\src\ds400\Makefile"
525 SetOutPath "$INSTDIR\lib\src\gbz80"
526 File "${DEV_ROOT}\lib\src\gbz80\*.c"
527 File "${DEV_ROOT}\lib\src\gbz80\*.s"
528 # File "${DEV_ROOT}\lib\src\gbz80\Makefile"
530 SetOutPath "$INSTDIR\lib\src\z80"
531 File "${DEV_ROOT}\lib\src\z80\*.c"
532 File "${DEV_ROOT}\lib\src\z80\*.s"
533 # File "${DEV_ROOT}\lib\src\z80\Makefile"
535 SetOutPath "$INSTDIR\lib\src\hc08"
536 File "${DEV_ROOT}\lib\src\hc08\*.c"
537 # File "${DEV_ROOT}\lib\src\hc08\Makefile"
539 SetOutPath "$INSTDIR\lib\src\mcs51"
540 File "${DEV_ROOT}\lib\src\mcs51\*.asm"
541 # File "${DEV_ROOT}\lib\src\mcs51\Makefile"
543 SetOutPath "$INSTDIR\lib\src\small"
544 # File "${DEV_ROOT}\lib\src\small\Makefile"
546 SetOutPath "$INSTDIR\lib\src\medium"
547 # File "${DEV_ROOT}\lib\src\medium\Makefile"
549 SetOutPath "$INSTDIR\lib\src\large"
550 # File "${DEV_ROOT}\lib\src\large\Makefile"
552 SetOutPath "$INSTDIR\lib\src\pic"
553 # File "${DEV_ROOT}\lib\src\pic\configure"
554 # File "${DEV_ROOT}\lib\src\pic\configure.in"
555 # File "${DEV_ROOT}\lib\src\pic\GPL"
556 # File "${DEV_ROOT}\lib\src\pic\LGPL"
557 # File "${DEV_ROOT}\lib\src\pic\Makefile"
558 # File "${DEV_ROOT}\lib\src\pic\Makefile.common"
559 # File "${DEV_ROOT}\lib\src\pic\Makefile.common.in"
560 # File "${DEV_ROOT}\lib\src\pic\Makefile.rules"
561 # File "${DEV_ROOT}\lib\src\pic\Makefile.subdir"
562 # File "${DEV_ROOT}\lib\src\pic\NEWS"
563 # File "${DEV_ROOT}\lib\src\pic\README"
564 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.c"
565 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.S"
567 SetOutPath "$INSTDIR\lib\src\pic\libsdcc"
568 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.c"
569 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.S"
570 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.inc"
571 # File "${DEV_ROOT}\lib\src\pic\libsdcc\Makefile"
573 SetOutPath "$INSTDIR\lib\src\pic\libdev"
574 File "${DEV_ROOT}\lib\src\pic\libdev\*.c"
575 # File "${DEV_ROOT}\lib\src\pic\libdev\Makefile"
577 SetOutPath "$INSTDIR\lib\src\pic\libm"
578 File "${DEV_ROOT}\lib\src\pic\libm\*.c"
580 SetOutPath "$INSTDIR\lib\src\pic16"
581 # File "${DEV_ROOT}\lib\src\pic16\configure"
582 # File "${DEV_ROOT}\lib\src\pic16\configure.in"
583 # File "${DEV_ROOT}\lib\src\pic16\COPYING"
584 # File "${DEV_ROOT}\lib\src\pic16\Makefile"
585 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common"
586 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common.in"
587 # File "${DEV_ROOT}\lib\src\pic16\Makefile.rules"
588 # File "${DEV_ROOT}\lib\src\pic16\Makefile.subdir"
589 # File "${DEV_ROOT}\lib\src\pic16\pics.all"
590 # File "${DEV_ROOT}\lib\src\pic16\pics.build"
591 # File "${DEV_ROOT}\lib\src\pic16\README"
593 SetOutPath "$INSTDIR\lib\src\pic16\debug"
594 # File "${DEV_ROOT}\lib\src\pic16\debug\Makefile"
596 SetOutPath "$INSTDIR\lib\src\pic16\debug\gstack"
597 # File "${DEV_ROOT}\lib\src\pic16\debug\gstack\Makefile"
598 File "${DEV_ROOT}\lib\src\pic16\debug\gstack\*.c"
600 SetOutPath "$INSTDIR\lib\src\pic16\libc"
601 # File "${DEV_ROOT}\lib\src\pic16\libc\Makefile"
603 SetOutPath "$INSTDIR\lib\src\pic16\libc\ctype"
604 File "${DEV_ROOT}\lib\src\pic16\libc\ctype\*.c"
605 # File "${DEV_ROOT}\lib\src\pic16\libc\ctype\Makefile"
607 SetOutPath "$INSTDIR\lib\src\pic16\libc\delay"
608 File "${DEV_ROOT}\lib\src\pic16\libc\delay\*.S"
609 # File "${DEV_ROOT}\lib\src\pic16\libc\delay\Makefile"
611 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdio"
612 File "${DEV_ROOT}\lib\src\pic16\libc\stdio\*.c"
613 # File "${DEV_ROOT}\lib\src\pic16\libc\stdio\Makefile"
615 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdlib"
616 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.c"
617 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.S"
618 # File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\Makefile"
620 SetOutPath "$INSTDIR\lib\src\pic16\libc\string"
621 File "${DEV_ROOT}\lib\src\pic16\libc\string\*.c"
622 # File "${DEV_ROOT}\lib\src\pic16\libc\string\Makefile"
624 SetOutPath "$INSTDIR\lib\src\pic16\libc\utils"
625 File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
626 # File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
628 SetOutPath "$INSTDIR\lib\src\pic16\libdev"
629 File "${DEV_ROOT}\lib\src\pic16\libdev\*.c"
630 # File "${DEV_ROOT}\lib\src\pic16\libdev\Makefile"
632 SetOutPath "$INSTDIR\lib\src\pic16\libio"
633 File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
634 # File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
636 SetOutPath "$INSTDIR\lib\src\pic16\libio\adc"
637 File "${DEV_ROOT}\lib\src\pic16\libio\adc\*.c"
638 # File "${DEV_ROOT}\lib\src\pic16\libio\adc\Makefile"
640 SetOutPath "$INSTDIR\lib\src\pic16\libio\i2c"
641 File "${DEV_ROOT}\lib\src\pic16\libio\i2c\*.c"
642 # File "${DEV_ROOT}\lib\src\pic16\libio\i2c\Makefile"
644 SetOutPath "$INSTDIR\lib\src\pic16\libio\usart"
645 File "${DEV_ROOT}\lib\src\pic16\libio\usart\*.c"
646 # File "${DEV_ROOT}\lib\src\pic16\libio\usart\Makefile"
648 SetOutPath "$INSTDIR\lib\src\pic16\libm"
649 File "${DEV_ROOT}\lib\src\pic16\libm\*.c"
650 # File "${DEV_ROOT}\lib\src\pic16\libm\Makefile"
652 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc"
653 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\Makefile"
655 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\char"
656 File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\*.c"
657 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\Makefile"
659 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\fixed16x16"
660 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.c"
661 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.S"
662 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\Makefile"
664 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\float"
665 File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\*.c"
666 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\Makefile"
668 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\gptr"
669 File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\*.c"
670 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\Makefile"
672 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\int"
673 File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\*.c"
674 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\Makefile"
676 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\long"
677 File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\*.c"
678 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\Makefile"
680 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\lregs"
681 File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\*.c"
682 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\Makefile"
684 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\stack"
685 File "${DEV_ROOT}\lib\src\pic16\libsdcc\stack\*.S"
687 SetOutPath "$INSTDIR\lib\src\pic16\startup"
688 File "${DEV_ROOT}\lib\src\pic16\startup\*.c"
689 # File "${DEV_ROOT}\lib\src\pic16\startup\Makefile"
690 # File "${DEV_ROOT}\lib\src\pic16\startup\README"
692 SetOutPath "$INSTDIR\lib\src"
693 File "${DEV_ROOT}\lib\src\*.c"
696 ;--------------------------------
700 LangString DESC_SEC01 ${LANG_ENGLISH} "SDCC application files"
701 LangString DESC_SEC02 ${LANG_ENGLISH} "ucSim application files"
702 LangString DESC_SEC03 ${LANG_ENGLISH} "SDCDB files"
703 LangString DESC_SEC04 ${LANG_ENGLISH} "SDCC documentation"
704 LangString DESC_SEC05 ${LANG_ENGLISH} "SDCC include files"
705 LangString DESC_SEC06 ${LANG_ENGLISH} "SDCC DS390 library"
706 LangString DESC_SEC07 ${LANG_ENGLISH} "SDCC DS400 library"
707 LangString DESC_SEC08 ${LANG_ENGLISH} "SDCC GBZ80 library"
708 LangString DESC_SEC09 ${LANG_ENGLISH} "SDCC Z80 library"
709 LangString DESC_SEC10 ${LANG_ENGLISH} "SDCC small model library"
710 LangString DESC_SEC11 ${LANG_ENGLISH} "SDCC medium model library"
711 LangString DESC_SEC12 ${LANG_ENGLISH} "SDCC large model library"
712 LangString DESC_SEC13 ${LANG_ENGLISH} "SDCC small-stack-auto model library"
713 LangString DESC_SEC14 ${LANG_ENGLISH} "SDCC HC08 library"
714 LangString DESC_SEC15 ${LANG_ENGLISH} "SDCC PIC16 library"
715 LangString DESC_SEC16 ${LANG_ENGLISH} "SDCC PIC library"
716 LangString DESC_SEC17 ${LANG_ENGLISH} "SDCC library sources"
718 ;Assign language strings to sections
719 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
720 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC01)
721 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC02)
722 !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_SEC03)
723 !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_SEC04)
724 !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(DESC_SEC05)
725 !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(DESC_SEC06)
726 !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(DESC_SEC07)
727 !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $(DESC_SEC08)
728 !insertmacro MUI_DESCRIPTION_TEXT ${SEC09} $(DESC_SEC09)
729 !insertmacro MUI_DESCRIPTION_TEXT ${SEC10} $(DESC_SEC10)
730 !insertmacro MUI_DESCRIPTION_TEXT ${SEC11} $(DESC_SEC11)
731 !insertmacro MUI_DESCRIPTION_TEXT ${SEC12} $(DESC_SEC12)
732 !insertmacro MUI_DESCRIPTION_TEXT ${SEC13} $(DESC_SEC13)
733 !insertmacro MUI_DESCRIPTION_TEXT ${SEC14} $(DESC_SEC14)
734 !insertmacro MUI_DESCRIPTION_TEXT ${SEC15} $(DESC_SEC15)
735 !insertmacro MUI_DESCRIPTION_TEXT ${SEC16} $(DESC_SEC16)
736 !insertmacro MUI_DESCRIPTION_TEXT ${SEC17} $(DESC_SEC17)
737 !insertmacro MUI_FUNCTION_DESCRIPTION_END
738 ;--------------------------------
740 ${Section} -Icons SECICONS
741 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
742 CreateDirectory "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
743 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk" "$INSTDIR\uninstall.exe"
745 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\sdccman.pdf" "" "$INSTDIR\sdcc.ico" "" "" "" ""
746 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
747 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
749 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
750 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog_head.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
752 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk" "$INSTDIR\COPYING.txt"
753 !insertmacro MUI_STARTMENU_WRITE_END
756 ${Section} -INI SECINI
757 WriteIniStr "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.url" "InternetShortcut" "URL" "http://sdcc.sourceforge.net/"
759 WriteIniStr "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.url" "InternetShortcut" "URL" "http://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc/ChangeLog"
763 ${Section} -PostInstall SECPOSTINSTALL
764 WriteRegStr ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "" $INSTDIR
765 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
766 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor" "${VER_MAJOR}"
767 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor" "${VER_MINOR}"
768 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision" "${VER_REVISION}"
769 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild" "${VER_BUILD}"
772 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
773 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR"
774 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
775 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "sdcc.sourceforge.net"
776 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://sdcc.sourceforge.net/"
777 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "HelpLink" "http://sdcc.sourceforge.net/"
778 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://sdcc.sourceforge.net/"
780 WriteUninstaller "$INSTDIR\uninstall.exe"
784 ;;;; Uninstaller code ;;;;
786 ${Section} Uninstall SECUNINSTALL
787 !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_STARTMENUPAGE_VARIABLE
789 ${DebugMsg} "removing path $INSTDIR\bin"
791 Call un.SDCC.RemoveFromPath
794 DeleteRegKey ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
795 DeleteRegKey ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}"
797 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk"
798 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk"
800 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.url"
801 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk"
803 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk"
804 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk"
805 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.url"
807 RMDir "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
809 Delete "$INSTDIR\lib\src\large\Makefile"
811 Delete "$INSTDIR\lib\src\medium\Makefile"
813 Delete "$INSTDIR\lib\src\small\Makefile"
815 Delete "$INSTDIR\lib\src\mcs51\*.asm"
816 Delete "$INSTDIR\lib\src\mcs51\Makefile"
817 Delete "$INSTDIR\lib\src\mcs51\README"
819 Delete "$INSTDIR\lib\src\hc08\*.c"
820 Delete "$INSTDIR\lib\src\hc08\hc08.lib"
821 Delete "$INSTDIR\lib\src\hc08\Makefile"
823 Delete "$INSTDIR\lib\src\z80\*.c"
824 Delete "$INSTDIR\lib\src\z80\*.s"
825 Delete "$INSTDIR\lib\src\z80\z80.lib"
826 Delete "$INSTDIR\lib\src\z80\README"
827 Delete "$INSTDIR\lib\src\z80\Makefile"
829 Delete "$INSTDIR\lib\src\gbz80\*.c"
830 Delete "$INSTDIR\lib\src\gbz80\*.s"
831 Delete "$INSTDIR\lib\src\gbz80\gbz80.lib"
832 Delete "$INSTDIR\lib\src\gbz80\README"
833 Delete "$INSTDIR\lib\src\gbz80\Makefile"
835 Delete "$INSTDIR\lib\src\ds390\*.c"
836 Delete "$INSTDIR\lib\src\ds390\libds390.lib"
837 Delete "$INSTDIR\lib\src\ds390\Makefile.dep"
838 Delete "$INSTDIR\lib\src\ds390\Makefile"
839 Delete "$INSTDIR\lib\src\ds390\examples\MOVED"
841 Delete "$INSTDIR\lib\src\ds400\*.c"
842 Delete "$INSTDIR\lib\src\ds400\libds400.lib"
843 Delete "$INSTDIR\lib\src\ds400\Makefile.dep"
844 Delete "$INSTDIR\lib\src\ds400\Makefile"
846 Delete "$INSTDIR\lib\src\*.c"
848 Delete "$INSTDIR\lib\pic\*.o"
849 Delete "$INSTDIR\lib\pic\*.lib"
851 Delete "$INSTDIR\lib\pic16\*.o"
852 Delete "$INSTDIR\lib\pic16\*.lib"
854 Delete "$INSTDIR\lib\hc08\*.rel"
855 Delete "$INSTDIR\lib\hc08\*.lib"
857 Delete "$INSTDIR\lib\z80\*.o"
858 Delete "$INSTDIR\lib\z80\*.lib"
860 Delete "$INSTDIR\lib\small\*.rel"
861 Delete "$INSTDIR\lib\small\*.lib"
863 Delete "$INSTDIR\lib\medium\*.rel"
864 Delete "$INSTDIR\lib\medium\*.lib"
866 Delete "$INSTDIR\lib\large\*.rel"
867 Delete "$INSTDIR\lib\large\*.lib"
869 Delete "$INSTDIR\lib\small-stack-auto\*.rel"
870 Delete "$INSTDIR\lib\small-stack-auto\*.lib"
872 Delete "$INSTDIR\lib\gbz80\*.o"
873 Delete "$INSTDIR\lib\gbz80\*.lib"
875 Delete "$INSTDIR\lib\ds390\*.rel"
876 Delete "$INSTDIR\lib\ds390\*.lib"
878 Delete "$INSTDIR\lib\ds400\*.rel"
879 Delete "$INSTDIR\lib\ds400\*.lib"
881 Delete "$INSTDIR\include\asm\z80\*.h"
882 Delete "$INSTDIR\include\asm\pic16\*.h"
883 Delete "$INSTDIR\include\asm\pic\*.h"
884 Delete "$INSTDIR\include\asm\mcs51\*.h"
885 Delete "$INSTDIR\include\asm\gbz80\*.h"
886 Delete "$INSTDIR\include\asm\ds390\*.h"
887 Delete "$INSTDIR\include\asm\default\*.h"
888 Delete "$INSTDIR\include\z80\*.h"
889 Delete "$INSTDIR\include\pic\*.h"
890 Delete "$INSTDIR\include\pic\*.txt"
891 Delete "$INSTDIR\include\pic\*.inc"
892 Delete "$INSTDIR\include\pic16\*.h"
893 Delete "$INSTDIR\include\mcs51\*.h"
894 Delete "$INSTDIR\include\hc08\*.h"
895 Delete "$INSTDIR\include\*.h"
898 Delete "$INSTDIR\doc\README.TXT"
899 Delete "$INSTDIR\doc\ChangeLog_head.txt"
902 Delete "$INSTDIR\bin\as-gbz80.exe"
903 Delete "$INSTDIR\bin\as-hc08.exe"
904 Delete "$INSTDIR\bin\as-z80.exe"
905 Delete "$INSTDIR\bin\asx8051.exe"
906 Delete "$INSTDIR\bin\aslink.exe"
907 Delete "$INSTDIR\bin\link-gbz80.exe"
908 Delete "$INSTDIR\bin\link-hc08.exe"
909 Delete "$INSTDIR\bin\link-z80.exe"
910 Delete "$INSTDIR\bin\makebin.exe"
911 Delete "$INSTDIR\bin\packihx.exe"
912 Delete "$INSTDIR\bin\sdcc.exe"
913 Delete "$INSTDIR\bin\sdcclib.exe"
914 Delete "$INSTDIR\bin\sdcpp.exe"
915 Delete "$INSTDIR\bin\readline5.dll"
918 Delete "$INSTDIR\bin\s51.exe"
919 Delete "$INSTDIR\bin\savr.exe"
920 Delete "$INSTDIR\bin\shc08.exe"
921 Delete "$INSTDIR\bin\sz80.exe"
923 Delete "$INSTDIR\bin\sdcdb.exe"
924 Delete "$INSTDIR\bin\sdcdb.el"
925 Delete "$INSTDIR\bin\sdcdbsrc.el"
927 Delete "$INSTDIR\COPYING.txt"
928 Delete "$INSTDIR\sdcc.ico"
929 Delete "$INSTDIR\uninstall.exe"
931 RMDir /r "$INSTDIR\lib\src\pic"
932 RMDir /r "$INSTDIR\lib\src\pic16"
933 RMDir "$INSTDIR\lib\src\small"
934 RMDir "$INSTDIR\lib\src\medium"
935 RMDir "$INSTDIR\lib\src\large"
936 RMDir "$INSTDIR\lib\src\mcs51"
937 RMDir "$INSTDIR\lib\src\z80"
938 RMDir "$INSTDIR\lib\src\gbz80"
939 RMDir "$INSTDIR\lib\src\ds390\examples"
940 RMDir "$INSTDIR\lib\src\ds390"
941 RMDir "$INSTDIR\lib\src\ds400"
942 RMDir "$INSTDIR\lib\src\hc08"
943 RMDir "$INSTDIR\lib\src"
945 RMDir "$INSTDIR\lib\pic"
946 RMDir "$INSTDIR\lib\pic16"
947 RMDir "$INSTDIR\lib\z80"
948 RMDir "$INSTDIR\lib\small"
949 RMDir "$INSTDIR\lib\medium"
950 RMDir "$INSTDIR\lib\large"
951 RMDir "$INSTDIR\lib\small-stack-auto"
952 RMDir "$INSTDIR\lib\gbz80"
953 RMDir "$INSTDIR\lib\ds390"
954 RMDir "$INSTDIR\lib\ds400"
955 RMDir "$INSTDIR\lib\hc08"
958 RMDir "$INSTDIR\include\asm\z80"
959 RMDir "$INSTDIR\include\asm\pic16"
960 RMDir "$INSTDIR\include\asm\pic"
961 RMDir "$INSTDIR\include\asm\mcs51"
962 RMDir "$INSTDIR\include\asm\gbz80"
963 RMDir "$INSTDIR\include\asm\ds390"
964 RMDir "$INSTDIR\include\asm\default"
965 RMDir "$INSTDIR\include\asm"
966 RMDir "$INSTDIR\include\z80"
967 RMDir "$INSTDIR\include\pic"
968 RMDir "$INSTDIR\include\pic16"
969 RMDir "$INSTDIR\include\mcs51"
970 RMDir "$INSTDIR\include\hc08"
971 RMDir "$INSTDIR\include"
974 RMDir /r "$INSTDIR\doc"
982 ;;;; SetAutoClose true
985 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
986 ; Path Manipulation functions ;
987 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
990 !include "WinMessages.nsh"
993 ; AddToPath - Adds the given dir to the search path.
994 ; Input - head of the stack
995 ; Note - Win9x systems requires reboot
997 ${Function} SDCC.AddToPath
1004 ; don't add if the path doesn't exist
1005 ${If} ${FileExists} $0
1009 ; Not on NT: read PATH from environment variable
1012 ; On NT: read PATH from registry
1013 ReadRegStr $1 HKCU "Environment" "PATH"
1016 ${StrStr} $2 "$1;" "$0;"
1018 ${StrStr} $2 "$1;" "$0\;"
1020 GetFullPathName /SHORT $3 $0
1021 ${StrStr} $2 "$1;" "$3;"
1023 ${StrStr} $2 "$1;" "$03\;"
1028 FileOpen $1 "$1\autoexec.bat" a
1031 ${If} $2 = 26 ; DOS EOF
1032 FileSeek $1 -1 END ; write over EOF
1034 ${DebugMsg} "adding line $\r$\nSET PATH=%PATH%;$3$\r$\n"
1035 FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
1037 ${DebugMsg} "SetRebootFlag true"
1040 ;System PATH variable is at:
1041 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1042 ReadRegStr $1 HKCU "Environment" "PATH"
1043 StrCpy $2 $1 1 -1 ; copy last char
1044 ${If} $2 == ";" ; if last char == ;
1045 StrCpy $1 $1 -1 ; remove last char
1050 WriteRegExpandStr HKCU "Environment" "PATH" $0
1051 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1066 ; RemoveFromPath - Remove a given dir from the path
1067 ; Input: head of the stack
1069 !macro SDCC.RemoveFromPath un
1070 ${Function} ${un}SDCC.RemoveFromPath
1079 IntFmt $6 "%c" 26 ; DOS EOF
1086 FileOpen $1 "$1\autoexec.bat" r
1089 GetFullPathName /SHORT $0 $0
1090 StrCpy $0 "SET PATH=%PATH%;$0"
1093 ; copy all lines except the line containing "SET PATH=%PATH%;$0"
1094 ; from autoexec.bat to the temporary file
1098 StrCpy $5 $3 1 -1 ; read last char
1099 ${If} $5 == $6 ; if DOS EOF
1100 StrCpy $3 $3 -1 ; remove DOS EOF so we can compare
1102 ${If} $3 != "$0$\r$\n"
1103 ${AndIf} $3 != "$0$\n"
1108 ; This is the line I'm looking for:
1110 ${DebugMsg} "removing line $0"
1111 ${DebugMsg} "SetRebootFlag true"
1120 Delete "$1\autoexec.bat"
1121 CopyFiles /SILENT $4 "$1\autoexec.bat"
1124 ;System PATH variable is at:
1125 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1126 ReadRegStr $1 HKCU "Environment" "PATH"
1127 StrCpy $5 $1 1 -1 ; copy last char
1128 ${If} $5 != ";" ; if last char != ;
1129 StrCpy $1 "$1;" ; append ;
1133 Call ${un}StrStr ; Find `$0;` in $1
1134 Pop $2 ; pos of our dir
1141 StrCpy $5 $1 -$4 ; $5 is now the part before the path to remove
1142 StrCpy $6 $2 "" $3 ; $6 is now the part after the path to remove
1145 StrCpy $5 $3 1 -1 ; copy last char
1146 ${If} $5 == ";" ; if last char == ;
1147 StrCpy $3 $3 -1 ; remove last char
1150 ; New PATH not empty: update the registry
1151 WriteRegExpandStr HKCU "Environment" "PATH" $3
1153 ; New PATH empty: remove from the registry
1154 DeleteRegValue HKCU "Environment" "PATH"
1156 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1169 !insertmacro SDCC.RemoveFromPath ""
1170 !insertmacro SDCC.RemoveFromPath "un."
1172 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1173 ; Utility Functions ;
1174 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1178 ; output, top of the stack = 1 if NT or 0 if not
1183 ; ($R0 at this point is 1 or 0)
1186 ${Function} ${un}SDCC.IsNT
1188 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
1200 !insertmacro SDCC.IsNT ""
1201 !insertmacro SDCC.IsNT "un."
1203 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1204 ; Uninstall/Reinstall page functions ;
1205 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1207 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
1209 Var ReinstallPageCheck
1211 ${Function} SDCC.PageReinstall
1213 ReadRegStr $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" ""
1216 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1222 ReadRegDWORD $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor"
1223 ReadRegDWORD $R1 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor"
1224 ReadRegDWORD $R2 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision"
1225 ReadRegDWORD $R3 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild"
1226 StrCpy $R0 $R0.$R1.$R2.$R3
1228 ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
1230 StrCpy $R1 "${PRODUCT_NAME} ${PRODUCT_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
1231 StrCpy $R2 "Add/Reinstall components"
1232 StrCpy $R3 "Uninstall ${PRODUCT_NAME}"
1233 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
1236 StrCpy $R1 "An older version of ${PRODUCT_NAME} 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."
1237 StrCpy $R2 "Uninstall before installing"
1238 StrCpy $R3 "Do not uninstall"
1239 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1242 StrCpy $R1 "A newer version of ${PRODUCT_NAME} 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."
1243 StrCpy $R2 "Uninstall before installing"
1244 StrCpy $R3 "Do not uninstall"
1245 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1251 nsDialogs::Create /NOUNLOAD 1018
1253 ${NSD_CreateLabel} 0 0 100% 24u $R1
1256 ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
1258 ${NSD_OnClick} $R2 SDCC.PageReinstallUpdateSelection
1260 ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
1262 ${NSD_OnClick} $R3 SDCC.PageReinstallUpdateSelection
1264 ${If} $ReinstallPageCheck != 2
1265 SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
1267 SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
1274 ${Function} SDCC.PageReinstallUpdateSelection
1278 ${NSD_GetState} $R2 $R1
1280 ${If} $R1 == ${BST_CHECKED}
1281 StrCpy $ReinstallPageCheck 1
1283 StrCpy $ReinstallPageCheck 2
1288 ${Function} SDCC.PageLeaveReinstall
1290 ${NSD_GetState} $R2 $R1
1292 ${DebugMsg} "R0 = $R0, R1 = $R1, R2 = $R2"
1304 ReadRegStr $R1 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1310 ; ExecWait doesn't wait if _?=$INSTDIR is not defined!
1311 ExecWait '$R1 _?=$INSTDIR'
1323 !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD