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 want 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\pic16\*.txt"
894 Delete "$INSTDIR\include\mcs51\*.h"
895 Delete "$INSTDIR\include\hc08\*.h"
896 Delete "$INSTDIR\include\*.h"
899 Delete "$INSTDIR\doc\README.TXT"
900 Delete "$INSTDIR\doc\ChangeLog_head.txt"
903 Delete "$INSTDIR\bin\as-gbz80.exe"
904 Delete "$INSTDIR\bin\as-hc08.exe"
905 Delete "$INSTDIR\bin\as-z80.exe"
906 Delete "$INSTDIR\bin\asx8051.exe"
907 Delete "$INSTDIR\bin\aslink.exe"
908 Delete "$INSTDIR\bin\link-gbz80.exe"
909 Delete "$INSTDIR\bin\link-hc08.exe"
910 Delete "$INSTDIR\bin\link-z80.exe"
911 Delete "$INSTDIR\bin\makebin.exe"
912 Delete "$INSTDIR\bin\packihx.exe"
913 Delete "$INSTDIR\bin\sdcc.exe"
914 Delete "$INSTDIR\bin\sdcclib.exe"
915 Delete "$INSTDIR\bin\sdcpp.exe"
916 Delete "$INSTDIR\bin\readline5.dll"
919 Delete "$INSTDIR\bin\s51.exe"
920 Delete "$INSTDIR\bin\savr.exe"
921 Delete "$INSTDIR\bin\shc08.exe"
922 Delete "$INSTDIR\bin\sz80.exe"
924 Delete "$INSTDIR\bin\sdcdb.exe"
925 Delete "$INSTDIR\bin\sdcdb.el"
926 Delete "$INSTDIR\bin\sdcdbsrc.el"
928 Delete "$INSTDIR\COPYING.txt"
929 Delete "$INSTDIR\sdcc.ico"
930 Delete "$INSTDIR\uninstall.exe"
932 RMDir /r "$INSTDIR\lib\src\pic"
933 RMDir /r "$INSTDIR\lib\src\pic16"
934 RMDir "$INSTDIR\lib\src\small"
935 RMDir "$INSTDIR\lib\src\medium"
936 RMDir "$INSTDIR\lib\src\large"
937 RMDir "$INSTDIR\lib\src\mcs51"
938 RMDir "$INSTDIR\lib\src\z80"
939 RMDir "$INSTDIR\lib\src\gbz80"
940 RMDir "$INSTDIR\lib\src\ds390\examples"
941 RMDir "$INSTDIR\lib\src\ds390"
942 RMDir "$INSTDIR\lib\src\ds400"
943 RMDir "$INSTDIR\lib\src\hc08"
944 RMDir "$INSTDIR\lib\src"
946 RMDir "$INSTDIR\lib\pic"
947 RMDir "$INSTDIR\lib\pic16"
948 RMDir "$INSTDIR\lib\z80"
949 RMDir "$INSTDIR\lib\small"
950 RMDir "$INSTDIR\lib\medium"
951 RMDir "$INSTDIR\lib\large"
952 RMDir "$INSTDIR\lib\small-stack-auto"
953 RMDir "$INSTDIR\lib\gbz80"
954 RMDir "$INSTDIR\lib\ds390"
955 RMDir "$INSTDIR\lib\ds400"
956 RMDir "$INSTDIR\lib\hc08"
959 RMDir "$INSTDIR\include\asm\z80"
960 RMDir "$INSTDIR\include\asm\pic16"
961 RMDir "$INSTDIR\include\asm\pic"
962 RMDir "$INSTDIR\include\asm\mcs51"
963 RMDir "$INSTDIR\include\asm\gbz80"
964 RMDir "$INSTDIR\include\asm\ds390"
965 RMDir "$INSTDIR\include\asm\default"
966 RMDir "$INSTDIR\include\asm"
967 RMDir "$INSTDIR\include\z80"
968 RMDir "$INSTDIR\include\pic"
969 RMDir "$INSTDIR\include\pic16"
970 RMDir "$INSTDIR\include\mcs51"
971 RMDir "$INSTDIR\include\hc08"
972 RMDir "$INSTDIR\include"
975 RMDir /r "$INSTDIR\doc"
983 ;;;; SetAutoClose true
986 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
987 ; Path Manipulation functions ;
988 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
991 !include "WinMessages.nsh"
994 ; AddToPath - Adds the given dir to the search path.
995 ; Input - head of the stack
996 ; Note - Win9x systems requires reboot
998 ${Function} SDCC.AddToPath
1005 ; don't add if the path doesn't exist
1006 ${If} ${FileExists} $0
1010 ; Not on NT: read PATH from environment variable
1013 ; On NT: read PATH from registry
1014 ReadRegStr $1 HKCU "Environment" "PATH"
1017 ${StrStr} $2 "$1;" "$0;"
1019 ${StrStr} $2 "$1;" "$0\;"
1021 GetFullPathName /SHORT $3 $0
1022 ${StrStr} $2 "$1;" "$3;"
1024 ${StrStr} $2 "$1;" "$03\;"
1029 FileOpen $1 "$1\autoexec.bat" a
1032 ${If} $2 = 26 ; DOS EOF
1033 FileSeek $1 -1 END ; write over EOF
1035 ${DebugMsg} "adding line $\r$\nSET PATH=%PATH%;$3$\r$\n"
1036 FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
1038 ${DebugMsg} "SetRebootFlag true"
1041 ;System PATH variable is at:
1042 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1043 ReadRegStr $1 HKCU "Environment" "PATH"
1044 StrCpy $2 $1 1 -1 ; copy last char
1045 ${If} $2 == ";" ; if last char == ;
1046 StrCpy $1 $1 -1 ; remove last char
1051 WriteRegExpandStr HKCU "Environment" "PATH" $0
1052 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1067 ; RemoveFromPath - Remove a given dir from the path
1068 ; Input: head of the stack
1070 !macro SDCC.RemoveFromPath un
1071 ${Function} ${un}SDCC.RemoveFromPath
1080 IntFmt $6 "%c" 26 ; DOS EOF
1087 FileOpen $1 "$1\autoexec.bat" r
1090 GetFullPathName /SHORT $0 $0
1091 StrCpy $0 "SET PATH=%PATH%;$0"
1094 ; copy all lines except the line containing "SET PATH=%PATH%;$0"
1095 ; from autoexec.bat to the temporary file
1099 StrCpy $5 $3 1 -1 ; read last char
1100 ${If} $5 == $6 ; if DOS EOF
1101 StrCpy $3 $3 -1 ; remove DOS EOF so we can compare
1103 ${If} $3 != "$0$\r$\n"
1104 ${AndIf} $3 != "$0$\n"
1109 ; This is the line I'm looking for:
1111 ${DebugMsg} "removing line $0"
1112 ${DebugMsg} "SetRebootFlag true"
1121 Delete "$1\autoexec.bat"
1122 CopyFiles /SILENT $4 "$1\autoexec.bat"
1125 ;System PATH variable is at:
1126 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1127 ReadRegStr $1 HKCU "Environment" "PATH"
1128 StrCpy $5 $1 1 -1 ; copy last char
1129 ${If} $5 != ";" ; if last char != ;
1130 StrCpy $1 "$1;" ; append ;
1134 Call ${un}StrStr ; Find `$0;` in $1
1135 Pop $2 ; pos of our dir
1142 StrCpy $5 $1 -$4 ; $5 is now the part before the path to remove
1143 StrCpy $6 $2 "" $3 ; $6 is now the part after the path to remove
1146 StrCpy $5 $3 1 -1 ; copy last char
1147 ${If} $5 == ";" ; if last char == ;
1148 StrCpy $3 $3 -1 ; remove last char
1151 ; New PATH not empty: update the registry
1152 WriteRegExpandStr HKCU "Environment" "PATH" $3
1154 ; New PATH empty: remove from the registry
1155 DeleteRegValue HKCU "Environment" "PATH"
1157 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1170 !insertmacro SDCC.RemoveFromPath ""
1171 !insertmacro SDCC.RemoveFromPath "un."
1173 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1174 ; Utility Functions ;
1175 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1179 ; output, top of the stack = 1 if NT or 0 if not
1184 ; ($R0 at this point is 1 or 0)
1187 ${Function} ${un}SDCC.IsNT
1189 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
1201 !insertmacro SDCC.IsNT ""
1202 !insertmacro SDCC.IsNT "un."
1204 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1205 ; Uninstall/Reinstall page functions ;
1206 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1208 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
1210 Var ReinstallPageCheck
1212 ${Function} SDCC.PageReinstall
1214 ReadRegStr $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" ""
1217 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1223 ReadRegDWORD $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor"
1224 ReadRegDWORD $R1 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor"
1225 ReadRegDWORD $R2 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision"
1226 ReadRegDWORD $R3 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild"
1227 StrCpy $R0 $R0.$R1.$R2.$R3
1229 ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
1231 StrCpy $R1 "${PRODUCT_NAME} ${PRODUCT_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
1232 StrCpy $R2 "Add/Reinstall components"
1233 StrCpy $R3 "Uninstall ${PRODUCT_NAME}"
1234 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
1237 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."
1238 StrCpy $R2 "Uninstall before installing"
1239 StrCpy $R3 "Do not uninstall"
1240 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1243 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."
1244 StrCpy $R2 "Uninstall before installing"
1245 StrCpy $R3 "Do not uninstall"
1246 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1252 nsDialogs::Create /NOUNLOAD 1018
1254 ${NSD_CreateLabel} 0 0 100% 24u $R1
1257 ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
1259 ${NSD_OnClick} $R2 SDCC.PageReinstallUpdateSelection
1261 ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
1263 ${NSD_OnClick} $R3 SDCC.PageReinstallUpdateSelection
1265 ${If} $ReinstallPageCheck != 2
1266 SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
1268 SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
1275 ${Function} SDCC.PageReinstallUpdateSelection
1279 ${NSD_GetState} $R2 $R1
1281 ${If} $R1 == ${BST_CHECKED}
1282 StrCpy $ReinstallPageCheck 1
1284 StrCpy $ReinstallPageCheck 2
1289 ${Function} SDCC.PageLeaveReinstall
1291 ${NSD_GetState} $R2 $R1
1293 ${DebugMsg} "R0 = $R0, R1 = $R1, R2 = $R2"
1305 ReadRegStr $R1 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1311 ; Uninstall only: uninstaller should be removed
1313 ; ExecWait doesn't wait if _?=$INSTDIR is not defined!
1317 ; Uninstal & Reinstall: uninstaller will be rewritten
1319 ; ExecWait doesn't wait if _?=$INSTDIR is not defined!
1320 ExecWait '$R1 _?=$INSTDIR'
1329 !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD