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