mingw.nsh
来自「奇趣公司比较新的qt/emd版本」· NSH 代码 · 共 669 行 · 第 1/2 页
NSH
669 行
pop $1 pop $2 pop $0FunctionEndFunction ModuleMinGWReadMirrors push $0 ;file handle push $1 ;line ClearErrors FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r IfErrors done strcpy $MODULE_MINGW_MIRRORS ""nextline: FileRead $0 $1 IfErrors done push $1 call ModuleMinGWRemoveNewLine pop $1 strcpy $MODULE_MINGW_MIRRORS "$MODULE_MINGW_MIRRORS|$1" FileRead $0 $1 ;Jump over next line IfErrors done goto nextlinedone: FileClose $0 strlen $1 $MODULE_MINGW_MIRRORS intcmp $1 0 failed failed cleanupfailed: MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!" Quitcleanup: pop $1 pop $0FunctionEnd#this just removes the last two charsFunction ModuleMinGWRemoveNewLineexch $0push $1push $2strlen $1 $0intop $1 $1 - 1strcpy $2 $0 1 $1 ;get last charstrcmp "$2" "$\n" 0 +2intop $1 $1 - 1strcpy $2 $0 1 $1 ;get last charstrcmp "$2" "$\r" 0 +2intop $1 $1 - 1intop $1 $1 + 1strcpy $0 $0 $1pop $2pop $1exch $0FunctionEnd#push serverid#call GetMirror#pop serverFunction ModuleMinGWGetMirror exch $1 ;id push $0 ;file handle push $2 ;line push $3 ;tmp strcpy $3 "" ClearErrors FileOpen $0 "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" r IfErrors donenextline: FileRead $0 $2 IfErrors done push $2 call ModuleMinGWRemoveNewLine pop $2 strcmp $1 $2 0 nextline FileRead $0 $3 IfErrors done push $3 call ModuleMinGWRemoveNewLine pop $3done: strcpy $1 $3 FileClose $0 strlen $2 $1 intcmp $2 0 failed failed cleanupfailed: MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!" Quitcleanup: pop $3 pop $2 pop $0 exch $1FunctionEndFunction ModuleMinGWChecking push $0 ### update with plugin strcpy $MODULE_MINGW_INSTOK "yes" strcpy $MODULE_MINGW_COMPILERINSTDIR "C:\MinGW" ;fallback dir !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State" strcmp "$0" "" +2 strcpy $MODULE_MINGW_COMPILERINSTDIR $0 IfFileExists "$MODULE_MINGW_COMPILERINSTDIR\bin\g++.exe" +3 0 strcpy $MODULE_MINGW_INSTOK "g++ not found in $MODULE_MINGW_COMPILERINSTDIR\bin\" goto DoneChecking!ifndef OPENSOURCE_BUILD ; check w32api.h push $MODULE_MINGW_COMPILERINSTDIR qtnsisext::HasValidWin32Library pop $0 strcmp "$0" "1" +3 0 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)" goto DoneChecking ; check version push $MODULE_MINGW_COMPILERINSTDIR qtnsisext::GetMinGWVersion pop $0 strcmp "$0" "${MODULE_MINGW_COMPILERVERSION}" +3 0 strcpy $MODULE_MINGW_INSTOK "g++ version found does not match ${MODULE_MINGW_COMPILERVERSION} (Found version $0)." goto DoneChecking!endif DoneChecking: pop $0FunctionEnd## creates a qtvars.bat file in $QTDIR\bin# push "c:\qt" #QTDIR# call MakeQtVarsFile#Function ModuleMinGWMakeEnvFile push $0 ; file handle ClearErrors FileOpen $0 "$MINGW_INSTDIR\bin\qtvars.bat" w IfErrors WriteMakeFile FileWrite $0 "@echo off$\r$\n" FileWrite $0 "rem$\r$\n" FileWrite $0 "rem This file is generated$\r$\n" FileWrite $0 "rem$\r$\n" FileWrite $0 "$\r$\n" FileWrite $0 "echo Setting up a MinGW/Qt only environment...$\r$\n" FileWrite $0 "echo -- QTDIR set to $MINGW_INSTDIR$\r$\n" FileWrite $0 "echo -- PATH set to $MINGW_INSTDIR\bin$\r$\n" FileWrite $0 "echo -- Adding $MODULE_MINGW_COMPILERINSTDIR\bin to PATH$\r$\n" FileWrite $0 "echo -- Adding %SystemRoot%\System32 to PATH$\r$\n" FileWrite $0 "echo -- QMAKESPEC set to win32-g++$\r$\n" FileWrite $0 "$\r$\n" FileWrite $0 "set QTDIR=$MINGW_INSTDIR$\r$\n" FileWrite $0 "set PATH=$MINGW_INSTDIR\bin$\r$\n" FileWrite $0 "set PATH=%PATH%;$MODULE_MINGW_COMPILERINSTDIR\bin$\r$\n" FileWrite $0 "set PATH=%PATH%;%SystemRoot%\System32$\r$\n" FileWrite $0 "set QMAKESPEC=win32-g++$\r$\n" FileWrite $0 "$\r$\n" FileWrite $0 'if not "%1"=="compile_debug" goto END$\r$\n' FileWrite $0 "cd %QTDIR%$\r$\n" FileWrite $0 "echo This will configure and compile qt in debug.$\r$\n" FileWrite $0 "echo The release libraries will not be recompiled.$\r$\n" FileWrite $0 "pause$\r$\n" FileWrite $0 "configure -plugin-sql-sqlite -plugin-sql-odbc -qt-libpng -qt-libjpeg$\r$\n" FileWrite $0 "cd %QTDIR%\src$\r$\n" FileWrite $0 "qmake$\r$\n" FileWrite $0 "mingw32-make debug$\r$\n" FileWrite $0 ":END$\r$\n" FileClose $0WriteMakeFile: ClearErrors FileOpen $0 "$MINGW_INSTDIR\bin\make.bat" w IfErrors done FileWrite $0 "@echo off$\r$\n" FileWrite $0 "mingw32-make %*$\r$\n" FileClose $0done:; pop $1 pop $0FunctionEndFunction MINGW_ValidateDirectoryFunc push "${MODULE_MINGW_BUILDDIR}" push $MINGW_INSTDIR call CommonCheckDirectoryFunctionEnd!macroend!macro MINGW_DESCRIPTION !insertmacro MUI_DESCRIPTION_TEXT ${MINGW_SEC01} "This installs ${MODULE_MINGW_NAME} version ${MODULE_MINGW_VERSION} on your system."!macroend!macro MINGW_STARTUP !ifndef MODULE_MINGW_NODEFAULT SectionSetFlags ${MINGW_SEC01} 17 !endif strcpy $MINGW_INSTDIR "C:\Qt\${MODULE_MINGW_VERSION}" push $MINGW_INSTDIR call MakeQtDirectory pop $MINGW_INSTDIR !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_DOWNLOADPAGE}" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_MINGW_MIRRORPAGE}" !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 3" "State" "C:\MinGW" !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State" "C:\MinGW" strcpy $MODULE_MINGW_DOWNLOAD "no" strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no"!macroend!macro MINGW_FINISH!macroend!macro MINGW_RUN_FUNCTION ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" intcmp $0 1 0 DoneRunFunctionMINGW IfFileExists "$MINGW_INSTDIR\bin\qtdemo.exe" 0 +2 Exec '$MINGW_INSTDIR\bin\qtdemo.exe' goto DoneRunFunction ;don't run more applications DoneRunFunctionMINGW:!macroend!macro MINGW_README_FUNCTION ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" intcmp $0 1 0 DoneReadmeFunctionMINGW IfFileExists "$MINGW_INSTDIR\bin\assistant.exe" 0 +2 Exec '$MINGW_INSTDIR\bin\assistant.exe' goto DoneReadmeFunction ;don't run more applications DoneReadmeFunctionMINGW:!macroend!macro MINGW_UNSTARTUP strcmp "$MINGW_INSTDIR" "" 0 +5 StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" push $MINGW_INSTDIR call un.MakeQtDirectory pop $MINGW_INSTDIR !insertmacro ConfirmOnRemove "MINGWInstalled" "- ${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} in $MINGW_INSTDIR"!macroend!macro MINGW_UNINSTALLSection un.ModuleMinGW push $0 push $1 ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" intcmp $0 1 0 DoneUnInstallMINGW Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources" strcmp $0 "" MinGWSourcesUninstallDone ;not installed Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" nsExec::ExecToLog '"$0\src\uninst.exe"' pop $1 MinGWSourcesUninstallDone: ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir" strcmp $0 "" MinGWUninstallDone ;not installed Delete "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" nsExec::ExecToLog '"$0\uninst.exe"' pop $1 MinGWUninstallDone: DetailPrint "Removing start menu shortcuts" call un.RemoveStartmenuApplication Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk" Delete "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk" Delete "$MINGW_INSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}" Delete "$MINGW_INSTDIR\bin\make.bat" Delete "$MINGW_INSTDIR\bin\qtvars.bat" !insertmacro MODULE_MINGW_REMOVE "$MINGW_INSTDIR" RMDir $MINGW_INSTDIR ;removes it if empty DoneUnInstallMINGW: pop $1 pop $0SectionEnd!macroend!macro MINGW_UNFINISH!macroend!else ;MODULE_MINGW!macro MINGW_INITIALIZE!macroend!macro MINGW_SECTIONS!macroend!macro MINGW_DESCRIPTION!macroend!macro MINGW_STARTUP!macroend!macro MINGW_FINISH!macroend!macro MINGW_RUN_FUNCTION!macroend!macro MINGW_README_FUNCTION!macroend!macro MINGW_UNSTARTUP!macroend!macro MINGW_UNINSTALL!macroend!macro MINGW_UNFINISH!macroend!endif ;MODULE_MINGW
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?