diff options
Diffstat (limited to 'tools/installer')
30 files changed, 5076 insertions, 0 deletions
diff --git a/tools/installer/README b/tools/installer/README new file mode 100644 index 0000000..63abf6d --- /dev/null +++ b/tools/installer/README @@ -0,0 +1,12 @@ +iwmake is the tool used to generate the Qt installer binaries. + +To be able to use it yourself create a config.default in the +config/ directory. You can refer to config.default.sample to see +which values need to be set within this file. + +Afterwards call "iwmake.bat mingw-opensource.conf" to create an +installer package yourself. + +Note that the binary creation takes a lot of time and is very +CPU-intensive as it recompiles the Qt source package among other +steps. diff --git a/tools/installer/batch/build.bat b/tools/installer/batch/build.bat new file mode 100755 index 0000000..ee90f92 --- /dev/null +++ b/tools/installer/batch/build.bat @@ -0,0 +1,160 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:begin +for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_COMPILER=%%~m& set IWMAKE_TMP=%%~n + +if "%IWMAKE_TMP%"=="" set IWMAKE_TMP=build_%IWMAKE_COMPILER% +set IWMAKE_BUILD=%IWMAKE_ROOT%\%IWMAKE_TMP% +if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD% + +if not "%PATH%"=="" set IWMAKE_OLD_PATH=%PATH% +if not "%QMAKESPEC%"=="" set IWMAKE_OLD_QMAKESPEC=%QMAKESPEC% +if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR% +if not "%INCLUDE%"=="" set IWMAKE_OLD_INCLUDE=%INCLUDE% +if not "%LIB%"=="" set IWMAKE_OLD_LIB=%LIB% + +set PATH=%IWMAKE_BUILD%\bin;%PATH% +set QTDIR=%IWMAKE_BUILD% + +if "%IWMAKE_COMPILER%"=="vs2003" goto VS2003Env +if "%IWMAKE_COMPILER%"=="vs2002" goto VS2002Env +if "%IWMAKE_COMPILER%"=="vs2005" goto VS2005Env +if "%IWMAKE_COMPILER%"=="vc60" goto VC60Env +if "%IWMAKE_COMPILER%"=="mingw" goto MinGWEnv +goto :eof + +:VS2003Env +set QMAKESPEC=win32-msvc.net +if not exist "%VS71COMNTOOLS%vsvars32.bat" echo VS2003 not found >> %IWMAKE_LOGFILE% & exit /b 1 +call "%VS71COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE% +set IWMAKE_MAKE=nmake +goto :eof + +:VS2002Env +set QMAKESPEC=win32-msvc.net +if not exist "%VSCOMNTOOLS%vsvars32.bat" echo VS2002 not found >> %IWMAKE_LOGFILE% & exit /b 1 +call "%VSCOMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE% +set IWMAKE_MAKE=nmake +goto :eof + +:VS2005Env +set QMAKESPEC=win32-msvc2005 +if not exist "%VS80COMNTOOLS%vsvars32.bat" echo VS2005 not found >> %IWMAKE_LOGFILE% & exit /b 1 +call "%VS80COMNTOOLS%vsvars32.bat" >> %IWMAKE_LOGFILE% +set IWMAKE_MAKE=nmake +goto :eof + +:VC60Env +set QMAKESPEC=win32-msvc +if not exist "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" echo VC60 not found >> %IWMAKE_LOGFILE% & exit /b 1 +call "%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\vcvars32.bat" >> %IWMAKE_LOGFILE% +set IWMAKE_MAKE=nmake +goto :eof + +:MinGWEnv +set QMAKESPEC=win32-g++ +if not exist %IWMAKE_MINGWPATH%\bin\gcc.exe echo MinGW not found in %IWMAKE_MINGWPATH% >> %IWMAKE_LOGFILE% & exit /b 1 +set PATH=%IWMAKE_MINGWPATH%\bin;%PATH% +set IWMAKE_MAKE=mingw32-make +goto :eof + +:finish + if not "%IWMAKE_OLD_PATH%"=="" set PATH=%IWMAKE_OLD_PATH%& set IWMAKE_OLD_PATH= + if not "%IWMAKE_OLD_QMAKESPEC%"=="" set QMAKESPEC=%IWMAKE_OLD_QMAKESPEC%& set IWMAKE_OLD_QMAKESPEC= + if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR%& set IWMAKE_OLD_QTDIR= + if not "%IWMAKE_OLD_INCLUDE%"=="" set INCLUDE=%IWMAKE_OLD_INCLUDE%& set IWMAKE_OLD_INCLUDE= + if not "%IWMAKE_OLD_LIB%"=="" set LIB=%IWMAKE_OLD_LIB%& set IWMAKE_OLD_LIB= +goto :eof + +:configure + pushd %IWMAKE_BUILD% + configure %~1 >> %IWMAKE_LOGFILE% 2>&1 + popd +goto :eof + +:bin + pushd %IWMAKE_BUILD% + %IWMAKE_MAKE% %~1 >>%IWMAKE_LOGFILE% 2>&1 + popd +goto :eof + +:binInDir + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + pushd %IWMAKE_BUILD%\%IWMAKE_TMP% + %IWMAKE_MAKE% %IWMAKE_TMP2% >> %IWMAKE_LOGFILE% 2>&1 + popd +goto :eof + +:DBPlugins + call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sql + set IWMAKE_SQL_OLD_LIB=%LIB% + pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\mysql + set LIB=%IWMAKE_ROOT%\sql\mysql\lib\debug;%IWMAKE_SQL_OLD_LIB% + qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib user32.lib" >> %IWMAKE_LOGFILE% 2>&1 + %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1 + set LIB=%IWMAKE_ROOT%\sql\mysql\lib\opt;%IWMAKE_SQL_OLD_LIB% + qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\mysql\include" "LIBS+=libmysql.lib ws2_32.lib advapi32.lib" >> %IWMAKE_LOGFILE% 2>&1 + %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1 + popd + + set LIB=%IWMAKE_ROOT%\sql\%IWMAKE_COMPILER%;%IWMAKE_SQL_OLD_LIB% + pushd %IWMAKE_BUILD%\src\plugins\sqldrivers\psql + qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpqd.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1 + %IWMAKE_MAKE% debug >> %IWMAKE_LOGFILE% 2>&1 + qmake "INCLUDEPATH+=%IWMAKE_ROOT%\sql\include\psql" "LIBS+=libpq.lib ws2_32.lib advapi32.lib shfolder.lib shell32.lib" >> %IWMAKE_LOGFILE% 2>&1 + %IWMAKE_MAKE% release >> %IWMAKE_LOGFILE% 2>&1 + popd + set LIB=%IWMAKE_SQL_OLD_LIB% + set IWMAKE_SQL_OLD_LIB= +goto :eof + +:root + set IWMAKE_BUILD=%~1 + if not exist %IWMAKE_BUILD% mkdir %IWMAKE_BUILD% +goto :eof + +:END diff --git a/tools/installer/batch/copy.bat b/tools/installer/batch/copy.bat new file mode 100755 index 0000000..0fcb5a6 --- /dev/null +++ b/tools/installer/batch/copy.bat @@ -0,0 +1,124 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:dest + set IWMAKE_OUTDIR=%IWMAKE_ROOT%\%~1 + if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR% +goto :eof + +:src + set IWMAKE_SRCDIR=%IWMAKE_ROOT%\%~1 + if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR% +goto :eof + +:destAbs + set IWMAKE_OUTDIR=%1 + if not exist %IWMAKE_OUTDIR% mkdir %IWMAKE_OUTDIR% +goto :eof + +:srcAbs + set IWMAKE_SRCDIR=%1 + if not exist %IWMAKE_SRCDIR% mkdir %IWMAKE_SRCDIR% +goto :eof + +:extsync + if exist %IWMAKE_ROOT%\%~1 rd /S /Q %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE% + xcopy /H /Y /Q /I /R /E %IWMAKE_EXTERNAL%\%~1 %IWMAKE_ROOT%\%~1 >> %IWMAKE_LOGFILE% +goto :eof + +:all + xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%~1 %IWMAKE_OUTDIR%\ >> %IWMAKE_LOGFILE% +goto :eof + +:filesEx + for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o + echo %IWMAKE_TMP3% > %IWMAKE_ROOT%\iwmake_exclude + xcopy /H /Y /Q /I /R /S /EXCLUDE:%IWMAKE_ROOT%\iwmake_exclude %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE% +goto :eof + +:file + set IWMAKE_TMP=%~1 + set IWMAKE_TMP2=%~nx1 + echo set IWMAKE_TMP3=%%IWMAKE_TMP:%IWMAKE_TMP2%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat" + call %IWMAKE_ROOT%\iwmake_tmp.bat + if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" + xcopy /H /Y /Q /I /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP3% >> %IWMAKE_LOGFILE% +goto :eof + +:fileAndRename + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP4=%%~nxn + echo set IWMAKE_TMP3=%%IWMAKE_TMP2:%IWMAKE_TMP4%=%%>"%IWMAKE_ROOT%\iwmake_tmp.bat" + call %IWMAKE_ROOT%\iwmake_tmp.bat + if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP3%" + echo > %IWMAKE_OUTDIR%\%IWMAKE_TMP2% + xcopy /H /Y /Q /R %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE% + set IWMAKE_TMP4= +goto :eof + +:files + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + if not exist "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%" mkdir "%IWMAKE_OUTDIR%\%IWMAKE_TMP2%" + xcopy /H /Y /Q /I /R /S %IWMAKE_SRCDIR%\%IWMAKE_TMP% %IWMAKE_OUTDIR%\%IWMAKE_TMP2% >> %IWMAKE_LOGFILE% +goto :eof + +:runtime + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + if "%IWMAKE_TMP2%" == "" set IWMAKE_TMP2=bin + xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcr%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE% + xcopy /H /Y /Q /I /R %SystemRoot%\system32\msvcp%IWMAKE_TMP%.dll %IWMAKE_OUTDIR%\%IWMAKE_TMP2%\ >> %IWMAKE_LOGFILE% +goto :eof + +:syncqt + pushd %IWMAKE_OUTDIR% + if exist "include" rd /S /Q include + if not "%QTDIR%"=="" set IWMAKE_OLD_QTDIR=%QTDIR% + set QTDIR=%IWMAKE_OUTDIR% + "%IWMAKE_PERLPATH%\perl" %QTDIR%\bin\syncqt -copy >> %IWMAKE_LOGFILE% 2>&1 + if not "%IWMAKE_OLD_QTDIR%"=="" set QTDIR=%IWMAKE_OLD_QTDIR% + popd +goto :eof + +:END diff --git a/tools/installer/batch/delete.bat b/tools/installer/batch/delete.bat new file mode 100755 index 0000000..1174cde --- /dev/null +++ b/tools/installer/batch/delete.bat @@ -0,0 +1,76 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:destDir + if exist "%IWMAKE_OUTDIR%\%~1" rd /S /Q %IWMAKE_OUTDIR%\%~1 +goto :eof + +:dir + if exist "%IWMAKE_ROOT%\%~1" rd /S /Q %IWMAKE_ROOT%\%~1 +goto :eof + +:dirAbs + if exist "%~1" rd /S /Q %~1 +goto :eof + +:file + del /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1 + exit /b 0 +goto :eof + +:files + del /S /Q /F %IWMAKE_OUTDIR%\%~1 >> %IWMAKE_LOGFILE% 2>&1 + exit /b 0 +goto :eof + +:line + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + if exist "%IWMAKE_ROOT%\tmp_line.txt" del /Q /F "%IWMAKE_ROOT%\tmp_line.txt" >> %IWMAKE_LOGFILE% + type "%IWMAKE_ROOT%\%IWMAKE_TMP%" | find /V "%IWMAKE_TMP2%" >> "%IWMAKE_ROOT%\tmp_line.txt" + xcopy /Y /Q /R %IWMAKE_ROOT%\tmp_line.txt %IWMAKE_ROOT%\%IWMAKE_TMP% >> %IWMAKE_LOGFILE% +goto :eof + +:END diff --git a/tools/installer/batch/env.bat b/tools/installer/batch/env.bat new file mode 100755 index 0000000..cbea4f5 --- /dev/null +++ b/tools/installer/batch/env.bat @@ -0,0 +1,144 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:setglobals +set IWMAKE_PARSESECTION=1 +set IWMAKE_MINGWPATH=c:\MinGW\bin +set IWMAKE_STARTDIR=%CD% +set IWMAKE_NSISCONF=%IWMAKE_SCRIPTDIR%\nsis\config.nsh +set IWMAKE_ROOT=c:\package +set IWMAKE_OUTDIR=%IWMAKE_ROOT% +set IWMAKE_SRCDIR=%IWMAKE_ROOT% +set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT% +set IWMAKE_NSISPATH=%PROGRAMFILES%\NSIS +call %IWMAKE_SCRIPTDIR%\batch\log.bat fileAbs "%IWMAKE_STARTDIR%\log.txt" +goto :eof + +:signPath + set IWMAKE_SIGNPATH=%~1 +goto :eof + +:wgetPath + set IWMAKE_WGET=%~1 +goto :eof + +:wgetDir + set IWMAKE_WGET=%IWMAKE_ROOT%\%~1 +goto :eof + +:NSISPath + set IWMAKE_NSISPATH=%~1 +goto :eof + +:PerlPath + set IWMAKE_PERLPATH=%~1 +goto :eof + +:MinGWPath + set IWMAKE_MINGWPATH=%~1 +goto :eof + +:unzipApp + set IWMAKE_UNZIPAPP=%~1 +goto :eof + +:releaseLocation + set IWMAKE_WGETUSER= + set IWMAKE_WGETPASS= + for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& if not "%%~n"=="" set IWMAKE_TMP2=%%~n& if not "%%~o"=="" set IWMAKE_TMP3=%%~o + if not "%IWMAKE_TMP2%"=="" set IWMAKE_WGETUSER=--http-user=%IWMAKE_TMP2% + if not "%IWMAKE_TMP3%"=="" set IWMAKE_WGETPASS=--http-passwd=%IWMAKE_TMP3% + set IWMAKE_RELEASELOCATION=%IWMAKE_TMP% +goto :eof + +:removeglobals +if not "%IWMAKE_OLD_PATH%"=="" call %IWMAKE_SCRIPTDIR%\batch\build.bat finish +set IWMAKE_RELEASELOCATION= +set IWMAKE_NSISPATH= +set IWMAKE_SECTION= +set IWMAKE_WGET= +set IWMAKE_WGETUSER= +set IWMAKE_WGETPASS= +set IWMAKE_UNZIPAPP= +set IWMAKE_MINGWPATH= +set IWMAKE_MAKE= +set IWMAKE_PERLPATH= +set IWMAKE_STARTDIR= +set IWMAKE_SCRIPTDIR= +set IWMAKE_NSISCONF= +set IWMAKE_RESULT= +set IWMAKE_TMP= +set IWMAKE_TMP2= +set IWMAKE_TMP3= +set IWMAKE_STATUS= +set IWMAKE_LOGFILE= +set IWMAKE_BUILD= +set IWMAKE_ROOT= +set IWMAKE_OUTDIR= +set IWMAKE_EXTERNAL= +set IWMAKE_OLD_PATH= +set IWMAKE_OLD_QMAKESPEC= +set IWMAKE_OLD_QTDIR= +set IWMAKE_OLD_INCLUDE= +set IWMAKE_OLD_LIB= +set IWMAKE_COMPILER= +set IWMAKE_SRCDIR= +set IWMAKE_EXTRACTSRC= +set IWMAKE_EXTRACTDEST= +set IWMAKE_PARSESECTION= +set IWMAKE_OUTPUT_FILE= +set IWMAKE_SIGNPATH= +goto :eof + +:root +set IWMAKE_ROOT=%~1 +goto :eof + +:extroot +set IWMAKE_EXTERNAL=%~1 +goto :eof + +:END diff --git a/tools/installer/batch/extract.bat b/tools/installer/batch/extract.bat new file mode 100755 index 0000000..59554bc --- /dev/null +++ b/tools/installer/batch/extract.bat @@ -0,0 +1,86 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:dest + set IWMAKE_EXTRACTDEST=%IWMAKE_ROOT%\%~1 +goto :eof + +:extUnpack + set IWMAKE_EXTRACTSRC=%~n1 + pushd %IWMAKE_ROOT% + if exist "%IWMAKE_EXTRACTSRC%.zip" del /Q /F "%IWMAKE_EXTRACTSRC%.zip" + %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE% 2>&1 + popd + call :unpack "%~1" +goto :eof + +:unpack + set IWMAKE_EXTRACTSRC=%~n1 + pushd %IWMAKE_ROOT% + if exist "%IWMAKE_EXTRACTDEST%" rd /S /Q %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE% 2>&1 + if exist "%IWMAKE_EXTRACTSRC%" rd /S /Q %IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE% 2>&1 + %IWMAKE_UNZIPAPP% %IWMAKE_EXTRACTSRC%.zip >> %IWMAKE_LOGFILE% + popd + move %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% %IWMAKE_EXTRACTDEST% >> %IWMAKE_LOGFILE% +goto :eof + +:extPatch + pushd %IWMAKE_ROOT% + if exist "%~1" del /Q /F "%~1" + %IWMAKE_WGET%\wget %IWMAKE_WGETUSER% %IWMAKE_WGETPASS% %IWMAKE_RELEASELOCATION%/%~1 >> %IWMAKE_LOGFILE% 2>&1 + popd + call :patch "%~1" +goto :eof + +:patch + pushd %IWMAKE_ROOT% + %IWMAKE_UNZIPAPP% %~1 >> %IWMAKE_LOGFILE% + popd + xcopy /R /I /S /Q /Y %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC%\*.* %IWMAKE_EXTRACTDEST%\ >> %IWMAKE_LOGFILE% + rd /S /Q %IWMAKE_ROOT%\%IWMAKE_EXTRACTSRC% >> %IWMAKE_LOGFILE% +goto :eof + +:END diff --git a/tools/installer/batch/installer.bat b/tools/installer/batch/installer.bat new file mode 100755 index 0000000..c5c51de --- /dev/null +++ b/tools/installer/batch/installer.bat @@ -0,0 +1,250 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:begin + call :reset + echo !define PRODUCT_NAME "%~1" >> %IWMAKE_NSISCONF% + echo !define INSTALL_ROOT "%IWMAKE_ROOT%" >> %IWMAKE_NSISCONF% +goto :eof + +:output + set IWMAKE_OUTPUT_FILE=%~1 + echo !define OUTPUT_FILE "%~1" >> %IWMAKE_NSISCONF% +goto :eof + +:module + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1 + echo !define MODULE_%IWMAKE_RESULT% >> %IWMAKE_NSISCONF% +goto :eof + +:enable + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1 + echo !define USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF% +goto :eof + +:disable + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %~1 + echo !undef USE_%IWMAKE_RESULT:"=% >> %IWMAKE_NSISCONF% +goto :eof + +:startmenu + echo !define DEFAULT_STARTMENU_STRING "%~1" >> %IWMAKE_NSISCONF% +goto :eof + +:reset + if exist "%IWMAKE_NSISCONF%" del /Q /F "%IWMAKE_NSISCONF%" +goto :eof + +:instdir + for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o" + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + echo !define INSTDIR_%IWMAKE_TMP2% %IWMAKE_RESULT:"=% >> "%IWMAKE_NSISCONF%" + echo !define INSTDIR_%IWMAKE_TMP2%_TEXT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%" +goto :eof + +:version + echo !define PRODUCT_VERSION "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:readme + echo !define README_FILE "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:licenseFile + echo !define LICENSE_FILE "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:runfunction + echo !define RUN_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:readmefunction + echo !define README_FUNCTION "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:welcomenote + echo !define WELCOME_NOTE "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:updateplugins + call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync INetLoad + xcopy /Q /Y /R "%IWMAKE_ROOT%\INetLoad\INetLoad.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE% +:: xcopy /Q /Y /R "%IWMAKE_SCRIPTDIR%\nsis\qtnsisext\qtnsisext.dll" "%IWMAKE_NSISPATH%\Plugins\" >> %IWMAKE_LOGFILE% +goto :eof + +:defineDir + for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3=%%~o + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + set IWMAKE_TMP=%IWMAKE_RESULT% + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2% + set IWMAKE_TMP2=%IWMAKE_RESULT% + echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% "%IWMAKE_ROOT%\%IWMAKE_TMP3%" >> "%IWMAKE_NSISCONF%" +goto :eof + +:define + for /F "tokens=1,2*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n& set IWMAKE_TMP3="%%~o" + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + set IWMAKE_TMP=%IWMAKE_RESULT% + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP2% + set IWMAKE_TMP2=%IWMAKE_RESULT% + if %IWMAKE_TMP3%=="" set IWMAKE_TMP3= + echo !define MODULE_%IWMAKE_TMP%_%IWMAKE_TMP2% %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%" +goto :eof + +:src + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + set IWMAKE_TMP=%IWMAKE_RESULT% + set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%" + echo !define MODULE_%IWMAKE_TMP%_ROOT %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%" +goto :eof + +:buildDir + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + set IWMAKE_TMP=%IWMAKE_RESULT% + set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%" + echo !define MODULE_%IWMAKE_TMP%_BUILDDIR %IWMAKE_TMP3% >> "%IWMAKE_NSISCONF%" + for /F "eol=- tokens=1,2,3" %%m in ('%SystemRoot%\system32\find "QT_PACKAGEDATE_STR" %IWMAKE_ROOT%\%IWMAKE_TMP2%\src\corelib\global\qglobal.h') do echo !define MODULE_LICENSECHECK_PACKAGEDATE %%o >> "%IWMAKE_NSISCONF%" +goto :eof + +:compile + call :required + pushd %IWMAKE_SCRIPTDIR%\nsis + "%IWMAKE_NSISPATH%\makensis.exe" installer.nsi >> %IWMAKE_LOGFILE% + popd +goto :eof + +:required + call :setrequired PRODUCT_NAME + call :setrequired INSTALL_ROOT + call :setrequired PRODUCT_VERSION + call :setrequired OUTPUT_FILE + call :setrequired INSTDIR_0 + call :setrequired DEFAULT_STARTMENU_STRING +goto :eof + +:setrequired + echo !ifndef %1 >> "%IWMAKE_NSISCONF%" + echo !error "%1 must be in the .conf file..." >> "%IWMAKE_NSISCONF%" + echo !endif >> "%IWMAKE_NSISCONF%" +goto :eof + +:makeFileList + for /F "tokens=1*" %%m in ("%~1") do set IWMAKE_TMP=%%~m& set IWMAKE_TMP2=%%~n + call "%IWMAKE_SCRIPTDIR%\batch\toupper.bat" %IWMAKE_TMP% + set IWMAKE_TMP=%IWMAKE_RESULT% + set IWMAKE_TMP3="%IWMAKE_ROOT%\%IWMAKE_TMP2%" + + + echo !macro MODULE_%IWMAKE_TMP%_INSTALLFILES >> "%IWMAKE_NSISCONF%" + + pushd %IWMAKE_TMP3% + + echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat" + + dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt" + for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallDirectory "%%m" + + + dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt" + for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addInstallFile "%%m" + + popd + echo !macroend >> "%IWMAKE_NSISCONF%" + + + echo !macro MODULE_%IWMAKE_TMP%_REMOVE removepath >> "%IWMAKE_NSISCONF%" + echo strcmp ${removepath} "" MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL >> "%IWMAKE_NSISCONF%" + pushd %IWMAKE_TMP3% + + echo set IWMAKE_TMP2=%%IWMAKE_TMP2:%CD%\=%% > "%IWMAKE_ROOT%\iwmake_tmp.bat" + + dir /A-D /B /S > "%IWMAKE_ROOT%\iwmake_tmp.txt" + for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveFiles "%%m" + + dir /AD /B /S | %SystemRoot%\system32\sort /R > "%IWMAKE_ROOT%\iwmake_tmp.txt" + for /F "tokens=1" %%m in (%IWMAKE_ROOT%\iwmake_tmp.txt) do call :addRemoveDirectory "%%m" + + popd + echo MODULE_%IWMAKE_TMP%_REMOVE_SAFETYLABEL: >> "%IWMAKE_NSISCONF%" + echo !macroend >> "%IWMAKE_NSISCONF%" +goto :eof + +:addInstallFile + set IWMAKE_TMP2=%~1 + call "%IWMAKE_ROOT%\iwmake_tmp.bat" + echo File "/oname=%IWMAKE_TMP2%" "%~1" >> "%IWMAKE_NSISCONF%" +goto :eof + +:addInstallDirectory + set IWMAKE_TMP2=%~1 + call "%IWMAKE_ROOT%\iwmake_tmp.bat" + echo CreateDirectory "$OUTDIR\%IWMAKE_TMP2%" >> "%IWMAKE_NSISCONF%" +goto :eof + +:addRemoveDirectory + set IWMAKE_TMP2=%~1 + call "%IWMAKE_ROOT%\iwmake_tmp.bat" + echo RMDir ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%" +goto :eof + +:addRemoveFiles + set IWMAKE_TMP2=%~1 + call "%IWMAKE_ROOT%\iwmake_tmp.bat" + echo Delete ${removepath}\%IWMAKE_TMP2% >> "%IWMAKE_NSISCONF%" +goto :eof + +:sign + echo Signing Installer ... + %IWMAKE_SIGNPATH%\signtool.exe sign /v /t http://timestamp.verisign.com/scripts/timestamp.dll /f "%IWMAKE_SIGNPATH%\keys.pfx" "%IWMAKE_OUTPUT_FILE%" >> %IWMAKE_LOGFILE% +goto :eof + +:openpackage + echo !define OPENSOURCE_BUILD >> "%IWMAKE_NSISCONF%" +goto :eof + +:END diff --git a/tools/installer/batch/log.bat b/tools/installer/batch/log.bat new file mode 100755 index 0000000..094df8f --- /dev/null +++ b/tools/installer/batch/log.bat @@ -0,0 +1,61 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +call :%1 %2 +goto END + +:file +set IWMAKE_LOGFILE=%IWMAKE_ROOT%\%~1 +call :reset +goto :eof + +:fileAbs +set IWMAKE_LOGFILE=%1 +call :reset +goto :eof + +:reset +date /T > %IWMAKE_LOGFILE% +goto :eof + +:END diff --git a/tools/installer/batch/toupper.bat b/tools/installer/batch/toupper.bat new file mode 100755 index 0000000..5e19f0f --- /dev/null +++ b/tools/installer/batch/toupper.bat @@ -0,0 +1,72 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +set IWMAKE_RESULT=%1 +if [%IWMAKE_RESULT%]==[] goto :eof +set IWMAKE_RESULT=%IWMAKE_RESULT:a=A% +set IWMAKE_RESULT=%IWMAKE_RESULT:b=B% +set IWMAKE_RESULT=%IWMAKE_RESULT:c=C% +set IWMAKE_RESULT=%IWMAKE_RESULT:d=D% +set IWMAKE_RESULT=%IWMAKE_RESULT:e=E% +set IWMAKE_RESULT=%IWMAKE_RESULT:f=F% +set IWMAKE_RESULT=%IWMAKE_RESULT:g=G% +set IWMAKE_RESULT=%IWMAKE_RESULT:h=H% +set IWMAKE_RESULT=%IWMAKE_RESULT:i=I% +set IWMAKE_RESULT=%IWMAKE_RESULT:j=J% +set IWMAKE_RESULT=%IWMAKE_RESULT:k=K% +set IWMAKE_RESULT=%IWMAKE_RESULT:l=L% +set IWMAKE_RESULT=%IWMAKE_RESULT:m=M% +set IWMAKE_RESULT=%IWMAKE_RESULT:n=N% +set IWMAKE_RESULT=%IWMAKE_RESULT:o=O% +set IWMAKE_RESULT=%IWMAKE_RESULT:p=P% +set IWMAKE_RESULT=%IWMAKE_RESULT:q=Q% +set IWMAKE_RESULT=%IWMAKE_RESULT:r=R% +set IWMAKE_RESULT=%IWMAKE_RESULT:s=S% +set IWMAKE_RESULT=%IWMAKE_RESULT:t=T% +set IWMAKE_RESULT=%IWMAKE_RESULT:u=U% +set IWMAKE_RESULT=%IWMAKE_RESULT:v=V% +set IWMAKE_RESULT=%IWMAKE_RESULT:w=W% +set IWMAKE_RESULT=%IWMAKE_RESULT:x=X% +set IWMAKE_RESULT=%IWMAKE_RESULT:y=Y% +set IWMAKE_RESULT=%IWMAKE_RESULT:z=Z% + diff --git a/tools/installer/config/config.default.sample b/tools/installer/config/config.default.sample new file mode 100644 index 0000000..c6e79e4 --- /dev/null +++ b/tools/installer/config/config.default.sample @@ -0,0 +1,67 @@ +############################################################################# +## +## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +## Contact: Qt Software Information (qt-info@nokia.com) +## +## This file is part of the tools applications of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## No Commercial Usage +## This file contains pre-release code and may not be distributed. +## You may use this file in accordance with the terms and conditions +## contained in the either Technology Preview License Agreement or the +## Beta Release License Agreement. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 2.1 requirements +## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## In addition, as a special exception, Nokia gives you certain +## additional rights. These rights are described in the Nokia Qt LGPL +## Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +## package. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3.0 as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU General Public License version 3.0 requirements will be +## met: http://www.gnu.org/copyleft/gpl.html. +## +## If you are unsure which license is appropriate for your use, please +## contact the sales department at qt-sales@nokia.com. +## $QT_END_LICENSE$ +## +## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +## +############################################################################# + +# root directory +# Describes the directory where temporary folder, build directory and +# package will be located at. +env root "c:\qt_packages" + +# where to find all external files +# To resolve the external dependencies specify a server, where to get +# required tools like wget, sign, etc. +env extroot "\\someshare\tools\" + +# Location of the installed MinGW to build binaries +env mingwPath "c:\mingw" + +# Location to NSIS package creator +env NSISPath "%ProgramFiles%\NSIS" + +# Location to the install path of PERL +env perlPath "c:\Perl\bin" + +# source package directory +# Describe the directory where compressed source package is located at. +# The installer script uses this one for building and creating a package. +env releaseLocation "http://your.source.server/somepath" diff --git a/tools/installer/config/mingw-opensource.conf b/tools/installer/config/mingw-opensource.conf new file mode 100644 index 0000000..b01c2a1 --- /dev/null +++ b/tools/installer/config/mingw-opensource.conf @@ -0,0 +1,139 @@ +############################################################################# +## +## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +## Contact: Qt Software Information (qt-info@nokia.com) +## +## This file is part of the tools applications of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## No Commercial Usage +## This file contains pre-release code and may not be distributed. +## You may use this file in accordance with the terms and conditions +## contained in the either Technology Preview License Agreement or the +## Beta Release License Agreement. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 2.1 requirements +## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## In addition, as a special exception, Nokia gives you certain +## additional rights. These rights are described in the Nokia Qt LGPL +## Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +## package. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3.0 as published by the Free Software +## Foundation and appearing in the file LICENSE.GPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU General Public License version 3.0 requirements will be +## met: http://www.gnu.org/copyleft/gpl.html. +## +## If you are unsure which license is appropriate for your use, please +## contact the sales department at qt-sales@nokia.com. +## $QT_END_LICENSE$ +## +## This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +## WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +## +############################################################################# +#extracts the package to buildDir + +#extract dest "build_mingw_opensource" +#Section EXTRACT +#extract extUnpack "qt-win-opensource-src-%VERSION%.zip" +#SectionEnd + +#build the binaries +#build begin mingw "build_mingw_opensource" + +#Section CONFIGURE +#build configure "-confirm-license -release -plugin-sql-sqlite -qt-libpng -qt-libjpeg" +#SectionEnd + +#Section BUILD +#build bin +#SectionEnd + +#build finish + +# organize release files +#Section ORGANIZE +#delete dir "release_mingw_opensource" + +#copy dest "release_mingw_opensource" +#copy src "build_mingw_opensource" + +# extract everything once more +#extract dest "release_mingw_opensource" +#extract unpack "qt-win-opensource-src-4.4.3.zip" + +# qconfig.h +#copy file "src\corelib\global\qconfig.h" +#copy file "include\QtCore\qconfig.h" +#copy file "include\Qt\qconfig.h" + +# qconfig.pri +#copy file "mkspecs\qconfig.pri" + +# .qmake.cache +#copy file ".qmake.cache" + +# default mkspec +#copy files "mkspecs\default\*" "mkspecs\default\" + +# copy all binary files +#copy all "*.a" +#copy all "*.exe" +#copy all "*.dll" + +# .prl files +#copy files "lib\*.prl" "lib\" + +# remove unused stuff +#delete files "lib\*.dll" + +# copy InetLoad license info +#copy files "..\INetLoad\Readme.txt" "src\3rdparty\InetLoad\" + +#SectionEnd + +Section NSIS +# general installer options +installer begin "Qt OpenSource" +installer version "4.4.3" +installer output "c:\iwmake\qt-win-opensource-4.4.3-mingw.exe" +installer startmenu "Qt by Nokia v4.4.3 (OpenSource)" +installer enable component_page +installer enable directory_page +installer enable startmenu_page +installer instdir mingw 0 "Qt Installation Directory" +installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.GPL" +#installer licenseFile "%IWMAKE_ROOT%\release_mingw_opensource\LICENSE.PREVIEW.OPENSOURCE" + +installer runfunction "Run Examples and Demos" +installer readmefunction "Show Documentation" + +installer module registeruiext +installer module opensource + +# mingw options +installer module mingw +installer src mingw "release_mingw_opensource" +installer makeFileList mingw "release_mingw_opensource" +installer buildDir mingw "build_mingw_opensource" +installer enable nodirlengthcheck + +# public generatable package +installer openpackage + +SectionEnd + +# compile the package +Section NSIS_COMPILE +installer compile +SectionEnd diff --git a/tools/installer/iwmake.bat b/tools/installer/iwmake.bat new file mode 100755 index 0000000..ee1158d --- /dev/null +++ b/tools/installer/iwmake.bat @@ -0,0 +1,127 @@ +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: +:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +:: Contact: Qt Software Information (qt-info@nokia.com) +:: +:: This file is part of the tools applications of the Qt Toolkit. +:: +:: $QT_BEGIN_LICENSE:LGPL$ +:: No Commercial Usage +:: This file contains pre-release code and may not be distributed. +:: You may use this file in accordance with the terms and conditions +:: contained in the either Technology Preview License Agreement or the +:: Beta Release License Agreement. +:: +:: GNU Lesser General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU Lesser +:: General Public License version 2.1 as published by the Free Software +:: Foundation and appearing in the file LICENSE.LGPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU Lesser General Public License version 2.1 requirements +:: will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +:: +:: In addition, as a special exception, Nokia gives you certain +:: additional rights. These rights are described in the Nokia Qt LGPL +:: Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +:: package. +:: +:: GNU General Public License Usage +:: Alternatively, this file may be used under the terms of the GNU +:: General Public License version 3.0 as published by the Free Software +:: Foundation and appearing in the file LICENSE.GPL included in the +:: packaging of this file. Please review the following information to +:: ensure the GNU General Public License version 3.0 requirements will be +:: met: http://www.gnu.org/copyleft/gpl.html. +:: +:: If you are unsure which license is appropriate for your use, please +:: contact the sales department at qt-sales@nokia.com. +:: $QT_END_LICENSE$ +:: +:: This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +:: WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +:: +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +rem @echo off +call :init +if "%IWMAKE_STATUS%"=="failed" goto FAILED +if not exist "%IWMAKE_SCRIPTDIR%\config\%1.conf" goto FAILED +if not "%~2"=="" set IWMAKE_SECTION=%~2 +for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.default) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j +if "%IWMAKE_STATUS%"=="failed" goto FAILED +if exist "%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%" for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\config.%COMPUTERNAME%) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j +if "%IWMAKE_STATUS%"=="failed" goto FAILED +call :checkrequirements +if "%IWMAKE_STATUS%"=="failed" goto FAILED +for /F "eol=# tokens=1,2*" %%i in (%IWMAKE_SCRIPTDIR%\config\%1.conf) do set IWMAKE_TMP=%%k& call :func_delegate %%i %%j +if "%IWMAKE_STATUS%"=="failed" goto FAILED +goto DONE + +:func_delegate +if "%IWMAKE_STATUS%"=="failed" goto :eof +set IWMAKE_TMP="%IWMAKE_TMP:"=%" + +if /i "%1"=="sectionend" echo Leaving Section& set IWMAKE_PARSESECTION=1& goto :eof +if /i not "%1"=="section" goto callScript +echo Entering Section %~2 +for %%m in (%IWMAKE_SECTION%) do call :checkSection %%m %~2 +goto :eof + +:callScript +if "%IWMAKE_PARSESECTION%"=="0" goto :eof + +call "%IWMAKE_SCRIPTDIR%\batch\%1.bat" %2 %IWMAKE_TMP% +if not "%errorlevel%"=="0" echo %1 %2 failed! >> %IWMAKE_LOGFILE%& set IWMAKE_STATUS=failed +goto :eof + +:checkSection + if /i "%1"=="%2" echo Skipping Section& set IWMAKE_PARSESECTION=0 +goto :eof + +:checkrequirements + if not exist %IWMAKE_ROOT% mkdir %IWMAKE_ROOT% + if not "%IWMAKE_SIGNPATH%"=="" goto CheckSIGNOK + call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync sign + call "%IWMAKE_SCRIPTDIR%\batch\env.bat" signPath "%IWMAKE_ROOT%\sign" +:CheckSIGNOK + if not "%IWMAKE_WGET%"=="" goto CheckWGETOK + call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync wget + call "%IWMAKE_SCRIPTDIR%\batch\env.bat" wgetDir wget +:CheckWGETOK + if exist "%IWMAKE_PERLPATH%\perl.exe" goto CheckPerlOK + set IWMAKE_STATUS=failed + echo Perl not found in %IWMAKE_PERLPATH%! (check your config file) +:CheckPerlOK + if not "%IWMAKE_UNZIPAPP%"=="" goto CheckUNZIPOK + call "%IWMAKE_SCRIPTDIR%\batch\copy.bat" extsync unzip + call "%IWMAKE_SCRIPTDIR%\batch\env.bat" unzipApp "%IWMAKE_ROOT%\unzip\unzip.exe" +:CheckUNZIPOK + if exist "%IWMAKE_NSISPATH%\makensis.exe" goto CheckNSISOK + set IWMAKE_STATUS=failed + echo NSIS not found! (check your config file) +:CheckNSISOK + call "%IWMAKE_SCRIPTDIR%\batch\installer.bat" updateplugins +goto :eof + +:init + set IWMAKE_SCRIPTDIR=%~dp0 + set IWMAKE_SCRIPTDIR=%IWMAKE_SCRIPTDIR:~0,-1% + call "%IWMAKE_SCRIPTDIR%\batch\env.bat" setglobals +goto :eof + +:cleanup + pushd "%IWMAKE_STARTDIR%" + call "%IWMAKE_SCRIPTDIR%\batch\env.bat" removeglobals + popd +goto :eof + +:FAILED + call :cleanup + echo Failed! +goto END + +:DONE + call :cleanup + echo Done! +goto END + +:END diff --git a/tools/installer/nsis/confirmpage.ini b/tools/installer/nsis/confirmpage.ini new file mode 100644 index 0000000..8790e83 --- /dev/null +++ b/tools/installer/nsis/confirmpage.ini @@ -0,0 +1,62 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Ini file generated by the HM NIS Edit IO designer. +[Settings] +NumFields=2 + +[Field 1] +Type=Label +Text=The following components will be uninstalled: +Left=1 +Right=298 +Top=1 +Bottom=12 + +[Field 2] +Type=Label +Left=16 +Right=298 +Top=16 +Bottom=136 + diff --git a/tools/installer/nsis/gwdownload.ini b/tools/installer/nsis/gwdownload.ini new file mode 100644 index 0000000..05c5952 --- /dev/null +++ b/tools/installer/nsis/gwdownload.ini @@ -0,0 +1,121 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Ini file generated by the HM NIS Edit IO designer. +[Settings] +NumFields=9 + +[Field 1] +Type=Groupbox +Text=Find MinGW +Left=0 +Right=299 +Top=49 +Bottom=91 + +[Field 2] +Type=Label +Text=Please specify a directory where to find MinGW (for instance: C:\\MinGW). If you do not have MinGW installed, you can let the installer download and install it for you. +Left=2 +Right=298 +Top=1 +Bottom=27 + +[Field 3] +Type=DirRequest +Left=8 +Right=290 +Top=68 +Bottom=81 + +[Field 4] +Type=Groupbox +Text=Download and install MinGW +Left=0 +Right=299 +Top=94 +Bottom=137 + +[Field 5] +Type=Label +Text=Previously installed MinGW: +Left=8 +Right=286 +Top=60 +Bottom=68 + +[Field 6] +Type=DirRequest +Left=8 +Right=290 +Top=116 +Bottom=129 +Flags=DISABLED + +[Field 7] +Type=Label +Text=Installation directory: +Left=8 +Right=124 +Top=107 +Bottom=115 +Flags=DISABLED + +[Field 8] +Type=Checkbox +Text=Download and install minimal MinGW installation. +Left=8 +Right=172 +Top=28 +Bottom=40 +Flags=NOTIFY + +[Field 9] +Type=Link +Text=(http://www.mingw.org) +Left=174 +Right=260 +Top=30 +Bottom=38 +State=http://www.mingw.org + diff --git a/tools/installer/nsis/gwmirror.ini b/tools/installer/nsis/gwmirror.ini new file mode 100644 index 0000000..9525164 --- /dev/null +++ b/tools/installer/nsis/gwmirror.ini @@ -0,0 +1,70 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Ini file generated by the HM NIS Edit IO designer. +[Settings] +NumFields=3 + +[Field 1] +Type=Label +Text=Select a mirror where to download MinGW: +Left=0 +Right=211 +Top=0 +Bottom=8 + +[Field 2] +Type=Checkbox +Text=Download MinGW source code. (You don't need this to compile Qt) +Left=4 +Right=296 +Top=124 +Bottom=134 + +[Field 3] +Type=Listbox +Left=0 +Right=299 +Top=9 +Bottom=118 + diff --git a/tools/installer/nsis/images/install.ico b/tools/installer/nsis/images/install.ico Binary files differnew file mode 100644 index 0000000..080d82d --- /dev/null +++ b/tools/installer/nsis/images/install.ico diff --git a/tools/installer/nsis/images/qt-header.bmp b/tools/installer/nsis/images/qt-header.bmp Binary files differnew file mode 100644 index 0000000..1333cb4 --- /dev/null +++ b/tools/installer/nsis/images/qt-header.bmp diff --git a/tools/installer/nsis/images/qt-wizard.bmp b/tools/installer/nsis/images/qt-wizard.bmp Binary files differnew file mode 100644 index 0000000..4aefd2d --- /dev/null +++ b/tools/installer/nsis/images/qt-wizard.bmp diff --git a/tools/installer/nsis/includes/global.nsh b/tools/installer/nsis/includes/global.nsh new file mode 100644 index 0000000..c124018 --- /dev/null +++ b/tools/installer/nsis/includes/global.nsh @@ -0,0 +1,146 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!include "StrFunc.nsh" +!include "includes\list.nsh" + +${StrCase} +${StrTrimNewLines} +${StrStr} +${StrRep} +${UnStrRep} + +var STARTMENU_STRING +var PRODUCT_UNIQUE_KEY +var RUNNING_AS_ADMIN + +!ifndef MODULE_MINGW + !ifdef MODULE_MSVC_VC60 + !define INSTALL_COMPILER "vc60" + !else + !ifdef MODULE_MSVC_VS2002 + !define INSTALL_COMPILER "vs2002" + !else + !ifdef MODULE_MSVC_VS2005 + !define INSTALL_COMPILER "vs2005" + !else + !define INSTALL_COMPILER "vs2003" + !endif + !endif + !endif +!else + !define INSTALL_COMPILER "mingw" +!endif + +; ADDIN\INTEGRATION +var VS_VERSION +var VS_VERSION_SHORT +var ADDIN_INSTDIR +var VSIP_INSTDIR +var HELP_INSTDIR +var ECLIPSE_INSTDIR +var QTJAMBIECLIPSE_INSTDIR + +; LICENSECHECK +var LICENSE_KEY +var LICENSEE +var LICENSE_PRODUCT +var LICENSE_FILE + +; MSVC +!ifdef MODULE_MSVC + !define MSVC_ValidateDirectory + var MSVC_INSTDIR +!endif + +; MINGW +!ifdef MODULE_MINGW + !define MINGW_ValidateDirectory + var MINGW_INSTDIR +!endif + +; QSA +var QSA_INSTDIR + +; QTDIR PAGE +var QTDIR_SELECTED +var COMPILER_SELECTED + +; used by addin7x and vsip +!ifndef MODULE_VSIP_ROOT + !define MODULE_VSIP_ROOT "${INSTALL_ROOT}\vsip" +!endif + +; add to confirm path +var UninstallerConfirmProduct + +Function un.ConfirmOnDelete + exch $0 + push $1 + + push "$0" + push "$UninstallerConfirmProduct" + call un.ItemInList + pop $1 + IntCmp $1 1 ConfirmOnDeleteDone + + strcmp "$UninstallerConfirmProduct" "" 0 +3 + strcpy $UninstallerConfirmProduct "$0" + goto +2 + strcpy $UninstallerConfirmProduct "$UninstallerConfirmProduct$\r$\n$0" + + ConfirmOnDeleteDone: + pop $1 + pop $0 +FunctionEnd + +!macro ConfirmOnRemove REG_KEY PRODUCT_NAME + push $0 + ClearErrors + ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "${REG_KEY}" + intcmp $0 1 0 +3 + push "${PRODUCT_NAME}" + call un.ConfirmOnDelete + ClearErrors + pop $0 +!macroend
\ No newline at end of file diff --git a/tools/installer/nsis/includes/instdir.nsh b/tools/installer/nsis/includes/instdir.nsh new file mode 100644 index 0000000..859b004 --- /dev/null +++ b/tools/installer/nsis/includes/instdir.nsh @@ -0,0 +1,257 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifndef INSTDIR_1 + !macro INSTDIR_INITIALIZE + !define MUI_DIRECTORYPAGE_VARIABLE $${INSTDIR_0}_INSTDIR + !ifdef ${INSTDIR_0}_ValidateDirectory + !define MUI_PAGE_CUSTOMFUNCTION_LEAVE "${INSTDIR_0}_ValidateDirectoryFunc" + !endif + !insertmacro MUI_PAGE_DIRECTORY + !macroend + !macro INSTDIR_FUNCTIONS + !macroend + !macro INSTDIR_STARTUP + !macroend +!else +!macro INSTDIR_INITIALIZE + !define INSTDIR_INI_FILE "instdir.ini" + !define INSTDIR_0_DIRFIELD "Field 10" + !define INSTDIR_0_TEXTFIELD "Field 13" + !define INSTDIR_1_DIRFIELD "Field 7" + !define INSTDIR_1_TEXTFIELD "Field 11" + !define INSTDIR_2_DIRFIELD "Field 5" + !define INSTDIR_2_TEXTFIELD "Field 8" + !define INSTDIR_3_DIRFIELD "Field 3" + !define INSTDIR_3_TEXTFIELD "Field 6" + !define INSTDIR_4_DIRFIELD "Field 2" + !define INSTDIR_4_TEXTFIELD "Field 4" + !define INSTDIR_5_DIRFIELD "Field 9" + !define INSTDIR_5_TEXTFIELD "Field 12" + !define INSTDIR_DIRHEIGHT 18 + + Page custom InitInstDirs UpdateInstDirs + + LangString InstDirLicenseTitle ${LANG_ENGLISH} "Installation Directories" + LangString InstDirLicenseTitleDescription ${LANG_ENGLISH} "Select the directories where you want the software installed." +!macroend + +!macro INSTDIR_FUNCTIONS + Function InitInstDirs + push $0 + push $1 + push $2 + push $3 + + !insertmacro MUI_HEADER_TEXT "$(InstDirLicenseTitle)" "$(InstDirLicenseTitleDescription)" + strcpy $0 "129" + +!ifdef INSTDIR_0 + SectionGetFlags ${${INSTDIR_0}_SEC01} $1 +!ifdef ${INSTDIR_0}_SEC02 + SectionGetFlags ${${INSTDIR_0}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Text" "${INSTDIR_0_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State" $${INSTDIR_0}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_0_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif +!ifdef INSTDIR_1 + SectionGetFlags ${${INSTDIR_1}_SEC01} $1 +!ifdef ${INSTDIR_1}_SEC02 + SectionGetFlags ${${INSTDIR_1}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Text" "${INSTDIR_1_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State" $${INSTDIR_1}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_1_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif +!ifdef INSTDIR_2 + SectionGetFlags ${${INSTDIR_2}_SEC01} $1 +!ifdef ${INSTDIR_2}_SEC02 + SectionGetFlags ${${INSTDIR_2}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Text" "${INSTDIR_2_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State" $${INSTDIR_2}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_2_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif +!ifdef INSTDIR_3 + SectionGetFlags ${${INSTDIR_3}_SEC01} $1 +!ifdef ${INSTDIR_3}_SEC02 + SectionGetFlags ${${INSTDIR_3}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Text" "${INSTDIR_3_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State" $${INSTDIR_3}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_3_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif +!ifdef INSTDIR_4 + SectionGetFlags ${${INSTDIR_4}_SEC01} $1 +!ifdef ${INSTDIR_4}_SEC02 + SectionGetFlags ${${INSTDIR_4}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Text" "${INSTDIR_4_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State" $${INSTDIR_4}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_4_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif +!ifdef INSTDIR_5 + SectionGetFlags ${${INSTDIR_5}_SEC01} $1 +!ifdef ${INSTDIR_5}_SEC02 + SectionGetFlags ${${INSTDIR_5}_SEC02} $3 + IntOp $1 $1 | $3 +!endif + IntOp $2 $1 & 1 ;just care about the first flag + StrCpy $1 "READONLY" + StrCmp "$2" "1" +2 + StrCpy $1 "DISABLED" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Flags" "$1" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Text" "${INSTDIR_5_TEXT}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State" $${INSTDIR_5}_INSTDIR +!else + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "Type" "Unknown" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "${INSTDIR_5_TEXTFIELD}" "Type" "Unknown" + intop $0 $0 - ${INSTDIR_DIRHEIGHT} +!endif + + !insertmacro MUI_INSTALLOPTIONS_WRITE "${INSTDIR_INI_FILE}" "Field 1" "Bottom" "$0" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${INSTDIR_INI_FILE}" + + pop $3 + pop $2 + pop $1 + pop $0 + FunctionEnd + + Function UpdateInstDirs +!ifdef INSTDIR_0 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_0}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_0_DIRFIELD}" "State" + !ifdef ${INSTDIR_0}_ValidateDirectory + call ${INSTDIR_0}_ValidateDirectoryFunc + !endif +!endif +!ifdef INSTDIR_1 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_1}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_1_DIRFIELD}" "State" + !ifdef ${INSTDIR_1}_ValidateDirectory + call ${INSTDIR_1}_ValidateDirectoryFunc + !endif +!endif +!ifdef INSTDIR_2 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_2}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_2_DIRFIELD}" "State" + !ifdef ${INSTDIR_2}_ValidateDirectory + call ${INSTDIR_2}_ValidateDirectoryFunc + !endif +!endif +!ifdef INSTDIR_3 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_3}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_3_DIRFIELD}" "State" + !ifdef ${INSTDIR_3}_ValidateDirectory + call ${INSTDIR_3}_ValidateDirectoryFunc + !endif +!endif +!ifdef INSTDIR_4 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_4}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_4_DIRFIELD}" "State" + !ifdef ${INSTDIR_4}_ValidateDirectory + call ${INSTDIR_4}_ValidateDirectoryFunc + !endif +!endif +!ifdef INSTDIR_5 + !insertmacro MUI_INSTALLOPTIONS_READ $${INSTDIR_5}_INSTDIR "${INSTDIR_INI_FILE}" "${INSTDIR_5_DIRFIELD}" "State" + !ifdef ${INSTDIR_5}_ValidateDirectory + call ${INSTDIR_5}_ValidateDirectoryFunc + !endif +!endif + FunctionEnd +!macroend + +!macro INSTDIR_STARTUP + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${INSTDIR_INI_FILE}" +!macroend + +!endif ;ifndef INSTDIR_1
\ No newline at end of file diff --git a/tools/installer/nsis/includes/list.nsh b/tools/installer/nsis/includes/list.nsh new file mode 100644 index 0000000..c553f67 --- /dev/null +++ b/tools/installer/nsis/includes/list.nsh @@ -0,0 +1,139 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifndef LIST_INCLUDE +!define LIST_INCLUDE + +; usage: +; push item +; push list +; call ItemInList +; returns 1 or 0 +!macro ItemInList UN +Function ${UN}ItemInList + exch $0 ;list + exch + exch $1 ;item + push $2 ;counter + push $3 ;substr + push $4 ;char + + strcpy $3 "" + strcpy $2 "0" + + loop: + strcpy $4 $0 1 $2 + strcmp "$4" "" atend + intop $2 $2 + 1 + + strcmp "$4" "|" 0 +4 + strcmp "$3" "$1" found + strcpy $3 "" ;reset substr + goto +2 + strcpy $3 "$3$4" ;append char to substr + goto loop + + found: + strcpy $0 "1" + goto done + + atend: + strcmp "$3" "$1" found + strcpy $0 "0" + + done: + pop $4 + pop $3 + pop $2 + pop $1 + exch $0 +FunctionEnd +!macroend + +!insertmacro ItemInList "" +!insertmacro ItemInList "un." + +Function GetItemInList + exch $0 ;list + exch + exch $1 ;index + push $2 ;counter + push $3 ;substr + push $4 ;char + push $5 ;current index + + strcpy $3 "" + strcpy $2 "0" + strcpy $5 "1" + + loop: + strcpy $4 $0 1 $2 + strcmp "$4" "" atend + intop $2 $2 + 1 + + strcmp "$4" "|" 0 +5 + strcmp "$5" "$1" found + strcpy $3 "" ;reset substr + intop $5 $5 + 1 + goto +2 + strcpy $3 "$3$4" ;append char to substr + goto loop + + found: + strcpy $0 "$3" + goto done + + atend: + strcmp "$5" "$1" found + strcpy $0 "" + + done: + pop $5 + pop $4 + pop $3 + pop $2 + pop $1 + exch $0 +FunctionEnd + +!endif ;LIST_INCLUDE
\ No newline at end of file diff --git a/tools/installer/nsis/includes/qtcommon.nsh b/tools/installer/nsis/includes/qtcommon.nsh new file mode 100644 index 0000000..72a5211 --- /dev/null +++ b/tools/installer/nsis/includes/qtcommon.nsh @@ -0,0 +1,574 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifndef QTCOMMON_INCLUDE +!define QTCOMMON_INCLUDE + +!macro MakeQtDirectory UN +Function ${UN}MakeQtDirectory + exch $0 + + push $0 + push " " #replace + push "-" #with + call ${UN}ReplaceString + pop $0 + + push $0 + push "(" #replace + push "" #with + call ${UN}ReplaceString + pop $0 + + push $0 + push ")" #replace + push "" #with + call ${UN}ReplaceString + pop $0 + + exch $0 +FunctionEnd +!macroend +!insertmacro MakeQtDirectory "" +!insertmacro MakeQtDirectory "un." + +Function DeleteFloatingLicenseProgram + exch $1 + push $0 + + StrCmp $LICENSE_KEY "" end + + ClearErrors + !ifndef OPENSOURCE_BUILD + qtnsisext::IsFloatingLicense $LICENSE_KEY + !endif + IfErrors end + pop $0 + + StrCmp $0 "1" end + IfFileExists "$1\bin\qtusagereporter.exe" 0 end + Delete "$1\bin\qtusagereporter.exe" + + end: + pop $0 + pop $1 +FunctionEnd + +Function AddStartmenuApplication + exch $0 + IfFileExists "$0\assistant.exe" 0 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk" "$0\assistant.exe" + IfFileExists "$0\designer.exe" 0 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk" "$0\designer.exe" + IfFileExists "$0\linguist.exe" 0 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk" "$0\linguist.exe" + IfFileExists "$0\qtdemo.exe" 0 +2 + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk" "$0\qtdemo.exe" + IfFileExists "$0\..\README" 0 ReadMeShortCutFinished + IfFileExists "$WINDIR\notepad.exe" +3 + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$SYSDIR\notepad.exe" "$0\..\README" + goto ReadMeShortCutFinished + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" "$WINDIR\notepad.exe" "$0\..\README" + ReadMeShortCutFinished: + pop $0 +FunctionEnd + +Function un.RemoveStartmenuApplication + Delete "$SMPROGRAMS\$STARTMENU_STRING\Assistant.lnk" + Delete "$SMPROGRAMS\$STARTMENU_STRING\Designer.lnk" + Delete "$SMPROGRAMS\$STARTMENU_STRING\Linguist.lnk" + Delete "$SMPROGRAMS\$STARTMENU_STRING\Examples and Demos.lnk" + Delete "$SMPROGRAMS\$STARTMENU_STRING\Qt Readme.lnk" +FunctionEnd + +#patch the licence information +Function PatchLicenseInformation + exch $0 + push $1 + push $2 + + DetailPrint "Patching license information..." + + IfFileExists "$0\src\corelib\global\qconfig.h" 0 +3 + strcpy $2 "$0\src\corelib\global\qconfig.h" + goto PatchLicensee + + IfFileExists "$0\include\Qt\qconfig.h" 0 PatchConfigPriFile + strcpy $2 "$0\include\Qt\qconfig.h" + + PatchLicensee: + push $2 + push '#define QT_PRODUCT_LICENSEE "' + push '#define QT_PRODUCT_LICENSEE "$LICENSEE"$\r$\n' + call PatchLine + + push $2 + push '#define QT_PRODUCT_LICENSE "' + push '#define QT_PRODUCT_LICENSE "$LICENSE_PRODUCT"$\r$\n' + call PatchLine + + push $2 + ${StrCase} $1 "$LICENSE_PRODUCT" "U" + push '# define QT_EDITION QT_EDITION_' + push '# define QT_EDITION QT_EDITION_$1$\r$\n' + call PatchLine + + PatchConfigPriFile: + IfFileExists "$0\mkspecs\qconfig.pri" 0 PatchLicenseProductDone + push "$0\mkspecs\qconfig.pri" + push "QT_EDITION = " + push "QT_EDITION = $LICENSE_PRODUCT$\r$\n" + call PatchLine + + PatchLicenseProductDone: + pop $2 + pop $1 + pop $0 +FunctionEnd + +Function PatchCommonBinaryFiles + exch $2 + push $0 + push $1 + + IfFileExists "$2\bin\qmake.exe" 0 +5 + DetailPrint "Patching paths in qmake..." + push $2 + push "$2\bin\qmake.exe" + call PatchBinaryPaths + + DetailPrint "Patching paths in core..." + FindFirst $0 $1 "$2\bin\QtCore*.dll" + StrCmp $1 "" ErrorPatching + push $2 + push "$2\bin\$1" + call PatchBinaryPaths + + FindNext $0 $1 + StrCmp $1 "" ErrorPatching + push $2 + push "$2\bin\$1" + call PatchBinaryPaths + + ErrorPatching: + + pop $1 + pop $0 + pop $2 +FunctionEnd + +Function PatchBinaryPaths + exch $0 + exch + exch $2 + push $1 + +!ifndef OPENSOURCE_BUILD + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_prfxpath=" "qt_prfxpath=$2" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_docspath=" "qt_docspath=$2\doc" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_hdrspath=" "qt_hdrspath=$2\include" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_libspath=" "qt_libspath=$2\lib" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_binspath=" "qt_binspath=$2\bin" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_plugpath=" "qt_plugpath=$2\plugins" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_datapath=" "qt_datapath=$2" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_trnspath=" "qt_trnspath=$2\translations" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_xmplpath=" "qt_xmplpath=$2\examples" +!ifdef MODULE_LICENSECHECK + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsuser=" "qt_lcnsuser=$LICENSEE" + qtnsisext::PatchBinary /NOUNLOAD $0 "qt_lcnsprod=" "qt_lcnsprod=$LICENSE_PRODUCT" +!endif + qtnsisext::PatchBinary $0 "qt_demopath=" "qt_demopath=$2\demos" +!endif + + pop $1 + pop $2 + pop $0 +FunctionEnd + +#patching the prl files +Function PatchPrlFiles + exch $2 + exch + exch $3 ;buildDir + push $0 + push $1 + + FindFirst $0 $1 "$2\lib\*.prl" + loop: + StrCmp $1 "" done + DetailPrint "Patching $1..." + + push "$2\lib\$1" + push $3 + push $2 + call PatchPath + + FindNext $0 $1 + Goto loop + done: + pop $1 + pop $0 + pop $3 + pop $2 +FunctionEnd + +# +# patch line in text files +# push "qtcore4.prl" #Filename +# push "#define ..." #START WITH +# push "c:\qt" #REPLACE WITH +# call PatchLine +# +Function PatchLine + exch $2 ;replacement line + exch 2 + exch $1 ;Filename + exch + exch $0 ;start with + push $3 ; tmp filename + push $4 ; handle (tmp) + push $5 ; handle (org) + push $6 ; string + + ClearErrors + GetTempFileName $3 + IfErrors done + FileOpen $4 $3 w + IfErrors done + FileOpen $5 $1 r + IfErrors done + +nextline: + FileRead $5 $6 + IfErrors renameFile + push $6 + push $0 + push $2 + call ReplaceLine + pop $6 + FileWrite $4 $6 + goto nextline + +renameFile: + FileClose $4 + FileClose $5 + SetDetailsPrint none + Delete $1 + Rename $3 $1 + SetDetailsPrint both + + done: + pop $6 + pop $5 + pop $4 + pop $3 + pop $0 + pop $1 + pop $2 +FunctionEnd + +# +# replaces a string that starts with something, with another string +# push string +# push "#define ..." #START WITH +# push "c:\qt" #REPLACE WITH +# call ReplaceLine +# pop $0 #new string +# +Function ReplaceLine + exch $2 ;new line + exch 2 + exch $1 ;string + exch + exch $0 ;start with + + push $3 ; tmp string + push $4 ; counter + push $5 ; strlen + + StrCpy $4 "-1" + StrLen $5 $1 + + loop: + IntOp $4 $4 + 1 ;increase counter + StrCpy $3 $1 $4 ;get substring + IntCmp $4 $5 copystring ; check for end + StrCmp $3 $0 done ;start with found + goto loop + + copystring: + StrCpy $2 $1 + goto done + + done: + pop $5 + pop $4 + pop $3 + pop $0 + pop $1 + exch $2 +FunctionEnd + +# +# patch paths in text files +# push "qtcore4.prl" #Filename +# push "c:\compile" #OLD_QTDIR +# push "c:\qt" #QTDIR +# call PatchPath +# +Function PatchPath + exch $2 ;NEW + exch 2 + exch $1 ;Filename + exch + exch $0 ;OLD + push $3 ;readline + push $4 ;file 1 + push $5 ;file 2 + push $6 ;tmpfilename + + push $7 ;forward slash NEW + push $8 ;forward slash OLD + + push $2 + push "\" + push "/" + call ReplaceString + pop $7 + + push $0 + push "\" + push "/" + call ReplaceString + pop $8 + + ClearErrors + GetTempFileName $6 + IfErrors done + FileOpen $5 $6 w + IfErrors done + FileOpen $4 $1 r + IfErrors done + +nextline: + FileRead $4 $3 + IfErrors renameFile + push $3 + push $0 + push $2 + call ReplaceString ;replace backward slash path + push $8 + push $7 + call ReplaceString ;replace forward slash path + pop $3 + FileWrite $5 $3 + goto nextline + +renameFile: + FileClose $5 + FileClose $4 + SetDetailsPrint none + Delete $1 + Rename $6 $1 + SetDetailsPrint both + +done: + pop $8 + pop $7 + pop $6 + pop $5 + pop $4 + pop $3 + pop $0 + pop $1 + pop $2 +FunctionEnd + +# +# replaces a string with another string +# push string +# push "c:\qt" #replace +# push "c:\compile" #with +# call ReplaceString +# pop $0 #new string +# +!macro ReplaceString UN +Function ${UN}ReplaceString + exch $2 ;NEW + exch 2 + exch $1 ;string + exch + exch $0 ;OLD + + push $3 ; tmp string + push $4 ; counter + push $5 ; result + + push $6 ; old strlen + + StrCpy $4 "-1" + StrCpy $5 "" + + StrLen $6 $0 + + loop: + IntOp $4 $4 + 1 ;increase counter + StrCpy $3 $1 $6 $4 ;get substring + StrCmp $3 "" done ; check for end + StrCmp $3 $0 replace ;replace if old + StrCpy $3 $1 "1" $4 + StrCpy $5 $5$3 ;append character to result + goto loop + + replace: + StrCpy $5 $5$2 ;insert new qtdir + IntOp $4 $4 + $6 ;increase offset + IntOp $4 $4 - 1 ;decrease offset one more + goto loop + + done: + StrCpy $2 $5 + pop $6 + pop $5 + pop $4 + pop $3 + pop $0 + pop $1 + exch $2 +FunctionEnd +!macroend +!insertmacro ReplaceString "" +!insertmacro ReplaceString "un." + +Function CommonCheckDirectory + exch $4 + exch + exch $5 + push $0 + push $1 + push $2 + push $3 + + ; check if qt is already installed + IfFileExists "$4\bin\qmake.exe" 0 +2 + IfFileExists "$4\uninst.exe" qtExistsError + + ; check if directory is empty + FindFirst $0 $1 "$4\*" + CommonCheckDirectory_FileSearchLoop: + StrCmp $1 "" CommonCheckDirectory_DirDoesNotExist + StrCmp $1 "." CommonCheckDirectory_ContinueSearchLoop + StrCmp $1 ".." CommonCheckDirectory_ContinueSearchLoop + goto CommonCheckDirectory_FoundFile + CommonCheckDirectory_ContinueSearchLoop: + FindNext $0 $1 + goto CommonCheckDirectory_FileSearchLoop + +CommonCheckDirectory_FoundFile: + FindClose $0 + MessageBox MB_YESNO|MB_ICONEXCLAMATION "This directory already has contents. Are you sure you want to use this directory?" IDYES CommonCheckDirectory_DirDoesNotExist + Goto errorInDirectory +CommonCheckDirectory_DirDoesNotExist: + FindClose $0 + + GetInstDirError $0 + IntCmp 0 $0 0 instDirError + + StrLen $0 $4 + +!ifdef USE_NODIRLENGTHCHECK + StrCpy $1 "400" +!else + StrLen $1 $5 +!endif + + IntCmp $1 $0 0 directoryToLong + + ;check for spaces + StrCpy $2 "-1" + StrCpy $3 "" + + loop: + IntOp $2 $2 + 1 ;increase counter + StrCpy $3 $4 "1" $2 ;get char + StrCmp $3 "" directoryOk ; check for end + StrCmp $3 " " spaceInDirectory ;check for space + goto loop + +qtExistsError: + MessageBox MB_OK|MB_ICONEXCLAMATION "Qt is already installed in this directory. Please uninstall the previous version and try again." + Goto errorInDirectory + +instDirError: + MessageBox MB_OK|MB_ICONEXCLAMATION "This is not a valid installation directory." + Goto errorInDirectory + +spaceInDirectory: + MessageBox MB_OK|MB_ICONEXCLAMATION "The installation path can't contain spaces." + Goto errorInDirectory + +directoryToLong: + MessageBox MB_OK|MB_ICONEXCLAMATION "The installation directory is to long." + Goto errorInDirectory + +errorInDirectory: + pop $3 + pop $2 + pop $1 + pop $0 + pop $5 + pop $4 + Abort + goto done + +directoryOk: + pop $3 + pop $2 + pop $1 + pop $0 + pop $5 + pop $4 +done: +FunctionEnd + +!endif ;QTCOMMON_INCLUDE
\ No newline at end of file diff --git a/tools/installer/nsis/includes/qtenv.nsh b/tools/installer/nsis/includes/qtenv.nsh new file mode 100644 index 0000000..9232093 --- /dev/null +++ b/tools/installer/nsis/includes/qtenv.nsh @@ -0,0 +1,306 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifndef QTENV_INCLUDE +!define QTENV_INCLUDE +# +# creates a qtvars.bat file in $QTDIR\bin +# push "vs2003" #compiler +# push "c:\qt" #QTDIR +# call MakeQtVarsFile +# +Function MakeQtVarsFile + exch $1 ; QTDIR + exch + exch $3 ; vs version + push $0 ; file handle + push $2 + push $4 + + push $3 + call GetMkSpec + pop $2 + + ClearErrors + FileOpen $0 "$1\bin\qtvars.bat" w + IfErrors done + 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 Qt environment...$\r$\n" + FileWrite $0 "echo -- QTDIR set to $1$\r$\n" + FileWrite $0 "echo -- Added $1\bin to PATH$\r$\n" + FileWrite $0 "echo -- QMAKESPEC set to $2$\r$\n" + FileWrite $0 "$\r$\n" + FileWrite $0 "set QTDIR=$1$\r$\n" + FileWrite $0 "set PATH=$1\bin;%PATH%$\r$\n" + FileWrite $0 "set QMAKESPEC=$2$\r$\n" + + call IsExpressVersion + pop $4 + strcmp $4 "" noExpressVersion + FileWrite $0 "$\r$\n" + FileWrite $0 'regedit /e S$$D$$K$$ "HKEY_LOCAL_MACHINE\Software\Microsoft\MicrosoftSDK"$\r$\n' + Filewrite $0 'if not exist S$$D$$K$$ goto ENDSDK\r$\n' + FileWrite $0 'find "Install Dir" < S$$D$$K$$ > D$$I$$R$$$\r$\n' + FileWrite $0 'del S$$D$$K$$$\r$\n' + FileWrite $0 'for /f "tokens=2 delims==" %%i in (D$$I$$R$$) do call %%i\setenv$\r$\n' + FileWrite $0 'del D$$I$$R$$$\r$\n' + Filewrite $0 ':ENDSDK\r$\n' + noExpressVersion: + + push $3 + call GetVSVarsFile + pop $2 + strcmp $2 "" novsvars + FileWrite $0 "$\r$\n" + FileWrite $0 'if not "%1"=="vsvars" goto END$\r$\n' + FileWrite $0 'call "$2"$\r$\n' + FileWrite $0 ":END$\r$\n" + + FileWrite $0 "$\r$\n" + FileWrite $0 'if not "%1"=="vsstart" goto ENDSTARTVS$\r$\n' + FileWrite $0 'call "$2"$\r$\n' + + strcmp $3 "vc60" vc60startup + FileWrite $0 "devenv /useenv$\r$\n" + Goto donevsstartup + vc60startup: + FileWrite $0 "msdev /useenv$\r$\n" + donevsstartup: + + FileWrite $0 ":ENDSTARTVS$\r$\n" + + novsvars: + FileWrite $0 "$\r$\n" + FileClose $0 + done: + pop $4 + pop $2 + pop $0 + pop $3 + pop $1 +FunctionEnd + +Function GetMkSpec + exch $0 + StrCmp $0 "mingw" MINGW + StrCmp $0 "vs2005" VS2005 + StrCmp $0 "vs2003" VS2003 + StrCmp $0 "vs2002" VS2002 + StrCmp $0 "vc60" VS60 + StrCmp $0 "icc" ICC + + MINGW: + pop $0 + push "win32-g++" + goto done + + VS2005: + pop $0 + push "win32-msvc2005" + goto done + + VS2003: + pop $0 + push "win32-msvc.net" + goto done + + VS2002: + pop $0 + push "win32-msvc.net" + goto done + + VS60: + pop $0 + push "win32-msvc" + goto done + + ICC: + pop $0 + push "win32-icc" + goto done + + done: +FunctionEnd + +!define AD_COMPILER_NAME_VS2005 "Visual Studio .NET 2005" +!define AD_COMPILER_NAME_VS2005_EXPRESS "Visual C++ 2005 Express Edition" +!define AD_COMPILER_NAME_VS2003 "Visual Studio .NET 2003" +!define AD_COMPILER_NAME_VS2002 "Visual Studio .NET 2002" +!define AD_COMPILER_NAME_VC60 "Visual Studio 6.0" +!define AD_COMPILER_NAME_ICC "Intel C++ Compiler" +!define AD_COMPILER_NAME_MINGW "MinGW (Must be in PATH!)" + +Function GetShortCompilerName + exch $0 + + strcmp "$0" "${AD_COMPILER_NAME_VS2005}" 0 +3 + strcpy $0 "vs2005" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_VS2005_EXPRESS}" 0 +3 + strcpy $0 "vs2005" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_VS2003}" 0 +3 + strcpy $0 "vs2003" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_VS2002}" 0 +3 + strcpy $0 "vs2002" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_VC60}" 0 +3 + strcpy $0 "vc60" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_ICC}" 0 +3 + strcpy $0 "icc" + goto done + + strcmp "$0" "${AD_COMPILER_NAME_MINGW}" 0 +3 + strcpy $0 "mingw" + goto done + + strcpy $0 "" ;this is bad! + + done: + exch $0 +FunctionEnd + +Function IsExpressVersion + push $0 + ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir" + ClearErrors + exch $0 +FunctionEnd + +Function AutoDetectCompilers + push $0 + push $1 + + strcpy $1 "" + + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0" "InstallDir" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_VS2005}|" + + ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0" "InstallDir" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_VS2005_EXPRESS}|" + + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1" "InstallDir" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_VS2003}|" + + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0" "InstallDir" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_VS2002}|" + + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup" "VsCommonDir" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_VC60}|" + + ReadRegStr $0 HKLM "Software\Intel\Compilers\C++\80" "Major Version" + strcmp $0 "" +2 + strcpy $1 "$1${AD_COMPILER_NAME_ICC}|" + + strcpy $1 "$1${AD_COMPILER_NAME_MINGW}" + + exch + pop $0 + exch $1 +FunctionEnd + +Function GetVSVarsFile + exch $1 + push $0 + + StrCmp $1 "vs2005" VS2005 + StrCmp $1 "vs2003" VS2003 + StrCmp $1 "vs2002" VS2002 + StrCmp $1 "vc60" VS60 + + push "" ;empty string if not found + goto done + + VS2005: + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\8.0\Setup\VS" "ProductDir" + StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005 + + ReadRegStr $0 HKLM "Software\Microsoft\VCExpress\8.0\Setup\VS" "ProductDir" + StrCmp $0 "" +1 foundVSDir ; found msvc.net 2005 epress + + VS2003: + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.1\Setup\VS" "ProductDir" + StrCmp $0 "" +1 foundVSDir ; found msvc.net 2003 + + VS2002: + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\7.0\Setup\VS" "ProductDir" + StrCmp $0 "" +1 foundVSDir ; found msvc.net 2002 + + VS60: + ReadRegStr $0 HKLM "Software\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++" "ProductDir" + StrCmp $0 "" +1 foundVCDir ; found msvc 6.0 + + push "" ;empty string if not found + goto done + + foundVSDir: + push "$0\Common7\Tools\vsvars32.bat" + goto done + + foundVCDir: + push "$0\bin\vcvars32.bat" + + done: + exch + pop $0 + exch + pop $1 +FunctionEnd + +!endif ;QTENV_INCLUDE diff --git a/tools/installer/nsis/includes/system.nsh b/tools/installer/nsis/includes/system.nsh new file mode 100644 index 0000000..f7cbec4 --- /dev/null +++ b/tools/installer/nsis/includes/system.nsh @@ -0,0 +1,272 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifndef SYSTEM_INCLUDE +!define SYSTEM_INCLUDE + +!define QTVSIP2003_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD68}" +!define QTVSIP2005_GUID "{789202F4-94F5-4f0a-AA00-73295FEBFD69}" + +!define QMSNET2002_GUID "{C174ACCD-D856-4B60-9887-0FF9E841E0EC}" +!define QMSNET2003_GUID "{C174ACCE-D857-4B61-9888-0FF9E841E0ED}" +!define QMSNET2005_GUID "{14E98DB4-A232-49a4-8EC1-8CE4F6985C73}" + +!macro GetVSInstallationDir UN +; Usage: +; +; push "7.0" +; call GetVSInstallationDir +; pop $0 +; +; If the requested VS version can be found, its +; installation directory is returned. +Function ${UN}GetVSInstallationDir + Exch $0 + Push $1 + ReadRegStr $1 HKLM "Software\Microsoft\VisualStudio\$0" "InstallDir" + StrCpy $0 $1 + StrCmp $0 "" 0 +2 + SetErrors + Pop $1 + Exch $0 +FunctionEnd +!macroend + +!insertmacro GetVSInstallationDir "" +!insertmacro GetVSInstallationDir "un." + + +!macro IsDotNETInstalled UN +; Usage: +; +; push "8.0" +; call IsDotNETInstalled +; pop $0 +; +; $0 contains the path where the .NET framework is installed. +; If not installation can be found $0 is empty. +Function ${UN}IsDotNETInstalled + Exch $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + + StrCpy $5 $0 + + ReadRegStr $4 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework" "InstallRoot" + Push $4 + Exch $EXEDIR + Exch $EXEDIR + Pop $4 + + IfFileExists $4 0 noDotNET + StrCpy $0 0 + + EnumStart: + EnumRegKey $2 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy" $0 + IntOp $0 $0 + 1 + StrCmp $2 "" noDotNET + StrCpy $1 0 + + EnumPolicy: + EnumRegValue $3 HKEY_LOCAL_MACHINE "Software\Microsoft\.NETFramework\Policy\$2" $1 + IntOp $1 $1 + 1 + StrCmp $3 "" EnumStart + + StrCmp $5 "8.0" 0 +2 + StrCmp $2 "v2.0" 0 EnumPolicy + + IfFileExists "$4\$2.$3" foundDotNET EnumPolicy + + noDotNET: + StrCpy $0 0 + Goto done + + foundDotNET: + StrCpy $0 "$4\$2.$3" + + done: + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Exch $0 +FunctionEnd +!macroend + +!insertmacro IsDotNETInstalled "" +!insertmacro IsDotNETInstalled "un." + +!macro IsQMsNetInstalled UN +; Usage: +; +; push "8.0" +; call IsQMsNetInstalled +; pop $0 +Function ${UN}IsQMsNetInstalled + Exch $0 + Push $1 + Push $2 + Push $3 + + StrCmp $0 "7.0" 0 +2 + StrCpy $2 "${QMSNET2002_GUID}" + StrCmp $0 "7.1" 0 +2 + StrCpy $2 "${QMSNET2003_GUID}" + StrCmp $0 "8.0" 0 +2 + StrCpy $2 "${QMSNET2005_GUID}" + + StrCpy $3 0 + + ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir" + StrCmp $1 "" +3 + StrCpy $3 1 + goto done + + ReadRegStr $1 HKCU "SOFTWARE\Microsoft\VisualStudio\$0\NewProjectTemplates\TemplateDirs\$2\/2" "TemplatesDir" + StrCmp $1 "" +2 + StrCpy $3 1 + +done: + StrCpy $0 $3 + + Pop $3 + Pop $2 + Pop $1 + Exch $0 +FunctionEnd +!macroend + +!insertmacro IsQMsNetInstalled "" +!insertmacro IsQMsNetInstalled "un." + +!macro IsQMsDevInstalled UN +; Usage: +; +; call IsQMsDevInstalled +; pop $0 +Function ${UN}IsQMsDevInstalled + Push $0 + Push $1 + Push $2 + + StrCpy $0 0 + + ReadRegStr $1 HKLM "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename" + StrCmp $1 "" +3 + StrCpy $0 1 + goto done + + ReadRegStr $1 HKCU "SOFTWARE\Microsoft\DevStudio\6.0\AddIns\q4msdev.Q4MsDev.1" "Filename" + StrCmp $1 "" +2 + StrCpy $0 1 + +done: + Pop $2 + Pop $1 + Exch $0 +FunctionEnd +!macroend + +!insertmacro IsQMsDevInstalled "" +!insertmacro IsQMsDevInstalled "un." + +!macro IsIntegrationInstalled UN +; Usage: +; +; push "8.0" +; call IsIntegrationInstalled +; pop $0 +Function ${UN}IsIntegrationInstalled + Exch $0 + Push $1 + Push $2 + + StrCmp $0 "7.1" 0 +2 + StrCpy $2 "${QTVSIP2003_GUID}" + StrCmp $0 "8.0" 0 +2 + StrCpy $2 "${QTVSIP2005_GUID}" + + ReadRegStr $1 HKLM "SOFTWARE\Microsoft\VisualStudio\$0\Packages\$2" "ProductName" + + StrCpy $0 0 + StrCmp $1 "" done + StrCpy $0 1 + +done: + Pop $2 + Pop $1 + Exch $0 +FunctionEnd +!macroend + +!insertmacro IsIntegrationInstalled "" +!insertmacro IsIntegrationInstalled "un." + +!macro AdministratorRights UN +Function ${UN}HasAdminRights + push $0 + ClearErrors + UserInfo::GetAccountType + IfErrors Yes ;It's probably Win95 + pop $0 + StrCmp $0 "Admin" Yes + StrCmp $0 "Power" Yes + + StrCpy $0 "false" + goto Done + + Yes: + StrCpy $0 "true" + + Done: + exch $0 +FunctionEnd +!macroend +!insertmacro AdministratorRights "" +!insertmacro AdministratorRights "un." + +!endif ;SYSTEM_INCLUDE
\ No newline at end of file diff --git a/tools/installer/nsis/installer.nsi b/tools/installer/nsis/installer.nsi new file mode 100644 index 0000000..c077850 --- /dev/null +++ b/tools/installer/nsis/installer.nsi @@ -0,0 +1,527 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Script generated by the HM NIS Edit Script Wizard. + +!include "config.nsh" +!include "includes\global.nsh" + +!define PRODUCT_PUBLISHER "Nokia Corporation and/or its subsidiary(-ies)" +!define PRODUCT_WEB_SITE "http://qtsoftware.com" + +!define INSTALL_ICON "images\install.ico" +!define WELCOME_PAGE_ICON "images\qt-wizard.bmp" +!define PAGE_HEADER_ICON "images\qt-header.bmp" + +!include "MUI.nsh" + +; modules +!include "modules\mingw.nsh" +!include "modules\opensource.nsh" +!include "includes\instdir.nsh" +!include "modules\environment.nsh" +!include "modules\registeruiext.nsh" +!ifndef OPENSOURCE_BUILD +!include "modules\msvc.nsh" +!include "modules\addin7x.nsh" +!include "modules\qsa.nsh" +!include "modules\addin60.nsh" +!include "modules\debugext.nsh" +!include "modules\license.nsh" +!include "modules\vsip.nsh" +!include "modules\help.nsh" +!include "modules\evaluation.nsh" +!include "modules\eclipse.nsh" +!include "modules\qtjambieclipse.nsh" +!endif + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${INSTALL_ICON}" +!define MUI_UNICON "${INSTALL_ICON}" + +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "${PAGE_HEADER_ICON}" +!define MUI_HEADERIMAGE_UNBITMAP "${PAGE_HEADER_ICON}" + +!define MUI_WELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${WELCOME_PAGE_ICON}" + +!ifdef WELCOME_NOTE + !define MUI_WELCOMEPAGE_TEXT "${WELCOME_NOTE}" +!endif +!insertmacro MUI_PAGE_WELCOME +!insertmacro OPENSOURCE_INITIALIZE +!ifndef OPENSOURCE_BUILD +!insertmacro EVALUATION_INITIALIZE +!insertmacro LICENSECHECK_INITIALIZE +!insertmacro MSVC_INITIALIZE +!insertmacro ADDIN7X_INITIALIZE +!insertmacro ADDIN60_INITIALIZE +!insertmacro DEBUGEXT_INITIALIZE +!insertmacro HELP_INITIALIZE +!insertmacro VSIP_INITIALIZE +!endif + +!ifdef USE_COMPONENT_PAGE + !insertmacro MUI_PAGE_COMPONENTS +!endif + +!ifdef USE_DIRECTORY_PAGE + !insertmacro INSTDIR_INITIALIZE +!endif + +!ifdef USE_STARTMENU_PAGE + !define MUI_STARTMENUPAGE_NODISABLE + !define MUI_STARTMENUPAGE_DEFAULTFOLDER "${DEFAULT_STARTMENU_STRING}" + !insertmacro MUI_PAGE_STARTMENU 1 $STARTMENU_STRING +!endif + +!insertmacro MINGW_INITIALIZE +!insertmacro ENVIRONMENT_INITIALIZE +!insertmacro REGISTERUIEXT_INITIALIZE +!ifndef OPENSOURCE_BUILD +!insertmacro QSA_INITIALIZE +!insertmacro ECLIPSE_INITIALIZE +!insertmacro QTJAMBIECLIPSE_INITIALIZE +!endif + +!define MUI_FINISHPAGE_NOAUTOCLOSE + +!insertmacro MUI_PAGE_INSTFILES +!ifdef README_FILE + !define MUI_FINISHPAGE_SHOWREADME ${README_FILE} +!else + !ifdef README_FUNCTION + !define MUI_FINISHPAGE_SHOWREADME + !define MUI_FINISHPAGE_SHOWREADME_TEXT "${README_FUNCTION}" + !define MUI_FINISHPAGE_SHOWREADME_FUNCTION "CommonReadmeFunction" + !endif +!endif +!ifdef RUN_FUNCTION + !define MUI_FINISHPAGE_RUN + !define MUI_FINISHPAGE_RUN_TEXT "${RUN_FUNCTION}" + !define MUI_FINISHPAGE_RUN_FUNCTION "CommonRunFunction" +!endif +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!define UNINSTALLER_CONFIRM_PAGE "confirmpage.ini" +UninstPage custom un.UninstallerConfirmPage +!insertmacro MUI_UNPAGE_INSTFILES + +!insertmacro MUI_UNPAGE_FINISH + +!insertmacro MUI_LANGUAGE "English" + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile ${OUTPUT_FILE} + +Section -PreCommonSection +!ifdef INSTDIR_0 ;the default one, must exist + strcpy $INSTDIR $${INSTDIR_0}_INSTDIR + ${StrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_" + strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR" "$${INSTDIR_0}_INSTDIR" +!endif +!ifdef INSTDIR_1 + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR" "$${INSTDIR_1}_INSTDIR" +!endif +!ifdef INSTDIR_2 + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR" "$${INSTDIR_2}_INSTDIR" +!endif +!ifdef INSTDIR_3 + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR" "$${INSTDIR_3}_INSTDIR" +!endif +!ifdef INSTDIR_4 + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR" "$${INSTDIR_4}_INSTDIR" +!endif +!ifdef INSTDIR_5 + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR" "$${INSTDIR_5}_INSTDIR" +!endif + + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu" "$STARTMENU_STRING" + CreateDirectory "$SMPROGRAMS\$STARTMENU_STRING" +SectionEnd + +!insertmacro OPENSOURCE_SECTIONS +!insertmacro MINGW_SECTIONS +!insertmacro ENVIRONMENT_SECTIONS +!insertmacro REGISTERUIEXT_SECTIONS +!ifndef OPENSOURCE_BUILD +!insertmacro MSVC_SECTIONS +!insertmacro ADDIN7X_SECTIONS +!insertmacro ADDIN60_SECTIONS +!insertmacro VSIP_SECTIONS +!insertmacro HELP_SECTIONS +!insertmacro DEBUGEXT_SECTIONS +!insertmacro LICENSECHECK_SECTIONS +!insertmacro QSA_SECTIONS +!insertmacro EVALUATION_SECTIONS +!insertmacro ECLIPSE_SECTIONS +!insertmacro QTJAMBIECLIPSE_SECTIONS +!endif + +!insertmacro INSTDIR_FUNCTIONS + +Section -CommonSection + WriteUninstaller "$INSTDIR\uninst.exe" + + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName" "$(^Name)" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "Publisher" "${PRODUCT_PUBLISHER}" + + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\QtSoftware.com.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\uninst.exe" + SetOutPath "$INSTDIR" +SectionEnd + +Function CheckLocalLicenseProduct +!ifdef MODULE_LICENSECHECK + !insertmacro QSA_CHECKLICENSEPRODUCT +!endif +FunctionEnd + +Function .onInit + StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}" + +!ifdef USE_UNINSTALL_PREVIOUS + push "${PRODUCT_NAME}" + call GetExistsPreviousInstallationOfProduct + exch $0 + StrCmp $0 true 0 +3 + MessageBox MB_OK|MB_ICONSTOP "A previous installation of ${PRODUCT_NAME} was detected.$\nPlease uninstall it before running this installer." + Abort + pop $0 +!endif + + call SetAdminVar + StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin +!ifdef USE_ADMIN_CHECK + MessageBox MB_OK|MB_ICONSTOP "You need to have administrator rights to install this software!" + Abort +!endif + SetShellVarContext current + goto common_admin_check_done + common_running_as_admin: + SetShellVarContext all + common_admin_check_done: + + !insertmacro INSTDIR_STARTUP + + !insertmacro OPENSOURCE_STARTUP + !insertmacro ENVIRONMENT_STARTUP + !insertmacro REGISTERUIEXT_STARTUP + !insertmacro MINGW_STARTUP +!ifndef OPENSOURCE_BUILD + !insertmacro LICENSECHECK_STARTUP + !insertmacro MSVC_STARTUP + !insertmacro EVALUATION_STARTUP + !insertmacro ADDIN7X_STARTUP + !insertmacro ADDIN60_STARTUP + !insertmacro DEBUGEXT_STARTUP + !insertmacro VSIP_STARTUP + !insertmacro HELP_STARTUP + !insertmacro QSA_STARTUP + !insertmacro ECLIPSE_STARTUP + !insertmacro QTJAMBIECLIPSE_STARTUP +!endif +FunctionEnd + +Function .onInstSuccess + !insertmacro ENVIRONMENT_FINISH + !insertmacro REGISTERUIEXT_FINISH + !insertmacro OPENSOURCE_FINISH + !insertmacro MINGW_FINISH +!ifndef OPENSOURCE_BUILD + !insertmacro LICENSECHECK_FINISH + !insertmacro MSVC_FINISH + !insertmacro EVALUATION_FINISH + !insertmacro ADDIN7X_FINISH + !insertmacro ADDIN60_FINISH + !insertmacro DEBUGEXT_FINISH + !insertmacro VSIP_FINISH + !insertmacro HELP_FINISH + !insertmacro QSA_FINISH + !insertmacro ECLIPSE_FINISH + !insertmacro QTJAMBIECLIPSE_FINISH +!endif +FunctionEnd + +Function un.onUninstSuccess + !insertmacro ENVIRONMENT_UNFINISH + !insertmacro REGISTERUIEXT_UNFINISH + !insertmacro OPENSOURCE_UNFINISH + !insertmacro MINGW_UNFINISH +!ifndef OPENSOURCE_BUILD + !insertmacro LICENSECHECK_UNFINISH + !insertmacro MSVC_UNFINISH + !insertmacro EVALUATION_UNFINISH + !insertmacro ADDIN7X_UNFINISH + !insertmacro ADDIN60_UNFINISH + !insertmacro DEBUGEXT_UNFINISH + !insertmacro VSIP_UNFINISH + !insertmacro HELP_UNFINISH + !insertmacro QSA_UNFINISH + !insertmacro ECLIPSE_UNFINISH + !insertmacro QTJAMBIECLIPSE_UNFINISH +!endif +FunctionEnd + +Function un.onInit + call un.SetAdminVar + StrCmp "$RUNNING_AS_ADMIN" "false" 0 common_running_as_admin +!ifdef USE_ADMIN_CHECK + MessageBox MB_OK|MB_ICONSTOP "You do not have the required access rights to uninstall this package." + Abort +!endif + SetShellVarContext current + goto common_admin_check_done + common_running_as_admin: + SetShellVarContext all + common_admin_check_done: + + ${UnStrRep} $PRODUCT_UNIQUE_KEY "${PRODUCT_NAME} ${PRODUCT_VERSION} - $INSTDIR" "\" "_" + strcpy $PRODUCT_UNIQUE_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\$PRODUCT_UNIQUE_KEY" + + push $0 + ClearErrors + ReadRegStr $0 SHCTX "$PRODUCT_UNIQUE_KEY" "DisplayName" + IfErrors 0 +3 + MessageBox MB_OK|MB_ICONSTOP "The uninstaller was unable to find the product to uninstall." + Abort + pop $0 + + ReadRegStr $STARTMENU_STRING SHCTX "$PRODUCT_UNIQUE_KEY" "StartMenu" + StrCmp "$STARTMENU_STRING" "" 0 +2 + StrCpy $STARTMENU_STRING "${DEFAULT_STARTMENU_STRING}" + +!ifdef INSTDIR_0 ;the default one, must exist + ReadRegStr $${INSTDIR_0}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_0}_INSTDIR" +!endif +!ifdef INSTDIR_1 + ReadRegStr $${INSTDIR_1}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_1}_INSTDIR" +!endif +!ifdef INSTDIR_2 + ReadRegStr $${INSTDIR_2}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_2}_INSTDIR" +!endif +!ifdef INSTDIR_3 + ReadRegStr $${INSTDIR_3}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_3}_INSTDIR" +!endif +!ifdef INSTDIR_4 + ReadRegStr $${INSTDIR_4}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_4}_INSTDIR" +!endif +!ifdef INSTDIR_5 + ReadRegStr $${INSTDIR_5}_INSTDIR SHCTX "$PRODUCT_UNIQUE_KEY" "${INSTDIR_5}_INSTDIR" +!endif + + !insertmacro ENVIRONMENT_UNSTARTUP + !insertmacro REGISTERUIEXT_UNSTARTUP + !insertmacro OPENSOURCE_UNSTARTUP + !insertmacro MINGW_UNSTARTUP +!ifndef OPENSOURCE_BUILD + !insertmacro LICENSECHECK_UNSTARTUP + !insertmacro MSVC_UNSTARTUP + !insertmacro EVALUATION_UNSTARTUP + !insertmacro ADDIN7X_UNSTARTUP + !insertmacro ADDIN60_UNSTARTUP + !insertmacro DEBUGEXT_UNSTARTUP + !insertmacro VSIP_UNSTARTUP + !insertmacro HELP_UNSTARTUP + !insertmacro QSA_UNSTARTUP + !insertmacro ECLIPSE_UNSTARTUP + !insertmacro QTJAMBIECLIPSE_UNSTARTUP +!endif + + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${UNINSTALLER_CONFIRM_PAGE}" +FunctionEnd + +!insertmacro OPENSOURCE_UNINSTALL +!insertmacro ENVIRONMENT_UNINSTALL +!insertmacro REGISTERUIEXT_UNINSTALL +!insertmacro MINGW_UNINSTALL +!ifndef OPENSOURCE_BUILD +!insertmacro HELP_UNINSTALL +!insertmacro DEBUGEXT_UNINSTALL +!insertmacro MSVC_UNINSTALL +!insertmacro EVALUATION_UNINSTALL +!insertmacro QSA_UNINSTALL +!insertmacro ECLIPSE_UNINSTALL +!insertmacro QTJAMBIECLIPSE_UNINSTALL +!endif + +Section Uninstall + !ifndef OPENSOURCE_BUILD + !insertmacro LICENSECHECK_UNINSTALL + !insertmacro ADDIN7X_UNINSTALL + !insertmacro ADDIN60_UNINSTALL + !insertmacro VSIP_UNINSTALL + !endif + + ; COMMON + Delete "$INSTDIR\${PRODUCT_NAME}.url" + Delete "$INSTDIR\uninst.exe" + Delete "$SMPROGRAMS\$STARTMENU_STRING\Uninstall ${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" + Delete "$SMPROGRAMS\$STARTMENU_STRING\QtSoftware.com.lnk" + + RMDir "$SMPROGRAMS\$STARTMENU_STRING" + RMDir "$INSTDIR" + + DeleteRegKey SHCTX "$PRODUCT_UNIQUE_KEY" +SectionEnd + +Function CommonRunFunction + !ifndef OPENSOURCE_BUILD + !insertmacro MSVC_RUN_FUNCTION + !insertmacro QSA_RUN_FUNCTION + !endif + !insertmacro MINGW_RUN_FUNCTION + DoneRunFunction: +FunctionEnd + +Function CommonReadmeFunction + !ifndef OPENSOURCE_BUILD + !insertmacro MSVC_README_FUNCTION + !endif + !insertmacro MINGW_README_FUNCTION + DoneReadmeFunction: +FunctionEnd + +Function un.UninstallerConfirmPage + !insertmacro MUI_HEADER_TEXT "Confirm" "Confirm Uninstallation Directories" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${UNINSTALLER_CONFIRM_PAGE}" "Field 2" "Text" "$UninstallerConfirmProduct" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${UNINSTALLER_CONFIRM_PAGE}" +FunctionEnd + +;pops product name from stack and as result pushes TRUE or FALSE on stack +Function GetExistsPreviousInstallationOfProduct + exch $0 + push $1 + push $2 + push $3 + + StrCpy $1 0 + loop: + EnumRegKey $2 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall $1 + StrCmp $2 "" no_reg_key_found + ${StrStr} $3 $2 $0 + StrCmp $3 $2 reg_key_found + IntOp $1 $1 + 1 + goto loop + + reg_key_found: + push true + goto done + + no_reg_key_found: + push false + + done: + exch + pop $3 + exch + pop $2 + exch + pop $1 + exch + pop $0 +FunctionEnd + +;pops product name from stack +Function WarnIfInstalledProductDetected + exch $0 + push $0 + call GetExistsPreviousInstallationOfProduct + exch $1 + StrCmp $1 true +1 +3 + MessageBox MB_YESNO|MB_ICONQUESTION "An existing installation of $0 was detected.$\nIt is recommended to deinstall $0 before continuing.$\nDo you want to continue this installation nevertheless?" IDYES +2 IDNO +1 + Abort + pop $1 + pop $0 +FunctionEnd + +;sets $RUNNING_AS_ADMIN to "true" if Admin or Power user +!macro SetAdminVar UN +Function ${UN}SetAdminVar + push $0 + ClearErrors + UserInfo::GetAccountType + IfErrors Admin ;It's probably Win95 + pop $0 + StrCmp $0 "Admin" Admin + StrCmp $0 "Power" Admin + + StrCpy $RUNNING_AS_ADMIN "false" + goto Done + + Admin: + StrCpy $RUNNING_AS_ADMIN "true" + + Done: + pop $0 +FunctionEnd +!macroend +!insertmacro SetAdminVar "" +!insertmacro SetAdminVar "un." + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro OPENSOURCE_DESCRIPTION + !insertmacro ENVIRONMENT_DESCRIPTION + !insertmacro REGISTERUIEXT_DESCRIPTION + !insertmacro MINGW_DESCRIPTION + !ifndef OPENSOURCE_BUILD + !insertmacro MSVC_DESCRIPTION + !insertmacro EVALUATION_DESCRIPTION + !insertmacro ADDIN7X_DESCRIPTION + !insertmacro ADDIN60_DESCRIPTION + !insertmacro DEBUGEXT_DESCRIPTION + !insertmacro HELP_DESCRIPTION + !insertmacro VSIP_DESCRIPTION + !insertmacro QSA_DESCRIPTION + !insertmacro ECLIPSE_DESCRIPTION + !insertmacro QTJAMBIECLIPSE_DESCRIPTION + !endif +!insertmacro MUI_FUNCTION_DESCRIPTION_END diff --git a/tools/installer/nsis/modules/environment.nsh b/tools/installer/nsis/modules/environment.nsh new file mode 100644 index 0000000..0f6013b --- /dev/null +++ b/tools/installer/nsis/modules/environment.nsh @@ -0,0 +1,219 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifdef MODULE_ENVIRONMENT +!macro ENVIRONMENT_INITIALIZE + !include "includes\writeEnvStr.nsh" + !include "includes\writePathStr.nsh" + + !ifndef MODULE_ENVIRONMENT_QTDIR + !ifdef MODULE_MINGW + !define MODULE_ENVIRONMENT_QTDIR $MINGW_INSTDIR + !endif + + !ifdef MODULE_MSVC + !define MODULE_ENVIRONMENT_QTDIR $MSVC_INSTDIR + !endif + !endif + + !define MODULE_ENVIRONMENT_PAGE "envpage.ini" + var MODULE_ENVIRONMENT_SET + var MODULE_ENVIRONMENT_OLD + LangString ModuleEnvironmentTitle ${LANG_ENGLISH} "Configure Environment" + LangString ModuleEnvironmentDescription ${LANG_ENGLISH} "Configure Qt environment variables" + + Page custom ModuleEnvironmentPageEnter ModuleEnvironmentPageExit +!macroend +!macro ENVIRONMENT_SECTIONS + Section -ModuleEnvironmentRegister + push "${MODULE_ENVIRONMENT_QTDIR}" + call RegisterQtEnvVariables + SectionEnd + + Function ModuleEnvironmentPageEnter + push $0 + Call IsNT + pop $0 + strcmp "$0" "1" +2 + abort + pop $0 + + !insertmacro MUI_HEADER_TEXT "$(ModuleEnvironmentTitle)" "$(ModuleEnvironmentDescription)" + + strcmp $MODULE_ENVIRONMENT_SET "1" 0 envCheckNo + !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "1" + goto showEnvPage + envCheckNo: + !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" "0" + + showEnvPage: + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_ENVIRONMENT_PAGE}" + FunctionEnd + + Function ModuleEnvironmentPageExit + !insertmacro MUI_INSTALLOPTIONS_READ $MODULE_ENVIRONMENT_SET "${MODULE_ENVIRONMENT_PAGE}" "Field 2" "State" + FunctionEnd + + Function RegisterQtEnvVariables + exch $2 ; the installation path = QTDIR + push $0 ; I think WriteEnvStr mixes up $0 and $1 + push $1 + + WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet" $MODULE_ENVIRONMENT_SET + + strcmp $MODULE_ENVIRONMENT_SET "1" 0 noenv + + StrCmp $MODULE_ENVIRONMENT_OLD "0" +4 + DetailPrint "Removing $MODULE_ENVIRONMENT_OLD\bin from PATH" + push "$MODULE_ENVIRONMENT_OLD\bin" + Call RemoveFromPath ; remove old qtdir + + DetailPrint "Setting QTDIR to $2" + push "QTDIR" + push $2 + Call WriteEnvStr ; set the QTDIR + + DetailPrint "Adding $2\bin to PATH" + push "$2\bin" + Call AddToPath ; set the PATH + + + push "QMAKESPEC" + push ${INSTALL_COMPILER} + Call GetMkSpec + pop $0 + DetailPrint "Setting QMAKESPEC to $0" + push $0 + Call WriteEnvStr ; set the QMAKESPEC + + noenv: + pop $1 + pop $0 + pop $2 + FunctionEnd + + Function un.RegisterQtEnvVariables + exch $0 ; QTDIR + push $1 + + ClearErrors + ReadRegDWORD $MODULE_ENVIRONMENT_SET SHCTX "$PRODUCT_UNIQUE_KEY" "QtEnvSet" + intcmp $MODULE_ENVIRONMENT_SET 0 noenv + + DetailPrint "Removing $0\bin from the PATH" + push "$0\bin" + Call un.RemoveFromPath ; removes qt from the path + + ;Check if QTDIR is equal to installdir + ExpandEnvStrings $1 "%QTDIR%" + + StrCmp "$0" "$1" removeenv + StrCmp "$0\" "$1" removeenv + StrCmp "$0" "$1\" removeenv + Goto noenv + + removeenv: + DetailPrint "Removing QTDIR" + push "QTDIR" + Call un.DeleteEnvStr ; removes QTDIR + + DetailPrint "Removing QMAKESPEC" + push "QMAKESPEC" + Call un.DeleteEnvStr ; removes QMAKESPEC + + noenv: + pop $1 + pop $0 + FunctionEnd +!macroend +!macro ENVIRONMENT_DESCRIPTION +!macroend +!macro ENVIRONMENT_STARTUP + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_ENVIRONMENT_PAGE}" + push $0 + ExpandEnvStrings $0 "%QTDIR%" + + StrCmp $0 "%QTDIR%" +4 + strcpy $MODULE_ENVIRONMENT_SET "0" ;QTDIR exists + strcpy $MODULE_ENVIRONMENT_OLD $0 + Goto +3 + strcpy $MODULE_ENVIRONMENT_SET "1" ;no QTDIR + strcpy $MODULE_ENVIRONMENT_OLD "0" + + Call IsNT + pop $0 + strcmp "$0" "1" +2 + strcpy $MODULE_ENVIRONMENT_SET "0" + pop $0 +!macroend +!macro ENVIRONMENT_FINISH +!macroend +!macro ENVIRONMENT_UNSTARTUP +!macroend +!macro ENVIRONMENT_UNINSTALL + Section -un.ModuleEnvironmentRegister + push "${MODULE_ENVIRONMENT_QTDIR}" + call un.RegisterQtEnvVariables + SectionEnd +!macroend +!macro ENVIRONMENT_UNFINISH +!macroend +!else ;MODULE_ENVIRONMENT +!macro ENVIRONMENT_INITIALIZE +!macroend +!macro ENVIRONMENT_SECTIONS +!macroend +!macro ENVIRONMENT_DESCRIPTION +!macroend +!macro ENVIRONMENT_STARTUP +!macroend +!macro ENVIRONMENT_FINISH +!macroend +!macro ENVIRONMENT_UNSTARTUP +!macroend +!macro ENVIRONMENT_UNINSTALL +!macroend +!macro ENVIRONMENT_UNFINISH +!macroend +!endif ;MODULE_ENVIRONMENT + diff --git a/tools/installer/nsis/modules/mingw.nsh b/tools/installer/nsis/modules/mingw.nsh new file mode 100644 index 0000000..8485178 --- /dev/null +++ b/tools/installer/nsis/modules/mingw.nsh @@ -0,0 +1,676 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifdef MODULE_MINGW +!macro MINGW_INITIALIZE +!include "includes\qtcommon.nsh" +!ifndef MODULE_MINGW_NAME + !define MODULE_MINGW_NAME "Qt" +!endif +!ifndef MODULE_MINGW_VERSION + !define MODULE_MINGW_VERSION "${PRODUCT_VERSION}" +!endif +!ifndef MODULE_MINGW_BUILDDIR + !error "MODULE_MINGW_BUILDDIR not defined!" +!endif +!ifndef MODULE_MINGW_ROOT + !error "MODULE_MINGW_ROOT not defined!" +!endif +!ifndef MODULE_MINGW_URL + !define MODULE_MINGW_URL "ftp://ftp.trolltech.com/misc" +!endif +!ifndef MODULE_MINGW_COMPILERVERSION + !define MODULE_MINGW_COMPILERVERSION "3.4.2" +!endif +!ifndef MODULE_MINGW_LICENSE + !define MODULE_MINGW_LICENSE "C:\MinGW\COPYING" +!endif + +!define MODULE_MINGW_DOWNLOADPAGE "gwdownload.ini" +!define MODULE_MINGW_MIRRORPAGE "gwmirror.ini" +!define MODULE_MINGW_RUNTIME_LIB "mingw*.dll" +!define MODULE_MINGW_DOWNLOADFILE "MinGW-${MODULE_MINGW_COMPILERVERSION}" + +var MODULE_MINGW_DOWNLOAD +var MODULE_MINGW_SOURCEDOWNLOAD +var MODULE_MINGW_MIRRORS +var MODULE_MINGW_INSTOK +var MODULE_MINGW_COMPILERINSTDIR + +LangString ModuleMinGWTitle ${LANG_ENGLISH} "MinGW Installation" +LangString ModuleMinGWDescription ${LANG_ENGLISH} "You need MinGW to be able to compile Qt applications." +LangString ModuleMinGWMirrorTitle ${LANG_ENGLISH} "MinGW Download Mirror" +LangString ModuleMinGWMirrorDescription ${LANG_ENGLISH} "Select a download mirror." + +Page custom ModuleMinGWDownloadPageEnter ModuleMinGWDownloadPageExit +!define MUI_PAGE_CUSTOMFUNCTION_PRE ModuleMinGWLicensePageEnter +!define MUI_PAGE_HEADER_TEXT "MinGW License Agreement" +!define MUI_PAGE_HEADER_SUBTEXT "Please review the license terms before installing MinGW." +!define MUI_LICENSEPAGE_TEXT_TOP "MinGW License Information" +!insertmacro MUI_PAGE_LICENSE "${MODULE_MINGW_LICENSE}" +Page custom ModuleMinGWMirrorPageEnter ModuleMinGWMirrorPageExit + +!include "includes\qtenv.nsh" +!macroend + +!macro MINGW_SECTIONS +Section "${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" MINGW_SEC01 + strcmp "$MINGW_INSTDIR" "" 0 +5 + StrCpy $MINGW_INSTDIR "$INSTDIR\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION}" + push $MINGW_INSTDIR + call MakeQtDirectory + pop $MINGW_INSTDIR + + WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MINGWInstalled" 1 + + SetOutPath "$MINGW_INSTDIR" + SetOverwrite ifnewer + !insertmacro MODULE_MINGW_INSTALLFILES + + push "$MINGW_INSTDIR" + call DeleteFloatingLicenseProgram + + push "$MINGW_INSTDIR\bin" + call AddStartmenuApplication + + push ${MODULE_MINGW_BUILDDIR} + push "$MINGW_INSTDIR" + call PatchPrlFiles + + IfFileExists "$MINGW_INSTDIR\.qmake.cache" 0 +5 + push "$MINGW_INSTDIR\.qmake.cache" + push ${MODULE_MINGW_BUILDDIR} + push $MINGW_INSTDIR + call PatchPath + + IfFileExists "$MINGW_INSTDIR\mkspecs\default\qmake.conf" 0 +5 + push "$MINGW_INSTDIR\mkspecs\default\qmake.conf" + push ${MODULE_MINGW_BUILDDIR} + push $MINGW_INSTDIR + call PatchPath + + push $MINGW_INSTDIR + call PatchCommonBinaryFiles + + push $MINGW_INSTDIR + call PatchLicenseInformation + + WriteRegStr SHCTX "SOFTWARE\Trolltech\Common\${MODULE_MINGW_VERSION}\$LICENSE_PRODUCT" "Key" "$LICENSE_KEY" + + push $MINGW_INSTDIR + call ModuleMinGWMakeEnvFile + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} Command Prompt.lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat"' + CreateShortCut "$SMPROGRAMS\$STARTMENU_STRING\${MODULE_MINGW_NAME} ${MODULE_MINGW_VERSION} (Build Debug Libraries).lnk" "%COMSPEC%" '/k "$MINGW_INSTDIR\bin\qtvars.bat compile_debug"' + + push $0 + strcmp $MODULE_MINGW_DOWNLOAD "no" DoneMinGWInstall + DetailPrint "Installing MinGW into $MODULE_MINGW_COMPILERINSTDIR" + WriteRegStr SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWInstDir" "$MODULE_MINGW_COMPILERINSTDIR" + nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR' + pop $0 + strcmp $MODULE_MINGW_SOURCEDOWNLOAD "no" DoneMinGWInstall + DetailPrint "Installing MinGW sources into $MODULE_MINGW_COMPILERINSTDIR\src" + WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "MinGWSources" 1 + nsExec::ExecToLog '"$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}-src.exe" /S /D=$MODULE_MINGW_COMPILERINSTDIR\src' + pop $0 + DoneMinGWInstall: + pop $0 + + DetailPrint "Copying MinGW runtime..." + SetDetailsPrint none + CopyFiles /SILENT "$MODULE_MINGW_COMPILERINSTDIR\bin\${MODULE_MINGW_RUNTIME_LIB}" "$MINGW_INSTDIR\bin" + SetDetailsPrint both +SectionEnd + +Function EnableButtons + Push $0 + GetDlgItem $0 $HWNDPARENT 3 + EnableWindow $0 1 + GetDlgItem $0 $HWNDPARENT 1 + EnableWindow $0 1 + GetDlgItem $0 $HWNDPARENT 2 + EnableWindow $0 1 + Pop $0 +FunctionEnd + +Function DisableButtons + Push $0 + GetDlgItem $0 $HWNDPARENT 3 + EnableWindow $0 0 + GetDlgItem $0 $HWNDPARENT 1 + EnableWindow $0 0 + GetDlgItem $0 $HWNDPARENT 2 + EnableWindow $0 0 + Pop $0 +FunctionEnd + +Function ModuleMinGWDownloadPageEnter + strcmp $MODULE_MINGW_INSTOK "yes" 0 +2 + Abort + + !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWTitle)" "$(ModuleMinGWTitleDescription)" + Call UpdateCtrlStates + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_DOWNLOADPAGE}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" "0" +FunctionEnd + +Function ModuleMinGWMirrorPageEnter + strcmp $MODULE_MINGW_DOWNLOAD "yes" +2 + Abort + + !insertmacro MUI_HEADER_TEXT "$(ModuleMinGWMirrorTitle)" "$(ModuleMinGWMirrorDescription)" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_MINGW_MIRRORPAGE}" +FunctionEnd + +Function ModuleMinGWLicensePageEnter + strcmp $MODULE_MINGW_DOWNLOAD "yes" +2 + Abort +FunctionEnd + +Function UpdateCtrlStates + push $0 + push $1 + push $2 + + !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" + intop $0 $0 ! + FindWindow $2 "#32770" "" $HWNDPARENT + GetDlgItem $1 $2 1205 + EnableWindow $1 $0 + GetDlgItem $1 $2 1202 + EnableWindow $1 $0 + GetDlgItem $1 $2 1203 + EnableWindow $1 $0 + + intop $0 $0 ! + GetDlgItem $1 $2 1206 + EnableWindow $1 $0 + GetDlgItem $1 $2 1207 + EnableWindow $1 $0 + GetDlgItem $1 $2 1208 + EnableWindow $1 $0 + + GetDlgItem $1 $HWNDPARENT 1 + IntCmp $0 0 +3 + SendMessage $1 ${WM_SETTEXT} 0 "STR:Next >" + Goto +2 + SendMessage $1 ${WM_SETTEXT} 0 "STR:Install" + + pop $2 + pop $1 + pop $0 +FunctionEnd + +Function ModuleMinGWDownloadPageExit + push $0 + push $1 + + !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Settings" "State" + strcmp "$0" "8" 0 NoNotify + Call UpdateCtrlStates + abort + NoNotify: + + !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 8" "State" + strcmp "$0" "0" noDownload doDownload + +doDownload: + !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_DOWNLOADPAGE}" "Field 6" "State" + strcmp $0 "" 0 +3 + MessageBox MB_ICONEXCLAMATION|MB_OK "You need to specify an installation directory!" + goto tryAgain + + strcpy $MODULE_MINGW_COMPILERINSTDIR $0 + strcpy $MODULE_MINGW_DOWNLOAD "yes" + CreateDirectory "$MINGW_INSTDIR\downloads" + + Call DisableButtons + InetLoad::load /BANNER "Mirror Download" "Downloading mirrors from server..." "${MODULE_MINGW_URL}/${MODULE_MINGW_DOWNLOADFILE}.mirrors" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.mirrors" /END + Pop $1 ;Get the return value + Call EnableButtons + + StrCmp $1 "OK" +3 + MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download mirror list ($1)." IDRETRY tryAgain 0 + Quit + + call ModuleMinGWReadMirrors + !insertmacro MUI_INSTALLOPTIONS_WRITE ${MODULE_MINGW_MIRRORPAGE} "Field 3" "ListItems" "$MODULE_MINGW_MIRRORS" + goto done + +noDownload: + strcpy $MODULE_MINGW_DOWNLOAD "no" + strcpy $MODULE_MINGW_SOURCEDOWNLOAD "no" + call ModuleMinGWChecking + strcmp $MODULE_MINGW_INSTOK "yes" done + 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 + goto done + +tryAgain: + pop $1 + pop $0 + Abort + +done: + pop $1 + pop $0 +FunctionEnd + +Function ModuleMinGWMirrorPageExit + push $0 + push $2 + push $1 + + !insertmacro MUI_INSTALLOPTIONS_READ $0 "${MODULE_MINGW_MIRRORPAGE}" "Field 3" "State" + strcmp "$0" "" 0 +3 + MessageBox MB_ICONEXCLAMATION|MB_OK "You must select a mirror to download from!" + goto tryAgain + + push $0 + call ModuleMinGWGetMirror + pop $0 + + Call DisableButtons + InetLoad::load /BANNER "MinGW Download" "Downloading MinGW from server..." "$0/${MODULE_MINGW_DOWNLOADFILE}.exe" "$MINGW_INSTDIR\downloads\${MODULE_MINGW_DOWNLOADFILE}.exe" /END + Pop $2 ;get the return value + Call EnableButtons + + StrCmp $2 "OK" +3 + MessageBox MB_ICONEXCLAMATION|MB_OK "Was not able to download MinGW ($2). Please try another mirror." + Goto tryAgain + + !insertmacro MUI_INSTALLOPTIONS_READ $1 "${MODULE_MINGW_MIRRORPAGE}" "Field 2" "State" + strcmp "$1" "0" done + + Call DisableButtons + 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 + Pop $2 + Call EnableButtons + + strcpy $MODULE_MINGW_SOURCEDOWNLOAD "yes" + + StrCmp $2 "OK" +3 + MessageBox MB_ICONEXCLAMATION|MB_RETRYCANCEL "Was not able to download MinGW sources ($2). Please try another mirror?" IDRETRY tryAgain 0 + Quit + + goto done + +tryAgain: + pop $1 + pop $2 + pop $0 + Abort + +done: + pop $1 + pop $2 + pop $0 +FunctionEnd + +Function 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 nextline + +done: + FileClose $0 + strlen $1 $MODULE_MINGW_MIRRORS + intcmp $1 0 failed failed cleanup + +failed: + MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!" + Quit + +cleanup: + pop $1 + pop $0 +FunctionEnd + +#this just removes the last two chars +Function ModuleMinGWRemoveNewLine +exch $0 +push $1 +push $2 + +strlen $1 $0 +intop $1 $1 - 1 +strcpy $2 $0 1 $1 ;get last char + +strcmp "$2" "$\n" 0 +2 +intop $1 $1 - 1 + +strcpy $2 $0 1 $1 ;get last char +strcmp "$2" "$\r" 0 +2 +intop $1 $1 - 1 + +intop $1 $1 + 1 +strcpy $0 $0 $1 + +pop $2 +pop $1 +exch $0 +FunctionEnd + +#push serverid +#call GetMirror +#pop server +Function 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 done + +nextline: + 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 $3 + +done: + strcpy $1 $3 + FileClose $0 + strlen $2 $1 + intcmp $2 0 failed failed cleanup + +failed: + MessageBox MB_ICONSTOP|MB_OK "Unable to parse mirror list, exiting!" + Quit + +cleanup: + pop $3 + pop $2 + pop $0 + exch $1 +FunctionEnd + +Function 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 $0 +FunctionEnd + +# +# 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 $0 + +WriteMakeFile: + ClearErrors + FileOpen $0 "$MINGW_INSTDIR\bin\make.bat" w + IfErrors done + FileWrite $0 "@echo off$\r$\n" + FileWrite $0 "mingw32-make %*$\r$\n" + FileClose $0 + +done: +; pop $1 + pop $0 +FunctionEnd + +Function MINGW_ValidateDirectoryFunc + push "${MODULE_MINGW_BUILDDIR}" + push $MINGW_INSTDIR + call CommonCheckDirectory +FunctionEnd +!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_UNINSTALL +Section 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 $0 +SectionEnd +!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 + diff --git a/tools/installer/nsis/modules/opensource.nsh b/tools/installer/nsis/modules/opensource.nsh new file mode 100644 index 0000000..3657ba8 --- /dev/null +++ b/tools/installer/nsis/modules/opensource.nsh @@ -0,0 +1,98 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +!ifdef MODULE_OPENSOURCE +!macro OPENSOURCE_INITIALIZE + !define MODULE_OPENSOURCE_PAGE "opensource.ini" + page custom ModuleOpenSourceShowPage +!macroend +!macro OPENSOURCE_SECTIONS + Section -ModuleOpenSourceSection + !ifdef MODULE_OPENSOURCE_ROOT + SetOutPath "$INSTDIR" + File "${MODULE_OPENSOURCE_ROOT}\OPENSOURCE-NOTICE.TXT" + !endif + SectionEnd + + Function ModuleOpenSourceShowPage + !insertmacro MUI_HEADER_TEXT "Open Source Edition" " " + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "${MODULE_OPENSOURCE_PAGE}" + strcpy "$LICENSEE" "Open Source" + strcpy "$LICENSE_PRODUCT" "OpenSource" + FunctionEnd +!macroend +!macro OPENSOURCE_DESCRIPTION +!macroend +!macro OPENSOURCE_STARTUP + !insertmacro MUI_INSTALLOPTIONS_EXTRACT "${MODULE_OPENSOURCE_PAGE}" +!macroend +!macro OPENSOURCE_FINISH +!macroend +!macro OPENSOURCE_UNSTARTUP +!macroend +!macro OPENSOURCE_UNINSTALL + Section -un.ModuleOpenSourceSection + Delete "$SMPROGRAMS\$STARTMENU_STRING\OpenSource Notice.lnk" + SectionEnd +!macroend +!macro OPENSOURCE_UNFINISH +!macroend +!else ;MODULE_OPENSOURCE +!macro OPENSOURCE_INITIALIZE +!macroend +!macro OPENSOURCE_SECTIONS +!macroend +!macro OPENSOURCE_DESCRIPTION +!macroend +!macro OPENSOURCE_STARTUP +!macroend +!macro OPENSOURCE_FINISH +!macroend +!macro OPENSOURCE_UNSTARTUP +!macroend +!macro OPENSOURCE_UNINSTALL +!macroend +!macro OPENSOURCE_UNFINISH +!macroend +!endif ;MODULE_OPENSOURCE + diff --git a/tools/installer/nsis/modules/registeruiext.nsh b/tools/installer/nsis/modules/registeruiext.nsh new file mode 100644 index 0000000..a335097 --- /dev/null +++ b/tools/installer/nsis/modules/registeruiext.nsh @@ -0,0 +1,210 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; UI Extension Module + +!ifdef MODULE_REGISTERUIEXT + +;------------------------------------------------------------------------------------------------ +!macro REGISTERUIEXT_INITIALIZE + !include "includes\system.nsh" + + !ifndef MODULE_REGISTERUIEXT_QTDIR + !ifdef MODULE_MINGW + !define MODULE_REGISTERUIEXT_QTDIR $MINGW_INSTDIR + !endif + + !ifdef MODULE_MSVC + !define MODULE_REGISTERUIEXT_QTDIR $MSVC_INSTDIR + !endif + !endif + + !define MODULE_REGISTERUIEXT_INTERNAL_DESC "Trolltech.DesignerForm" + !define MODULE_REGISTERUIEXT_DESC_DESIGNER "Open with Qt Designer" + !define MODULE_REGISTERUIEXT_DESC_DEVENV "Open with Visual Studio .NET" + !define MODULE_REGISTERUIEXT_FILE_DESC "Qt Designer File" +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_SECTIONS + +Function GetSelectedVSIP + Push $0 + Push $1 + + StrCpy $0 "" +!ifdef MODULE_VSIP +!ifdef VSIP_SEC01 + SectionGetFlags ${VSIP_SEC01} $1 + IntOp $1 $1 & 1 + IntCmp $1 0 +2 + StrCpy $0 "7.1" +!endif +!ifdef VSIP_SEC02 + SectionGetFlags ${VSIP_SEC02} $1 + IntOp $1 $1 & 1 + IntCmp $1 0 +2 + StrCpy $0 "8.0" +!endif +!endif + + Pop $1 + Exch $0 +FunctionEnd + +SectionGroup "File Associations" +Section "UI Files (*.ui)" REGISTERUIEXT_SEC01 + call ModuleRegisterUI +SectionEnd +SectionGroupEnd + +Function ModuleRegisterUI + push $0 + push $1 + + WriteRegDWORD SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered" 1 + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" "" "${MODULE_REGISTERUIEXT_FILE_DESC}" + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell" "" "open" + + Call GetSelectedVSIP + Pop $1 + + StrCmp "$1" "" 0 RegisterVSIP + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DESIGNER}" + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open\command" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe $\"%1$\"" + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "${MODULE_REGISTERUIEXT_QTDIR}\bin\designer.exe,0" + goto RegisterFinished + + RegisterVSIP: + Push $1 + Call GetVSInstallationDir + Pop $0 + + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\open" "" "${MODULE_REGISTERUIEXT_DESC_DEVENV}" + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\shell\${MODULE_REGISTERUIEXT_DESC_DEVENV}\command" "" "$0\devenv.exe $\"%1$\"" + WriteRegStr HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}\DefaultIcon" "" "$VSIP_INSTDIR\ui.ico" + RegisterFinished: + WriteRegStr HKCR ".ui" "" "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" + + pop $1 + pop $0 +FunctionEnd + +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_DESCRIPTION + !insertmacro MUI_DESCRIPTION_TEXT ${REGISTERUIEXT_SEC01} "This will associate the file extention .ui with the Qt GUI editor." +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_STARTUP + StrCmp $RUNNING_AS_ADMIN "true" +2 + SectionSetFlags ${REGISTERUIEXT_SEC01} 16 +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_FINISH +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_UNSTARTUP +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_UNINSTALL +Function un.ModuleRegisterUI + push $1 + ReadRegStr $1 HKCR ".ui" "" + strcmp $1 "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" 0 continue + ; do not delete this key since a subkey openwithlist + ; or open withprogid may exist + WriteRegStr HKCR ".ui" "" "" + continue: + ; just delete it since nobody else is supposed to use it + DeleteRegKey HKCR "${MODULE_REGISTERUIEXT_INTERNAL_DESC}" + + pop $1 +FunctionEnd + +Section -un.ModuleRegisterUIExtSection + push $0 + ReadRegDWORD $0 SHCTX "$PRODUCT_UNIQUE_KEY" "UIExtRegistered" + intcmp $0 1 0 DoneUnRegister + call un.ModuleRegisterUI + DoneUnRegister: + pop $0 +SectionEnd +!macroend + +;------------------------------------------------------------------------------------------------ + +!macro REGISTERUIEXT_UNFINISH +!macroend + +;------------------------------------------------------------------------------------------------ + +!else +!macro REGISTERUIEXT_INITIALIZE +!macroend +!macro REGISTERUIEXT_SECTIONS +!macroend +!macro REGISTERUIEXT_DESCRIPTION +!macroend +!macro REGISTERUIEXT_STARTUP +!macroend +!macro REGISTERUIEXT_FINISH +!macroend +!macro REGISTERUIEXT_UNSTARTUP +!macroend +!macro REGISTERUIEXT_UNINSTALL +!macroend +!macro REGISTERUIEXT_UNFINISH +!macroend +!endif diff --git a/tools/installer/nsis/opensource.ini b/tools/installer/nsis/opensource.ini new file mode 100644 index 0000000..334dc5d --- /dev/null +++ b/tools/installer/nsis/opensource.ini @@ -0,0 +1,81 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +;; Contact: Qt Software Information (qt-info@nokia.com) +;; +;; This file is part of the tools applications of the Qt Toolkit. +;; +;; $QT_BEGIN_LICENSE:LGPL$ +;; No Commercial Usage +;; This file contains pre-release code and may not be distributed. +;; You may use this file in accordance with the terms and conditions +;; contained in the either Technology Preview License Agreement or the +;; Beta Release License Agreement. +;; +;; GNU Lesser General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU Lesser +;; General Public License version 2.1 as published by the Free Software +;; Foundation and appearing in the file LICENSE.LGPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU Lesser General Public License version 2.1 requirements +;; will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +;; +;; In addition, as a special exception, Nokia gives you certain +;; additional rights. These rights are described in the Nokia Qt LGPL +;; Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +;; package. +;; +;; GNU General Public License Usage +;; Alternatively, this file may be used under the terms of the GNU +;; General Public License version 3.0 as published by the Free Software +;; Foundation and appearing in the file LICENSE.GPL included in the +;; packaging of this file. Please review the following information to +;; ensure the GNU General Public License version 3.0 requirements will be +;; met: http://www.gnu.org/copyleft/gpl.html. +;; +;; If you are unsure which license is appropriate for your use, please +;; contact the sales department at qt-sales@nokia.com. +;; $QT_END_LICENSE$ +;; +;; This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +;; WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Ini file generated by the HM NIS Edit IO designer. +[Settings] +NumFields=4 + +[Field 1] +Type=Label +Text=You are now installing the Open Source Edition of Qt. It is licensed under GNU LGPL version 2.1 and the GPL version 3. +Left=0 +Right=300 +Top=0 +Bottom=78 + +[Field 2] +Type=Link +Text=http://qtsoftware.com/developer/downloads/qt +State=http://qtsoftware.com/developer/downloads/qt +Left=0 +Right=278 +Top=80 +Bottom=88 + +[Field 3] +Type=Link +Text=http://qtsoftware.com/company/model +State=http://qtsoftware.com/company/model +Left=0 +Right=267 +Top=112 +Bottom=120 + +[Field 4] +Type=Label +Text=To read more about Nokia/Qt Software's licensing, please go to: +Left=0 +Right=278 +Top=97 +Bottom=105 + |