diff --git a/builds/install/arch-specific/win32/BuildExecutableInstall.bat b/builds/install/arch-specific/win32/BuildExecutableInstall.bat index 8cf1c63df6..bf49006776 100644 --- a/builds/install/arch-specific/win32/BuildExecutableInstall.bat +++ b/builds/install/arch-specific/win32/BuildExecutableInstall.bat @@ -23,6 +23,8 @@ :SET_PARAMS @echo off +:: reset ERRLEV to clear error from last run in same cmd shell +set ERRLEV=0 :: Assume we are preparing a production build set FBBUILD_BUILDTYPE=release :: Don't ship pdb files by default @@ -43,10 +45,12 @@ set /A FBBUILD_PACKAGE_NUMBER+=1 ) @echo Setting FBBUILD_PACKAGE_NUMBER to %FBBUILD_PACKAGE_NUMBER% -::::If a suffix is defined (usually for an RC) ensure it is prefixed correctly. -::if defined FBBUILD_FILENAME_SUFFIX ( -::if not %FBBUILD_FILENAME_SUFFIX:~0,1% == _ (set FBBUILD_FILENAME_SUFFIX=_%FBBUILD_FILENAME_SUFFIX%) -::) +::If a suffix is defined (usually for an RC) ensure it is prefixed correctly. +if defined FBBUILD_FILENAME_SUFFIX ( +if not "%FBBUILD_FILENAME_SUFFIX:~0,1%"=="_" ( +(set FBBUILD_FILENAME_SUFFIX=_%FBBUILD_FILENAME_SUFFIX%) +) +) :: See what we have on the command line ::for %%v in ( %1 %2 %3 %4 %5 ) do ( @@ -124,16 +128,6 @@ if %FBBUILD_ISX_PACK% EQU 1 ( ) else (@echo o Inno Setup found at %INNO5_SETUP_PATH%.) ) -:: If we are not building a snapshot we must check for WIX and -:: the path to the external documentation. If we are building a -:: snapshot then we can ignore them. -if not defined FB2_SNAPSHOT ( - -if not defined WIX ( - call :ERROR WIX not defined. WiX is needed to build the MSI kits of the CRT runtimes. - @goto :EOF -) else (@echo o WiX found at %WIX%.) - if not DEFINED FB_EXTERNAL_DOCS ( @echo. @@ -193,8 +187,7 @@ set FBBUILD_FILE_ID=%FBBUILD_PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%_%FB_TA @echo s/define compression/define %ISS_COMPRESS%/ >> %temp%.\b$3.txt @echo s/FBBUILD_PRODUCT_VER_STRING/%FBBUILD_PRODUCT_VER_STRING%/ >> %temp%.\b$3.txt -sed -f %temp%.\b$3.txt FirebirdInstall_20.iss > FirebirdInstall_%FBBUILD_FILE_ID%.iss -del %temp%.\b$?.txt +sed -f %temp%.\b$3.txt FirebirdInstall_30.iss > FirebirdInstall_%FBBUILD_FILE_ID%.iss :: This is a better way of achieving what is done in make_all.bat, but we don't :: test for sed in that script. @@ -207,9 +200,35 @@ set FBBUILD_FB_CUR_VER=%FBBUILD_FB25_CUR_VER% :: Now set some version strings of our legacy releases. :: This helps us copy the correct documentation, :: as well as set up the correct shortcuts -set FBBUILD_FB15_CUR_VER=1.5.5 -set FBBUILD_FB20_CUR_VER=2.0.5 -set FBBUILD_FB21_CUR_VER=2.1.2 +set FBBUILD_FB15_CUR_VER=1.5.6 +set FBBUILD_FB20_CUR_VER=2.0.7 +set FBBUILD_FB21_CUR_VER=2.1.5 + +:: Now fix up the major.minor version strings in the readme files. +:: We place output in %FB_GEN_DIR%\readmes +@if not exist %FB_GEN_DIR%\readmes (@mkdir %FB_GEN_DIR%\readmes) +@for %%d in (ba cz de es fr hu it pl pt ru si ) do ( + @if not exist %FB_GEN_DIR%\readmes\%%d (@mkdir %FB_GEN_DIR%\readmes\%%d) +) + +@echo s/\$MAJOR/%FB_MAJOR_VER%/g > %temp%.\b$4.txt +@echo s/\$MINOR/%FB_MINOR_VER%/g >> %temp%.\b$4.txt +@echo s/\$RELEASE/%FB_REV_NO%/g >> %temp%.\b$4.txt +@for %%f in (Readme.txt installation_readme.txt) do ( + @echo Processing version strings in %%f + @sed -f %temp%.\b$4.txt %%f > %FB_GEN_DIR%\readmes\%%f +) +@for %%d in (ba cz de es fr hu it pl pt ru si ) do ( + @pushd %%d + @for /F %%f in ( '@dir /B /A-D *.txt' ) do ( + @echo Processing version strings in %%d\%%f + @sed -f %temp%.\b$4.txt %%f > %FB_GEN_DIR%\readmes\%%d\%%f + ) + @popd +) + +del %temp%.\b$?.txt + ::End of SED_MAGIC ::---------------- @@ -218,61 +237,39 @@ set FBBUILD_FB21_CUR_VER=2.1.2 :COPY_XTRA :: system dll's we need -:: (You may need to download and extract the -:: vcredist stuff to your MSDevDir for this to work with MSVC6. -:: MSVC7 requires the Framework SDK v1.1 to be installed. -:: MSVC8 should be installed with redistributable packages. +:: MSVC should be installed with redistributable packages. ::===================== +@echo Copying MSVC runtime libraries... if not exist %FB_OUTPUT_DIR%\system32 (mkdir %FB_OUTPUT_DIR%\system32) -@if DEFINED MSDevDir ( - @if %MSVC_VERSION% EQU 6 ( - @copy "%MSDevDir%\vcredist\msvcrt.dll" %FB_OUTPUT_DIR%\bin\ > nul - @copy "%MSDevDir%\vcredist\msvcp%MSVC_VERSION%0.dll" %FB_OUTPUT_DIR%\bin\ > nul - ) -) else ( - if %MSVC_VERSION% EQU 8 ( - @copy "%VCINSTALLDIR%\redist\%PROCESSOR_ARCHITECTURE%\Microsoft.VC80.CRT\msvcp%MSVC_VERSION%?.dll" %FB_OUTPUT_DIR%\bin\ > nul - @copy "%VCINSTALLDIR%\redist\%PROCESSOR_ARCHITECTURE%\Microsoft.VC80.CRT\msvcr%MSVC_VERSION%?.dll" %FB_OUTPUT_DIR%\bin\ > nul - @copy "%VCINSTALLDIR%\redist\%PROCESSOR_ARCHITECTURE%\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest" %FB_OUTPUT_DIR%\bin\ > nul - ) else ( - if %MSVC_VERSION% EQU 7 ( - @copy "%FrameworkSDKDir%\bin\msvcp%MSVC_VERSION%?.dll" %FB_OUTPUT_DIR%\bin\ > nul - @copy "%FrameworkSDKDir%\bin\msvcr%MSVC_VERSION%?.dll" %FB_OUTPUT_DIR%\bin\ > nul - ) - ) +@echo on +for %%f in ( msvcp%MSVC_VERSION%?.dll msvcr%MSVC_VERSION%?.dll ) do ( +if exist "%VCINSTALLDIR%\redist\%PROCESSOR_ARCHITECTURE%\Microsoft.VC%MSVC_VERSION%0.CRT\%%f" ( +copy "%VCINSTALLDIR%\redist\%PROCESSOR_ARCHITECTURE%\Microsoft.VC%MSVC_VERSION%0.CRT\%%f" %FB_OUTPUT_DIR%\ ) +) + +@echo off + + @if %ERRORLEVEL% GEQ 1 ( (call :ERROR Copying MSVC runtime library failed with error %ERRORLEVEL% ) & (goto :EOF)) :: grab some missing bits'n'pieces from different parts of the source tree ::========================================================================= -@echo Copying firebird.conf -@copy %FB_ROOT_PATH%\builds\install\misc\firebird.conf %FB_OUTPUT_DIR%\ > nul -@if %ERRORLEVEL% GEQ 1 ( (call :ERROR COPY of firebird.conf failed with errorlevel %ERRORLEVEL% ) & (goto :EOF)) - @echo Copying ib_util etc copy %FB_ROOT_PATH%\src\extlib\ib_util.h %FB_OUTPUT_DIR%\include > nul || (call :WARNING Copying ib_util.h failed.) copy %FB_ROOT_PATH%\lang_helpers\ib_util.pas %FB_OUTPUT_DIR%\include > nul || (call :WARNING Copying ib_util.pas failed.) - -@echo Copying fbclient lib etc -:: For some unknown reason copy sets the errorlevel even when it succeeds, -:: so the || branch is only executed if copy throws a real error, even though the errorlevel is set. -:: Just another of those fabulous msdos idiosyncracies. -for %%v in (fbclient ib_util) do ( -@copy /Y %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\%%v\%%v.lib %FB_OUTPUT_DIR%\lib\%%v_ms.lib || @if %ERRORLEVEL% GEQ 1 (call :ERROR Copying %%v to %%v_ms.lib failed with error %ERRORLEVEL%) & (goto :EOF)) -) - @implib.exe | findstr "Borland" > nul @if errorlevel 0 ( if "%PROCESSOR_ARCHITECTURE%"=="x86" ( @echo Generating fbclient_bor.lib - @implib %FB_OUTPUT_DIR%\lib\fbclient_bor.lib %FB_OUTPUT_DIR%\bin\fbclient.dll > nul + @implib %FB_OUTPUT_DIR%\lib\fbclient_bor.lib %FB_OUTPUT_DIR%\fbclient.dll > nul ) ) @if "%FBBUILD_SHIP_PDB%"=="ship_pdb" ( @echo Copying pdb files... - for %%v in ( fbembed fb_inet_server fbserver fbclient ) do ( + for %%v in ( fbembed firebird fbclient ) do ( @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\%%v\%%v.pdb %FB_OUTPUT_DIR%\bin > nul @if %ERRORLEVEL% GEQ 1 ( call :ERROR Copying %%v.pdb files failed @@ -280,7 +277,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( ) ) ) -:: @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\bin\*.pdb %FB_OUTPUT_DIR%\bin > nul +:: @copy %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\*.pdb %FB_OUTPUT_DIR%\bin > nul @echo Started copying docs... @rmdir /S /Q %FB_OUTPUT_DIR%\doc 2>nul @@ -294,7 +291,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" ( @echo Copying udf library scripts... for %%v in ( ib_udf.sql ib_udf2.sql ) do ( - copy %FB_ROOT_PATH%\src\extlib\%%v %FB_OUTPUT_DIR%\UDF\%%v > nul + @copy %FB_ROOT_PATH%\src\extlib\%%v %FB_OUTPUT_DIR%\UDF\%%v > nul @if %ERRORLEVEL% GEQ 1 ( call :ERROR Copying %FB_ROOT_PATH%\src\extlib\%%v failed. goto :EOF @@ -311,14 +308,14 @@ for %%v in ( fbudf.sql fbudf.txt ) do ( ::UDF upgrade script and doc mkdir %FB_OUTPUT_DIR%\misc\upgrade\ib_udf 2>nul -@copy %FB_ROOT_PATH%\src\misc\upgrade\v2\ib_udf*.* %FB_OUTPUT_DIR%\misc\upgrade\ib_udf\ +@copy %FB_ROOT_PATH%\src\misc\upgrade\v2\ib_udf*.* %FB_OUTPUT_DIR%\misc\upgrade\ib_udf\ > nul ::INTL script -@copy %FB_ROOT_PATH%\src\misc\intl.sql %FB_OUTPUT_DIR%\misc\ +@copy %FB_ROOT_PATH%\src\misc\intl.sql %FB_OUTPUT_DIR%\misc\ > nul @echo Copying other documentation... -@copy %FB_ROOT_PATH%\builds\install\arch-specific\win32\installation_readme.txt %FB_OUTPUT_DIR%\doc\installation_readme.txt > nul +@copy %FB_GEN_DIR%\readmes\installation_readme.txt %FB_OUTPUT_DIR%\doc\installation_readme.txt > nul @copy %FB_OUTPUT_DIR%\doc\WhatsNew %FB_OUTPUT_DIR%\doc\WhatsNew.txt > nul @del %FB_OUTPUT_DIR%\doc\WhatsNew @@ -341,7 +338,7 @@ mkdir %FB_OUTPUT_DIR%\misc\upgrade\ib_udf 2>nul :: if the docs are available then we can include them. if defined FB_EXTERNAL_DOCS ( @echo Copying pdf docs... -@for %%v in ( Firebird-2.1-QuickStart.pdf Firebird_v%FBBUILD_FB_CUR_VER%.ReleaseNotes.pdf Firebird_v%FBBUILD_FB_CUR_VER%.InstallationGuide.pdf Firebird_v%FBBUILD_FB_CUR_VER%.BugFixes.pdf Firebird_v%FBBUILD_FB21_CUR_VER%.ReleaseNotes.pdf Firebird_v%FBBUILD_FB21_CUR_VER%.InstallationGuide.pdf Firebird_v%FBBUILD_FB21_CUR_VER%.BugFixes.pdf) do ( +@for %%v in ( Firebird-%FB_MAJOR_VER%.%FB_MINOR_VER%-QuickStart.pdf Firebird_v%FBBUILD_FB_CUR_VER%.ReleaseNotes.pdf ) do ( @echo ... %%v (@copy /Y %FB_EXTERNAL_DOCS%\%%v %FB_OUTPUT_DIR%\doc\%%v > nul) || (call :WARNING Copying %FB_EXTERNAL_DOCS%\%%v failed.) ) @@ -359,7 +356,7 @@ for %%v in (IPLicense.txt IDPLicense.txt ) do ( ) :: And readme -@copy %FB_ROOT_PATH%\builds\install\arch-specific\win32\readme.txt %FB_OUTPUT_DIR%\ > nul +@copy %FB_GEN_DIR%\readmes\readme.txt %FB_OUTPUT_DIR%\ > nul :: Walk through all docs and transform any that are not .txt, .pdf or .html to .txt echo Setting .txt filetype to ascii docs. @@ -392,7 +389,10 @@ for /R %FB_OUTPUT_DIR%\doc %%v in (.) do ( :: Generate runtimes as an MSI file. :: This requires WiX 2.0 to be installed ::============ -if %MSVC_VERSION% GEQ 8 ( +:: This is only relevent if we are shipping packages built with MSVS 2005 (MSVC8) +:: We have never shipped packages with MSVS 2008 (MSVC9) and we are hoping not +:: to deploy MSI runtimes if we build with MSVC 2010 (MVC10) +if %MSVC_VERSION% EQU 8 ( if not exist %FB_OUTPUT_DIR%\system32\vccrt%MSVC_VERSION%_%FB_TARGET_PLATFORM%.msi ( %WIX%\candle.exe -v0 %FB_ROOT_PATH%\builds\win32\msvc%MSVC_VERSION%\VCCRT_%FB_TARGET_PLATFORM%.wxs -out %FB_GEN_DIR%\vccrt_%FB_TARGET_PLATFORM%.wixobj %WIX%\light.exe %FB_GEN_DIR%\vccrt_%FB_TARGET_PLATFORM%.wixobj -out %FB_OUTPUT_DIR%\system32\vccrt%MSVC_VERSION%_%FB_TARGET_PLATFORM%.msi @@ -421,14 +421,15 @@ if not exist %FB_OUTPUT_DIR%\system32\vccrt%MSVC_VERSION%_%FB_TARGET_PLATFORM%.m setlocal set OUTPATH=%FB_OUTPUT_DIR%\include copy %FB_ROOT_PATH%\src\jrd\ibase.h %OUTPATH%\ibase.h > nul -for %%v in ( %FB_ROOT_PATH%\src\include\types_pub.h %FB_ROOT_PATH%\src\include\consts_pub.h %FB_ROOT_PATH%\src\dsql\sqlda_pub.h %FB_ROOT_PATH%\src\jrd\dsc_pub.h %FB_ROOT_PATH%\src\jrd\inf_pub.h %FB_ROOT_PATH%\src\jrd\blr.h ) do ( +for %%v in ( %FB_ROOT_PATH%\src\include\types_pub.h %FB_ROOT_PATH%\src\include\consts_pub.h %FB_ROOT_PATH%\src\dsql\sqlda_pub.h %FB_ROOT_PATH%\src\common\dsc_pub.h %FB_ROOT_PATH%\src\jrd\inf_pub.h %FB_ROOT_PATH%\src\jrd\blr.h ) do ( del %OUTPATH%\%%~nxv 2> nul copy %%v %OUTPATH%\%%~nxv > nul - sed -n -f strip_comments.sed %OUTPATH%\%%~nxv > %OUTPATH%\%%~nv.more + sed -n -f strip_comments.sed %OUTPATH%\%%~nxv > %OUTPATH%\%%~nv.more || call :ERROR Stripping comments from %%v failed. + more /s %OUTPATH%\%%~nv.more > %OUTPATH%\%%~nv.sed ) move /y %OUTPATH%\ibase.h %OUTPATH%\ibase.sed -sed -e "/#include \"types_pub\.h\"/r %OUTPATH%\types_pub.sed" -e "/#include \"types_pub\.h\"/d" -e "/#include \"consts_pub\.h\"/r %OUTPATH%\consts_pub.sed" -e "/#include \"consts_pub\.h\"/d" -e "/#include \"..\/jrd\/dsc_pub\.h\"/r %OUTPATH%\dsc_pub.sed" -e "/#include \"..\/jrd\/dsc_pub\.h\"/d" -e "/#include \"..\/dsql\/sqlda_pub\.h\"/r %OUTPATH%\sqlda_pub.sed" -e "/#include \"..\/dsql\/sqlda_pub\.h\"/d" -e "/#include \"blr\.h\"/r %OUTPATH%\blr.sed" -e "/#include \"blr\.h\"/d" -e "/#include \"..\/jrd\/inf_pub\.h\"/r %OUTPATH%\inf_pub.sed" -e "/#include \"..\/jrd\/inf_pub\.h\"/d" %OUTPATH%\ibase.sed > %OUTPATH%\ibase.h +sed -e "/#include \"types_pub\.h\"/r %OUTPATH%\types_pub.sed" -e "/#include \"types_pub\.h\"/d" -e "/#include \"consts_pub\.h\"/r %OUTPATH%\consts_pub.sed" -e "/#include \"consts_pub\.h\"/d" -e "/#include \"..\/common\/dsc_pub\.h\"/r %OUTPATH%\dsc_pub.sed" -e "/#include \"..\/jrd\/dsc_pub\.h\"/d" -e "/#include \"..\/dsql\/sqlda_pub\.h\"/r %OUTPATH%\sqlda_pub.sed" -e "/#include \"..\/dsql\/sqlda_pub\.h\"/d" -e "/#include \"blr\.h\"/r %OUTPATH%\blr.sed" -e "/#include \"blr\.h\"/d" -e "/#include \"..\/jrd\/inf_pub\.h\"/r %OUTPATH%\inf_pub.sed" -e "/#include \"..\/jrd\/inf_pub\.h\"/d" %OUTPATH%\ibase.sed > %OUTPATH%\ibase.h del %OUTPATH%\ibase.sed %OUTPATH%\types_pub.* %OUTPATH%\consts_pub.* %OUTPATH%\sqlda_pub.* %OUTPATH%\dsc_pub.* %OUTPATH%\inf_pub.* %OUTPATH%\blr.* endlocal @@ -463,11 +464,11 @@ endlocal ::Migration from old security db to new one mkdir %FB_OUTPUT_DIR%\misc\upgrade\security 2>nul -@copy %FB_ROOT_PATH%\src\misc\upgrade\v2\security_database.* %FB_OUTPUT_DIR%\misc\upgrade\security +@copy %FB_ROOT_PATH%\src\misc\upgrade\v2\security_database.* %FB_OUTPUT_DIR%\misc\upgrade\security > nul ::Metadata migration mkdir %FB_OUTPUT_DIR%\misc\upgrade\metadata 2>nul -@copy %FB_ROOT_PATH%\src\misc\upgrade\v2.1\metadata_* %FB_OUTPUT_DIR%\misc\upgrade\metadata +@copy %FB_ROOT_PATH%\src\misc\upgrade\v2.1\metadata_* %FB_OUTPUT_DIR%\misc\upgrade\metadata > nul :: Make sure that qli's help.fdb is available ::=============================================== @@ -503,7 +504,7 @@ mkdir %FB_OUTPUT_DIR%\misc\upgrade\metadata 2>nul :: Note 2: MS documentation was incorrectly interpreted. .local files should not be created :: for libraries, they should be created for executables. :: Create libname.local files for each locally installed library -::for %%v in ( fbclient msvcrt msvcp%VS_VER%0 ) do touch %FB_OUTPUT_DIR%\bin\%%v.local +::for %%v in ( fbclient msvcrt msvcp%VS_VER%0 ) do touch %FB_OUTPUT_DIR%\%%v.local ::@goto :EOF @@ -542,7 +543,7 @@ if %FB2_SNAPSHOT% EQU 1 ( ) if not "%FBBUILD_SHIP_PDB%"=="ship_pdb" ( - @del /q %FBBUILD_ZIP_PACK_ROOT%\bin\*.pdb > nul 2>&1 + @del /q %FBBUILD_ZIP_PACK_ROOT%\*.pdb > nul 2>&1 ) :: grab install notes for zip pack @@ -588,19 +589,19 @@ for %%v in (aliases.conf firebird.conf firebird.msg) do ( @copy /Y %FB_OUTPUT_DI for %%v in ( doc intl udf ) do (@mkdir %FBBUILD_EMB_PACK_ROOT%\%%v 2>nul) -@copy /Y %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\bin\fbembed.* %FBBUILD_EMB_PACK_ROOT% > nul +@copy /Y %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\fbembed.* %FBBUILD_EMB_PACK_ROOT% > nul for %%v in ( icuuc30 icudt30 icuin30 ) do ( @copy %FB_ICU_SOURCE_BIN%\%%v.dll %FBBUILD_EMB_PACK_ROOT% >nul ) -@copy /Y %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\bin\ib_util.dll %FBBUILD_EMB_PACK_ROOT% > nul +@copy /Y %FB_TEMP_DIR%\%FBBUILD_BUILDTYPE%\firebird\ib_util.dll %FBBUILD_EMB_PACK_ROOT% > nul @copy /Y %FB_OUTPUT_DIR%\doc\Firebird*.pdf %FBBUILD_EMB_PACK_ROOT%\doc\ > nul @copy /Y %FB_OUTPUT_DIR%\intl\*.* %FBBUILD_EMB_PACK_ROOT%\intl\ > nul @copy /Y %FB_OUTPUT_DIR%\udf\*.* %FBBUILD_EMB_PACK_ROOT%\udf\ > nul -@copy /Y %FB_OUTPUT_DIR%\bin\msvc*.* %FBBUILD_EMB_PACK_ROOT% > nul +@copy /Y %FB_OUTPUT_DIR%\msvc*.* %FBBUILD_EMB_PACK_ROOT% > nul if %MSVC_VERSION% EQU 8 ( - @copy /Y %FB_OUTPUT_DIR%\bin\Microsoft.VC80.CRT.manifest %FBBUILD_EMB_PACK_ROOT% > nul + @copy /Y %FB_OUTPUT_DIR%\Microsoft.VC80.CRT.manifest %FBBUILD_EMB_PACK_ROOT% > nul ) if "%FBBUILD_SHIP_PDB%"=="ship_pdb" ( @@ -618,7 +619,7 @@ for %%v in (IPLicense.txt IDPLicense.txt ) do ( ) :: And readme -@copy %FB_ROOT_PATH%\builds\install\arch-specific\win32\readme.txt %FBBUILD_EMB_PACK_ROOT%\ > nul +@copy %FB_GEN_DIR%\readmes\readme.txt %FBBUILD_EMB_PACK_ROOT%\ > nul ::End of GEN_EMBEDDED @@ -685,6 +686,22 @@ if %FBBUILD_ISX_PACK% NEQ 1 goto :EOF @goto :EOF +:DO_MD5SUMS +::========= +:: Generate the md5sum checksum file +::================================== +if NOT DEFINED GNU_TOOLCHAIN ( + call :WARNING GNU_TOOLCHAIN variable not defined. Cannot generate md5 sums. + @goto :EOF +) +@echo Generating md5sums for Firebird-%FBBUILD_PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER% + +%GNU_TOOLCHAIN%\md5sum.exe %FBBUILD_INSTALL_IMAGES%\Firebird-%FBBUILD_PRODUCT_VER_STRING%?%FBBUILD_PACKAGE_NUMBER%*.* > %FBBUILD_INSTALL_IMAGES%\Firebird-%FBBUILD_PRODUCT_VER_STRING%-%FBBUILD_PACKAGE_NUMBER%.md5sum + +::--------------- +@goto :EOF + + :HELP ::=== @echo. @@ -719,6 +736,21 @@ if %FBBUILD_ISX_PACK% NEQ 1 goto :EOF @echo. @echo FB2_EXAMPLES=0 - Don't include examples in the install kit. @echo. +@echo. +@echo Required Files +@echo. +@echo To successfully package Firebird you will need to make sure several +@echo packages are installed and correctly configured on your system. +@echo. +@echo o InnoSetup is needed to create the binary installer. See the header +@echo of the .iss file to see which minimum version is required. +@echo. +@echo o 7ZIP is required to create the zip and embedded packages +@echo. +@echo o sed is required for packaging. Use the sed provided by +@echo gnuwin32. The cygwin one is not guaranteed to work. +@echo. + ::End of HELP ::----------- @goto :EOF @@ -776,8 +808,6 @@ popd @if errorlevel 1 (goto :END) @if not defined FB2_ISS_DEBUG (set FB2_ISS_DEBUG=0) -::@if %FB2_ISS_DEBUG% equ 0 (SETLOCAL) - @if not defined FB2_EXAMPLES (set FB2_EXAMPLES=1) @Echo. @@ -857,6 +887,9 @@ if %FBBUILD_ISX_PACK% EQU 1 ( @echo. ) +@(@call :DO_MD5SUMS ) || (@echo Error calling DO_MD5SUMS & @goto :EOF) + + @echo. @echo Completed building installation kit(s) @echo. diff --git a/builds/install/arch-specific/win32/FirebirdInstallEnvironmentChecks.inc b/builds/install/arch-specific/win32/FirebirdInstallEnvironmentChecks.inc index c6f995da78..0a3bb79b3d 100644 --- a/builds/install/arch-specific/win32/FirebirdInstallEnvironmentChecks.inc +++ b/builds/install/arch-specific/win32/FirebirdInstallEnvironmentChecks.inc @@ -44,6 +44,10 @@ function HasWI30: boolean; function HasNotWI30: boolean; + + function SummarizeInstalledProducts: String; + function AnalysisAssessment: boolean; + *) @@ -358,9 +362,9 @@ begin dbg_Server := ProductsInstalledArray[product].ServerVersion; dbg_InstallType := ProductsInstalledArray[product].InstallType; - if FileExists(ProductsInstalledArray[product].Path + '\bin\fbclient.dll') then + if FileExists(ProductsInstalledArray[product].Path + '\fbclient.dll') then ProductsInstalledArray[product].ClientVersion := GetInstalledVersion( - ProductsInstalledArray[product].Path + '\bin\fbclient.dll',VerInt) + ProductsInstalledArray[product].Path + '\fbclient.dll',VerInt) else ProductsInstalledArray[product].ClientVersion := gds32VersionString; @@ -375,15 +379,15 @@ begin /////////// if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin - GetVersionNumbersString( ProductsInstalledArray[product].Path+'\bin\gbak.exe', + GetVersionNumbersString( ProductsInstalledArray[product].Path+'\gbak.exe', ProductsInstalledArray[product].GBAKVersion); If ProductsInstalledArray[product].GBAKVersion <> '' then begin ProductsInstalledArray[product].ActualVersion := ProductsInstalledArray[product].GBAKVersion; ProductsInstalledArray[product].InstallType := ProductsInstalledArray[product].InstallType + AdminInstall; end; - if FileExists(ProductsInstalledArray[product].Path+'\bin\fb_inet_server.exe') then begin - GetVersionNumbersString( ProductsInstalledArray[product].Path+'\bin\fb_inet_server.exe', + if FileExists(ProductsInstalledArray[product].Path+'\fb_inet_server.exe') then begin + GetVersionNumbersString( ProductsInstalledArray[product].Path+'\fb_inet_server.exe', ProductsInstalledArray[product].ServerVersion); If ProductsInstalledArray[product].ServerVersion <> '' then begin ProductsInstalledArray[product].ActualVersion := ProductsInstalledArray[product].ServerVersion; @@ -391,8 +395,8 @@ begin end; end; - if FileExists(ProductsInstalledArray[product].Path+'\bin\fbserver.exe') then begin - GetVersionNumbersString( ProductsInstalledArray[product].Path+'\bin\fbserver.exe', + if FileExists(ProductsInstalledArray[product].Path+'\fbserver.exe') then begin + GetVersionNumbersString( ProductsInstalledArray[product].Path+'\fbserver.exe', ProductsInstalledArray[product].ServerVersion); If ProductsInstalledArray[product].ServerVersion <> '' then begin ProductsInstalledArray[product].ActualVersion := ProductsInstalledArray[product].ServerVersion; @@ -400,8 +404,8 @@ begin end; end; - if FileExists(ProductsInstalledArray[product].Path+'\bin\ibserver.exe') then begin - GetVersionNumbersString( ProductsInstalledArray[product].Path+'\bin\ibserver.exe', + if FileExists(ProductsInstalledArray[product].Path+'\ibserver.exe') then begin + GetVersionNumbersString( ProductsInstalledArray[product].Path+'\ibserver.exe', ProductsInstalledArray[product].ServerVersion); If ProductsInstalledArray[product].ServerVersion <> '' then begin ProductsInstalledArray[product].ActualVersion := ProductsInstalledArray[product].ServerVersion; @@ -684,7 +688,7 @@ var procedure SetupSharedFilesArray; //All shared files go in this list. Use -// find /n "sharedfile" FirebirdInstall_15.iss +// find /n "sharedfile" FirebirdInstall_20.iss //to list them in the order they appear in the setup script // Shared Files are defined as either: // - Files which are absolutely necessary for a functioning installation. @@ -692,56 +696,57 @@ procedure SetupSharedFilesArray; // - Libraries // - License files begin -SetArrayLength(SharedFileArray,36); +SetArrayLength(SharedFileArray,35); -SharedFileArray[0].Filename := ExpandConstant('{app}')+'\IPLicense.txt'; -SharedFileArray[1].Filename := ExpandConstant('{app}')+'\IDPLicense.txt'; -SharedFileArray[2].Filename := ExpandConstant('{app}')+'\firebird.msg'; -SharedFileArray[3].Filename := ExpandConstant('{app}')+'\bin\gbak.exe'; -SharedFileArray[4].Filename := ExpandConstant('{app}')+'\bin\gfix.exe'; -SharedFileArray[5].Filename := ExpandConstant('{app}')+'\bin\gsec.exe'; -SharedFileArray[6].Filename := ExpandConstant('{app}')+'\bin\gsplit.exe'; -SharedFileArray[7].Filename := ExpandConstant('{app}')+'\bin\gstat.exe'; -SharedFileArray[8].Filename := ExpandConstant('{app}')+'\bin\fbguard.exe'; -SharedFileArray[9].Filename := ExpandConstant('{app}')+'\bin\fb_lock_print.exe'; -SharedFileArray[10].Filename := ExpandConstant('{app}')+'\bin\fb_inet_server.exe' -SharedFileArray[11].Filename := ExpandConstant('{app}')+'\bin\fbserver.exe'; -SharedFileArray[12].Filename := ExpandConstant('{app}')+'\bin\ib_util.dll'; -SharedFileArray[13].Filename := ExpandConstant('{app}')+'\bin\instclient.exe'; -SharedFileArray[14].Filename := ExpandConstant('{app}')+'\bin\instreg.exe'; -SharedFileArray[15].Filename := ExpandConstant('{app}')+'\bin\instsvc.exe'; +SharedFileArray[0].Filename := ExpandConstant('{app}')+'IPLicense.txt'; +SharedFileArray[1].Filename := ExpandConstant('{app}')+'IDPLicense.txt'; +SharedFileArray[2].Filename := ExpandConstant('{app}')+'firebird.msg'; +SharedFileArray[3].Filename := ExpandConstant('{app}')+'gbak.exe'; +SharedFileArray[4].Filename := ExpandConstant('{app}')+'gfix.exe'; +SharedFileArray[5].Filename := ExpandConstant('{app}')+'gsec.exe'; +SharedFileArray[6].Filename := ExpandConstant('{app}')+'gsplit.exe'; +SharedFileArray[7].Filename := ExpandConstant('{app}')+'gstat.exe'; +SharedFileArray[8].Filename := ExpandConstant('{app}')+'fbguard.exe'; +SharedFileArray[9].Filename := ExpandConstant('{app}')+'fb_lock_print.exe'; +SharedFileArray[10].Filename := ExpandConstant('{app}')+'firebird.exe'; +SharedFileArray[11].Filename := ExpandConstant('{app}')+'ib_util.dll'; +SharedFileArray[12].Filename := ExpandConstant('{app}')+'instclient.exe'; +SharedFileArray[13].Filename := ExpandConstant('{app}')+'instreg.exe'; +SharedFileArray[14].Filename := ExpandConstant('{app}')+'instsvc.exe'; -SharedFileArray[16].Filename := ExpandConstant('{sys}')+'\gds32.dll'; -SharedFileArray[17].Filename := ExpandConstant('{sys}')+'\fbclient.dll'; +SharedFileArray[15].Filename := ExpandConstant('{sys}')+'gds32.dll'; +SharedFileArray[16].Filename := ExpandConstant('{sys}')+'fbclient.dll'; -SharedFileArray[18].Filename := ExpandConstant('{app}')+'\bin\fbclient.dll'; +SharedFileArray[17].Filename := ExpandConstant('{app}')+'fbclient.dll'; -SharedFileArray[19].Filename := ExpandConstant('{app}')+'\bin\icuuc30.dll'; -SharedFileArray[20].Filename := ExpandConstant('{app}')+'\bin\icuin30.dll'; -SharedFileArray[21].Filename := ExpandConstant('{app}')+'\bin\icudt30.dll'; +SharedFileArray[18].Filename := ExpandConstant('{app}')+'icuuc30.dll'; +SharedFileArray[19].Filename := ExpandConstant('{app}')+'icuin30.dll'; +SharedFileArray[20].Filename := ExpandConstant('{app}')+'icudt30.dll'; -SharedFileArray[22].Filename := ExpandConstant('{app}')+'\bin\msvcrt.dll'; -SharedFileArray[23].Filename := ExpandConstant('{app}')+'\bin\msvcr{#msvc_version}0.dll'; -SharedFileArray[24].Filename := ExpandConstant('{app}')+'\bin\msvcp{#msvc_version}0.dll'; +SharedFileArray[21].Filename := ExpandConstant('{app}')+'msvcrt.dll'; +SharedFileArray[22].Filename := ExpandConstant('{app}')+'msvcr{#msvc_version}0.dll'; -SharedFileArray[25].Filename := ExpandConstant('{app}')+'\bin\fbintl.dll'; - -SharedFileArray[26].Filename := ExpandConstant('{app}')+'\UDF\ib_udf.dll'; -SharedFileArray[27].Filename := ExpandConstant('{app}')+'\UDF\fbudf.dll'; +SharedFileArray[23].Filename := ExpandConstant('{app}')+'fbintl.dll'; +SharedFileArray[24].Filename := ExpandConstant('{app}')+'UDF\ib_udf.dll'; +SharedFileArray[25].Filename := ExpandConstant('{app}')+'UDF\fbudf.dll'; if UsingWinNT then - SharedFileArray[28].Filename := ExpandConstant('{sys}')+'\Firebird2Control.cpl' + SharedFileArray[26].Filename := ExpandConstant('{sys}')+'Firebird2Control.cpl' else - SharedFileArray[28].Filename := ExpandConstant('{sys}')+'\FIREBI~1.CPL'; + SharedFileArray[26].Filename := ExpandConstant('{sys}')+'FIREBI~1.CPL'; -SharedFileArray[29].Filename := ExpandConstant('{app}')+'aliases.conf'; -SharedFileArray[30].Filename := ExpandConstant('{app}')+'firebird.conf'; -SharedFileArray[31].Filename := ExpandConstant('{app}')+'firebird.log'; -SharedFileArray[32].Filename := ExpandConstant('{app}')+'security2.fdb'; -SharedFileArray[33].Filename := ExpandConstant('{app}')+'fbtrace.conf'; -SharedFileArray[34].Filename := ExpandConstant('{app}')+'\bin\fbsvcmgr.exe'; -SharedFileArray[35].Filename := ExpandConstant('{app}')+'\bin\fbrmclib.dll'; +SharedFileArray[27].Filename := ExpandConstant('{app}')+'aliases.conf'; +SharedFileArray[28].Filename := ExpandConstant('{app}')+'firebird.conf'; +SharedFileArray[29].Filename := ExpandConstant('{app}')+'firebird.log'; +SharedFileArray[30].Filename := ExpandConstant('{app}')+'security3.fdb'; +SharedFileArray[31].Filename := ExpandConstant('{app}')+'fbtrace.conf'; +SharedFileArray[32].Filename := ExpandConstant('{app}')+'fbsvcmgr.exe'; +SharedFileArray[33].Filename := ExpandConstant('{app}')+'fbrmclib.dll'; +SharedFileArray[34].Filename := ExpandConstant('{app}')+'fbtracemgr.exe'; + +// FIXME +// Add in WOW64 here. end; @@ -804,7 +809,7 @@ begin RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\FirebirdSQL\Firebird\CurrentVersion','RootDirectory', FirebirdDir); if (FirebirdDir<>'') then - GetInstalledVersion(FirebirdDir+'\bin\gbak.exe', FirebirdVer); + GetInstalledVersion(FirebirdDir+'\gbak.exe', FirebirdVer); Result := FirebirdDir; end; @@ -821,7 +826,7 @@ begin RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Borland\InterBase\CurrentVersion','RootDirectory', InterBaseDir); if ( InterBaseDir <> '' ) then - GetInstalledVersion(InterBaseDir+'\bin\gbak.exe',InterBaseVer); + GetInstalledVersion(InterBaseDir+'\gbak.exe',InterBaseVer); Result := InterBaseDir; end; @@ -993,3 +998,142 @@ begin result := NOT HasWI30; end; +function SummarizeInstalledProducts: String; +var + InstallSummaryArray: TArrayofString; + product: Integer; + i: Integer; + StatusDescription: String; + InstallSummary: String; + prodstr: String; +begin + +//do nothing gracefully if we are called by accident. +if ProductsInstalledCount = 0 then + exit; + +SetArrayLength(InstallSummaryArray,ProductsInstalledCount); +for product := 0 to MaxProdInstalled -1 do begin + if (ProductsInstalledArray[product].InstallType <> NotInstalled) then begin + InstallSummaryArray[i] := Format(ProductsInstalledArray[product].Description, [ProductsInstalledArray[product].ActualVersion]); + + if (ProductsInstalledArray[product].ServerVersion <> '') then begin + if ((ProductsInstalledArray[product].InstallType AND ClassicServerInstall) = ClassicServerInstall) then + InstallSummaryArray[i] := InstallSummaryArray[i] + ' '+ExpandConstant('{cm:ClassicServerInstall}') + else + InstallSummaryArray[i] := InstallSummaryArray[i] + ' '+ExpandConstant('{cm:SuperServerInstall}') + end + else begin + if (ProductsInstalledArray[product].GBAKVersion <> '') then + InstallSummaryArray[i] := InstallSummaryArray[i] + ' '+ExpandConstant('{cm:DeveloperInstall}') + else + InstallSummaryArray[i] := InstallSummaryArray[i] + ' '+ExpandConstant('{cm:ClientInstall}') + end; + + if ((ProductsInstalledArray[product].InstallType AND BrokenInstall) = BrokenInstall) then + InstallSummaryArray[i] := InstallSummaryArray[i] + + #13 + ExpandConstant('{cm:PreviousInstallBroken}') + else + InstallSummaryArray[i] := InstallSummaryArray[i] + + #13 + ExpandConstant('{cm:PreviousInstallGood}') + ; + + i:= i+1; + end; +end; + +for i:=0 to ProductsInstalledCount-1 do + InstallSummary := InstallSummary + InstallSummaryArray[i] + #13; + +// If FB21 is installed and installed platform does not match current platform +// then notify user. +#if PlatformTarget == "x64" +If ((ProductsInstalled AND FB21_x64 ) = FB21_x64 ) then +#else +If ((ProductsInstalled AND FB21 ) = FB21 ) then +#endif + InstallSummary := InstallSummary + +#13 + ExpandConstant('{cm:InstallSummarySuffix1}') + +#13 + ExpandConstant('{cm:InstallSummarySuffix2}') + +#13 + ExpandConstant('{cm:InstallSummarySuffix3}') + +#13 + ExpandConstant('{cm:InstallSummarySuffix4}') + +#13 +; + +if ProductsInstalledCount = 1 then + StatusDescription := Format(ExpandConstant('{cm:InstalledProducts}'), [IntToStr(ProductsInstalledCount), ExpandConstant('{cm:InstalledProdCountSingular}')]) +else + StatusDescription := Format(ExpandConstant('{cm:InstalledProducts}'), [IntToStr(ProductsInstalledCount), ExpandConstant('{cm:InstalledProdCountPlural}')]); + + Result := StatusDescription + +#13 + +#13 + InstallSummary + +#13 + ExpandConstant('{cm:InstallSummaryCancel1}') + +#13 + ExpandConstant('{cm:InstallSummaryCancel2}') + +#13 + +#13 + ExpandConstant('{cm:InstallSummaryCancel3}') + +#13 +end; + +function AnalysisAssessment: boolean; +var + MsgText: String; + MsgResult: Integer; + VerString: String; +begin + result := false; + + //We've got all this information. What do we do with it? + + if ProductsInstalledCount = 0 then begin + result := true; + exit; + end; + + + //If existing install of the same majorver.minorver is + //found then we can upgrade it. + if ( (ProductsInstalledCount = 1) AND +#if PlatformTarget == "x64" + ((ProductsInstalled AND FB21_x64 ) = FB21_x64 ) ) then begin +#else + ((ProductsInstalled AND FB21 ) = FB21 ) ) then begin +#endif + result := true; + exit; + end + ; + + if ForceInstall then begin + result := true; + exit; + end; + + //Otherwise, show user the analysis report. + MsgText := SummarizeInstalledProducts; + MsgResult := MsgBox(MsgText,mbConfirmation,MB_YESNO); + if (MsgResult = IDNO ) then + result := true; + //but we don't configure + if ((InstallAndConfigure AND Configure) = Configure) then + InstallAndConfigure := InstallAndConfigure - Configure; +end; + + + +// Dummy functions to get us started +{*function UseSSTask: boolean; +begin + result := false +end; + +function UseSCTask: boolean; +begin + result := false +end; + +function UseCSTask: boolean; +begin + result := false +end; +*} \ No newline at end of file diff --git a/builds/install/arch-specific/win32/FirebirdInstallGUIFunctions.inc b/builds/install/arch-specific/win32/FirebirdInstallGUIFunctions.inc new file mode 100644 index 0000000000..e4666775b3 --- /dev/null +++ b/builds/install/arch-specific/win32/FirebirdInstallGUIFunctions.inc @@ -0,0 +1,224 @@ +(* Initial Developer's Public License. + The contents of this file are subject to the Initial Developer's Public + License Version 1.0 (the "License"). You may not use this file except + in compliance with the License. You may obtain a copy of the License at + http://www.ibphoenix.com?a=ibphoenix&page=ibp_idpl + Software distributed under the License is distributed on an "AS IS" basis, + WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + for the specific language governing rights and limitations under the + License. + + The Original Code is copyright 2007 Paul Reeves. + + The Initial Developer of the Original Code is Paul Reeves. + + All Rights Reserved. + + GUI related functions for the Firebird Installer. + + o ResizeWizardFormHeight + - Change height of Wizard Form + - Adjust the position of each control to work in new height. + + o ResizeWizardFormWidth + - Make form wider + + o MoveOuterNoteBook + - Move OuterNotebook and Bevel. + Value moved should match value passed to ResizeWizardFormWidth. + + o EnumerateObjectList; + - Simple demonstration of object enumeration. + + +*) + +var + CompGroup1Array: array of string; + CompGroup2Array: array of string; + CompGroup3Array: array of string; + CompGroupButtonsArray: array of string; + CompGroup1, CompGroup2, CompGroup3, CompGroupButtons: TStringList; + +// This is a non-exhaustive list of components that need to be repositioned +// and/or resized if the form size is changed. Use EnumerateObjectList to +// get a full list of components. +procedure SetupWizardFormComponentsArrays; +var + i, len: integer; +begin + + SetArrayLength(CompGroup1Array,24); + + CompGroup1Array[0]:='WelcomePage'; + CompGroup1Array[1]:='WelcomeLabel2'; + CompGroup1Array[2]:='InnerPage'; + CompGroup1Array[3]:='InnerNotebook'; + CompGroup1Array[4]:='LicensePage'; + CompGroup1Array[5]:='LicenseMemo'; + CompGroup1Array[6]:='PasswordPage'; + CompGroup1Array[7]:='InfoBeforePage'; + CompGroup1Array[8]:='InfoBeforeMemo'; + CompGroup1Array[9]:='UserInfoPage'; + CompGroup1Array[10]:='SelectDirPage'; + CompGroup1Array[11]:='SelectComponentsPage'; + CompGroup1Array[12]:='ComponentsList'; + CompGroup1Array[13]:='SelectProgramGroupPage'; + CompGroup1Array[14]:='SelectTasksPage'; + CompGroup1Array[15]:='TasksList'; + CompGroup1Array[16]:='ReadyPage'; + CompGroup1Array[17]:='ReadyMemo'; + CompGroup1Array[18]:='PreparingPage'; + CompGroup1Array[19]:='InstallingPage'; + CompGroup1Array[20]:='InfoAfterPage'; + CompGroup1Array[21]:='InfoAfterMemo'; + CompGroup1Array[22]:='FinishedPage'; + CompGroup1Array[23]:='OuterNotebook'; + + CompGroup1 := TStringList.create; + + for i := 0 to GetArrayLength( CompGroup1Array )-1 do begin + CompGroup1.add( CompGroup1Array[i] ); + CompGroup1.objects[i] := (WizardForm.FindComponent(CompGroup1Array[i])); + end; + + SetArrayLength(CompGroup2Array,8); + CompGroup2Array[0] := 'Bevel'; + CompGroup2Array[1] := 'BeveledLabel'; + CompGroup2Array[2] := 'LicenseAcceptedRadio'; + CompGroup2Array[3] := 'LicenseNotAcceptedRadio'; + CompGroup2Array[4] := 'DiskSpaceLabel'; + CompGroup2Array[5] := 'ComponentsDiskSpaceLabel'; + CompGroup2Array[6] := 'NoIconsCheck'; + CompGroup2Array[7] := 'RunList'; + + CompGroup2 := TStringList.create; + for i := 0 to GetArrayLength( CompGroup2Array )-1 do begin + CompGroup2.add(CompGroup2Array[i]); + CompGroup2.objects[i] := (WizardForm.FindComponent(CompGroup2Array[i])); + end; + + SetArrayLength(CompGroup3Array,1); + CompGroup3Array[0] := 'WizardBitmapImage'; + CompGroup3 := TStringList.create; + for i:=0 to GetArrayLength(CompGroup3Array)-1 do begin + CompGroup3.add(CompGroup3Array[i]); + CompGroup3.objects[i] := (WizardForm.FindComponent(CompGroup3Array[i])); + end; + + SetArrayLength(CompGroupButtonsArray,3); + CompGroupButtonsArray[0] := 'BackButton'; + CompGroupButtonsArray[1] := 'NextButton'; + CompGroupButtonsArray[2] := 'CancelButton'; + CompGroupButtons := TStringList.create; + for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do begin + CompGroupButtons.add(CompGroupButtonsArray[i]); + CompGroupButtons.objects[i] := (WizardForm.FindComponent(CompGroupButtonsArray[i])); + end; + +end; + +procedure ResizeWizardFormHeight(AValue: Integer); +var + i: integer; +begin + wizardform.height := wizardform.height+AValue; + wizardform.top := wizardform.top - (AValue div 2); + + // Group 1 - reset height of components + for i:=0 to GetArrayLength(CompGroup1Array)-1 do + TControl(CompGroup1.objects[i]).height := TControl(CompGroup1.objects[i]).height + Avalue; + + // Group 2 - reset top of components + for i:=0 to GetArrayLength(CompGroup2Array)-1 do + TControl(CompGroup2.objects[i]).top := TControl(CompGroup2.objects[i]).top + AValue; + + // Group 3 - reset top of components but keep 'centered' vertically. + for i:=0 to GetArrayLength(CompGroup3Array)-1 do + TControl( CompGroup3.objects[i]).top := TControl(CompGroup3.objects[i]).top + (AValue div 2); + + // Group Buttons - reset top of components + for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do + TControl(CompGroupButtons.objects[i]).top := TControl(CompGroupButtons.objects[i]).top + AValue; + +end; + +procedure ResizeWizardFormWidth(AValue: Integer); +var + i: integer; +begin + wizardform.width := wizardform.width + AValue; + wizardform.left := wizardform.left - (AValue div 2); + + // Group 1 - reset width of components + for i:=0 to GetArrayLength(CompGroup1Array)-1 do begin + TControl(CompGroup1.objects[i]).width := TControl(CompGroup1.objects[i]).width + Avalue; +// TControl(CompGroup1.objects[i]).left := TControl(CompGroup1.objects[i]).left + (Avalue div 2); + end; + + // Group 2 - reset left of components + for i:=0 to GetArrayLength(CompGroup2Array)-1 do begin + TControl(CompGroup2.objects[i]).left := TControl(CompGroup2.objects[i]).left + AValue; + TControl(CompGroup2.objects[i]).width := TControl(CompGroup2.objects[i]).width + (AValue div 2); + end; + + // Group 3 - reset left of components but keep 'centered' horizontally. + for i:=0 to GetArrayLength(CompGroup3Array)-1 do + TControl( CompGroup3.objects[i]).left := TControl(CompGroup3.objects[i]).left - (AValue div 2); + + // Group 2 - reset left of buttons + for i:=0 to GetArrayLength(CompGroupButtonsArray)-1 do begin + TControl(CompGroupButtons.objects[i]).left := TControl(CompGroupButtons.objects[i]).left + AValue; + end; + +end; + +procedure MoveOuterNoteBookRight(AValue: Integer); +begin + with wizardform do begin + OuterNotebook.left := wizardform.OuterNotebook.left + AValue; + Bevel.left := Bevel.left + AValue; + end; +end; + +procedure MoveOuterNoteBookLeft(AValue: Integer); +begin + with wizardform do begin + OuterNotebook.left := wizardform.OuterNotebook.left - AValue; + Bevel.left := Bevel.left - AValue; + end; +end; + +const + group1 = ' group one'; + group2 = ' group two'; + group3 = ' group three'; + group4 = ' group not allocated.'; + +procedure EnumerateObjectList; +//Walk through the components on the InnoSetup install wizard +var + Alist: TStringList; + i, j: integer; + aComponent: string; + +begin + Alist := TStringList.create; + for i := 0 to WizardForm.ComponentCount -1 do begin + aComponent := WizardForm.Components[i].name; + if CompGroup1.IndexOf( aComponent ) > -1 then + aComponent := aComponent + group1 + else if CompGroup2.IndexOf( aComponent ) > -1 then + aComponent := aComponent + group2 + else if CompGroup3.IndexOf( aComponent ) > -1 then + aComponent := aComponent + group3 + else + aComponent := aComponent + group4; + + + AList.add( aComponent ); + end; + WizardForm.INFOBEFOREMEMO.lines.assign(Alist); +end; + + diff --git a/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc b/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc index d52c73c8f4..15e3728710 100644 --- a/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc +++ b/builds/install/arch-specific/win32/FirebirdInstallSupportFunctions.inc @@ -48,6 +48,10 @@ Function Prototypes procedure CreateHelpDlg; function ShowHelpDlg: Integer; procedure CloseHelpDlg; + procedure CreateDebugDlg(aString: String; aDescription: String); + function ShowDebugDlg(aString: String; aDescription: String): Integer; + procedure CloseDebugDlg; + *) (* @@ -62,12 +66,18 @@ InnoSetup Help Extract on Windows version strings: Windows NT versions: 4.0.1381 Windows NT 4.0 5.0.2195 Windows 2000 -5.01.2600 Windows XP - or Windows XP 64-Bit Edition Version 2002 (Itanium) -5.02.3790 Windows Server 2003 - or Windows XP x64 Edition (AMD64/EM64T) - or Windows XP 64-Bit Edition Version 2003 (Itanium) -6.0.6000 Windows Vista +5.01.2600 Windows XP + or Windows XP 64-Bit Edition Version 2002 (Itanium) +5.02.3790 Windows Server 2003 + or Windows XP x64 Edition (AMD64/EM64T) + or Windows XP 64-Bit Edition Version 2003 (Itanium) +6.0.6000 Windows Vista +6.0.6001 Windows Vista with Service Pack 1 + or Windows Server 2008 +6.0.6002 Windows Vista with Service Pack 2 +6.1.7600 Windows 7 + or Windows Server 2008 R2 + *) @@ -93,9 +103,18 @@ v3.1 3.1.4000.2435 Released with a fix to address the issue discussed in KB898628. This is the latest version of Windows Installer 3.1. v4.0 4.0.6000.16386 Released with Windows Vista. -v4.0 4.0.6001.16531 or greater Released with Windows Vista SP1 and +v4.0 4.0.6001.16531 Released with Windows Vista SP1 and Windows Server 2008. - +v4.5 4.5.6002.18005 Released with Windows Vista with Service Pack 2 (SP2) + and Windows Server 2008 with Service Pack (SP2.) +v4.5 4.5.6000.20817 Released as a redistributable for Windows Vista. +v4.5 4.5.6001.22162 Released as a redistributable for Windows Server 2008 + and Windows Vista with SP1. +v4.5 4.5.6001.22159 Released as a redistributable for Windows XP with Service Pack 2 (SP2) and later, + and Windows Server 2003 with SP1 and later. +v5.0 5.0.7600.16385 or greater Released with Windows Server 2008 R2 + and Windows 7. + (NB1 - msi.dll stores the correct version number and is updated automatically by Windows Update. msiexec.exe will be the original shipped version. @@ -128,10 +147,48 @@ var Version: TWindowsVersion; begin GetWindowsVersionEx(Version); - if (Version.Major = 6) and (Version.Minor = 0) then + if ( Version.Major = 6 ) and ( Version.Minor = 0 ) and ( Version.build = 6000 )then result := true; end; +function IsVistaSP1: boolean; +var + Version: TWindowsVersion; +begin + GetWindowsVersionEx(Version); + if ( Version.Major = 6 ) and ( Version.Minor = 0 ) and ( Version.build = 6001 )then + result := true; +end; + +function IsWin2K8R1: boolean; +var + Version: TWindowsVersion; +begin + GetWindowsVersionEx(Version); + if ( Version.Major = 6 ) and ( Version.Minor = 0 ) and ( Version.build = 6001 )then + result := true; +end; + +function IsWinSeven: boolean; +var + Version: TWindowsVersion; +begin + GetWindowsVersionEx(Version); + if (Version.Major = 6) and (Version.Minor = 1) then + result := true; +end; + +//This test is identical to the test for Win7 +function IsWin2K8R2: boolean; +var + Version: TWindowsVersion; +begin + GetWindowsVersionEx(Version); + if (Version.Major = 6) and (Version.Minor = 1) then + result := true; +end; + + function IsWin2k3: boolean; var Version: TWindowsVersion; @@ -436,11 +493,6 @@ begin HelpDlg.ActiveControl := OKButton; end; -function ShowHelpDlg: Integer; -begin - result := HelpDlg.ShowModal; -end; - procedure CloseHelpDlg; begin with HelpDlg do begin @@ -449,4 +501,68 @@ begin end; end; +function ShowHelpDlg: Integer; +begin + CreateHelpDlg; + result := HelpDlg.ShowModal; + CloseHelpDlg; +end; + + + + +// Add a simple debug dialogue +var + DebugDlg: TForm; + +procedure CreateDebugDlg(aString: String; ADescription: String); +var + DebugText: TMemo; + DebugDescription: TLabel; + OKButton: TButton; +begin + DebugDlg := TForm.create(nil); + with DebugDlg do begin + BorderStyle := bsSizeable; + Position := poScreenCenter; + ClientWidth := 450; + ClientHeight := 350; + Caption := 'Firebird Installation - command-line parameters.'; + end; + DebugText := TMemo.Create(DebugDlg); + with DebugText do begin + Parent := DebugDlg; + ScrollBars := ssVertical; + Lines.Text :=aString; + Align := alTop; + Height := 200; + ReadOnly := True; + end; + OKButton := TButton.create(DebugDlg); + with OKButton do begin + Parent := DebugDlg; + Left := (Parent.width div 2) - width div 2; + top := Parent.ClientHeight - 40; + Caption := 'OK'; + ModalResult := mrOK; + end; + DebugDlg.ActiveControl := OKButton; + +end; + +procedure CloseDebugDlg; +begin + with DebugDlg do begin + Close; + Free; + end; +end; + +function ShowDebugDlg(aString: String; aDescription: String): Integer; +begin + CreateDebugDlg(aString,aDescription); + result := DebugDlg.ShowModal; + CloseDebugDlg; +end; + diff --git a/builds/install/arch-specific/win32/FirebirdInstall_30.iss b/builds/install/arch-specific/win32/FirebirdInstall_30.iss new file mode 100644 index 0000000000..ee752513a9 --- /dev/null +++ b/builds/install/arch-specific/win32/FirebirdInstall_30.iss @@ -0,0 +1,1181 @@ +; Initial Developer's Public License. +; The contents of this file are subject to the Initial Developer's Public +; License Version 1.0 (the "License"). You may not use this file except +; in compliance with the License. You may obtain a copy of the License at +; http://www.ibphoenix.com?a=ibphoenix&page=ibp_idpl +; Software distributed under the License is distributed on an "AS IS" basis, +; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +; for the specific language governing rights and limitations under the +; License. +; +; The Original Code is copyright 2001-2003 Paul Reeves for IBPhoenix. +; +; The Initial Developer of the Original Code is Paul Reeves for IBPhoenix. +; +; All Rights Reserved. +; +; Contributor(s): +; Tilo Muetze, Theo ? and Michael Rimov for improved detection +; of an existing install directory. +; Simon Carter for the WinSock2 detection. +; Philippe Makowski for internationalization and french translation +; Sergey Nikitin for migrating to ISS v5. + +; Usage Notes: +; +; This script has been designed to work with Inno Setup v5.4.2 (unicode +; version). It is available as a quick start pack from here: +; http://www.jrsoftware.org/isdl.php#qsp +; +; +; Known bugs and problems etc etc. +; +; o The uninstaller can only uninstall what it installed. +; For instance, if Firebird is installed as a service, but is actually +; running as an application when the uninstaller is run then the +; application will not be stopped and the uninstall will not complete +; cleanly. +; +; o The uninstaller does not know how to stop multiple instances of a classic +; server. They must be stopped manually. +; +; +; +#define MyAppPublisher "Firebird Project" +#define MyAppURL "http://www.firebirdsql.org/" +#define MyAppName "Firebird" +#define MyAppId "FBDBServer" + +#define FirebirdURL MyAppURL +#define UninstallBinary "{app}\firebird.exe" + +;Hard code some defaults to aid debugging and running script standalone. +;In practice, these values are set in the environment and we use the env vars. +#define MajorVer "3" +#define MinorVer "0" +#define PointRelease "0" +#define BuildNumber "0" +#define PackageNumber "0" +#define FilenameSuffix "" + + +;-------Start of Innosetup script debug flags section + +; if iss_release is undefined then iss_debug is set +; Setting iss_release implies that the defines for files, +; examples and compression are set. If debug is set then this +; section controls the settings of files, examples +; and compression. + +; A dynamically generated sed script sets the appropriate define +; See BuildExecutableInstall.bat for more details. + + +;#define iss_debug + +#ifndef iss_debug +#define iss_release +#endif + +;;;;;;;;;;;;;;;;;;;;;;;;; +#ifdef iss_release +#define files +#define examples +#define compression +#else +#define iss_debug +#endif +;-------------------- + +;-------------------- +#ifdef iss_debug +;Be more verbose +#pragma option -v+ +#pragma verboselevel 9 + +;Useful for cases where engine is built without examples. +#undef examples +;Useful when testing structure of script - adding files takes time. +#undef files +;We speed up compilation (and hence testing) by not compressing contents. +#undef compression + +;Default to x64 for testing +#define PlatformTarget "x64" +#endif +;-------#ifdef iss_debug + +;-------end of Innosetup script debug flags section + + +;-------Start of Innosetup script + + +;---- These three defines need a bit of tidying up in the near future, +; but for now they must stay, as the BuildExecutableInstall.bat +; uses them. +#define release +#define no_pdb +;#define i18n + + +;------If necessary we can turn off i18n by uncommenting this undefine +;#undef i18n + +;----- If we are debugging the script (and not executed from command prompt) +;----- there is no guarantee that the environment variable exists. However an +;----- expression such as #define FB_MAJOR_VER GetEnv("FB_MAJOR_VER") will +;----- 'define' the macro anyway so we need to test for a valid env var before +;----- we define our macro. +#if Len(GetEnv("FB_MAJOR_VER")) > 0 +#define FB_MAJOR_VER GetEnv("FB_MAJOR_VER") +#endif +#ifdef FB_MAJOR_VER +#define MajorVer FB_MAJOR_VER +#endif + +#if Len(GetEnv("FB_MINOR_VER")) > 0 +#define FB_MINOR_VER GetEnv("FB_MINOR_VER") +#endif +#ifdef FB_MINOR_VER +#define MinorVer FB_MINOR_VER +#endif + +#if Len(GetEnv("FB_REV_NO")) > 0 +#define FB_REV_NO GetEnv("FB_REV_NO") +#endif +#ifdef FB_REV_NO +#define PointRelease FB_REV_NO +#endif + +#if Len(GetEnv("FB_BUILD_NO")) > 0 +#define FB_BUILD_NO GetEnv("FB_BUILD_NO") +#endif +#ifdef FB_BUILD_NO +#define BuildNumber FB_BUILD_NO +#endif + +#if Len(GetEnv("FBBUILD_PACKAGE_NUMBER")) > 0 +#define FBBUILD_PACKAGE_NUMBER GetEnv("FBBUILD_PACKAGE_NUMBER") +#endif +#ifdef FBBUILD_PACKAGE_NUMBER +#define PackageNumber FBBUILD_PACKAGE_NUMBER +#endif + +#if Len(GetEnv("FBBUILD_FILENAME_SUFFIX")) > 0 +#define FBBUILD_FILENAME_SUFFIX GetEnv("FBBUILD_FILENAME_SUFFIX") +#endif +#ifdef FBBUILD_FILENAME_SUFFIX +#define FilenameSuffix FBBUILD_FILENAME_SUFFIX +#if pos('_',FilenameSuffix) == 0 +#define FilenameSuffix "_" + FilenameSuffix +#endif +#endif + + +#if BuildNumber == "0" +#define MyAppVerString MajorVer + "." + MinorVer + "." + PointRelease +#else +#define MyAppVerString MajorVer + "." + MinorVer + "." + PointRelease + "." + BuildNumber +#endif +#define MyAppVerName MyAppName + " " + MyAppVerString + +;---- If we haven't already set PlatformTarget then pick it up from the environment. +#ifndef PlatformTarget +#define PlatformTarget GetEnv("FB_TARGET_PLATFORM") +#endif +#if PlatformTarget == "" +#define PlatformTarget "win32" +#endif + +;If we are still under development we can ignore some missing files. +#if GetEnv("FBBUILD_PROD_STATUS") == "DEV" +#define SkipFileIfDevStatus " skipifsourcedoesntexist " +#endif + +;This location is relative to SourceDir (declared below) +#define FilesDir="output_" + PlatformTarget +#if PlatformTarget == "x64" +#define WOW64Dir="output_win32" +#endif +#define msvc_version 10 + +;BaseVer should be used for all v2.5.n installs. +;This allows us to upgrade silently from 2.5.m to 2.5.n +#define BaseVer MajorVer + "_" + MinorVer +#define AppVer MajorVer + "_" + MinorVer +#define GroupnameVer MajorVer + "." + MinorVer + +;These variables are set in BuildExecutableInstall +#define FB15_cur_ver GetEnv("FBBUILD_FB15_CUR_VER") +#define FB20_cur_ver GetEnv("FBBUILD_FB20_CUR_VER") +#define FB21_cur_ver GetEnv("FBBUILD_FB21_CUR_VER") +#define FB25_cur_ver GetEnv("FBBUILD_FB25_CUR_VER") +#define FB_cur_ver FB25_cur_ver + +; We can save space by shipping a pdb package that just includes +; the pdb files. It would then upgrade an existing installation, +; however, it wouldn't work on its own. This practice would go +; against previous policy, which was to make the pdb package a +; complete package. OTOH, now we have 32-bit and 64-bit platforms +; to support we would benefit from slimming down the pdb packages. +;;Uncomment the following lines to build the pdb package +;;with just the pdb files. +;#ifdef ship_pdb +;#undef files +;#undef examples +;#endif + + +;Some more strings to distinguish the name of final executable +#ifdef ship_pdb +#define pdb_str="_pdb" +#else +#define pdb_str="" +#endif +#ifdef debug +#define debug_str="_debug" +#else +#define debug_str="" +#endif + + +[Setup] +AppName={#MyAppName} +;The following is important - all ISS install packages should +;duplicate this. See the InnoSetup help for details. +#if PlatformTarget == "x64" +AppID={#MyAppId}_{#BaseVer}_{#PlatformTarget} +#else +AppID={#MyAppId}_{#BaseVer} +#endif +AppVerName={#MyAppVerName} ({#PlatformTarget}) +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppURL} +AppUpdatesURL={#MyAppURL} +AppVersion={#MyAppVerString} +VersionInfoVersion={#MyAppVerString} + +SourceDir=..\..\..\..\ +OutputBaseFilename={#MyAppName}-{#MyAppVerString}_{#PackageNumber}_{#PlatformTarget}{#debug_str}{#pdb_str}{#FilenameSuffix} +;OutputManifestFile={#MyAppName}-{#MyAppVerString}_{#PackageNumber}_{#PlatformTarget}{#debug_str}{#pdb_str}{#FilenameSuffix}_Setup-Manifest.txt +OutputDir=builds\install_images +;!!! These directories are as seen from SourceDir !!! +#define ScriptsDir "builds\install\arch-specific\win32" +#define LicensesDir "builds\install\misc" +#define GenDir "gen\readmes" +LicenseFile={#LicensesDir}\IPLicense.txt + +WizardImageFile={#ScriptsDir}\firebird_install_logo1.bmp +WizardSmallImageFile={#ScriptsDir}\firebird_install_logo1.bmp + +DefaultDirName={code:ChooseInstallDir|{pf}\Firebird\Firebird_{#AppVer}} +DefaultGroupName=Firebird {#GroupnameVer} ({#PlatformTarget}) + +UninstallDisplayIcon={code:ChooseUninstallIcon|{#UninstallBinary}} +#ifndef compression +Compression=none +#else +SolidCompression=yes +#endif + +ShowUndisplayableLanguages={#defined iss_debug} +AllowNoIcons=true +AlwaysShowComponentsList=true +PrivilegesRequired=admin + + +#if PlatformTarget == "x64" +ArchitecturesAllowed=x64 +ArchitecturesInstallIn64BitMode=x64 +#endif + +;This feature is incomplete, as more thought is required. +#ifdef setuplogging +;New with IS 5.2 +SetupLogging=yes +#endif + +[Languages] +Name: en; MessagesFile: compiler:Default.isl; InfoBeforeFile: {#GenDir}\installation_readme.txt; InfoAfterFile: {#GenDir}\readme.txt; +#ifdef i18n +Name: ba; MessagesFile: compiler:Languages\Bosnian.isl; InfoBeforeFile: {#GenDir}\ba\Instalacija_ProcitajMe.txt; InfoAfterFile: {#GenDir}\ba\ProcitajMe.txt; +Name: cz; MessagesFile: compiler:Languages\Czech.isl; InfoBeforeFile: {#GenDir}\cz\instalace_ctime.txt; InfoAfterFile: {#GenDir}\cz\ctime.txt; +Name: fr; MessagesFile: compiler:Languages\French.isl; InfoBeforeFile: {#GenDir}\fr\installation_lisezmoi.txt; InfoAfterFile: {#GenDir}\fr\lisezmoi.txt; +Name: de; MessagesFile: compiler:Languages\German.isl; InfoBeforeFile: {#GenDir}\de\installation_liesmich.txt; InfoAfterFile: {#GenDir}\de\liesmich.txt; +Name: es; MessagesFile: compiler:Languages\Spanish.isl; InfoBeforeFile: {#GenDir}\es\leame_instalacion.txt; InfoAfterFile: {#GenDir}\es\leame.txt; +Name: hu; MessagesFile: compiler:Languages\Hungarian.isl; InfoBeforeFile: {#GenDir}\hu\telepitesi_segedlet.txt; InfoAfterFile: {#GenDir}\hu\olvass_el.txt; +Name: it; MessagesFile: compiler:Languages\Italian.isl; InfoBeforeFile: {#GenDir}\it\leggimi_installazione.txt; InfoAfterFile: {#GenDir}\it\leggimi.txt +Name: pl; MessagesFile: compiler:Languages\Polish.isl; InfoBeforeFile: {#GenDir}\pl\instalacja_czytajto.txt; InfoAfterFile: {#GenDir}\pl\czytajto.txt; +Name: pt; MessagesFile: compiler:Languages\Portuguese.isl; InfoBeforeFile: {#GenDir}\pt\instalacao_leia-me.txt; InfoAfterFile: {#GenDir}\pt\leia-me.txt +Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: {#GenDir}\ru\installation_readme.txt; InfoAfterFile: {#GenDir}\ru\readme.txt; +;Name: si; MessagesFile: compiler:Languages\Slovenian.isl; InfoBeforeFile: {#GenDir}\si\instalacija_precitajMe.txt; InfoAfterFile: {#GenDir}\readme.txt; +#endif + +[Messages] +en.BeveledLabel=English +#ifdef i18n +ba.BeveledLabel=Bosanski +cz.BeveledLabel=Czech +fr.BeveledLabel=Français +de.BeveledLabel=Deutsch +es.BeveledLabel=Español +hu.BeveledLabel=Magyar +it.BeveledLabel=Italiano +pl.BeveledLabel=Polski +pt.BeveledLabel=Português +ru.BeveledLabel=Ðóññêèé +;si.BeveledLabel=Slovenski +#endif + +[CustomMessages] +#include "custom_messages.inc" +#ifdef i18n +#include "ba\custom_messages_ba.inc" +#include "cz\custom_messages_cz.inc" +#include "fr\custom_messages_fr.inc" +#include "de\custom_messages_de.inc" +#include "es\custom_messages_es.inc" +#include "hu\custom_messages_hu.inc" +#include "it\custom_messages_it.inc" +#include "pl\custom_messages_pl.inc" +#include "pt\custom_messages_pt.inc" +#include "ru\custom_messages_ru.inc" +;#include "si\custom_messages_si.inc" +#endif + +#ifdef iss_debug +; By default, the languages available at runtime depend on the user's +; code page. A user with the Western European code page set will not +; even see that we support installation with the Slovenian language +; for example. +; It can be useful when debugging to force the display of all available +; languages by setting LanguageCodePage to 0. Of course, if the langauge +; is not supported by the user's current code page it be unusable. +[LangOptions] +LanguageCodePage=0 +#endif + +[Types] +Name: ServerInstall; Description: {cm:ServerInstall} +Name: DeveloperInstall; Description: {cm:DeveloperInstall} +Name: ClientInstall; Description: {cm:ClientInstall} +Name: CustomInstall; Description: {cm:CustomInstall}; Flags: iscustom; + +[Components] +Name: ServerComponent; Description: {cm:ServerComponent}; Types: ServerInstall; +Name: DevAdminComponent; Description: {cm:DevAdminComponent}; Types: ServerInstall DeveloperInstall; +Name: ClientComponent; Description: {cm:ClientComponent}; Types: ServerInstall DeveloperInstall ClientInstall CustomInstall; Flags: fixed disablenouninstallwarning; + +[Tasks] +;Server tasks +Name: UseClassicServerTask; Description: {cm:RunCS}; GroupDescription: {cm:ServerTaskDescription}; Components: ServerComponent; MinVersion: 4.0,4.0; Flags: exclusive; Check: ConfigureFirebird; +Name: UseSuperClassicTask; Description: {cm:RunSC}; GroupDescription: {cm:ServerTaskDescription}; Components: ServerComponent; MinVersion: 4.0,4.0; Flags: exclusive; Check: ConfigureFirebird; +Name: UseSuperServerTask; Description: {cm:RunSS}; GroupDescription: {cm:ServerTaskDescription}; Components: ServerComponent; MinVersion: 4.0,4.0; Flags: exclusive; Check: ConfigureFirebird; +Name: UseSuperServerTask\UseGuardianTask; Description: {cm:UseGuardianTask}; Components: ServerComponent; MinVersion: 4.0,4.0; Check: ConfigureFirebird; +;Name: UseGuardianTask; Description: {cm:UseGuardianTask}; GroupDescription: {cm:UseGuardianTaskDecription}; Components: ServerComponent; MinVersion: 4.0,4.0; Check: ConfigureFirebird; +;Allow user to not install cpl applet +Name: UseSuperServerTask\InstallCPLAppletTask; Description: {cm:InstallCPLAppletTask}; Components: ServerComponent; MinVersion: 4.0,4.0; Check: ShowInstallCPLAppletTask; +Name: UseApplicationTask; Description: {cm:UseApplicationTaskMsg}; GroupDescription: {cm:TaskGroupDescription}; Components: ServerComponent; MinVersion: 4,4; Flags: exclusive; Check: ConfigureFirebird; +Name: UseServiceTask; Description: {cm:UseServiceTask}; GroupDescription: {cm:TaskGroupDescription}; Components: ServerComponent; MinVersion: 0,4; Flags: exclusive; Check: ConfigureFirebird; +Name: AutoStartTask; Description: {cm:AutoStartTask}; Components: ServerComponent; MinVersion: 4,4; Check: ConfigureFirebird; +;Name: MenuGroupTask; Description: Create a Menu &Group; Components: DevAdminComponent; MinVersion: 4,4 +;Copying of client libs to +Name: CopyFbClientToSysTask; Description: {cm:CopyFbClientToSysTask}; Components: ClientComponent; MinVersion: 4,4; Flags: Unchecked; Check: ShowCopyFbClientLibTask; +Name: CopyFbClientAsGds32Task; Description: {cm:CopyFbClientAsGds32Task}; Components: ClientComponent; MinVersion: 4,4; Check: ShowCopyGds32Task; + + +[Run] +;#FIXME - how are we installing the runtime? +#if msvc_version == 8 + +#endif +#if msvc_version == 8 +Filename: msiexec.exe; Parameters: "/qn /i ""{tmp}\vccrt{#msvc_version}_Win32.msi"" /L*v ""{tmp}\vccrt{#msvc_version}_Win32.log"" "; StatusMsg: "Installing MSVC 32-bit runtime libraries to system directory"; Check: HasWI30; Components: ClientComponent; +#if PlatformTarget == "x64" +Filename: msiexec.exe; Parameters: "/qn /i ""{tmp}\vccrt{#msvc_version}_x64.msi"" /L*v ""{tmp}\vccrt{#msvc_version}_x64.log"" "; StatusMsg: "Installing MSVC 64-bit runtime libraries to system directory"; Check: HasWI30; Components: ClientComponent; +#endif +#endif + +;Only register Firebird if we are installing AND configuring +Filename: {app}\instreg.exe; Parameters: "install "; StatusMsg: {cm:instreg}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: ConfigureFirebird; + +Filename: {app}\instclient.exe; Parameters: "install fbclient"; StatusMsg: {cm:instclientCopyFbClient}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyFBClientLib; +Filename: {app}\instclient.exe; Parameters: "install gds32"; StatusMsg: {cm:instclientGenGds32}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyGds32 +#if PlatformTarget == "x64" +Filename: {app}\WOW64\instclient.exe; Parameters: "install fbclient"; StatusMsg: {cm:instclientCopyFbClient}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized 32bit; Check: CopyFBClientLib; +Filename: {app}\WOW64\instclient.exe; Parameters: "install gds32"; StatusMsg: {cm:instclientGenGds32}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized 32bit; Check: CopyGds32 +#endif + +;If on NT/Win2k etc and 'Install and start service' requested +;First, if installing service we must try and remove remnants of old service. Otherwise the new install will fail and when we start the service the old service will be started. +Filename: {app}\instsvc.exe; Parameters: "remove "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird; +Filename: {app}\instsvc.exe; Parameters: "install {code:ServiceStartFlags} "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird; +Filename: {app}\instsvc.exe; Description: {cm:instsvcStartQuestion}; Parameters: "start {code:ServiceName} "; StatusMsg: {cm:instsvcStartMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized postinstall runascurrentuser; Tasks: UseServiceTask; Check: StartEngine +;If 'start as application' requested +Filename: {code:StartApp|{app}\firebird.exe}; Description: {cm:instappStartQuestion}; Parameters: -a; StatusMsg: {cm:instappStartMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: nowait postinstall; Tasks: UseApplicationTask; Check: StartEngine + +Filename: {app}\gsec.exe; Parameters: "{code:InitSecurityDb} "; StatusMsg: {cm:initSecurityDb}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized postinstall runascurrentuser; Check: ConfigureFirebird; + + +;This is a preliminary test of jumping to a landing page. In practice, we are going to need to know the users language and the version number they have installed. +Filename: "{#MyAppURL}/afterinstall"; Description: "After installation - What Next?"; Flags: postinstall shellexec skipifsilent; Components: ServerComponent DevAdminComponent; + +[Registry] +;If user has chosen to start as App they may well want to start automatically. That is handled by a function below. +;Unless we set a marker here the uninstall will leave some annoying debris. +Root: HKLM; Subkey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: Firebird; ValueData: ; Flags: uninsdeletevalue; Tasks: UseApplicationTask; Check: ConfigureFirebird; + +;This doesn't seem to get cleared automatically by instreg on uninstall, so lets make sure of it +Root: HKLM; Subkey: "SOFTWARE\Firebird Project"; Flags: uninsdeletekeyifempty; Components: ClientComponent DevAdminComponent ServerComponent + +;Clean up Invalid registry entries from previous installs. +Root: HKLM; Subkey: "SOFTWARE\FirebirdSQL"; ValueType: none; Flags: deletekey; + +;User _may_ be installing over an existing 1.5 install, and it may have been set to run as application on startup +;so we had better delete this entry unless they have chosen to autostart as application +; - except that this seems to be broken. Bah! +;Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; Valuetype: none; ValueName: 'Firebird'; ValueData: ''; flags: deletevalue; Check: IsNotAutoStartApp; +[Icons] +;TODO - get correct params for the different server flavours +Name: {group}\Firebird SuperServer; Filename: {app}\firebird.exe; Parameters: -a; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallServerIcon; IconIndex: 0; Components: ServerComponent; Comment: Run Firebird Superserver (without guardian) +Name: {group}\Firebird SuperClassic; Filename: {app}\firebird.exe; Parameters: -a -m; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallServerIcon; IconIndex: 0; Components: ServerComponent; Comment: Run Firebird Superserver (without guardian) +Name: {group}\Firebird Classic; Filename: {app}\firebird.exe; Parameters: -a; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallServerIcon; IconIndex: 0; Components: ServerComponent; Comment: Run Firebird Superserver (without guardian) +Name: {group}\Firebird Guardian; Filename: {app}\fbguard.exe; Parameters: -a; Flags: runminimized; MinVersion: 4.0,4.0; Check: InstallGuardianIcon; IconIndex: 1; Components: ServerComponent; Comment: Run Firebird Super Server (with guardian) +Name: {group}\Firebird ISQL Tool; Filename: {app}\isql.exe; Parameters: -z; WorkingDir: {app}; MinVersion: 4.0,4.0; Comment: {cm:RunISQL} +Name: {group}\Firebird {#FB_cur_ver} Release Notes; Filename: {app}\doc\Firebird_v{#FB_cur_ver}.ReleaseNotes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {cm:ReleaseNotes} +#ifdef FB25_FULL_DOCS +;dummy define. We don't yet have full docs, so lets not create links +Name: {group}\Firebird {#FB_cur_ver} Installation Guide; Filename: {app}\doc\Firebird_v{#FB_cur_ver}.InstallationGuide.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} {cm:InstallationGuide} +Name: {group}\Firebird {#FB_cur_ver} Bug Fixes; Filename: {app}\doc\Firebird_v{#FB_cur_ver}.BugFixes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} {cm:BugFixes} +#endif +#define DONT_INCLUDE_FB21_DOCS +#ifndef DONT_INCLUDE_FB21_DOCS +; dummy define. for now (beta 1) we include Fb 2.1 docs. +Name: {group}\Firebird {#FB21_cur_ver} Release Notes; Filename: {app}\doc\Firebird_v{#FB21_cur_ver}.ReleaseNotes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {cm:ReleaseNotes} +Name: {group}\Firebird {#FB21_cur_ver} Installation Guide; Filename: {app}\doc\Firebird_v{#FB21_cur_ver}.InstallationGuide.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} {cm:InstallationGuide} +Name: {group}\Firebird {#FB21_cur_ver} Bug Fixes; Filename: {app}\doc\Firebird_v{#FB21_cur_ver}.BugFixes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} {cm:BugFixes} +#endif +Name: {group}\Firebird {#GroupnameVer} Quick Start Guide; Filename: {app}\doc\Firebird-2.5-QuickStart.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {#FB_cur_ver} +Name: "{group}\After Installation"; Filename: "{app}\doc\After_Installation.url"; Comment: "New User? Here's a quick guide to what you should do next." +Name: "{group}\Firebird Web-site"; Filename: "{app}\doc\firebirdsql.org.url" +;Always install the original english version +Name: {group}\{cm:IconReadme,{#FB_cur_ver}}; Filename: {app}\readme.txt; MinVersion: 4.0,4.0; +#ifdef i18n +;And install translated readme.txt if non-default language is chosen. +Name: {group}\{cm:IconReadme,{#FB_cur_ver}}; Filename: {app}\{cm:ReadMeFile}; MinVersion: 4.0,4.0; Components: DevAdminComponent; Check: NonDefaultLanguage; +#endif +Name: {group}\{cm:Uninstall,{#FB_cur_ver}}; Filename: {uninstallexe}; Comment: Uninstall Firebird + +[Files] +#ifdef files +Source: {#LicensesDir}\IPLicense.txt; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion; +Source: {#LicensesDir}\IDPLicense.txt; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion +Source: {#ScriptsDir}\After_Installation.url; DestDir: {app}\doc; Components: ServerComponent DevAdminComponent; Flags: sharedfile ignoreversion +Source: {#ScriptsDir}\firebirdsql.org.url; DestDir: {app}\doc; Components: ServerComponent DevAdminComponent; Flags: sharedfile ignoreversion +;Always install the original english version +Source: {#GenDir}\readme.txt; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion; +#ifdef i18n +;Translated files +Source: {#GenDir}\ba\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: ba; +Source: {#GenDir}\cz\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: cz; +Source: {#GenDir}\fr\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: fr; +Source: {#GenDir}\de\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: de; +Source: {#GenDir}\es\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: es; +Source: {#GenDir}\hu\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: hu; +Source: {#GenDir}\it\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: it; +Source: {#GenDir}\pl\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pl; +Source: {#GenDir}\pt\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pt; +Source: {#GenDir}\ru\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: ru; +;Source: {#GenDir}\si\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: si; +#endif +Source: {#FilesDir}\firebird.conf; DestDir: {app}; DestName: firebird.conf.default; Components: ServerComponent; check: FirebirdConfExists; +Source: {#FilesDir}\firebird.conf; DestDir: {app}; DestName: firebird.conf; Components: ServerComponent; Flags: uninsneveruninstall; check: NoFirebirdConfExists +Source: {#FilesDir}\fbtrace.conf; DestDir: {app}; DestName: fbtrace.conf.default; Components: ServerComponent; check: fbtraceConfExists; +Source: {#FilesDir}\fbtrace.conf; DestDir: {app}; DestName: fbtrace.conf; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist; check: NofbtraceConfExists; +Source: {#FilesDir}\aliases.conf; DestDir: {app}; Components: ClientComponent; Flags: uninsneveruninstall onlyifdoesntexist +Source: {#FilesDir}\security3.fdb; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall onlyifdoesntexist +Source: {#FilesDir}\firebird.msg; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\firebird.log; DestDir: {app}; Components: ServerComponent; Flags: uninsneveruninstall skipifsourcedoesntexist external dontcopy + +Source: {#FilesDir}\gbak.exe; DestDir: {app}; Components: DevAdminComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\gfix.exe; DestDir: {app}; Components: DevAdminComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\gpre.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\gsec.exe; DestDir: {app}; Components: DevAdminComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\gsplit.exe; DestDir: {app}; Components: DevAdminComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\gstat.exe; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\fbguard.exe; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\firebird.exe; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\fb_lock_print.exe; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\ib_util.dll; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\instclient.exe; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\instreg.exe; DestDir: {app}; Components: ClientComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\instsvc.exe; DestDir: {app}; Components: ServerComponent; MinVersion: 0,4.0; Flags: sharedfile ignoreversion +Source: {#FilesDir}\isql.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\nbackup.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\qli.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\fbsvcmgr.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\fbtracemgr.exe; DestDir: {app}; Components: DevAdminComponent; Flags: ignoreversion +Source: {#FilesDir}\fbclient.dll; DestDir: {app}; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder +#if PlatformTarget == "x64" +Source: {#WOW64Dir}\fbclient.dll; DestDir: {app}\WOW64; Components: ClientComponent; Flags: overwritereadonly sharedfile promptifolder +Source: {#WOW64Dir}\instclient.exe; DestDir: {app}\WOW64; Components: ClientComponent; Flags: sharedfile ignoreversion +#endif +Source: {#FilesDir}\icuuc30.dll; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\icuin30.dll; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +Source: {#FilesDir}\icudt30.dll; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +#if PlatformTarget =="Win32" +Source: {#FilesDir}\fbrmclib.dll; DestDir: {app}; Components: ServerComponent; Flags: sharedfile ignoreversion +#endif + +;Rules for installation of MS runtimes are simplified with MSVC10 +;We just install the runtimes into the install dir. + +#if msvc_version >= 10 +Source: {#FilesDir}\msvcr{#msvc_version}?.dll; DestDir: {app}; Components: ClientComponent; Flags: sharedfile; +#if PlatformTarget == "x64" +;If we are installing on x64 we need some 32-bit libraries for compatibility with 32-bit applications +Source: {#WOW64Dir}\msvcr{#msvc_version}?.dll; DestDir: {app}\WOW64; Components: ClientComponent; Flags: sharedfile; +#endif +#endif /* if msvc_version >= 10 */ + +;#if msvc_version == 8 +;;Try to install CRT libraries to via msi, _IF_ msvc_version is 8. +;#if PlatformTarget == "x64" +;;MinVersion 0,5.0 means no version of Win9x and at least Win2k if NT O/S +;;In addition, O/S must have Windows Installer 3.0. +;Source: {#FilesDir}\system32\vccrt8_x64.msi; DestDir: {tmp}; Check: HasWI30; MinVersion: 0,5.0; Components: ClientComponent; +;Source: {#WOW64Dir}\system32\vccrt8_Win32.msi; DestDir: {tmp}; Check: HasWI30; MinVersion: 0,5.0; Components: ClientComponent; +;#else +;Source: {#FilesDir}\system32\vccrt8_Win32.msi; DestDir: {tmp}; Check: HasWI30; MinVersion: 0,5.0; Components: ClientComponent; +;#endif +; +;;Otherwise, have a go at copying the files into . +;Source: {#FilesDir}\msvcr{#msvc_version}?.dll; DestDir: {sys}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;Source: {#FilesDir}\msvcp{#msvc_version}?.dll; DestDir: {sys}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;Source: {#FilesDir}\Microsoft.VC80.CRT.manifest; DestDir: {sys}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;#if PlatformTarget == "x64" +;Source: {#WOW64Dir}\msvcr{#msvc_version}?.dll; DestDir: {syswow64}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;Source: {#WOW64Dir}\msvcp{#msvc_version}?.dll; DestDir: {syswow64}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;Source: {#WOW64Dir}\Microsoft.VC80.CRT.manifest; DestDir: {syswow64}; Check: HasNotWI30; Components: ClientComponent; Flags: sharedfile uninsneveruninstall; +;#endif +;#endif /* if msvc_version == 8 */ + +;Docs +Source: {#ScriptsDir}\installation_scripted.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: skipifsourcedoesntexist ignoreversion +Source: {#ScriptsDir}\installation_scripted.txt; DestDir: {tmp}; Flags: DontCopy; +Source: {#FilesDir}\doc\*.*; DestDir: {app}\doc; Components: DevAdminComponent; Flags: skipifsourcedoesntexist ignoreversion +Source: {#FilesDir}\doc\sql.extensions\*.*; DestDir: {app}\doc\sql.extensions; Components: DevAdminComponent; Flags: skipifsourcedoesntexist ignoreversion + +;Other stuff +Source: {#FilesDir}\help\*.*; DestDir: {app}\help; Components: DevAdminComponent; Flags: ignoreversion; +Source: {#FilesDir}\include\*.*; DestDir: {app}\include; Components: DevAdminComponent; Flags: ignoreversion; +Source: {#FilesDir}\intl\fbintl.dll; DestDir: {app}\intl; Components: ServerComponent; Flags: sharedfile ignoreversion; +Source: {#FilesDir}\intl\fbintl.conf; DestDir: {app}\intl; Components: ServerComponent; Flags: onlyifdoesntexist +Source: {#FilesDir}\lib\*.*; DestDir: {app}\lib; Components: DevAdminComponent; Flags: ignoreversion; +#if PlatformTarget == "x64" +Source: {#WOW64Dir}\lib\*.lib; DestDir: {app}\WOW64\lib; Components: DevAdminComponent; Flags: ignoreversion +#endif +Source: {#FilesDir}\UDF\ib_udf.dll; DestDir: {app}\UDF; Components: ServerComponent; Flags: sharedfile ignoreversion; +Source: {#FilesDir}\UDF\fbudf.dll; DestDir: {app}\UDF; Components: ServerComponent; Flags: sharedfile ignoreversion; +Source: {#FilesDir}\UDF\*.sql; DestDir: {app}\UDF; Components: ServerComponent; Flags: ignoreversion; +Source: {#FilesDir}\UDF\*.txt; DestDir: {app}\UDF; Components: ServerComponent; Flags: ignoreversion; + +Source: {#FilesDir}\plugins\*.dll; DestDir: {app}\plugins; Components: ServerComponent; Flags: ignoreversion; + +Source: {#FilesDir}\misc\*.*; DestDir: {app}\misc; Components: ServerComponent; Flags: ignoreversion; +Source: {#FilesDir}\misc\upgrade\security\*.*; DestDir: {app}\misc\upgrade\security; Components: ServerComponent; Flags: ignoreversion; +Source: {#FilesDir}\misc\upgrade\ib_udf\*.*; DestDir: {app}\misc\upgrade\ib_udf; Components: ServerComponent; Flags: ignoreversion; +Source: {#FilesDir}\misc\upgrade\metadata\*.*; DestDir: {app}\misc\upgrade\metadata; Components: ServerComponent; Flags: ignoreversion; + +;Note - Win9x requires 8.3 filenames for the uninsrestartdelete option to work +Source: {#FilesDir}\system32\Firebird2Control.cpl; DestDir: {sys}; Components: ServerComponent; MinVersion: 0,4.0; Flags: sharedfile ignoreversion promptifolder restartreplace uninsrestartdelete; Check: InstallCPLApplet +Source: {#FilesDir}\system32\Firebird2Control.cpl; DestDir: {sys}; Destname: FIREBI~1.CPL; Components: ServerComponent; MinVersion: 4.0,0; Flags: sharedfile ignoreversion promptifolder restartreplace uninsrestartdelete; Check: InstallCPLApplet +#endif /* files */ + +#ifdef examples +Source: {#FilesDir}\examples\*.*; DestDir: {app}\examples; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\api\*.*; DestDir: {app}\examples\api; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\build_win32\*.*; DestDir: {app}\examples\build_win32; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\dyn\*.*; DestDir: {app}\examples\dyn; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\empbuild\*.*; DestDir: {app}\examples\empbuild; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\include\*.*; DestDir: {app}\examples\include; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\stat\*.*; DestDir: {app}\examples\stat; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +Source: {#FilesDir}\examples\udf\*.*; DestDir: {app}\examples\udf; Components: DevAdminComponent; Flags: ignoreversion {#SkipFileIfDevStatus}; +#endif + +#ifdef ship_pdb +Source: {#FilesDir}\fbclient.pdb; DestDir: {app}; Components: ClientComponent; +Source: {#FilesDir}\firebird.pdb; DestDir: {app}; Components: ServerComponent; +;Source: {#FilesDir}\fbembed.pdb; DestDir: {app}; Components: ClientComponent; +#if PlatformTarget == "x64" +Source: {#WOW64Dir}\fbclient.pdb; DestDir: {app}\WOW64; Components: ClientComponent; +#endif +#endif + +[UninstallRun] +Filename: {app}\instsvc.exe; Parameters: "stop {code:ServiceName} "; StatusMsg: {cm:instsvcStopMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; RunOnceId: StopService +Filename: {app}\instsvc.exe; Parameters: "remove {code:ServiceName} "; StatusMsg: {cm:instsvcRemove}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; RunOnceId: RemoveService +Filename: {app}\instclient.exe; Parameters: " remove gds32"; StatusMsg: {cm:instclientDecLibCountGds32}; MinVersion: 4.0,4.0; Flags: runminimized; +Filename: {app}\instclient.exe; Parameters: " remove fbclient"; StatusMsg: {cm:instclientDecLibCountFbClient}; MinVersion: 4.0,4.0; Flags: runminimized; +#if PlatformTarget == "x64" +Filename: {app}\wow64\instclient.exe; Parameters: " remove gds32"; StatusMsg: {cm:instclientDecLibCountGds32}; MinVersion: 4.0,4.0; Flags: runminimized 32bit; +Filename: {app}\wow64\instclient.exe; Parameters: " remove fbclient"; StatusMsg: {cm:instclientDecLibCountFbClient}; MinVersion: 4.0,4.0; Flags: runminimized 32bit; +#endif +Filename: {app}\instreg.exe; Parameters: " remove"; StatusMsg: {cm:instreg}; MinVersion: 4.0,4.0; Flags: runminimized; RunOnceId: RemoveRegistryEntry + +[UninstallDelete] +Type: files; Name: {app}\*.lck +Type: files; Name: {app}\*.evn +Type: dirifempty; Name: {app} + +[_ISTool] +EnableISX=true + +[Code] +program Setup; + +//Var +// ProductVersion = '1.5.0'; + +// Some global variables are also in FirebirdInstallEnvironmentChecks.inc +// This is not ideal, but then this scripting environment is not ideal, either. +// The basic point of the include files is to isolate chunks of code that are +// a) Form a module or have common functionality +// b) Debugged. +// This hopefully keeps the main script simpler to follow. + +Var + InstallRootDir: String; + FirebirdConfSaved: String; + ForceInstall: Boolean; // If /force set on command-line we install _and_ + // configure. Default is to install and configure only if + // no other working installation is found (unless we are installing + // over the same version) + + //These three command-line options change the default behaviour + // during a scripted install + // They also control whether their associated task checkboxes are displayed + // during an interactive install + NoCPL: Boolean; // pass /nocpl on command-line. + NoLegacyClient: Boolean; // pass /nogds32 on command line. + CopyFbClient: Boolean; // pass /copyfbclient on command line. + + // Options for scripted uninstall. + CleanUninstall: Boolean; // If /clean is passed to the uninstaller it will delete + // user config files - firebird.conf, firebird.log, + // aliases.conf, fbtrace.conf and the security database. + + SYSDBAName: String; // Name of SYSDBA + SYSDBAPassword: String; // SYSDBA password + +#ifdef setuplogging + OkToCopyLog : Boolean; // Set when installation is complete. +#endif + +#include "FirebirdInstallSupportFunctions.inc" + +#include "FirebirdInstallEnvironmentChecks.inc" + +#include "FirebirdInstallGUIFunctions.inc" + + +var + AdminUserPage: TInputQueryWizardPage; + +procedure InitializeWizard; +begin + + { Create a page to grab the new SYSDBA password } + AdminUserPage := CreateInputQueryPage(wpSelectTasks, + 'Create a password for the Database System Administrator' + , 'Or click through to use the default password of ''masterkey''.' + , '' + ); + AdminUserPage.Add('SYSDBA Name:', False); + AdminUserPage.Add('Password:', True); + + AdminUserPage.Values[0] := SYSDBAName; + AdminUserPage.Values[1] := SYSDBAPassword; + +end; + + +function InitializeSetup(): Boolean; +var + i: Integer; + CommandLine: String; + cmdParams: TStringList; +begin + + result := true; + + CommandLine:=GetCmdTail; + + if ((pos('HELP',Uppercase(CommandLine)) > 0) or + (pos('/?',Uppercase(CommandLine)) > 0) or + (pos('/H',Uppercase(CommandLine)) > 0) ) then begin + ShowHelpDlg; + result := False; + Exit; + + end; + + if pos('FORCE',Uppercase(CommandLine)) > 0 then + ForceInstall:=True; + + if pos('NOCPL', Uppercase(CommandLine)) > 0 then + NoCPL := True; + + if pos('NOGDS32', Uppercase(CommandLine)) > 0 then + NoLegacyClient := True; + + if pos('COPYFBCLIENT', Uppercase(CommandLine)) > 0 then + CopyFbClient := True; + + cmdParams := TStringList.create; + for i:=0 to ParamCount do begin + cmdParams.add(ParamStr(i)); + if pos('SYSDBANAME', Uppercase(ParamStr(i)) ) > 0 then + SYSDBAName := Copy(ParamStr(i),Length('/SYSDBANAME=')+1,Length(ParamStr(i))-Length('/SYSDBANAME=') ); + if pos('SYSDBAPASSWORD', Uppercase(ParamStr(i)) ) > 0 then + SYSDBAPassword := Copy(ParamStr(i),Length('/SYSDBAPASSWORD=')+1,Length(ParamStr(i))-Length('/SYSDBAPASSWORD=') ); + end; +#ifdef iss_debug + ShowDebugDlg(cmdParams.text,''); +#endif + + // Check if a server is running - we cannot continue if it is. + if FirebirdDefaultServerRunning then begin + result := false; + exit; + end; + + if not CheckWinsock2 then begin + result := False; + exit; + end; + + //By default we want to install and confugure, + //unless subsequent analysis suggests otherwise. + InstallAndConfigure := Install + Configure; + + InstallRootDir := ''; + + InitExistingInstallRecords; + AnalyzeEnvironment; + result := AnalysisAssessment; + +end; + + +procedure DeInitializeSetup(); +var + ErrCode: Integer; +begin + // Did the install fail because winsock 2 was not installed? + if Winsock2Failure then + // Ask user if they want to visit the Winsock2 update web page. + if MsgBox(ExpandConstant('{cm:Winsock2Web1}')+#13#13+ExpandConstant('{cm:Winsock2Web2}'), mbInformation, MB_YESNO) = idYes then + // User wants to visit the web page + ShellExec('open', sMSWinsock2Update, '', '', SW_SHOWNORMAL, ewNoWait, ErrCode); + + if RunningServerVerString <> '' then + MsgBox( #13+Format(ExpandConstant('{cm:FbRunning1}'), [RunningServerVerString]) + +#13 + +#13+ExpandConstant('{cm:FbRunning2}') + +#13+ExpandConstant('{cm:FbRunning3}') + +#13, mbError, MB_OK); + +#ifdef setuplogging + if OkToCopyLog then + FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE); + + RestartReplace (ExpandConstant ('{log}'), ''); +#endif /* setuplogging */ + +end; + +//This function tries to find an existing install of Firebird 2.n +//If it succeeds it suggests that directory for the install +//Otherwise it suggests the default for Fb 2.n +function ChooseInstallDir(Default: String): String; +var + InterBaseRootDir, + FirebirdRootDir: String; +begin + //The installer likes to call this FOUR times, which makes debugging a pain, + //so let's test for a previous call. + if (InstallRootDir = '') then begin + + // Try to find the value of "RootDirectory" in the Firebird + // registry settings. This is either where Fb 1.0 exists or Fb 1.5 + InterBaseRootDir := GetInterBaseDir; + FirebirdRootDir := GetFirebirdDir; + + if (FirebirdRootDir <> '') and ( FirebirdRootDir = InterBaseRootDir ) then //Fb 1.0 must be installed so don't overwrite it. + InstallRootDir := Default; + + if (( InstallRootDir = '' ) and + ( FirebirdRootDir = Default )) then // Fb 2.0 is already installed, + InstallRootDir := Default; // so we offer to install over it + + if (( InstallRootDir = '') and + ( FirebirdVer[0] = 1 ) and ( FirebirdVer[1] = 5 ) ) then // Firebird 1.5 is installed + InstallRootDir := Default; // but the user has changed the default + + if (( InstallRootDir = '') and + ( FirebirdVer[0] = {#MajorVer} ) and ( FirebirdVer[1] = {#MinorVer} ) ) then // Firebird 2.n is installed + InstallRootDir := FirebirdRootDir; // but the user has changed the default + + // if we haven't found anything then try the FIREBIRD env var + // User may have preferred location for Firebird, but has possibly + // uninstalled previous version + if (InstallRootDir = '') then + InstallRootDir:=getenv('FIREBIRD'); + + //if no existing locations found make sure we default to the default. + if (InstallRootDir = '') then + InstallRootDir := Default; + + end; // if InstallRootDir = '' then begin + + Result := ExpandConstant(InstallRootDir); + +end; + + +function ServiceStartFlags(Default: String): String; +var + ServerType: String; + SvcParams: String; + InstanceName: String; +begin + servertype := ''; + SvcParams := ''; + if ClassicInstallChosen then + ServerType := ' -classic ' + else + ServerType := ' -superserver '; + + if IsComponentSelected('ServerComponent') and IsTaskSelected('AutoStartTask') then + SvcParams := ' -auto ' + else + SvcParams := ' -demand '; + + if IsComponentSelected('ServerComponent') and IsTaskSelected('UseSuperServerTask\UseGuardianTask') then + SvcParams := SvcParams + ServerType + ' -guardian' + else + SvcParams := SvcParams + ServerType; + + InstanceName := ' -n DefaultInstance' + + SvcParams := SvcParams + InstanceName; + + Result := SvcParams; +end; + + +function ServiceName(Default: String): String; +begin + Result := ' -n DefaultInstance' ; +end; + + +function GetAdminUserName: String; +begin + Result := AdminUserPage.Values[0]; +end; + + +function GetAdminUserPassword: String; +begin + Result := AdminUserPage.Values[1]; +end; + +function InitSecurityDb(Default: String): String; +begin + Result := ' -add ' + GetAdminUserName + ' -pass ' + GetAdminUserPassword ; +end; + + + +function InstallGuardianIcon(): Boolean; +begin + result := false; + if IsComponentSelected('ServerComponent') and IsTaskSelected('UseApplicationTask') then + if IsComponentSelected('ServerComponent') and IsTaskSelected('UseSuperServerTask\UseGuardianTask') then + result := true; +end; + +function InstallServerIcon(): Boolean; +begin + result := false; + if IsComponentSelected('ServerComponent') and IsTaskSelected('UseApplicationTask') then + if NOT (IsComponentSelected('ServerComponent') and IsTaskSelected('UseSuperServerTask\UseGuardianTask')) then + result := true; +end; +//#FIXME +function StartApp(Default: String): String; +begin + if IsComponentSelected('ServerComponent') and IsTaskSelected('UseSuperServerTask\UseGuardianTask') then begin + Result := GetAppPath+'\fbguard.exe'; + if ClassicInstallChosen then + Result := Result + ' -c'; + end + else + if ClassicInstallChosen then + Result := GetAppPath+'\fb_inet_server.exe' + else + Result := GetAppPath+'\fbserver.exe'; + + +end; + +function IsNotAutoStartApp: boolean; +//Support function to help remove unwanted registry entry. +begin + result := true; + if ( IsComponentSelected('ServerComponent') and IsTaskSelected('AutoStartTask') ) and + ( IsComponentSelected('ServerComponent') and IsTaskSelected('UseApplicationTask') ) then + result := false; +end; + + +procedure RemoveSavedConfIfNoDiff; +//Compare firebird.conf with the one we just saved. +//If they match then we can remove the saved one. +var + FirebirdConfStr: AnsiString; + SavedConfStr: AnsiString; +begin + LoadStringFromFile( GetAppPath+'\firebird.conf', FirebirdConfStr ); + LoadStringFromFile( FirebirdConfSaved, SavedConfStr ); + + if CompareStr( FirebirdConfStr, SavedConfStr ) = 0 then + DeleteFile( FirebirdConfSaved ); +end; + +procedure UpdateFirebirdConf; +// Update firebird conf. If user has deselected the guardian we should update +// firebird.conf accordingly. Otherwise we leave the file unchanged. +var + fbconf: TArrayOfString; + i, position: Integer; + ArraySize: Integer; + FileChanged: boolean; +begin + //There is no simple, foolproof and futureproof way to check whether + //we are doing a server install, so the easiest way is to see if a + //firebird.conf exists. If it doesn't then we don't care. + if FileExists(GetAppPath+'\firebird.conf') then begin + if NOT (IsComponentSelected('ServerComponent') and IsTaskSelected('UseSuperServerTask\UseGuardianTask')) then + ReplaceLine(GetAppPath+'\firebird.conf','GuardianOption','GuardianOption = 0','#'); + end; +end; + + +function NonDefaultLanguage: boolean; +//return true if language other than default is chosen +begin + result := (ActiveLanguage <> 'en'); +end; + +//Make installation form a little taller and wider. +const + HEIGHT_INCREASE = 100; + WIDTH_INCREASE = 40; + +procedure ResizeWizardForm(Increase: Boolean); +var + AWidth,AHeight: Integer; +begin + + AHeight := HEIGHT_INCREASE; + AWidth := WIDTH_INCREASE; + + if not Increase then begin + AHeight := (AHeight * (-1)); + AWidth := (AWidth * (-1)); + end; + + SetupWizardFormComponentsArrays; + ResizeWizardFormHeight(AHeight); + ResizeWizardFormWidth(AWidth); + +end; + +procedure CurPageChanged(CurPage: Integer); +begin + case CurPage of + wpWelcome: ResizeWizardForm(True); + wpInfoBefore: WizardForm.INFOBEFOREMEMO.font.name:='Courier New'; + wpInfoAfter: WizardForm.INFOAFTERMEMO.font.name:='Courier New'; + end; +end; + + +procedure CurStepChanged(CurStep: TSetupStep); +var + AppStr: String; + ReadMeFileStr: String; +begin + case CurStep of + ssInstall: begin + SetupSharedFilesArray; + GetSharedLibCountBeforeCopy; + end; + + ssPostInstall: begin + //Manually set the sharedfile count of these files. + IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\firebird.conf', false); + IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\firebird.log', false); + IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\aliases.conf', false); + IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\fbtrace.conf', false); + IncrementSharedCount(Is64BitInstallMode, GetAppPath+'\security3.fdb', false); + end; + + ssDone: begin + //If user has chosen to install an app and run it automatically set up the registry accordingly + //so that the server or guardian starts evertime they login. + if (IsComponentSelected('ServerComponent') and IsTaskSelected('AutoStartTask') ) and + ( IsComponentSelected('ServerComponent') and IsTaskSelected('UseApplicationTask') ) then begin + AppStr := StartApp('')+' -a'; + RegWriteStringValue (HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'Firebird', AppStr); + end; + + //Fix up conf file + RemoveSavedConfIfNoDiff; + UpdateFirebirdConf; + + //Reset shared library count if necessary + CheckSharedLibCountAtEnd; + + //Move lang specific readme from doc dir to root of install. + if NonDefaultLanguage then begin + ReadMeFileStr := ExpandConstant('{cm:ReadMeFile}'); + if FileCopy(GetAppPath+'\doc\'+ReadMeFileStr, GetAppPath+'\'+ReadMeFileStr, false) then + DeleteFile(GetAppPath+'\doc\'+ReadMeFileStr); + end; + +#ifdef setuplogging + OkToCopyLog := True; +#endif + + end; + end; +end; + +function StartEngine: boolean; +begin + if ConfigureFirebird then + result := not FirebirdDefaultServerRunning; +end; + +// # FIXME - we can probably remove this function +function ChooseUninstallIcon(Default: String): String; +begin + result := GetAppPath+'\firebird.exe'; +end; + +//InnoSetup has a Check Parameter that allows installation if the function returns true. +//For firebird.conf we want to do two things: +// o if firebird.conf already exists then install firebird.conf.default +// o if firebird.conf does not exist then install firebird.conf +// +// This double test is also needed because the uninstallation rules are different for each file. +// We never uninstall firebird.conf. We always uninstall firebird.conf.default. + +function FirebirdConfExists: boolean; +begin + Result := fileexists(GetAppPath+'\firebird.conf'); +end; + +function NoFirebirdConfExists: boolean; +begin + Result := not fileexists(GetAppPath+'\firebird.conf'); +end; + +function fbtraceConfExists: boolean; +begin + Result := fileexists(GetAppPath+'\fbtrace.conf'); +end; + +function NofbtraceConfExists: boolean; +begin + Result := not fileexists(GetAppPath+'\fbtrace.conf'); +end; + +function InitializeUninstall(): Boolean; +var + CommandLine: String; +begin + CommandLine:=GetCmdTail; + if pos('CLEAN',Uppercase(CommandLine))>0 then + CleanUninstall:=True + else + CleanUninstall:=False; + + //MUST return a result of true, otherwise uninstall will abort! + result := true; +end; + +procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); +begin + + case CurUninstallStep of + +// usAppMutexCheck : + +// usUninstall : + + usPostUninstall : begin + // We are manually handling the share count of these files, so we must + // a) Decrement shared count of each one and + // b) If Decrement reaches 0 (ie, function returns true) then we + // test if CleanUninstall has been passed. + if DecrementSharedCount(Is64BitInstallMode, GetAppPath+'\firebird.conf') then + if CleanUninstall then + DeleteFile(GetAppPath+'\firebird.conf'); + + if DecrementSharedCount(Is64BitInstallMode, GetAppPath+'\firebird.log') then + if CleanUninstall then + DeleteFile(GetAppPath+'\firebird.log'); + + if DecrementSharedCount(Is64BitInstallMode, GetAppPath+'\aliases.conf') then + if CleanUninstall then + DeleteFile(GetAppPath+'\aliases.conf'); + + if DecrementSharedCount(Is64BitInstallMode, GetAppPath+'\fbtrace.conf') then + if CleanUninstall then + DeleteFile(GetAppPath+'\fbtrace.conf'); + + if DecrementSharedCount(Is64BitInstallMode, GetAppPath+'\security3.fdb') then + if CleanUninstall then + DeleteFile(GetAppPath+'\security3.fdb'); + + end; + +// usDone : + + end; + + +end; + + +function ShouldSkipPage(PageID: Integer): Boolean; +begin + { If Firebird has already been installed then don't prompt for SYSDBA pw. } + if ( PageID = AdminUserPage.ID ) then + if not ConfigureFirebird then + Result := True + else + Result := False + ; +end; + + +begin +end. diff --git a/builds/install/arch-specific/win32/Readme.txt b/builds/install/arch-specific/win32/Readme.txt index e9253536e2..f85e515d5d 100644 --- a/builds/install/arch-specific/win32/Readme.txt +++ b/builds/install/arch-specific/win32/Readme.txt @@ -1,7 +1,7 @@ -========================================== -Firebird 2.5.0 Beta 2 (Windows Build) -========================================== +==================================== +Firebird $MAJOR.$MINOR.$RELEASE (Windows Build) +==================================== o Introduction @@ -12,13 +12,13 @@ o Reporting Bugs Introduction ============ -Welcome to Firebird 2.5. +Welcome to Firebird $MAJOR.$MINOR. Intended Users ============== -This is a beta version of Firebird. +This is a pre-alpha version of Firebird. It is not intended for production use. It is for test purposes only. @@ -39,9 +39,10 @@ version of Firebird! Please don't use the Firebird-devel list for technical support unless the question specifically relates to a -new feature in Firebird 2.5 +new feature in Firebird $MAJOR.$MINOR Happy Testing! From the Firebird team. + diff --git a/builds/install/arch-specific/win32/custom_messages.inc b/builds/install/arch-specific/win32/custom_messages.inc index 52db27327d..6ee251fa55 100644 --- a/builds/install/arch-specific/win32/custom_messages.inc +++ b/builds/install/arch-specific/win32/custom_messages.inc @@ -15,19 +15,20 @@ en.UseApplicationTaskMsg=Run as an &Application? en.TaskGroupDescription=Run Firebird server as: en.UseServiceTask=Run as a &Service? en.AutoStartTask=Start &Firebird automatically everytime you boot up? +en.SuperClassicTask=Use SuperClassic? en.CopyFbClientToSysTask=Copy &Firebird client library to directory? en.CopyFbClientAsGds32Task=Generate client library as GDS32.DLL for &legacy app. support? -en.InstallCPLAppletTask="Install Control &Panel Applet?" +en.InstallCPLAppletTask=Install Control &Panel Applet? en.instreg=Updating the registry en.instclientCopyFbClient=Copying fbclient to the directory en.instclientGenGds32=Generating gds32.dll for directory -en.instclientDecLibCountGds32="Decrementing shared lib count for gds32 and removing it if appropriate." -en.instclientDecLibCountFbClient="Decrementing shared lib count for fbclient and removing it if appropriate." +en.instclientDecLibCountGds32=Decrementing shared lib count for gds32 and removing it if appropriate. +en.instclientDecLibCountFbClient=Decrementing shared lib count for fbclient and removing it if appropriate. en.instsvcSetup=Setting up the service en.instsvcStartQuestion=Start Firebird Service now? en.instsvcStartMsg=Starting the server -en.instsvcStopMsg="Stopping the service" -en.instsvcRemove="Removing the service" +en.instsvcStopMsg=Stopping the service +en.instsvcRemove=Removing the service en.instappStartQuestion=Start Firebird now? en.instappStartMsg=Starting the server @@ -70,4 +71,9 @@ en.RunISQL=Run command-line based Interactive SQL tool en.ReadmeFile=readme.txt en.InstallationReadmeFile=installation_readme.txt - +;en.IncompleteTranslationNotice=This document is not up-to-date. Please refer to the original english language version for the latest information. +en.RunCS=Run Firebird Classic server +en.RunSC=Run Firebird SuperClassic server +en.RunSS=Run Firebird SuperServer +en.ServerTaskDescription=Choose Server Architecture: +en.initSecurityDb=Adding SYSDBA to security database. \ No newline at end of file diff --git a/builds/install/arch-specific/win32/i18n_readme.txt b/builds/install/arch-specific/win32/i18n_readme.txt index fcbd8e5e21..6a37e3e694 100644 --- a/builds/install/arch-specific/win32/i18n_readme.txt +++ b/builds/install/arch-specific/win32/i18n_readme.txt @@ -9,11 +9,12 @@ documentatation i18n should be available separately. I18n is a good thing, but bloating the installer with large amounts of translated documentation is not desirable. -The current version of InnoSetup - 4.2.7 - provides generic support for -the following languages: +The current version of InnoSetup used by Firebird $MAJOR.$MINOR - 5.4.2 - provides +generic support for the following languages: - Catalan, Czech, Dutch, French, German, Norwegian, Polish, - PortugueseStd, Russian and Slovenian. + Basque, BrazilianPortuguese, Catalan, Czech, Danish, Dutch, Finnish, French, + German, Hebrew, Hungarian, Italian, Japanese, Norwegian, Polish, Portuguese, + Russian, Slovak, Slovenian, and Spanish In addition, the InnoSetup user community has made other language packs available for download. See here for details: @@ -23,37 +24,35 @@ available for download. See here for details: Therefore adding i18n support to the Firebird installer is extremely simple as all we need are translations of the Firebird specific messages. -Currently the Firebird installer has support for English, French, German, -Portuguese (standard), Hungarian and Slovenian installs. So there are still -opportunities for others to provide support for their native language. +Currently the Firebird installer has support for Bosnian, Czech, Spanish, +French, German, Hungarian, Italian, Polish, Portuguese (standard), Russian, +Slovakian and Slovenian installs. So there are still opportunities for others +to provide support for their native language. How to add new languages ------------------------ The simplest way to understand this is to study the implementation of -the French translation. The steps to follow are these: +an existing translation. The steps to follow are these: o The Win32 install files are located in install\arch-specific\win32. This sub-directory is located as follows: Firebird 1.5 - firebird2\src - Firebird 2.0 - firebird2\builds + Firebird 2.n - firebird2\builds + Firebird 3.n - firebird2\builds -o You can use anonymous CVS to checkout the Win32 install kit with these - commands: +o You can use a tool such as TortoiseSVN to checkout the Win32 install + kit. Just open the SVN checkout dialogue and enter something similar + to this Repository URL: + https://firebird.svn.sourceforge.net/svnroot/firebird/firebird/branch/B2_5_Release/builds/install/arch-specific/win32 + or this: + https://firebird.svn.sourceforge.net/svnroot/firebird/firebird/tags/R2_5_1/builds/install/arch-specific/win32 +For 2.1 the equivalent URLs would be: + https://firebird.svn.sourceforge.net/svnroot/firebird/firebird/branch/B2_1_Release/builds/install/arch-specific/win32 + https://firebird.svn.sourceforge.net/svnroot/firebird/firebird/tags/R2_1_4/builds/install/arch-specific/win32 - [login] - - cvs -d:pserver:anonymous@firebird.cvs.sourceforge.net:/cvsroot/firebird login - - [checkout the Fb 1.5 Win32 installation kit] - - cvs -z3 -d:pserver:anonymous@firebird.cvs.sourceforge.net:/cvsroot/firebird co -r B1_5_Release firebird2/src/install/arch-specific/win32 - - [checkout the Fb 2.0 Win32 installation kit] - - cvs -z3 -d:pserver:anonymous@firebird.cvs.sourceforge.net:/cvsroot/firebird co -r B2_0_Release firebird2/builds/install/arch-specific/win32 o Each language has its own sub-directory under install\arch-specific\win32. diff --git a/builds/install/arch-specific/win32/installation_readme.txt b/builds/install/arch-specific/win32/installation_readme.txt index c13366cc0c..8be7373f7b 100644 --- a/builds/install/arch-specific/win32/installation_readme.txt +++ b/builds/install/arch-specific/win32/installation_readme.txt @@ -1,17 +1,33 @@ -Firebird Database Server 2.5 Beta 2 -================================================== +Firebird Database Server $MAJOR.$MINOR.$RELEASE (Alpha) +======================================================== + + +############## NOTE #################################### +# # +# The installer is in an experimental state. # +# This is not the definitive version for Firebird 3.0. # +# # +# o Layout and work sequence of the installer is not # +# definitive. # +# o Options available are subject to change. # +# o Method of library deployment has not been # +# finalized. # +# o The notes below are not up-to-date. # +# # +############## END NOTE ################################ + This document is a guide to installing this package of -Firebird 2.5 on the Windows platform. These notes refer +Firebird $MAJOR.$MINOR on the Windows platform. These notes refer to the installation package itself, rather than -Firebird 2.5 in general. In addition, these notes are +Firebird $MAJOR.$MINOR in general. In addition, these notes are primarily aimed at users of the binary installer. It is assumed that readers of this document are already -familiar with Firebird 2.1. If you are evaluating -Firebird 2.5 as part of a migration from FB 2.1 you are -advised to review the FB 2.1 documentation to -understand the changes made between 2.1 and 2.5. +familiar with Firebird 2.5. If you are evaluating +Firebird $MAJOR.$MINOR as part of a migration from Fb 2.5 you are +advised to review the Fb $MAJOR.$MINOR documentation to +understand the changes made between 2.5 and $MAJOR.$MINOR. Contents @@ -59,7 +75,7 @@ Other Known installation problems --------------------------------- o It is only possible to use the binary installer - to install the default instance of Firebird 2.1. If + to install the default instance of Firebird $MAJOR.$MINOR. If you wish to install additional, named instances you should manually install them with the zipped install image. @@ -111,11 +127,12 @@ o If Firebird is running as an application (instead of uninstall the uninstall will complete with errors. You will have to delete the remnants by hand. -o Uninstallation leaves four files in the install +o Uninstallation leaves five files in the install directory: - aliases.conf - firebird.conf + - fbtrace.conf - firebird.log - security2.fdb @@ -158,3 +175,4 @@ Please see this document: installation_scripted.txt for full details. + diff --git a/builds/install/arch-specific/win32/installation_scripted.txt b/builds/install/arch-specific/win32/installation_scripted.txt index 69484f10e8..6e842152e3 100644 --- a/builds/install/arch-specific/win32/installation_scripted.txt +++ b/builds/install/arch-specific/win32/installation_scripted.txt @@ -28,6 +28,8 @@ Setup parameters specific to the Firebird Installer /COMPONENTS="comma separated list of component names" /TASKS="comma separated list of task names" /MERGETASKS="comma separated list of task names" +/SYSDBAName="SYSDBA" +/SYSDBAPassword="masterkey" Setup parameters specific to the Firebird Uninstaller /CLEAN @@ -281,7 +283,23 @@ Parameters specific to Firebird installs (This option is not intended to be used with the /TASKS parameter.) + +/SYSDBANAME="SYSDBA" + SYSDBA name will default to SYSDBA unless overridden with this parameter. + + NOTE: If an existing Security database is found this parameter will be + ignored. + + +/SYSDBAPASSWORD="masterkey" + + SYSDBA password will use the default "masterkey" password. + + NOTE: If an existing Security database is found this parameter will be + ignored. + + Setup Exit Codes ---------------- @@ -377,12 +395,13 @@ Parameters specific to Firebird uninstalls /CLEAN Uninstallation has always left the following files in place after - the uninstallation process hase completed: + the uninstallation process has completed: firebird.conf aliases.conf firebird.log - security2.fdb + security3.fdb + fbtrace.conf The assumption is that these files will be useful to users re-installing or upgrading Firebird. Starting with Firebird 2.1