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
259 !define MUI_FINISHPAGE_SHOWREADME_TEXT "Add $INSTDIR\bin to the PATH"
260 !define MUI_FINISHPAGE_SHOWREADME_FUNCTION SDCC.AddBinToPath
261 !define MUI_FINISHPAGE_SHOWREADME
262 !insertmacro MUI_PAGE_FINISH
264 ${Function} SDCC.AddBinToPath
266 ${DebugMsg} "adding path $INSTDIR\bin"
272 !insertmacro MUI_UNPAGE_CONFIRM
273 !insertmacro MUI_UNPAGE_INSTFILES
276 !insertmacro MUI_LANGUAGE "English"
278 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
281 InstallDir "$PROGRAMFILES\SDCC"
282 ;;;;ShowInstDetails show
283 ;;;;ShowUnInstDetails show
287 ${DebugMsg} "Pre INSTDIR = $INSTDIR"
289 !ifndef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
290 ; Old unistallation method
291 ; Uninstall the old version, if present
292 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
295 MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
296 "$(^Name) is already installed. $\n$\nClick 'OK' to remove the \
297 previous version or 'Cancel' to cancel this upgrade." \
302 ; Run the uninstaller
304 ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
309 ; Install the new version
310 MessageBox MB_YESNO|MB_ICONQUESTION "This will install $(^Name). Do you wish to continue?" IDYES +2
315 ; If the registry key exists it is an uninstallation or reinstallation:
316 ; take the old installation directory
319 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation"
322 StrCpy $SDCC.PathToRemove "$INSTDIR\bin"
327 ${DebugMsg} "Post INSTDIR = $INSTDIR"
330 ${Function} un.onInit
332 ${DebugMsg} "Pre INSTDIR = $INSTDIR"
335 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation"
341 ${DebugMsg} "Post INSTDIR = $INSTDIR"
345 ${Section} -Common SECCOMMON
346 SetOutPath "$INSTDIR"
348 File "${SDCC_ROOT}\COPYING.TXT"
351 ${Section} "SDCC application files" SEC01
353 SetOutPath "$INSTDIR\bin"
354 File "${SDCC_ROOT}\bin\as-gbz80.exe"
355 File "${SDCC_ROOT}\bin\as-hc08.exe"
356 File "${SDCC_ROOT}\bin\as-z80.exe"
357 File "${SDCC_ROOT}\bin\asx8051.exe"
358 File "${SDCC_ROOT}\bin\aslink.exe"
359 File "${SDCC_ROOT}\bin\link-gbz80.exe"
360 File "${SDCC_ROOT}\bin\link-hc08.exe"
361 File "${SDCC_ROOT}\bin\link-z80.exe"
362 File "${SDCC_ROOT}\bin\makebin.exe"
363 File "${SDCC_ROOT}\bin\packihx.exe"
364 File "${SDCC_ROOT}\bin\sdcc.exe"
365 File "${SDCC_ROOT}\bin\sdcclib.exe"
366 File "${SDCC_ROOT}\bin\sdcpp.exe"
367 File "${SDCC_ROOT}\bin\readline5.dll"
370 ${Section} "ucSim application files" SEC02
372 SetOutPath "$INSTDIR\bin"
373 File "${SDCC_ROOT}\bin\s51.exe"
374 File "${SDCC_ROOT}\bin\savr.exe"
375 File "${SDCC_ROOT}\bin\shc08.exe"
376 File "${SDCC_ROOT}\bin\sz80.exe"
379 ${Section} "SDCDB files" SEC03
381 File "${SDCC_ROOT}\bin\sdcdb.exe"
382 File "${SDCC_ROOT}\bin\sdcdb.el"
383 File "${SDCC_ROOT}\bin\sdcdbsrc.el"
386 ${Section} "SDCC documentation" SEC04
388 SetOutPath "$INSTDIR\doc"
390 File /r "${SDCC_ROOT}\doc\*"
392 File "${SDCC_ROOT}\doc\ChangeLog_head.txt"
393 File "${SDCC_ROOT}\doc\README.TXT"
397 ${Section} "SDCC include files" SEC05
399 SetOutPath "$INSTDIR\include\asm\default"
400 File "${DEV_ROOT}\include\asm\default\features.h"
401 SetOutPath "$INSTDIR\include\asm\ds390"
402 File "${DEV_ROOT}\include\asm\ds390\features.h"
403 SetOutPath "$INSTDIR\include\asm\gbz80"
404 File "${DEV_ROOT}\include\asm\gbz80\features.h"
405 SetOutPath "$INSTDIR\include\asm\mcs51"
406 File "${DEV_ROOT}\include\asm\mcs51\features.h"
407 SetOutPath "$INSTDIR\include\asm\pic"
408 File "${DEV_ROOT}\include\asm\pic\features.h"
409 SetOutPath "$INSTDIR\include\asm\pic16"
410 File "${DEV_ROOT}\include\asm\pic16\features.h"
411 SetOutPath "$INSTDIR\include\asm\z80"
412 File "${DEV_ROOT}\include\asm\z80\features.h"
413 SetOutPath "$INSTDIR\include\hc08"
414 File "${DEV_ROOT}\include\hc08\*.h"
415 SetOutPath "$INSTDIR\include\mcs51"
416 File "${DEV_ROOT}\include\mcs51\*.h"
417 SetOutPath "$INSTDIR\include\pic"
418 File "${DEV_ROOT}\include\pic\*.h"
419 File "${DEV_ROOT}\include\pic\*.txt"
420 File "${DEV_ROOT}\include\pic\*.inc"
421 SetOutPath "$INSTDIR\include\pic16"
422 File "${DEV_ROOT}\include\pic16\*.h"
423 SetOutPath "$INSTDIR\include\z80"
424 File "${DEV_ROOT}\include\z80\*.h"
425 SetOutPath "$INSTDIR\include"
426 File "${DEV_ROOT}\include\*.h"
429 ${Section} "SDCC DS390 library" SEC06
431 SetOutPath "$INSTDIR\lib\ds390"
432 File "${DEV_ROOT}\lib\ds390\*.rel"
433 File "${DEV_ROOT}\lib\ds390\*.lib"
436 ${Section} "SDCC DS400 library" SEC07
438 SetOutPath "$INSTDIR\lib\ds400"
439 File "${DEV_ROOT}\lib\ds400\*.rel"
440 File "${DEV_ROOT}\lib\ds400\*.lib"
443 ${Section} "SDCC GBZ80 library" SEC08
445 SetOutPath "$INSTDIR\lib\gbz80"
446 File "${DEV_ROOT}\lib\gbz80\*.o"
447 File "${DEV_ROOT}\lib\gbz80\*.lib"
450 ${Section} "SDCC Z80 library" SEC09
452 SetOutPath "$INSTDIR\lib\z80"
453 File "${DEV_ROOT}\lib\z80\*.o"
454 File "${DEV_ROOT}\lib\z80\*.lib"
457 ${Section} "SDCC small model library" SEC10
459 SetOutPath "$INSTDIR\lib\small"
460 File "${DEV_ROOT}\lib\small\*.rel"
461 File "${DEV_ROOT}\lib\small\*.lib"
464 ${Section} "SDCC medium model library" SEC11
466 SetOutPath "$INSTDIR\lib\medium"
467 File "${DEV_ROOT}\lib\medium\*.rel"
468 File "${DEV_ROOT}\lib\medium\*.lib"
471 ${Section} "SDCC large model library" SEC12
473 SetOutPath "$INSTDIR\lib\large"
474 File "${DEV_ROOT}\lib\large\*.rel"
475 File "${DEV_ROOT}\lib\large\*.lib"
478 ${Section} "SDCC small-stack-auto model library" SEC13
480 SetOutPath "$INSTDIR\lib\small-stack-auto"
481 File "${DEV_ROOT}\lib\small-stack-auto\*.rel"
482 File "${DEV_ROOT}\lib\small-stack-auto\*.lib"
485 ${Section} "SDCC HC08 library" SEC14
487 SetOutPath "$INSTDIR\lib\hc08"
488 File "${DEV_ROOT}\lib\hc08\*.rel"
489 File "${DEV_ROOT}\lib\hc08\*.lib"
492 ${Section} "SDCC PIC16 library" SEC15
494 SetOutPath "$INSTDIR\lib\pic16"
495 File "${DEV_ROOT}\lib\pic16\*.o"
496 File "${DEV_ROOT}\lib\pic16\*.lib"
499 ${Section} "SDCC PIC library" SEC16
501 SetOutPath "$INSTDIR\lib\pic"
502 File "${DEV_ROOT}\lib\pic\*.lib"
505 ${Section} "SDCC library sources" SEC17
507 SetOutPath "$INSTDIR\lib\src\ds390\examples"
508 File "${DEV_ROOT}\lib\src\ds390\examples\MOVED"
510 SetOutPath "$INSTDIR\lib\src\ds390"
511 File "${DEV_ROOT}\lib\src\ds390\*.c"
512 # File "${DEV_ROOT}\lib\src\ds390\Makefile"
514 SetOutPath "$INSTDIR\lib\src\ds400"
515 File "${DEV_ROOT}\lib\src\ds400\*.c"
516 # File "${DEV_ROOT}\lib\src\ds400\Makefile"
518 SetOutPath "$INSTDIR\lib\src\gbz80"
519 File "${DEV_ROOT}\lib\src\gbz80\*.c"
520 File "${DEV_ROOT}\lib\src\gbz80\*.s"
521 # File "${DEV_ROOT}\lib\src\gbz80\Makefile"
523 SetOutPath "$INSTDIR\lib\src\z80"
524 File "${DEV_ROOT}\lib\src\z80\*.c"
525 File "${DEV_ROOT}\lib\src\z80\*.s"
526 # File "${DEV_ROOT}\lib\src\z80\Makefile"
528 SetOutPath "$INSTDIR\lib\src\hc08"
529 File "${DEV_ROOT}\lib\src\hc08\*.c"
530 # File "${DEV_ROOT}\lib\src\hc08\Makefile"
532 SetOutPath "$INSTDIR\lib\src\mcs51"
533 File "${DEV_ROOT}\lib\src\mcs51\*.asm"
534 # File "${DEV_ROOT}\lib\src\mcs51\Makefile"
536 SetOutPath "$INSTDIR\lib\src\small"
537 # File "${DEV_ROOT}\lib\src\small\Makefile"
539 SetOutPath "$INSTDIR\lib\src\medium"
540 # File "${DEV_ROOT}\lib\src\medium\Makefile"
542 SetOutPath "$INSTDIR\lib\src\large"
543 # File "${DEV_ROOT}\lib\src\large\Makefile"
545 SetOutPath "$INSTDIR\lib\src\pic"
546 # File "${DEV_ROOT}\lib\src\pic\configure"
547 # File "${DEV_ROOT}\lib\src\pic\configure.in"
548 # File "${DEV_ROOT}\lib\src\pic\GPL"
549 # File "${DEV_ROOT}\lib\src\pic\LGPL"
550 # File "${DEV_ROOT}\lib\src\pic\Makefile"
551 # File "${DEV_ROOT}\lib\src\pic\Makefile.common"
552 # File "${DEV_ROOT}\lib\src\pic\Makefile.common.in"
553 # File "${DEV_ROOT}\lib\src\pic\Makefile.rules"
554 # File "${DEV_ROOT}\lib\src\pic\Makefile.subdir"
555 # File "${DEV_ROOT}\lib\src\pic\NEWS"
556 # File "${DEV_ROOT}\lib\src\pic\README"
557 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.c"
558 File "${DEV_ROOT}\lib\src\pic\TEMPLATE.S"
560 SetOutPath "$INSTDIR\lib\src\pic\libsdcc"
561 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.c"
562 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.S"
563 File "${DEV_ROOT}\lib\src\pic\libsdcc\*.inc"
564 # File "${DEV_ROOT}\lib\src\pic\libsdcc\Makefile"
566 SetOutPath "$INSTDIR\lib\src\pic\libdev"
567 File "${DEV_ROOT}\lib\src\pic\libdev\*.c"
568 # File "${DEV_ROOT}\lib\src\pic\libdev\Makefile"
570 SetOutPath "$INSTDIR\lib\src\pic\libm"
571 File "${DEV_ROOT}\lib\src\pic\libm\*.c"
573 SetOutPath "$INSTDIR\lib\src\pic16"
574 # File "${DEV_ROOT}\lib\src\pic16\configure"
575 # File "${DEV_ROOT}\lib\src\pic16\configure.in"
576 # File "${DEV_ROOT}\lib\src\pic16\COPYING"
577 # File "${DEV_ROOT}\lib\src\pic16\Makefile"
578 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common"
579 # File "${DEV_ROOT}\lib\src\pic16\Makefile.common.in"
580 # File "${DEV_ROOT}\lib\src\pic16\Makefile.rules"
581 # File "${DEV_ROOT}\lib\src\pic16\Makefile.subdir"
582 # File "${DEV_ROOT}\lib\src\pic16\pics.all"
583 # File "${DEV_ROOT}\lib\src\pic16\pics.build"
584 # File "${DEV_ROOT}\lib\src\pic16\README"
586 SetOutPath "$INSTDIR\lib\src\pic16\debug"
587 # File "${DEV_ROOT}\lib\src\pic16\debug\Makefile"
589 SetOutPath "$INSTDIR\lib\src\pic16\debug\gstack"
590 # File "${DEV_ROOT}\lib\src\pic16\debug\gstack\Makefile"
591 File "${DEV_ROOT}\lib\src\pic16\debug\gstack\*.c"
593 SetOutPath "$INSTDIR\lib\src\pic16\libc"
594 # File "${DEV_ROOT}\lib\src\pic16\libc\Makefile"
596 SetOutPath "$INSTDIR\lib\src\pic16\libc\ctype"
597 File "${DEV_ROOT}\lib\src\pic16\libc\ctype\*.c"
598 # File "${DEV_ROOT}\lib\src\pic16\libc\ctype\Makefile"
600 SetOutPath "$INSTDIR\lib\src\pic16\libc\delay"
601 File "${DEV_ROOT}\lib\src\pic16\libc\delay\*.S"
602 # File "${DEV_ROOT}\lib\src\pic16\libc\delay\Makefile"
604 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdio"
605 File "${DEV_ROOT}\lib\src\pic16\libc\stdio\*.c"
606 # File "${DEV_ROOT}\lib\src\pic16\libc\stdio\Makefile"
608 SetOutPath "$INSTDIR\lib\src\pic16\libc\stdlib"
609 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.c"
610 File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\*.S"
611 # File "${DEV_ROOT}\lib\src\pic16\libc\stdlib\Makefile"
613 SetOutPath "$INSTDIR\lib\src\pic16\libc\string"
614 File "${DEV_ROOT}\lib\src\pic16\libc\string\*.c"
615 # File "${DEV_ROOT}\lib\src\pic16\libc\string\Makefile"
617 SetOutPath "$INSTDIR\lib\src\pic16\libc\utils"
618 File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
619 # File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
621 SetOutPath "$INSTDIR\lib\src\pic16\libdev"
622 File "${DEV_ROOT}\lib\src\pic16\libdev\*.c"
623 # File "${DEV_ROOT}\lib\src\pic16\libdev\Makefile"
625 SetOutPath "$INSTDIR\lib\src\pic16\libio"
626 File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
627 # File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
629 SetOutPath "$INSTDIR\lib\src\pic16\libio\adc"
630 File "${DEV_ROOT}\lib\src\pic16\libio\adc\*.c"
631 # File "${DEV_ROOT}\lib\src\pic16\libio\adc\Makefile"
633 SetOutPath "$INSTDIR\lib\src\pic16\libio\i2c"
634 File "${DEV_ROOT}\lib\src\pic16\libio\i2c\*.c"
635 # File "${DEV_ROOT}\lib\src\pic16\libio\i2c\Makefile"
637 SetOutPath "$INSTDIR\lib\src\pic16\libio\usart"
638 File "${DEV_ROOT}\lib\src\pic16\libio\usart\*.c"
639 # File "${DEV_ROOT}\lib\src\pic16\libio\usart\Makefile"
641 SetOutPath "$INSTDIR\lib\src\pic16\libm"
642 File "${DEV_ROOT}\lib\src\pic16\libm\*.c"
643 # File "${DEV_ROOT}\lib\src\pic16\libm\Makefile"
645 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc"
646 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\Makefile"
648 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\char"
649 File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\*.c"
650 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\char\Makefile"
652 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\fixed16x16"
653 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.c"
654 File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\*.S"
655 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\fixed16x16\Makefile"
657 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\float"
658 File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\*.c"
659 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\float\Makefile"
661 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\gptr"
662 File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\*.c"
663 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\gptr\Makefile"
665 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\int"
666 File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\*.c"
667 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\int\Makefile"
669 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\long"
670 File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\*.c"
671 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\long\Makefile"
673 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\lregs"
674 File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\*.c"
675 # File "${DEV_ROOT}\lib\src\pic16\libsdcc\lregs\Makefile"
677 SetOutPath "$INSTDIR\lib\src\pic16\libsdcc\stack"
678 File "${DEV_ROOT}\lib\src\pic16\libsdcc\stack\*.S"
680 SetOutPath "$INSTDIR\lib\src\pic16\startup"
681 File "${DEV_ROOT}\lib\src\pic16\startup\*.c"
682 # File "${DEV_ROOT}\lib\src\pic16\startup\Makefile"
683 # File "${DEV_ROOT}\lib\src\pic16\startup\README"
685 SetOutPath "$INSTDIR\lib\src"
686 File "${DEV_ROOT}\lib\src\*.c"
689 ;--------------------------------
693 LangString DESC_SEC01 ${LANG_ENGLISH} "SDCC application files"
694 LangString DESC_SEC02 ${LANG_ENGLISH} "ucSim application files"
695 LangString DESC_SEC03 ${LANG_ENGLISH} "SDCDB files"
696 LangString DESC_SEC04 ${LANG_ENGLISH} "SDCC documentation"
697 LangString DESC_SEC05 ${LANG_ENGLISH} "SDCC include files"
698 LangString DESC_SEC06 ${LANG_ENGLISH} "SDCC DS390 library"
699 LangString DESC_SEC07 ${LANG_ENGLISH} "SDCC DS400 library"
700 LangString DESC_SEC08 ${LANG_ENGLISH} "SDCC GBZ80 library"
701 LangString DESC_SEC09 ${LANG_ENGLISH} "SDCC Z80 library"
702 LangString DESC_SEC10 ${LANG_ENGLISH} "SDCC small model library"
703 LangString DESC_SEC11 ${LANG_ENGLISH} "SDCC medium model library"
704 LangString DESC_SEC12 ${LANG_ENGLISH} "SDCC large model library"
705 LangString DESC_SEC13 ${LANG_ENGLISH} "SDCC small-stack-auto model library"
706 LangString DESC_SEC14 ${LANG_ENGLISH} "SDCC HC08 library"
707 LangString DESC_SEC15 ${LANG_ENGLISH} "SDCC PIC16 library"
708 LangString DESC_SEC16 ${LANG_ENGLISH} "SDCC PIC library"
709 LangString DESC_SEC17 ${LANG_ENGLISH} "SDCC library sources"
711 ;Assign language strings to sections
712 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
713 !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} $(DESC_SEC01)
714 !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} $(DESC_SEC02)
715 !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} $(DESC_SEC03)
716 !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} $(DESC_SEC04)
717 !insertmacro MUI_DESCRIPTION_TEXT ${SEC05} $(DESC_SEC05)
718 !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} $(DESC_SEC06)
719 !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} $(DESC_SEC07)
720 !insertmacro MUI_DESCRIPTION_TEXT ${SEC08} $(DESC_SEC08)
721 !insertmacro MUI_DESCRIPTION_TEXT ${SEC09} $(DESC_SEC09)
722 !insertmacro MUI_DESCRIPTION_TEXT ${SEC10} $(DESC_SEC10)
723 !insertmacro MUI_DESCRIPTION_TEXT ${SEC11} $(DESC_SEC11)
724 !insertmacro MUI_DESCRIPTION_TEXT ${SEC12} $(DESC_SEC12)
725 !insertmacro MUI_DESCRIPTION_TEXT ${SEC13} $(DESC_SEC13)
726 !insertmacro MUI_DESCRIPTION_TEXT ${SEC14} $(DESC_SEC14)
727 !insertmacro MUI_DESCRIPTION_TEXT ${SEC15} $(DESC_SEC15)
728 !insertmacro MUI_DESCRIPTION_TEXT ${SEC16} $(DESC_SEC16)
729 !insertmacro MUI_DESCRIPTION_TEXT ${SEC17} $(DESC_SEC17)
730 !insertmacro MUI_FUNCTION_DESCRIPTION_END
731 ;--------------------------------
733 ${Section} -Icons SECICONS
734 !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
735 CreateDirectory "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
736 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.lnk" "$INSTDIR\sdcc.url"
737 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk" "$INSTDIR\uninstall.exe"
739 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\sdccman.pdf" "" "$INSTDIR\sdcc.ico" "" "" "" ""
740 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
741 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.lnk" "$INSTDIR\change_log.url"
742 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
744 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk" "$INSTDIR\doc\README.TXT" "" "$INSTDIR\sdcc.ico" "" "" "" ""
745 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk" "$INSTDIR\doc\ChangeLog_head.txt" "" "$INSTDIR\sdcc.ico" "" "" "" ""
747 CreateShortCut "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk" "$INSTDIR\COPYING.TXT"
748 !insertmacro MUI_STARTMENU_WRITE_END
751 ${Section} -INI SECINI
752 WriteIniStr "$INSTDIR\sdcc.url" "InternetShortcut" "URL" "http://sdcc.sourceforge.net/"
754 WriteIniStr "$INSTDIR\change_log.url" "InternetShortcut" "URL" "http://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc/ChangeLog"
758 ${Section} -PostInstall SECPOSTINSTALL
759 WriteRegStr ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "" $INSTDIR
760 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
761 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor" "${VER_MAJOR}"
762 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor" "${VER_MINOR}"
763 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision" "${VER_REVISION}"
764 WriteRegDword ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild" "${VER_BUILD}"
767 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninstall.exe"
768 WriteRegExpandStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "InstallLocation" "$INSTDIR"
769 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}"
770 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "sdcc.sourceforge.net"
771 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "http://sdcc.sourceforge.net/"
772 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "HelpLink" "http://sdcc.sourceforge.net/"
773 WriteRegStr ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "http://sdcc.sourceforge.net/"
775 WriteUninstaller "$INSTDIR\uninstall.exe"
779 ;;;; Uninstaller code ;;;;
781 ${Section} Uninstall SECUNINSTALL
782 !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_STARTMENUPAGE_VARIABLE
784 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\GPL 2 License.lnk"
785 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Change Log.lnk"
786 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Latest Changes.lnk"
788 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\README.lnk"
790 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Documentation.lnk"
791 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\Uninstall SDCC.lnk"
792 Delete "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE\SDCC on the Web.lnk"
794 RMDir "$SMPROGRAMS\$MUI_STARTMENUPAGE_VARIABLE"
796 Delete "$INSTDIR\lib\src\large\Makefile"
798 Delete "$INSTDIR\lib\src\medium\Makefile"
800 Delete "$INSTDIR\lib\src\small\Makefile"
802 Delete "$INSTDIR\lib\src\mcs51\*.asm"
803 Delete "$INSTDIR\lib\src\mcs51\Makefile"
804 Delete "$INSTDIR\lib\src\mcs51\README"
806 Delete "$INSTDIR\lib\src\hc08\*.c"
807 Delete "$INSTDIR\lib\src\hc08\hc08.lib"
808 Delete "$INSTDIR\lib\src\hc08\Makefile"
810 Delete "$INSTDIR\lib\src\z80\*.c"
811 Delete "$INSTDIR\lib\src\z80\*.s"
812 Delete "$INSTDIR\lib\src\z80\z80.lib"
813 Delete "$INSTDIR\lib\src\z80\README"
814 Delete "$INSTDIR\lib\src\z80\Makefile"
816 Delete "$INSTDIR\lib\src\gbz80\*.c"
817 Delete "$INSTDIR\lib\src\gbz80\*.s"
818 Delete "$INSTDIR\lib\src\gbz80\gbz80.lib"
819 Delete "$INSTDIR\lib\src\gbz80\README"
820 Delete "$INSTDIR\lib\src\gbz80\Makefile"
822 Delete "$INSTDIR\lib\src\ds390\*.c"
823 Delete "$INSTDIR\lib\src\ds390\libds390.lib"
824 Delete "$INSTDIR\lib\src\ds390\Makefile.dep"
825 Delete "$INSTDIR\lib\src\ds390\Makefile"
826 Delete "$INSTDIR\lib\src\ds390\examples\MOVED"
828 Delete "$INSTDIR\lib\src\ds400\*.c"
829 Delete "$INSTDIR\lib\src\ds400\libds400.lib"
830 Delete "$INSTDIR\lib\src\ds400\Makefile.dep"
831 Delete "$INSTDIR\lib\src\ds400\Makefile"
833 Delete "$INSTDIR\lib\src\*.c"
835 Delete "$INSTDIR\lib\pic\*.o"
836 Delete "$INSTDIR\lib\pic\*.lib"
838 Delete "$INSTDIR\lib\pic16\*.o"
839 Delete "$INSTDIR\lib\pic16\*.lib"
841 Delete "$INSTDIR\lib\hc08\*.rel"
842 Delete "$INSTDIR\lib\hc08\*.lib"
844 Delete "$INSTDIR\lib\z80\*.o"
845 Delete "$INSTDIR\lib\z80\*.lib"
847 Delete "$INSTDIR\lib\small\*.rel"
848 Delete "$INSTDIR\lib\small\*.lib"
850 Delete "$INSTDIR\lib\medium\*.rel"
851 Delete "$INSTDIR\lib\medium\*.lib"
853 Delete "$INSTDIR\lib\large\*.rel"
854 Delete "$INSTDIR\lib\large\*.lib"
856 Delete "$INSTDIR\lib\small-stack-auto\*.rel"
857 Delete "$INSTDIR\lib\small-stack-auto\*.lib"
859 Delete "$INSTDIR\lib\gbz80\*.o"
860 Delete "$INSTDIR\lib\gbz80\*.lib"
862 Delete "$INSTDIR\lib\ds390\*.rel"
863 Delete "$INSTDIR\lib\ds390\*.lib"
865 Delete "$INSTDIR\lib\ds400\*.rel"
866 Delete "$INSTDIR\lib\ds400\*.lib"
868 Delete "$INSTDIR\include\asm\z80\*.h"
869 Delete "$INSTDIR\include\asm\pic16\*.h"
870 Delete "$INSTDIR\include\asm\pic\*.h"
871 Delete "$INSTDIR\include\asm\mcs51\*.h"
872 Delete "$INSTDIR\include\asm\gbz80\*.h"
873 Delete "$INSTDIR\include\asm\ds390\*.h"
874 Delete "$INSTDIR\include\asm\default\*.h"
875 Delete "$INSTDIR\include\z80\*.h"
876 Delete "$INSTDIR\include\pic\*.h"
877 Delete "$INSTDIR\include\pic\*.txt"
878 Delete "$INSTDIR\include\pic\*.inc"
879 Delete "$INSTDIR\include\pic16\*.h"
880 Delete "$INSTDIR\include\mcs51\*.h"
881 Delete "$INSTDIR\include\hc08\*.h"
882 Delete "$INSTDIR\include\*.h"
885 Delete "$INSTDIR\doc\README.TXT"
886 Delete "$INSTDIR\doc\ChangeLog_head.txt"
889 Delete "$INSTDIR\bin\as-gbz80.exe"
890 Delete "$INSTDIR\bin\as-hc08.exe"
891 Delete "$INSTDIR\bin\as-z80.exe"
892 Delete "$INSTDIR\bin\asx8051.exe"
893 Delete "$INSTDIR\bin\aslink.exe"
894 Delete "$INSTDIR\bin\link-gbz80.exe"
895 Delete "$INSTDIR\bin\link-hc08.exe"
896 Delete "$INSTDIR\bin\link-z80.exe"
897 Delete "$INSTDIR\bin\makebin.exe"
898 Delete "$INSTDIR\bin\packihx.exe"
899 Delete "$INSTDIR\bin\sdcc.exe"
900 Delete "$INSTDIR\bin\sdcclib.exe"
901 Delete "$INSTDIR\bin\sdcpp.exe"
902 Delete "$INSTDIR\bin\readline5.dll"
905 Delete "$INSTDIR\bin\s51.exe"
906 Delete "$INSTDIR\bin\savr.exe"
907 Delete "$INSTDIR\bin\shc08.exe"
908 Delete "$INSTDIR\bin\sz80.exe"
910 Delete "$INSTDIR\bin\sdcdb.exe"
911 Delete "$INSTDIR\bin\sdcdb.el"
912 Delete "$INSTDIR\bin\sdcdbsrc.el"
914 Delete "$INSTDIR\COPYING.TXT"
915 Delete "$INSTDIR\sdcc.ico"
916 Delete "$INSTDIR\sdcc.url"
918 Delete "$INSTDIR\change_log.url"
920 Delete "$INSTDIR\uninstall.exe"
922 RMDir /r "$INSTDIR\lib\src\pic"
923 RMDir /r "$INSTDIR\lib\src\pic16"
924 RMDir "$INSTDIR\lib\src\small"
925 RMDir "$INSTDIR\lib\src\medium"
926 RMDir "$INSTDIR\lib\src\large"
927 RMDir "$INSTDIR\lib\src\mcs51"
928 RMDir "$INSTDIR\lib\src\z80"
929 RMDir "$INSTDIR\lib\src\gbz80"
930 RMDir "$INSTDIR\lib\src\ds390\examples"
931 RMDir "$INSTDIR\lib\src\ds390"
932 RMDir "$INSTDIR\lib\src\ds400"
933 RMDir "$INSTDIR\lib\src\hc08"
934 RMDir "$INSTDIR\lib\src"
936 RMDir "$INSTDIR\lib\pic"
937 RMDir "$INSTDIR\lib\pic16"
938 RMDir "$INSTDIR\lib\z80"
939 RMDir "$INSTDIR\lib\small"
940 RMDir "$INSTDIR\lib\medium"
941 RMDir "$INSTDIR\lib\large"
942 RMDir "$INSTDIR\lib\small-stack-auto"
943 RMDir "$INSTDIR\lib\gbz80"
944 RMDir "$INSTDIR\lib\ds390"
945 RMDir "$INSTDIR\lib\ds400"
946 RMDir "$INSTDIR\lib\hc08"
949 RMDir "$INSTDIR\include\asm\z80"
950 RMDir "$INSTDIR\include\asm\pic16"
951 RMDir "$INSTDIR\include\asm\pic"
952 RMDir "$INSTDIR\include\asm\mcs51"
953 RMDir "$INSTDIR\include\asm\gbz80"
954 RMDir "$INSTDIR\include\asm\ds390"
955 RMDir "$INSTDIR\include\asm\default"
956 RMDir "$INSTDIR\include\asm"
957 RMDir "$INSTDIR\include\z80"
958 RMDir "$INSTDIR\include\pic"
959 RMDir "$INSTDIR\include\pic16"
960 RMDir "$INSTDIR\include\mcs51"
961 RMDir "$INSTDIR\include\hc08"
962 RMDir "$INSTDIR\include"
965 RMDir /r "$INSTDIR\doc"
974 ${DebugMsg} "removing path $INSTDIR\bin"
976 Call un.SDCC.RemoveFromPath
979 DeleteRegKey ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
980 DeleteRegKey ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}"
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 FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"
1037 ;System PATH variable is at:
1038 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1039 ReadRegStr $1 HKCU "Environment" "PATH"
1040 StrCpy $2 $1 1 -1 ; copy last char
1041 ${If} $2 == ";" ; if last char == ;
1042 StrCpy $1 $1 -1 ; remove last char
1047 WriteRegExpandStr HKCU "Environment" "PATH" $0
1048 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1063 ; RemoveFromPath - Remove a given dir from the path
1064 ; Input: head of the stack
1066 !macro SDCC.RemoveFromPath un
1067 ${Function} ${un}SDCC.RemoveFromPath
1076 IntFmt $6 "%c" 26 ; DOS EOF
1083 FileOpen $1 "$1\autoexec.bat" r
1086 GetFullPathName /SHORT $0 $0
1087 StrCpy $0 "SET PATH=%PATH%;$0"
1090 ; copy all lines except the line containing "SET PATH=%PATH%;$0"
1091 ; from autoexec.bat to the temporary file
1095 StrCpy $5 $3 1 -1 ; read last char
1096 ${If} $5 == $6 ; if DOS EOF
1097 StrCpy $3 $3 -1 ; remove DOS EOF so we can compare
1099 ${If} $3 != "$0$\r$\n"
1100 ${AndIf} $3 != "$0$\n"
1105 ; This is the line I'm looking for:
1115 Delete "$1\autoexec.bat"
1116 CopyFiles /SILENT $4 "$1\autoexec.bat"
1119 ;System PATH variable is at:
1120 ;HKLM "/SYSTEM/CurrentControlSet/Control/Session Manager/Environment" "Path"
1121 ReadRegStr $1 HKCU "Environment" "PATH"
1122 StrCpy $5 $1 1 -1 ; copy last char
1123 ${If} $5 != ";" ; if last char != ;
1124 StrCpy $1 "$1;" ; append ;
1128 Call ${un}StrStr ; Find `$0;` in $1
1129 Pop $2 ; pos of our dir
1136 StrCpy $5 $1 -$4 ; $5 is now the part before the path to remove
1137 StrCpy $6 $2 "" $3 ; $6 is now the part after the path to remove
1140 StrCpy $5 $3 1 -1 ; copy last char
1141 ${If} $5 == ";" ; if last char == ;
1142 StrCpy $3 $3 -1 ; remove last char
1145 ; New PATH not empty: update the registry
1146 WriteRegExpandStr HKCU "Environment" "PATH" $3
1148 ; New PATH empty: remove from the registry
1149 DeleteRegValue HKCU "Environment" "PATH"
1151 SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
1164 !insertmacro SDCC.RemoveFromPath ""
1165 !insertmacro SDCC.RemoveFromPath "un."
1167 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1168 ; Utility Functions ;
1169 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1173 ; output, top of the stack = 1 if NT or 0 if not
1178 ; ($R0 at this point is 1 or 0)
1181 ${Function} ${un}SDCC.IsNT
1183 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
1195 !insertmacro SDCC.IsNT ""
1196 !insertmacro SDCC.IsNT "un."
1198 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1199 ; Uninstall/Reinstall page functions ;
1200 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1202 !ifdef VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD
1204 Var ReinstallPageCheck
1206 ${Function} SDCC.PageReinstall
1208 ReadRegStr $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" ""
1211 ReadRegStr $R0 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1217 ReadRegDWORD $R0 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMajor"
1218 ReadRegDWORD $R1 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionMinor"
1219 ReadRegDWORD $R2 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionRevision"
1220 ReadRegDWORD $R3 ${SDCC_ROOT_KEY} "Software\${PRODUCT_NAME}" "VersionBuild"
1221 StrCpy $R0 $R0.$R1.$R2.$R3
1223 ${VersionCompare} ${VER_MAJOR}.${VER_MINOR}.${VER_REVISION}.${VER_BUILD} $R0 $R0
1225 StrCpy $R1 "${PRODUCT_NAME} ${PRODUCT_VERSION} is already installed. Select the operation you want to perform and click Next to continue."
1226 StrCpy $R2 "Add/Reinstall components"
1227 StrCpy $R3 "Uninstall ${PRODUCT_NAME}"
1228 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
1231 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."
1232 StrCpy $R2 "Uninstall before installing"
1233 StrCpy $R3 "Do not uninstall"
1234 !insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install ${PRODUCT_NAME}."
1237 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."
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}."
1246 nsDialogs::Create /NOUNLOAD 1018
1248 ${NSD_CreateLabel} 0 0 100% 24u $R1
1251 ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2
1253 ${NSD_OnClick} $R2 SDCC.PageReinstallUpdateSelection
1255 ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3
1257 ${NSD_OnClick} $R3 SDCC.PageReinstallUpdateSelection
1259 ${If} $ReinstallPageCheck != 2
1260 SendMessage $R2 ${BM_SETCHECK} ${BST_CHECKED} 0
1262 SendMessage $R3 ${BM_SETCHECK} ${BST_CHECKED} 0
1269 ${Function} SDCC.PageReinstallUpdateSelection
1273 ${NSD_GetState} $R2 $R1
1275 ${If} $R1 == ${BST_CHECKED}
1276 StrCpy $ReinstallPageCheck 1
1278 StrCpy $ReinstallPageCheck 2
1283 ${Function} SDCC.PageLeaveReinstall
1285 ${NSD_GetState} $R2 $R1
1287 ${DebugMsg} "R0 = $R0, R1 = $R1, R2 = $R2"
1299 ReadRegStr $R1 ${UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString"
1305 ExecWait '$R1 _?=$INSTDIR'
1317 !endif # VER_MAJOR & VER_MINOR & VER_REVISION & VER_BUILD