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 SetOutPath "$INSTDIR\include\z80"
430 File "${DEV_ROOT}\include\z80\*.h"
431 SetOutPath "$INSTDIR\include"
432 File "${DEV_ROOT}\include\*.h"
435 ${Section} "SDCC DS390 library" SEC06
437 SetOutPath "$INSTDIR\lib\ds390"
438 File "${DEV_ROOT}\lib\ds390\*.rel"
439 File "${DEV_ROOT}\lib\ds390\*.lib"
442 ${Section} "SDCC DS400 library" SEC07
444 SetOutPath "$INSTDIR\lib\ds400"
445 File "${DEV_ROOT}\lib\ds400\*.rel"
446 File "${DEV_ROOT}\lib\ds400\*.lib"
449 ${Section} "SDCC GBZ80 library" SEC08
451 SetOutPath "$INSTDIR\lib\gbz80"
452 File "${DEV_ROOT}\lib\gbz80\*.o"
453 File "${DEV_ROOT}\lib\gbz80\*.lib"
456 ${Section} "SDCC Z80 library" SEC09
458 SetOutPath "$INSTDIR\lib\z80"
459 File "${DEV_ROOT}\lib\z80\*.o"
460 File "${DEV_ROOT}\lib\z80\*.lib"
463 ${Section} "SDCC small model library" SEC10
465 SetOutPath "$INSTDIR\lib\small"
466 File "${DEV_ROOT}\lib\small\*.rel"
467 File "${DEV_ROOT}\lib\small\*.lib"
470 ${Section} "SDCC medium model library" SEC11
472 SetOutPath "$INSTDIR\lib\medium"
473 File "${DEV_ROOT}\lib\medium\*.rel"
474 File "${DEV_ROOT}\lib\medium\*.lib"
477 ${Section} "SDCC large model library" SEC12
479 SetOutPath "$INSTDIR\lib\large"
480 File "${DEV_ROOT}\lib\large\*.rel"
481 File "${DEV_ROOT}\lib\large\*.lib"
484 ${Section} "SDCC small-stack-auto model library" SEC13
486 SetOutPath "$INSTDIR\lib\small-stack-auto"
487 File "${DEV_ROOT}\lib\small-stack-auto\*.rel"
488 File "${DEV_ROOT}\lib\small-stack-auto\*.lib"
491 ${Section} "SDCC HC08 library" SEC14
493 SetOutPath "$INSTDIR\lib\hc08"
494 File "${DEV_ROOT}\lib\hc08\*.rel"
495 File "${DEV_ROOT}\lib\hc08\*.lib"
498 ${Section} "SDCC PIC16 library" SEC15
500 SetOutPath "$INSTDIR\lib\pic16"
501 File "${DEV_ROOT}\lib\pic16\*.o"
502 File "${DEV_ROOT}\lib\pic16\*.lib"
505 ${Section} "SDCC PIC library" SEC16
507 SetOutPath "$INSTDIR\lib\pic"
508 File "${DEV_ROOT}\lib\pic\*.lib"
511 ${Section} "SDCC library sources" SEC17
513 SetOutPath "$INSTDIR\lib\src\ds390\examples"
514 File "${DEV_ROOT}\lib\src\ds390\examples\MOVED"
516 SetOutPath "$INSTDIR\lib\src\ds390"
517 File "${DEV_ROOT}\lib\src\ds390\*.c"
518 # File "${DEV_ROOT}\lib\src\ds390\Makefile"
520 SetOutPath "$INSTDIR\lib\src\ds400"
521 File "${DEV_ROOT}\lib\src\ds400\*.c"
522 # File "${DEV_ROOT}\lib\src\ds400\Makefile"
524 SetOutPath "$INSTDIR\lib\src\gbz80"
525 File "${DEV_ROOT}\lib\src\gbz80\*.c"
526 File "${DEV_ROOT}\lib\src\gbz80\*.s"
527 # File "${DEV_ROOT}\lib\src\gbz80\Makefile"
529 SetOutPath "$INSTDIR\lib\src\z80"
530 File "${DEV_ROOT}\lib\src\z80\*.c"
531 File "${DEV_ROOT}\lib\src\z80\*.s"
532 # File "${DEV_ROOT}\lib\src\z80\Makefile"
534 SetOutPath "$INSTDIR\lib\src\hc08"
535 File "${DEV_ROOT}\lib\src\hc08\*.c"
536 # File "${DEV_ROOT}\lib\src\hc08\Makefile"
538 SetOutPath "$INSTDIR\lib\src\mcs51"
539 File "${DEV_ROOT}\lib\src\mcs51\*.asm"
540 # File "${DEV_ROOT}\lib\src\mcs51\Makefile"
542 SetOutPath "$INSTDIR\lib\src\small"
543 # File "${DEV_ROOT}\lib\src\small\Makefile"
545 SetOutPath "$INSTDIR\lib\src\medium"
546 # File "${DEV_ROOT}\lib\src\medium\Makefile"
548 SetOutPath "$INSTDIR\lib\src\large"
549 # File "${DEV_ROOT}\lib\src\large\Makefile"
551 SetOutPath "$INSTDIR\lib\src\pic"
552 # File "${DEV_ROOT}\lib\src\pic\configure"
553 # File "${DEV_ROOT}\lib\src\pic\configure.in"
554 # File "${DEV_ROOT}\lib\src\pic\GPL"
555 # File "${DEV_ROOT}\lib\src\pic\LGPL"
556 # File "${DEV_ROOT}\lib\src\pic\Makefile"
557 # File "${DEV_ROOT}\lib\src\pic\Makefile.common"
558 # File "${DEV_ROOT}\lib\src\pic\Makefile.common.in"
559 # File "${DEV_ROOT}\lib\src\pic\Makefile.rules"
560 # File "${DEV_ROOT}\lib\src\pic\Makefile.subdir"
561 # File "${DEV_ROOT}\lib\src\pic\NEWS"
562 # File "${DEV_ROOT}\lib\src\pic\README"
563 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.c"
564 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.S"
566 SetOutPath "$INSTDIR\lib\src\pic\libsdcc"
567 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.c"
568 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.S"
569 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.inc"
570 # File "${DEV_ROOT}\lib\src\pic\libsdcc\Makefile"
572 SetOutPath "$INSTDIR\lib\src\pic\libdev"
573 File "${DEV_ROOT}\lib\src\pic\libdev\*.c"
574 # File "${DEV_ROOT}\lib\src\pic\libdev\Makefile"
576 SetOutPath "$INSTDIR\lib\src\pic\libm"
577 File "${DEV_ROOT}\lib\src\pic\libm\*.c"
579 SetOutPath "$INSTDIR\lib\src\pic16"
580 # File "${DEV_ROOT}\lib\src\pic16\configure"
581 # File "${DEV_ROOT}\lib\src\pic16\configure.in"
582 # File "${DEV_ROOT}\lib\src\pic16\COPYING"
583 # File "${DEV_ROOT}\lib\src\pic16\Makefile"
584 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common"
585 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common.in"
586 # File "${DEV_ROOT}\lib\src\pic16\Makefile.rules"
587 # File "${DEV_ROOT}\lib\src\pic16\Makefile.subdir"
588 # File "${DEV_ROOT}\lib\src\pic16\pics.all"
589 # File "${DEV_ROOT}\lib\src\pic16\pics.build"
590 # File "${DEV_ROOT}\lib\src\pic16\README"
592 SetOutPath "$INSTDIR\lib\src\pic16\debug"
593 # File "${DEV_ROOT}\lib\src\pic16\debug\Makefile"
595 SetOutPath "$INSTDIR\lib\src\pic16\debug\gstack"
596 # File "${DEV_ROOT}\lib\src\pic16\debug\gstack\Makefile"
597 File "${DEV_ROOT}\lib\src\pic16\debug\gstack\*.c"
599 SetOutPath "$INSTDIR\lib\src\pic16\libc"
600 # File "${DEV_ROOT}\lib\src\pic16\libc\Makefile"
602 SetOutPath "$INSTDIR\lib\src\pic16\libc\ctype"
603 File "${DEV_ROOT}\lib\src\pic16\libc\ctype\*.c"
604 # File "${DEV_ROOT}\lib\src\pic16\libc\ctype\Makefile"
606 SetOutPath "$INSTDIR\lib\src\pic16\libc\delay"
607 File "${DEV_ROOT}\lib\src\pic16\libc\delay\*.S"
608 # File "${DEV_ROOT}\lib\src\pic16\libc\delay\Makefile"
610 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdio"
611 File "${DEV_ROOT}\lib\src\pic16\libc\stdio\*.c"
612 # File "${DEV_ROOT}\lib\src\pic16\libc\stdio\Makefile"
614 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdlib"
615 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.c"
616 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.S"
617 # File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\Makefile"
619 SetOutPath "$INSTDIR\lib\src\pic16\libc\string"
620 File "${DEV_ROOT}\lib\src\pic16\libc\string\*.c"
621 # File "${DEV_ROOT}\lib\src\pic16\libc\string\Makefile"
623 SetOutPath "$INSTDIR\lib\src\pic16\libc\utils"
624 File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
625 # File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
627 SetOutPath "$INSTDIR\lib\src\pic16\libdev"
628 File "${DEV_ROOT}\lib\src\pic16\libdev\*.c"
629 # File "${DEV_ROOT}\lib\src\pic16\libdev\Makefile"
631 SetOutPath "$INSTDIR\lib\src\pic16\libio"
632 File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
633 # File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
635 SetOutPath "$INSTDIR\lib\src\pic16\libio\adc"
636 File "${DEV_ROOT}\lib\src\pic16\libio\adc\*.c"
637 # File "${DEV_ROOT}\lib\src\pic16\libio\adc\Makefile"
639 SetOutPath "$INSTDIR\lib\src\pic16\libio\i2c"
640 File "${DEV_ROOT}\lib\src\pic16\libio\i2c\*.c"
641 # File "${DEV_ROOT}\lib\src\pic16\libio\i2c\Makefile"
643 SetOutPath "$INSTDIR\lib\src\pic16\libio\usart"
644 File "${DEV_ROOT}\lib\src\pic16\libio\usart\*.c"
645 # File "${DEV_ROOT}\lib\src\pic16\libio\usart\Makefile"
647 SetOutPath "$INSTDIR\lib\src\pic16\libm"
648 File "${DEV_ROOT}\lib\src\pic16\libm\*.c"
649 # File "${DEV_ROOT}\lib\src\pic16\libm\Makefile"
651 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc"
652 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\Makefile"
654 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\char"
655 File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\*.c"
656 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\Makefile"
658 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\fixed16x16"
659 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.c"
660 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.S"
661 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\Makefile"
663 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\float"
664 File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\*.c"
665 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\Makefile"
667 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\gptr"
668 File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\*.c"
669 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\Makefile"
671 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\int"
672 File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\*.c"
673 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\Makefile"
675 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\long"
676 File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\*.c"
677 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\Makefile"
679 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\lregs"
680 File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\*.c"
681 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\Makefile"
683 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\stack"
684 File "${DEV_ROOT}\lib\src\pic16\libsdcc\stack\*.S"
686 SetOutPath "$INSTDIR\lib\src\pic16\startup"
687 File "${DEV_ROOT}\lib\src\pic16\startup\*.c"
688 # File "${DEV_ROOT}\lib\src\pic16\startup\Makefile"
689 # File "${DEV_ROOT}\lib\src\pic16\startup\README"
691 SetOutPath "$INSTDIR\lib\src"
692 File "${DEV_ROOT}\lib\src\*.c"
695 ;--------------------------------
699 LangString DESC_SEC01 ${LANG_ENGLISH} "SDCC application files"
700 LangString DESC_SEC02 ${LANG_ENGLISH} "ucSim application files"
701 LangString DESC_SEC03 ${LANG_ENGLISH} "SDCDB files"
702 LangString DESC_SEC04 ${LANG_ENGLISH} "SDCC documentation"
703 LangString DESC_SEC05 ${LANG_ENGLISH} "SDCC include files"
704 LangString DESC_SEC06 ${LANG_ENGLISH} "SDCC DS390 library"
705 LangString DESC_SEC07 ${LANG_ENGLISH} "SDCC DS400 library"
706 LangString DESC_SEC08 ${LANG_ENGLISH} "SDCC GBZ80 library"
707 LangString DESC_SEC09 ${LANG_ENGLISH} "SDCC Z80 library"
708 LangString DESC_SEC10 ${LANG_ENGLISH} "SDCC small model library"
709 LangString DESC_SEC11 ${LANG_ENGLISH} "SDCC medium model library"
710 LangString DESC_SEC12 ${LANG_ENGLISH} "SDCC large model library"
711 LangString DESC_SEC13 ${LANG_ENGLISH} "SDCC small-stack-auto model library"
712 LangString DESC_SEC14 ${LANG_ENGLISH} "SDCC HC08 library"
713 LangString DESC_SEC15 ${LANG_ENGLISH} "SDCC PIC16 library"
714 LangString DESC_SEC16 ${LANG_ENGLISH} "SDCC PIC library"
715 LangString DESC_SEC17 ${LANG_ENGLISH} "SDCC library sources"
717 ;Assign language strings to sections
718 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
719 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC01)
720 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC02)
721 !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_SEC03)
722 !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_SEC04)
723 !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(DESC_SEC05)
724 !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(DESC_SEC06)
725 !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(DESC_SEC07)
726 !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $(DESC_SEC08)
727 !insertmacro MUI_DESCRIPTION_TEXT ${SEC09} $(DESC_SEC09)
728 !insertmacro MUI_DESCRIPTION_TEXT ${SEC10} $(DESC_SEC10)
729 !insertmacro MUI_DESCRIPTION_TEXT ${SEC11} $(DESC_SEC11)
730 !insertmacro MUI_DESCRIPTION_TEXT ${SEC12} $(DESC_SEC12)
731 !insertmacro MUI_DESCRIPTION_TEXT ${SEC13} $(DESC_SEC13)
732 !insertmacro MUI_DESCRIPTION_TEXT ${SEC14} $(DESC_SEC14)
733 !insertmacro MUI_DESCRIPTION_TEXT ${SEC15} $(DESC_SEC15)
734 !insertmacro MUI_DESCRIPTION_TEXT ${SEC16} $(DESC_SEC16)
735 !insertmacro MUI_DESCRIPTION_TEXT ${SEC17} $(DESC_SEC17)
736 !insertmacro MUI_FUNCTION_DESCRIPTION_END
737 ;--------------------------------
739 ${Section} -Icons SECICONS
740 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
741 CreateDirectory "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
742 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk" "$INSTDIR\uninstall.exe"
744 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\sdccman.pdf" "" "$INSTDIR\sdcc.ico" "" "" "" ""
745 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
746 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
748 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
749 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog_head.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
751 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk" "$INSTDIR\COPYING.txt"
752 !insertmacro MUI_STARTMENU_WRITE_END
755 ${Section} -INI SECINI
756 WriteIniStr "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.url" "InternetShortcut" "URL" "http://sdcc.sourceforge.net/"
758 WriteIniStr "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.url" "InternetShortcut" "URL" "http://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc/ChangeLog"
762 ${Section} -PostInstall SECPOSTINSTALL
763 WriteRegStr ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "" $INSTDIR
764 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
765 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor" "${VER_MAJOR}"
766 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor" "${VER_MINOR}"
767 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision" "${VER_REVISION}"
768 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild" "${VER_BUILD}"
771 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
772 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR"
773 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
774 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "sdcc.sourceforge.net"
775 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://sdcc.sourceforge.net/"
776 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "HelpLink" "http://sdcc.sourceforge.net/"
777 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://sdcc.sourceforge.net/"
779 WriteUninstaller "$INSTDIR\uninstall.exe"
783 ;;;; Uninstaller code ;;;;
785 ${Section} Uninstall SECUNINSTALL
786 !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_STARTMENUPAGE_VARIABLE
788 ${DebugMsg} "removing path $INSTDIR\bin"
790 Call un.SDCC.RemoveFromPath
793 DeleteRegKey ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
794 DeleteRegKey ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}"
796 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk"
797 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk"
799 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.url"
800 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk"
802 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk"
803 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk"
804 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.url"
806 RMDir "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
808 Delete "$INSTDIR\lib\src\large\Makefile"
810 Delete "$INSTDIR\lib\src\medium\Makefile"
812 Delete "$INSTDIR\lib\src\small\Makefile"
814 Delete "$INSTDIR\lib\src\mcs51\*.asm"
815 Delete "$INSTDIR\lib\src\mcs51\Makefile"
816 Delete "$INSTDIR\lib\src\mcs51\README"
818 Delete "$INSTDIR\lib\src\hc08\*.c"
819 Delete "$INSTDIR\lib\src\hc08\hc08.lib"
820 Delete "$INSTDIR\lib\src\hc08\Makefile"
822 Delete "$INSTDIR\lib\src\z80\*.c"
823 Delete "$INSTDIR\lib\src\z80\*.s"
824 Delete "$INSTDIR\lib\src\z80\z80.lib"
825 Delete "$INSTDIR\lib\src\z80\README"
826 Delete "$INSTDIR\lib\src\z80\Makefile"
828 Delete "$INSTDIR\lib\src\gbz80\*.c"
829 Delete "$INSTDIR\lib\src\gbz80\*.s"
830 Delete "$INSTDIR\lib\src\gbz80\gbz80.lib"
831 Delete "$INSTDIR\lib\src\gbz80\README"
832 Delete "$INSTDIR\lib\src\gbz80\Makefile"
834 Delete "$INSTDIR\lib\src\ds390\*.c"
835 Delete "$INSTDIR\lib\src\ds390\libds390.lib"
836 Delete "$INSTDIR\lib\src\ds390\Makefile.dep"
837 Delete "$INSTDIR\lib\src\ds390\Makefile"
838 Delete "$INSTDIR\lib\src\ds390\examples\MOVED"
840 Delete "$INSTDIR\lib\src\ds400\*.c"
841 Delete "$INSTDIR\lib\src\ds400\libds400.lib"
842 Delete "$INSTDIR\lib\src\ds400\Makefile.dep"
843 Delete "$INSTDIR\lib\src\ds400\Makefile"
845 Delete "$INSTDIR\lib\src\*.c"
847 Delete "$INSTDIR\lib\pic\*.o"
848 Delete "$INSTDIR\lib\pic\*.lib"
850 Delete "$INSTDIR\lib\pic16\*.o"
851 Delete "$INSTDIR\lib\pic16\*.lib"
853 Delete "$INSTDIR\lib\hc08\*.rel"
854 Delete "$INSTDIR\lib\hc08\*.lib"
856 Delete "$INSTDIR\lib\z80\*.o"
857 Delete "$INSTDIR\lib\z80\*.lib"
859 Delete "$INSTDIR\lib\small\*.rel"
860 Delete "$INSTDIR\lib\small\*.lib"
862 Delete "$INSTDIR\lib\medium\*.rel"
863 Delete "$INSTDIR\lib\medium\*.lib"
865 Delete "$INSTDIR\lib\large\*.rel"
866 Delete "$INSTDIR\lib\large\*.lib"
868 Delete "$INSTDIR\lib\small-stack-auto\*.rel"
869 Delete "$INSTDIR\lib\small-stack-auto\*.lib"
871 Delete "$INSTDIR\lib\gbz80\*.o"
872 Delete "$INSTDIR\lib\gbz80\*.lib"
874 Delete "$INSTDIR\lib\ds390\*.rel"
875 Delete "$INSTDIR\lib\ds390\*.lib"
877 Delete "$INSTDIR\lib\ds400\*.rel"
878 Delete "$INSTDIR\lib\ds400\*.lib"
880 Delete "$INSTDIR\include\asm\z80\*.h"
881 Delete "$INSTDIR\include\asm\pic16\*.h"
882 Delete "$INSTDIR\include\asm\pic\*.h"
883 Delete "$INSTDIR\include\asm\mcs51\*.h"
884 Delete "$INSTDIR\include\asm\gbz80\*.h"
885 Delete "$INSTDIR\include\asm\ds390\*.h"
886 Delete "$INSTDIR\include\asm\default\*.h"
887 Delete "$INSTDIR\include\z80\*.h"
888 Delete "$INSTDIR\include\pic\*.h"
889 Delete "$INSTDIR\include\pic\*.txt"
890 Delete "$INSTDIR\include\pic\*.inc"
891 Delete "$INSTDIR\include\pic16\*.h"
892 Delete "$INSTDIR\include\mcs51\*.h"
893 Delete "$INSTDIR\include\hc08\*.h"
894 Delete "$INSTDIR\include\*.h"
897 Delete "$INSTDIR\doc\README.TXT"
898 Delete "$INSTDIR\doc\ChangeLog_head.txt"
901 Delete "$INSTDIR\bin\as-gbz80.exe"
902 Delete "$INSTDIR\bin\as-hc08.exe"
903 Delete "$INSTDIR\bin\as-z80.exe"
904 Delete "$INSTDIR\bin\asx8051.exe"
905 Delete "$INSTDIR\bin\aslink.exe"
906 Delete "$INSTDIR\bin\link-gbz80.exe"
907 Delete "$INSTDIR\bin\link-hc08.exe"
908 Delete "$INSTDIR\bin\link-z80.exe"
909 Delete "$INSTDIR\bin\makebin.exe"
910 Delete "$INSTDIR\bin\packihx.exe"
911 Delete "$INSTDIR\bin\sdcc.exe"
912 Delete "$INSTDIR\bin\sdcclib.exe"
913 Delete "$INSTDIR\bin\sdcpp.exe"
914 Delete "$INSTDIR\bin\readline5.dll"
917 Delete "$INSTDIR\bin\s51.exe"
918 Delete "$INSTDIR\bin\savr.exe"
919 Delete "$INSTDIR\bin\shc08.exe"
920 Delete "$INSTDIR\bin\sz80.exe"
922 Delete "$INSTDIR\bin\sdcdb.exe"
923 Delete "$INSTDIR\bin\sdcdb.el"
924 Delete "$INSTDIR\bin\sdcdbsrc.el"
926 Delete "$INSTDIR\COPYING.txt"
927 Delete "$INSTDIR\sdcc.ico"
928 Delete "$INSTDIR\uninstall.exe"
930 RMDir /r "$INSTDIR\lib\src\pic"
931 RMDir /r "$INSTDIR\lib\src\pic16"
932 RMDir "$INSTDIR\lib\src\small"
933 RMDir "$INSTDIR\lib\src\medium"
934 RMDir "$INSTDIR\lib\src\large"
935 RMDir "$INSTDIR\lib\src\mcs51"
936 RMDir "$INSTDIR\lib\src\z80"
937 RMDir "$INSTDIR\lib\src\gbz80"
938 RMDir "$INSTDIR\lib\src\ds390\examples"
939 RMDir "$INSTDIR\lib\src\ds390"
940 RMDir "$INSTDIR\lib\src\ds400"
941 RMDir "$INSTDIR\lib\src\hc08"
942 RMDir "$INSTDIR\lib\src"
944 RMDir "$INSTDIR\lib\pic"
945 RMDir "$INSTDIR\lib\pic16"
946 RMDir "$INSTDIR\lib\z80"
947 RMDir "$INSTDIR\lib\small"
948 RMDir "$INSTDIR\lib\medium"
949 RMDir "$INSTDIR\lib\large"
950 RMDir "$INSTDIR\lib\small-stack-auto"
951 RMDir "$INSTDIR\lib\gbz80"
952 RMDir "$INSTDIR\lib\ds390"
953 RMDir "$INSTDIR\lib\ds400"
954 RMDir "$INSTDIR\lib\hc08"
957 RMDir "$INSTDIR\include\asm\z80"
958 RMDir "$INSTDIR\include\asm\pic16"
959 RMDir "$INSTDIR\include\asm\pic"
960 RMDir "$INSTDIR\include\asm\mcs51"
961 RMDir "$INSTDIR\include\asm\gbz80"
962 RMDir "$INSTDIR\include\asm\ds390"
963 RMDir "$INSTDIR\include\asm\default"
964 RMDir "$INSTDIR\include\asm"
965 RMDir "$INSTDIR\include\z80"
966 RMDir "$INSTDIR\include\pic"
967 RMDir "$INSTDIR\include\pic16"
968 RMDir "$INSTDIR\include\mcs51"
969 RMDir "$INSTDIR\include\hc08"
970 RMDir "$INSTDIR\include"
973 RMDir /r "$INSTDIR\doc"
981 ;;;; SetAutoClose true
984 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
985 ; Path Manipulation functions ;
986 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
989 !include "WinMessages.nsh"
992 ; AddToPath - Adds the given dir to the search path.
993 ; Input - head of the stack
994 ; Note - Win9x systems requires reboot
996 ${Function} SDCC.AddToPath
1003 ; don't add if the path doesn't exist
1004 ${If} ${FileExists} $0
1008 ; Not on NT: read PATH from environment variable
1011 ; On NT: read PATH from registry
1012 ReadRegStr $1 HKCU "Environment" "PATH"
1015 ${StrStr} $2 "$1;" "$0;"
1017 ${StrStr} $2 "$1;" "$0\;"
1019 GetFullPathName /SHORT $3 $0
1020 ${StrStr} $2 "$1;" "$3;"
1022 ${StrStr} $2 "$1;" "$03\;"
1027 FileOpen $1 "$1\autoexec.bat" a
1030 ${If} $2 = 26 ; DOS EOF
1031 FileSeek $1 -1 END ; write over EOF
1033 ${DebugMsg} "adding line $\r$\nSET PATH=%PATH%;$3$\r$\n"
1034 FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
1036 ${DebugMsg} "SetRebootFlag true"
1039 ;System PATH variable is at:
1040 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1041 ReadRegStr $1 HKCU "Environment" "PATH"
1042 StrCpy $2 $1 1 -1 ; copy last char
1043 ${If} $2 == ";" ; if last char == ;
1044 StrCpy $1 $1 -1 ; remove last char
1049 WriteRegExpandStr HKCU "Environment" "PATH" $0
1050 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1065 ; RemoveFromPath - Remove a given dir from the path
1066 ; Input: head of the stack
1068 !macro SDCC.RemoveFromPath un
1069 ${Function} ${un}SDCC.RemoveFromPath
1078 IntFmt $6 "%c" 26 ; DOS EOF
1085 FileOpen $1 "$1\autoexec.bat" r
1088 GetFullPathName /SHORT $0 $0
1089 StrCpy $0 "SET PATH=%PATH%;$0"
1092 ; copy all lines except the line containing "SET PATH=%PATH%;$0"
1093 ; from autoexec.bat to the temporary file
1097 StrCpy $5 $3 1 -1 ; read last char
1098 ${If} $5 == $6 ; if DOS EOF
1099 StrCpy $3 $3 -1 ; remove DOS EOF so we can compare
1101 ${If} $3 != "$0$\r$\n"
1102 ${AndIf} $3 != "$0$\n"
1107 ; This is the line I'm looking for:
1109 ${DebugMsg} "removing line $0"
1110 ${DebugMsg} "SetRebootFlag true"
1119 Delete "$1\autoexec.bat"
1120 CopyFiles /SILENT $4 "$1\autoexec.bat"
1123 ;System PATH variable is at:
1124 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1125 ReadRegStr $1 HKCU "Environment" "PATH"
1126 StrCpy $5 $1 1 -1 ; copy last char
1127 ${If} $5 != ";" ; if last char != ;
1128 StrCpy $1 "$1;" ; append ;
1132 Call ${un}StrStr ; Find `$0;` in $1
1133 Pop $2 ; pos of our dir
1140 StrCpy $5 $1 -$4 ; $5 is now the part before the path to remove
1141 StrCpy $6 $2 "" $3 ; $6 is now the part after the path to remove
1144 StrCpy $5 $3 1 -1 ; copy last char
1145 ${If} $5 == ";" ; if last char == ;
1146 StrCpy $3 $3 -1 ; remove last char
1149 ; New PATH not empty: update the registry
1150 WriteRegExpandStr HKCU "Environment" "PATH" $3
1152 ; New PATH empty: remove from the registry
1153 DeleteRegValue HKCU "Environment" "PATH"
1155 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1168 !insertmacro SDCC.RemoveFromPath ""
1169 !insertmacro SDCC.RemoveFromPath "un."
1171 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1172 ; Utility Functions ;
1173 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1177 ; output, top of the stack = 1 if NT or 0 if not
1182 ; ($R0 at this point is 1 or 0)
1185 ${Function} ${un}SDCC.IsNT
1187 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
1199 !insertmacro SDCC.IsNT ""
1200 !insertmacro SDCC.IsNT "un."
1202 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1203 ; Uninstall/Reinstall page functions ;
1204 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1206 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
1208 Var ReinstallPageCheck
1210 ${Function} SDCC.PageReinstall
1212 ReadRegStr $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" ""
1215 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1221 ReadRegDWORD $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor"
1222 ReadRegDWORD $R1 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor"
1223 ReadRegDWORD $R2 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision"
1224 ReadRegDWORD $R3 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild"
1225 StrCpy $R0 $R0.$R1.$R2.$R3
1227 ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
1229 StrCpy $R1 "${PRODUCT_NAME} ${PRODUCT_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
1230 StrCpy $R2 "Add/Reinstall components"
1231 StrCpy $R3 "Uninstall ${PRODUCT_NAME}"
1232 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
1235 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."
1236 StrCpy $R2 "Uninstall before installing"
1237 StrCpy $R3 "Do not uninstall"
1238 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1241 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."
1242 StrCpy $R2 "Uninstall before installing"
1243 StrCpy $R3 "Do not uninstall"
1244 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1250 nsDialogs::Create /NOUNLOAD 1018
1252 ${NSD_CreateLabel} 0 0 100% 24u $R1
1255 ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
1257 ${NSD_OnClick} $R2 SDCC.PageReinstallUpdateSelection
1259 ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
1261 ${NSD_OnClick} $R3 SDCC.PageReinstallUpdateSelection
1263 ${If} $ReinstallPageCheck != 2
1264 SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
1266 SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
1273 ${Function} SDCC.PageReinstallUpdateSelection
1277 ${NSD_GetState} $R2 $R1
1279 ${If} $R1 == ${BST_CHECKED}
1280 StrCpy $ReinstallPageCheck 1
1282 StrCpy $ReinstallPageCheck 2
1287 ${Function} SDCC.PageLeaveReinstall
1289 ${NSD_GetState} $R2 $R1
1291 ${DebugMsg} "R0 = $R0, R1 = $R1, R2 = $R2"
1303 ReadRegStr $R1 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1309 ; ExecWait doesn't wait if _?=$INSTDIR is not defined!
1310 ExecWait '$R1 _?=$INSTDIR'
1322 !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD