source: branches/4.5.1/tools/installer/nsis/modules/mingw.nsh

Last change on this file was 2, checked in by Dmitry A. Kuminov, 17 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 19.5 KB
Line 
1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2;;
3;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4;; Contact: Qt Software Information (qt-info@nokia.com)
5;;
6;; This file is part of the tools applications of the Qt Toolkit.
7;;
8;; $QT_BEGIN_LICENSE:LGPL$
9;; Commercial Usage
10;; Licensees holding valid Qt Commercial licenses may use this file in
11;; accordance with the Qt Commercial License Agreement provided with the
12;; Software or, alternatively, in accordance with the terms contained in
13;; a written agreement between you and Nokia.
14;;
15;; GNU Lesser General Public License Usage
16;; Alternatively, this file may be used under the terms of the GNU Lesser
17;; General Public License version 2.1 as published by the Free Software
18;; Foundation and appearing in the file LICENSE.LGPL included in the
19;; packaging of this file. Please review the following information to
20;; ensure the GNU Lesser General Public License version 2.1 requirements
21;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22;;
23;; In addition, as a special exception, Nokia gives you certain
24;; additional rights. These rights are described in the Nokia Qt LGPL
25;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26;; package.
27;;
28;; GNU General Public License Usage
29;; Alternatively, this file may be used under the terms of the GNU
30;; General Public License version 3.0 as published by the Free Software
31;; Foundation and appearing in the file LICENSE.GPL included in the
32;; packaging of this file. Please review the following information to
33;; ensure the GNU General Public License version 3.0 requirements will be
34;; met: http://www.gnu.org/copyleft/gpl.html.
35;;
36;; If you are unsure which license is appropriate for your use, please
37;; contact the sales department at qt-sales@nokia.com.
38;; $QT_END_LICENSE$
39;;
40;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
41;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
42;;
43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
44!ifdef MODULE_MINGW
45!macro MINGW_INITIALIZE
46!include "includes\qtcommon.nsh"
47!ifndef MODULE_MINGW_NAME
48 !define MODULE_MINGW_NAME "Qt"
49!endif
50!ifndef MODULE_MINGW_VERSION
51 !define MODULE_MINGW_VERSION "${PRODUCT_VERSION}"
52!endif
53!ifndef MODULE_MINGW_BUILDDIR
54 !error "MODULE_MINGW_BUILDDIR not defined!"
55!endif
56!ifndef MODULE_MINGW_ROOT
57 !error "MODULE_MINGW_ROOT not defined!"
58!endif
59!ifndef MODULE_MINGW_URL
60 !define MODULE_MINGW_URL "ftp://ftp.trolltech.com/misc"
61!endif
62!ifndef MODULE_MINGW_COMPILERVERSION
63 !define MODULE_MINGW_COMPILERVERSION "3.4.2"
64!endif
65!ifndef MODULE_MINGW_LICENSE
66 !define MODULE_MINGW_LICENSE "C:\MinGW\COPYING"
67!endif
68
69!define MODULE_MINGW_DOWNLOADPAGE "gwdownload.ini"
70!define MODULE_MINGW_MIRRORPAGE "gwmirror.ini"
71!define MODULE_MINGW_RUNTIME_LIB "mingw*.dll"
72!define MODULE_MINGW_DOWNLOADFILE "MinGW-${MODULE_MINGW_COMPILERVERSION}"
73
74var MODULE_MINGW_DOWNLOAD
75var MODULE_MINGW_SOURCEDOWNLOAD
76var MODULE_MINGW_MIRRORS
77var MODULE_MINGW_INSTOK
78var MODULE_MINGW_COMPILERINSTDIR
79
80LangString ModuleMinGWTitle ${LANG_ENGLISH} "MinGW Installation"
81LangString ModuleMinGWDescription ${LANG_ENGLISH} "You need MinGW to be able to compile Qt applications."
82LangString ModuleMinGWMirrorTitle ${LANG_ENGLISH} "MinGW Download Mirror"
83LangString ModuleMinGWMirrorDescription ${LANG_ENGLISH} "Select a download mirror."
84
85Page custom ModuleMinGWDownloadPageEnter ModuleMinGWDownloadPageExit
86!define MUI_PAGE_CUSTOMFUNCTION_PRE ModuleMinGWLicensePageEnter
87!define MUI_PAGE_HEADER_TEXT "MinGW License Agreement"
88!define MUI_PAGE_HEADER_SUBTEXT "Please review the license terms before installing MinGW."
89!define MUI_LICENSEPAGE_TEXT_TOP "MinGW License Information"
90!insertmacro MUI_PAGE_LICENSE "${MODULE_MINGW_LICENSE}"
91Page custom ModuleMinGWMirrorPageEnter ModuleMinGWMirrorPageExit
92
93!include "includes\qtenv.nsh"
94!macroend
95
96!macro MINGW_SECTIONS
97Section "${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" MINGW_SEC01
98 strcmp "$MINGW_INSTDIR" "" 0 +5
99 StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
100 push $MINGW_INSTDIR
101 call MakeQtDirectory
102 pop $MINGW_INSTDIR
103
104 WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" 1
105
106 SetOutPath "$MINGW_INSTDIR"
107 SetOverwrite ifnewer
108 !insertmacro MODULE_MINGW_INSTALLFILES
109
110 push "$MINGW_INSTDIR"
111 call DeleteFloatingLicenseProgram
112
113 push "$MINGW_INSTDIR\bin"
114 call AddStartmenuApplication
115
116 push ${MODULE_MINGW_BUILDDIR}
117 push "$MINGW_INSTDIR"
118 call PatchPrlFiles
119
120 IfFileExists "$MINGW_INSTDIR\.qmake.cache" 0 +5
121 push "$MINGW_INSTDIR\.qmake.cache"
122 push ${MODULE_MINGW_BUILDDIR}
123 push $MINGW_INSTDIR
124 call PatchPath
125
126 IfFileExists "$MINGW_INSTDIR\mkspecs\default\qmake.conf" 0 +5
127 push "$MINGW_INSTDIR\mkspecs\default\qmake.conf"
128 push ${MODULE_MINGW_BUILDDIR}
129 push $MINGW_INSTDIR
130 call PatchPath
131
132 push $MINGW_INSTDIR
133 call PatchCommonBinaryFiles
134
135 push $MINGW_INSTDIR
136 call PatchLicenseInformation
137
138 WriteRegStr SHCTX "SOFTWARE\Trolltech\Common\${MODULE_MINGW_VERSION}\$LICENSE_PRODUCT" "Key" "$LICENSE_KEY"
139
140 push $MINGW_INSTDIR
141 call ModuleMinGWMakeEnvFile
142 CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat"'
143 CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat compile_debug"'
144
145 push $0
146 strcmp $MODULE_MINGW_DOWNLOAD "no" DoneMinGWInstall
147 DetailPrint "Installing MinGW into $MODULE_MINGW_COMPILERINSTDIR"
148 WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir" "$MODULE_MINGW_COMPILERINSTDIR"
149 nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR'
150 pop $0
151 strcmp $MODULE_MINGW_SOURCEDOWNLOAD "no" DoneMinGWInstall
152 DetailPrint "Installing MinGW sources into $MODULE_MINGW_COMPILERINSTDIR\src"
153 WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources" 1
154 nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR\src'
155 pop $0
156 DoneMinGWInstall:
157 pop $0
158
159 DetailPrint "Copying MinGW runtime..."
160 SetDetailsPrint none
161 CopyFiles /SILENT "$MODULE_MINGW_COMPILERINSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}" "$MINGW_INSTDIR\bin"
162 SetDetailsPrint both
163SectionEnd
164
165Function EnableButtons
166 Push $0
167 GetDlgItem $0 $HWNDPARENT 3
168 EnableWindow $0 1
169 GetDlgItem $0 $HWNDPARENT 1
170 EnableWindow $0 1
171 GetDlgItem $0 $HWNDPARENT 2
172 EnableWindow $0 1
173 Pop $0
174FunctionEnd
175
176Function DisableButtons
177 Push $0
178 GetDlgItem $0 $HWNDPARENT 3
179 EnableWindow $0 0
180 GetDlgItem $0 $HWNDPARENT 1
181 EnableWindow $0 0
182 GetDlgItem $0 $HWNDPARENT 2
183 EnableWindow $0 0
184 Pop $0
185FunctionEnd
186
187Function ModuleMinGWDownloadPageEnter
188 strcmp $MODULE_MINGW_INSTOK "yes" 0 +2
189 Abort
190
191 !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWTitle)" "$(ModuleMinGWTitleDescription)"
192 Call UpdateCtrlStates
193 !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_DOWNLOADPAGE}"
194 !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" "0"
195FunctionEnd
196
197Function ModuleMinGWMirrorPageEnter
198 strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
199 Abort
200
201 !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWMirrorTitle)" "$(ModuleMinGWMirrorDescription)"
202 !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_MIRRORPAGE}"
203FunctionEnd
204
205Function ModuleMinGWLicensePageEnter
206 strcmp $MODULE_MINGW_DOWNLOAD "yes" +2
207 Abort
208FunctionEnd
209
210Function UpdateCtrlStates
211 push $0
212 push $1
213 push $2
214
215 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
216 intop $0 $0 !
217 FindWindow $2 "#32770" "" $HWNDPARENT
218 GetDlgItem $1 $2 1205
219 EnableWindow $1 $0
220 GetDlgItem $1 $2 1202
221 EnableWindow $1 $0
222 GetDlgItem $1 $2 1203
223 EnableWindow $1 $0
224
225 intop $0 $0 !
226 GetDlgItem $1 $2 1206
227 EnableWindow $1 $0
228 GetDlgItem $1 $2 1207
229 EnableWindow $1 $0
230 GetDlgItem $1 $2 1208
231 EnableWindow $1 $0
232
233 GetDlgItem $1 $HWNDPARENT 1
234 IntCmp $0 0 +3
235 SendMessage $1 ${WM_SETTEXT} 0 "STR:Next >"
236 Goto +2
237 SendMessage $1 ${WM_SETTEXT} 0 "STR:Install"
238
239 pop $2
240 pop $1
241 pop $0
242FunctionEnd
243
244Function ModuleMinGWDownloadPageExit
245 push $0
246 push $1
247
248 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Settings" "State"
249 strcmp "$0" "8" 0 NoNotify
250 Call UpdateCtrlStates
251 abort
252 NoNotify:
253
254 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State"
255 strcmp "$0" "0" noDownload doDownload
256
257doDownload:
258 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State"
259 strcmp $0 "" 0 +3
260 MessageBox MB_ICONEXCLAMATION|MB_OK "You need to specify an installation directory!"
261 goto tryAgain
262
263 strcpy $MODULE_MINGW_COMPILERINSTDIR $0
264 strcpy $MODULE_MINGW_DOWNLOAD "yes"
265 CreateDirectory "$MINGW_INSTDIR\downloads"
266
267 Call DisableButtons
268 InetLoad::load /BANNER "Mirror Download" "Downloading mirrors from server..." "${MODULE_MINGW_URL}/${MODULE_MINGW_DOWNLOADFILE}.mirrors" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" /END
269 Pop $1 ;Get the return value
270 Call EnableButtons
271
272 StrCmp $1 "OK" +3
273 MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download mirror list ($1)." IDRETRY tryAgain 0
274 Quit
275
276 call ModuleMinGWReadMirrors
277 !insertmacro MUI_INSTALLOPTIONS_WRITE ${MODULE_MINGW_MIRRORPAGE} "Field 3" "ListItems" "$MODULE_MINGW_MIRRORS"
278 goto done
279
280noDownload:
281 strcpy $MODULE_MINGW_DOWNLOAD "no"
282 strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
283 call ModuleMinGWChecking
284 strcmp $MODULE_MINGW_INSTOK "yes" done
285 MessageBox MB_ICONEXCLAMATION|MB_YESNO "There is a problem with your MinGW installation:$\r$\n$MODULE_MINGW_INSTOK$\r$\nDo you still want to continue? (Your installation may not work)" IDNO tryAgain
286 goto done
287
288tryAgain:
289 pop $1
290 pop $0
291 Abort
292
293done:
294 pop $1
295 pop $0
296FunctionEnd
297
298Function ModuleMinGWMirrorPageExit
299 push $0
300 push $2
301 push $1
302
303 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_MIRRORPAGE}" "Field 3" "State"
304 strcmp "$0" "" 0 +3
305 MessageBox MB_ICONEXCLAMATION|MB_OK "You must select a mirror to download from!"
306 goto tryAgain
307
308 push $0
309 call ModuleMinGWGetMirror
310 pop $0
311
312 Call DisableButtons
313 InetLoad::load /BANNER "MinGW Download" "Downloading MinGW from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /END
314 Pop $2 ;get the return value
315 Call EnableButtons
316
317 StrCmp $2 "OK" +3
318 MessageBox MB_ICONEXCLAMATION|MB_OK "Was not able to download MinGW ($2). Please try another mirror."
319 Goto tryAgain
320
321 !insertmacro MUI_INSTALLOPTIONS_READ $1 "${MODULE_MINGW_MIRRORPAGE}" "Field 2" "State"
322 strcmp "$1" "0" done
323
324 Call DisableButtons
325 InetLoad::load /BANNER "MinGW Sources Download" "Downloading MinGW Sources from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}-src.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /END
326 Pop $2
327 Call EnableButtons
328
329 strcpy $MODULE_MINGW_SOURCEDOWNLOAD "yes"
330
331 StrCmp $2 "OK" +3
332 MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download MinGW sources ($2). Please try another mirror?" IDRETRY tryAgain 0
333 Quit
334
335 goto done
336
337tryAgain:
338 pop $1
339 pop $2
340 pop $0
341 Abort
342
343done:
344 pop $1
345 pop $2
346 pop $0
347FunctionEnd
348
349Function ModuleMinGWReadMirrors
350 push $0 ;file handle
351 push $1 ;line
352
353 ClearErrors
354 FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
355 IfErrors done
356
357 strcpy $MODULE_MINGW_MIRRORS ""
358
359nextline:
360 FileRead $0 $1
361 IfErrors done
362 push $1
363 call ModuleMinGWRemoveNewLine
364 pop $1
365 strcpy $MODULE_MINGW_MIRRORS "$MODULE_MINGW_MIRRORS|$1"
366 FileRead $0 $1 ;Jump over next line
367 IfErrors done
368 goto nextline
369
370done:
371 FileClose $0
372 strlen $1 $MODULE_MINGW_MIRRORS
373 intcmp $1 0 failed failed cleanup
374
375failed:
376 MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
377 Quit
378
379cleanup:
380 pop $1
381 pop $0
382FunctionEnd
383
384#this just removes the last two chars
385Function ModuleMinGWRemoveNewLine
386exch $0
387push $1
388push $2
389
390strlen $1 $0
391intop $1 $1 - 1
392strcpy $2 $0 1 $1 ;get last char
393
394strcmp "$2" "$\n" 0 +2
395intop $1 $1 - 1
396
397strcpy $2 $0 1 $1 ;get last char
398strcmp "$2" "$\r" 0 +2
399intop $1 $1 - 1
400
401intop $1 $1 + 1
402strcpy $0 $0 $1
403
404pop $2
405pop $1
406exch $0
407FunctionEnd
408
409#push serverid
410#call GetMirror
411#pop server
412Function ModuleMinGWGetMirror
413 exch $1 ;id
414 push $0 ;file handle
415 push $2 ;line
416 push $3 ;tmp
417
418 strcpy $3 ""
419
420 ClearErrors
421 FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r
422 IfErrors done
423
424nextline:
425 FileRead $0 $2
426 IfErrors done
427 push $2
428 call ModuleMinGWRemoveNewLine
429 pop $2
430 strcmp $1 $2 0 nextline
431 FileRead $0 $3
432 IfErrors done
433 push $3
434 call ModuleMinGWRemoveNewLine
435 pop $3
436
437done:
438 strcpy $1 $3
439 FileClose $0
440 strlen $2 $1
441 intcmp $2 0 failed failed cleanup
442
443failed:
444 MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!"
445 Quit
446
447cleanup:
448 pop $3
449 pop $2
450 pop $0
451 exch $1
452FunctionEnd
453
454Function ModuleMinGWChecking
455 push $0
456
457 ### update with plugin
458 strcpy $MODULE_MINGW_INSTOK "yes"
459 strcpy $MODULE_MINGW_COMPILERINSTDIR "C:\MinGW" ;fallback dir
460
461 !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State"
462 strcmp "$0" "" +2
463 strcpy $MODULE_MINGW_COMPILERINSTDIR $0
464
465 IfFileExists "$MODULE_MINGW_COMPILERINSTDIR\bin\g++.exe" +3 0
466 strcpy $MODULE_MINGW_INSTOK "g++ not found in $MODULE_MINGW_COMPILERINSTDIR\bin\"
467 goto DoneChecking
468
469!ifndef OPENSOURCE_BUILD
470 ; check w32api.h
471 push $MODULE_MINGW_COMPILERINSTDIR
472 qtnsisext::HasValidWin32Library
473 pop $0
474 strcmp "$0" "1" +3 0
475 strcpy $MODULE_MINGW_INSTOK "The installer could not find a valid $MODULE_MINGW_COMPILERINSTDIR\include\w32api.h$\r$\n(The supported version is 3.2)"
476 goto DoneChecking
477
478 ; check version
479 push $MODULE_MINGW_COMPILERINSTDIR
480 qtnsisext::GetMinGWVersion
481 pop $0
482 strcmp "$0" "${MODULE_MINGW_COMPILERVERSION}" +3 0
483 strcpy $MODULE_MINGW_INSTOK "g++ version found does not match ${MODULE_MINGW_COMPILERVERSION} (Found version $0)."
484 goto DoneChecking
485!endif
486
487DoneChecking:
488 pop $0
489FunctionEnd
490
491#
492# creates a qtvars.bat file in $QTDIR\bin
493# push "c:\qt" #QTDIR
494# call MakeQtVarsFile
495#
496Function ModuleMinGWMakeEnvFile
497 push $0 ; file handle
498
499 ClearErrors
500 FileOpen $0 "$MINGW_INSTDIR\bin\qtvars.bat" w
501 IfErrors WriteMakeFile
502 FileWrite $0 "@echo off$\r$\n"
503 FileWrite $0 "rem$\r$\n"
504 FileWrite $0 "rem This file is generated$\r$\n"
505 FileWrite $0 "rem$\r$\n"
506 FileWrite $0 "$\r$\n"
507 FileWrite $0 "echo Setting up a MinGW/Qt only environment...$\r$\n"
508 FileWrite $0 "echo -- QTDIR set to $MINGW_INSTDIR$\r$\n"
509 FileWrite $0 "echo -- PATH set to $MINGW_INSTDIR\bin$\r$\n"
510 FileWrite $0 "echo -- Adding $MODULE_MINGW_COMPILERINSTDIR\bin to PATH$\r$\n"
511 FileWrite $0 "echo -- Adding %SystemRoot%\System32 to PATH$\r$\n"
512 FileWrite $0 "echo -- QMAKESPEC set to win32-g++$\r$\n"
513 FileWrite $0 "$\r$\n"
514 FileWrite $0 "set QTDIR=$MINGW_INSTDIR$\r$\n"
515 FileWrite $0 "set PATH=$MINGW_INSTDIR\bin$\r$\n"
516 FileWrite $0 "set PATH=%PATH%;$MODULE_MINGW_COMPILERINSTDIR\bin$\r$\n"
517 FileWrite $0 "set PATH=%PATH%;%SystemRoot%\System32$\r$\n"
518 FileWrite $0 "set QMAKESPEC=win32-g++$\r$\n"
519 FileWrite $0 "$\r$\n"
520
521 FileWrite $0 'if not "%1"=="compile_debug" goto END$\r$\n'
522 FileWrite $0 "cd %QTDIR%$\r$\n"
523 FileWrite $0 "echo This will configure and compile qt in debug.$\r$\n"
524 FileWrite $0 "echo The release libraries will not be recompiled.$\r$\n"
525 FileWrite $0 "pause$\r$\n"
526 FileWrite $0 "configure -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg$\r$\n"
527 FileWrite $0 "cd %QTDIR%\src$\r$\n"
528 FileWrite $0 "qmake$\r$\n"
529 FileWrite $0 "mingw32-make debug$\r$\n"
530 FileWrite $0 ":END$\r$\n"
531 FileClose $0
532
533WriteMakeFile:
534 ClearErrors
535 FileOpen $0 "$MINGW_INSTDIR\bin\make.bat" w
536 IfErrors done
537 FileWrite $0 "@echo off$\r$\n"
538 FileWrite $0 "mingw32-make %*$\r$\n"
539 FileClose $0
540
541done:
542; pop $1
543 pop $0
544FunctionEnd
545
546Function MINGW_ValidateDirectoryFunc
547 push "${MODULE_MINGW_BUILDDIR}"
548 push $MINGW_INSTDIR
549 call CommonCheckDirectory
550FunctionEnd
551!macroend
552
553!macro MINGW_DESCRIPTION
554 !insertmacro MUI_DESCRIPTION_TEXT ${MINGW_SEC01} "This installs ${MODULE_MINGW_NAME} version ${MODULE_MINGW_VERSION} on your system."
555!macroend
556
557!macro MINGW_STARTUP
558 !ifndef MODULE_MINGW_NODEFAULT
559 SectionSetFlags ${MINGW_SEC01} 17
560 !endif
561 strcpy $MINGW_INSTDIR "C:\Qt\${MODULE_MINGW_VERSION}"
562 push $MINGW_INSTDIR
563 call MakeQtDirectory
564 pop $MINGW_INSTDIR
565
566 !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_DOWNLOADPAGE}"
567 !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_MIRRORPAGE}"
568
569 !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State" "C:\MinGW"
570 !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State" "C:\MinGW"
571
572 strcpy $MODULE_MINGW_DOWNLOAD "no"
573 strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"
574!macroend
575
576!macro MINGW_FINISH
577!macroend
578
579!macro MINGW_RUN_FUNCTION
580 ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
581 intcmp $0 1 0 DoneRunFunctionMINGW
582
583 IfFileExists "$MINGW_INSTDIR\bin\qtdemo.exe" 0 +2
584 Exec '$MINGW_INSTDIR\bin\qtdemo.exe'
585 goto DoneRunFunction ;don't run more applications
586
587 DoneRunFunctionMINGW:
588!macroend
589
590!macro MINGW_README_FUNCTION
591 ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
592 intcmp $0 1 0 DoneReadmeFunctionMINGW
593
594 IfFileExists "$MINGW_INSTDIR\bin\assistant.exe" 0 +2
595 Exec '$MINGW_INSTDIR\bin\assistant.exe'
596 goto DoneReadmeFunction ;don't run more applications
597
598 DoneReadmeFunctionMINGW:
599!macroend
600
601!macro MINGW_UNSTARTUP
602 strcmp "$MINGW_INSTDIR" "" 0 +5
603 StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}"
604 push $MINGW_INSTDIR
605 call un.MakeQtDirectory
606 pop $MINGW_INSTDIR
607
608 !insertmacro ConfirmOnRemove "MINGWInstalled" "- ${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} in $MINGW_INSTDIR"
609!macroend
610
611!macro MINGW_UNINSTALL
612Section un.ModuleMinGW
613 push $0
614 push $1
615
616 ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled"
617 intcmp $0 1 0 DoneUnInstallMINGW
618
619 Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors"
620
621 ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources"
622 strcmp $0 "" MinGWSourcesUninstallDone ;not installed
623 Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe"
624 nsExec::ExecToLog '"$0\src\uninst.exe"'
625 pop $1
626 MinGWSourcesUninstallDone:
627
628 ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir"
629 strcmp $0 "" MinGWUninstallDone ;not installed
630 Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe"
631 nsExec::ExecToLog '"$0\uninst.exe"'
632 pop $1
633 MinGWUninstallDone:
634
635 DetailPrint "Removing start menu shortcuts"
636 call un.RemoveStartmenuApplication
637 Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk"
638 Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk"
639
640 Delete "$MINGW_INSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}"
641 Delete "$MINGW_INSTDIR\bin\make.bat"
642 Delete "$MINGW_INSTDIR\bin\qtvars.bat"
643
644 !insertmacro MODULE_MINGW_REMOVE "$MINGW_INSTDIR"
645 RMDir $MINGW_INSTDIR ;removes it if empty
646
647 DoneUnInstallMINGW:
648 pop $1
649 pop $0
650SectionEnd
651!macroend
652!macro MINGW_UNFINISH
653!macroend
654!else ;MODULE_MINGW
655!macro MINGW_INITIALIZE
656!macroend
657!macro MINGW_SECTIONS
658!macroend
659!macro MINGW_DESCRIPTION
660!macroend
661!macro MINGW_STARTUP
662!macroend
663!macro MINGW_FINISH
664!macroend
665!macro MINGW_RUN_FUNCTION
666!macroend
667!macro MINGW_README_FUNCTION
668!macroend
669!macro MINGW_UNSTARTUP
670!macroend
671!macro MINGW_UNINSTALL
672!macroend
673!macro MINGW_UNFINISH
674!macroend
675!endif ;MODULE_MINGW
676
Note: See TracBrowser for help on using the repository browser.