8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 06:03:02 +01:00

Forward port installer changes from 2.1.1 to 2.5.000

This commit is contained in:
paul_reeves 2008-07-10 12:45:38 +00:00
parent c2c4f134f5
commit 43c5385b38
6 changed files with 403 additions and 143 deletions

View File

@ -127,7 +127,7 @@ if not defined FB2_SNAPSHOT (
if not defined WIX ( if not defined WIX (
call :ERROR WIX not defined. WiX is needed to build the MSI kits of the CRT runtimes. call :ERROR WIX not defined. WiX is needed to build the MSI kits of the CRT runtimes.
@goto :EOF @goto :EOF
) else (@echo o WiX found at %WIX%.) ) else (@echo o WiX found at %WIX%.)
if not DEFINED FB_EXTERNAL_DOCS ( if not DEFINED FB_EXTERNAL_DOCS (
@ -197,8 +197,8 @@ set FBBUILD_FB25_CUR_VER=%FB_MAJOR_VER%.%FB_MINOR_VER%.%FB_REV_NO%
:: This helps us copy the correct documentation, :: This helps us copy the correct documentation,
:: as well as set up the correct shortcuts :: as well as set up the correct shortcuts
set FBBUILD_FB15_CUR_VER=1.5.5 set FBBUILD_FB15_CUR_VER=1.5.5
set FBBUILD_FB20_CUR_VER=2.0.3 set FBBUILD_FB20_CUR_VER=2.0.4
set FBBUILD_FB21_CUR_VER=2.1.0 set FBBUILD_FB21_CUR_VER=2.1.1
::End of SED_MAGIC ::End of SED_MAGIC
::---------------- ::----------------
@ -330,7 +330,7 @@ mkdir %FB_OUTPUT_DIR%\misc\upgrade\ib_udf 2>nul
:: if the docs are available then we can include them. :: if the docs are available then we can include them.
if defined FB_EXTERNAL_DOCS ( if defined FB_EXTERNAL_DOCS (
@echo Copying pdf docs... @echo Copying pdf docs...
@for %%v in ( Firebird-2.0-QuickStart.pdf Firebird_v%FBBUILD_FB15_CUR_VER%.ReleaseNotes.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-2.1-QuickStart.pdf Firebird_v%FBBUILD_FB15_CUR_VER%.ReleaseNotes.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 (
@echo ... %%v @echo ... %%v
(@copy /Y %FB_EXTERNAL_DOCS%\%%v %FB_OUTPUT_DIR%\doc\%%v > nul) || (call :WARNING Copying %FB_EXTERNAL_DOCS%\%%v failed.) (@copy /Y %FB_EXTERNAL_DOCS%\%%v %FB_OUTPUT_DIR%\doc\%%v > nul) || (call :WARNING Copying %FB_EXTERNAL_DOCS%\%%v failed.)
) )

View File

@ -84,27 +84,44 @@ Const
BrokenInstall = 32; //version or component mismatch found, so mark broken BrokenInstall = 32; //version or component mismatch found, so mark broken
//Possible product installs //Possible product installs
IB4Install = 0; IB4Install = 0;
IB5Install = 1; IB5Install = 1;
IB6Install = 2; IB6Install = 2;
IB65Install = 3; IB65Install = 3;
IB7Install = 4; IB70Install = 4;
FB1Install = 5; FB1Install = 5;
FB15RCInstall = 6; FB15RCInstall = 6;
FB15Install = 7; FB15Install = 7;
FB2Install = 8; //All Fb 1.6 and beyond FB20Install = 8;
MaxProdInstalled = FB2Install; IB80Install = 9;
IB81Install = 10;
FB21Install = 11;
FB21_x64_Install = 12;
FB25Install = 13;
FB25_x64_Install = 14;
FB30Install = 15;
FB30_x64_Install = 16;
//ProductsInstalled MaxProdInstalled = FB30_x64_Install;
IB4 = $0001;
IB5 = $0002; //ProductsInstalled
IB6 = $0004; IB4 = $00001;
IB65 = $0008; IB5 = $00002;
IB7 = $0010; IB6 = $00004;
FB1 = $0020; IB65 = $00008;
FB15RC = $0040; IB70 = $00010;
FB15 = $0080; FB1 = $00020;
FB2 = $0100; FB15RC = $00040;
FB15 = $00080;
FB20 = $00100;
IB80 = $00200;
IB81 = $00400;
FB21 = $00800;
FB25 = $01000;
FB30 = $02000;
FB21_x64 = $04000;
FB25_x64 = $08000;
FB30_x64 = $10000;
// Likely gds32 version strings for installed versions of Firebird or InterBase are: // Likely gds32 version strings for installed versions of Firebird or InterBase are:
// [6,0,n,n] InterBase 6.0 // [6,0,n,n] InterBase 6.0
@ -141,6 +158,7 @@ Type
InstallType: Integer; InstallType: Integer;
ActualVersion: String; ActualVersion: String;
FirebirdVersion:String; FirebirdVersion:String;
RootKey: Integer;
end; end;
@ -151,6 +169,7 @@ procedure InitExistingInstallRecords;
var var
product: Integer; product: Integer;
begin begin
SetArrayLength(ProductsInstalledArray,MaxProdInstalled + 1); SetArrayLength(ProductsInstalledArray,MaxProdInstalled + 1);
for product := 0 to MaxProdInstalled do begin for product := 0 to MaxProdInstalled do begin
@ -163,6 +182,7 @@ begin
ProductsInstalledArray[product].RegKey := IBRegKey; ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IB4MessageFile; ProductsInstalledArray[product].MessageFile := IB4MessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
IB5Install: begin IB5Install: begin
@ -170,6 +190,7 @@ begin
ProductsInstalledArray[product].RegKey := IB5RegKey; ProductsInstalledArray[product].RegKey := IB5RegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile; ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
IB6Install: begin IB6Install: begin
@ -177,6 +198,7 @@ begin
ProductsInstalledArray[product].RegKey := IBRegKey; ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile; ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
IB65Install: begin IB65Install: begin
@ -184,13 +206,31 @@ begin
ProductsInstalledArray[product].RegKey := IBRegKey; ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile; ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
IB7Install: begin IB70Install: begin
ProductsInstalledArray[product].Description := IBDesc; ProductsInstalledArray[product].Description := IBDesc;
ProductsInstalledArray[product].RegKey := IBRegKey; ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile; ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
IB80Install: begin
ProductsInstalledArray[product].Description := IBDesc;
ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
IB81Install: begin
ProductsInstalledArray[product].Description := IBDesc;
ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
FB1Install: begin FB1Install: begin
@ -198,6 +238,7 @@ begin
ProductsInstalledArray[product].RegKey := IBRegKey; ProductsInstalledArray[product].RegKey := IBRegKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := IBMessageFile; ProductsInstalledArray[product].MessageFile := IBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
FB15RCInstall: begin FB15RCInstall: begin
@ -205,6 +246,7 @@ begin
ProductsInstalledArray[product].RegKey := FB15RCKey; ProductsInstalledArray[product].RegKey := FB15RCKey;
ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry; ProductsInstalledArray[product].RegEntry := LegacyRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile; ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
FB15Install: begin FB15Install: begin
@ -212,22 +254,72 @@ begin
ProductsInstalledArray[product].RegKey := FB2RegKey; ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry; ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile; ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end; end;
FB2Install: begin FB20Install: begin
ProductsInstalledArray[product].Description := FBDesc; ProductsInstalledArray[product].Description := FBDesc;
ProductsInstalledArray[product].RegKey := FB2RegKey; ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry; ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile; ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
FB21Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (Win32) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
FB21_x64_Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (x64) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM64;
end;
FB25Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (Win32) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
FB25_x64_Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (x64) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM64;
end;
FB30Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (Win32) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM32;
end;
FB30_x64_Install: begin
ProductsInstalledArray[product].Description := FBDesc + ' (x64) ';
ProductsInstalledArray[product].RegKey := FB2RegKey;
ProductsInstalledArray[product].RegEntry := FBRegPathEntry;
ProductsInstalledArray[product].MessageFile := FBMessageFile;
ProductsInstalledArray[product].RootKey := HKLM64;
end; end;
end; //case end; //case
ProductsInstalledArray[product].Path := GetRegistryEntry( ProductsInstalledArray[product].Path := GetRegistryEntry(ProductsInstalledArray[product].RootKey,
ProductsInstalledArray[product].RegKey, ProductsInstalledArray[product].RegEntry); ProductsInstalledArray[product].RegKey, ProductsInstalledArray[product].RegEntry);
ProductsInstalledArray[product].RegVersion := GetRegistryEntry( ProductsInstalledArray[product].RegVersion := GetRegistryEntry(
ProductsInstalledArray[product].RegKey, 'Version'); ProductsInstalledArray[product].RootKey, ProductsInstalledArray[product].RegKey, 'Version');
end; //for end; //for
end; //function end; //function
@ -387,14 +479,14 @@ begin
ProductsInstalledArray[product].InstallType := NotInstalled; ProductsInstalledArray[product].InstallType := NotInstalled;
end; end;
IB7Install: begin IB70Install: begin
//If we get here we have ambiguity with other versions of InterBase and Firebird //If we get here we have ambiguity with other versions of InterBase and Firebird
if ( pos('InterBase',ProductsInstalledArray[product].RegVersion) > 0 ) then begin if ( pos('InterBase',ProductsInstalledArray[product].RegVersion) > 0 ) then begin
if CompareVersion(ProductsInstalledArray[product].ClientVersion, '7.0.0.0',1) <> 0 then if CompareVersion(ProductsInstalledArray[product].ClientVersion, '7.0.0.0',1) <> 0 then
ProductsInstalledArray[product].InstallType := NotInstalled ProductsInstalledArray[product].InstallType := NotInstalled
else else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + IB7; ProductsInstalled := ProductsInstalled + IB70;
ProductsInstalledCount := ProductsInstalledCount + 1; ProductsInstalledCount := ProductsInstalledCount + 1;
end; end;
end end
@ -437,16 +529,118 @@ begin
end; end;
end; end;
FB2Install: begin FB20Install: begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.0.0.0',2) <> 0) then if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.0.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled ProductsInstalledArray[product].InstallType := NotInstalled
else else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB2; ProductsInstalled := ProductsInstalled + FB20;
ProductsInstalledCount := ProductsInstalledCount + 1; ProductsInstalledCount := ProductsInstalledCount + 1;
end; end;
end; end;
IB80Install: begin
//If we get here we have ambiguity with other versions of InterBase and Firebird
if ( pos('InterBase',ProductsInstalledArray[product].RegVersion) > 0 ) then begin
if CompareVersion(ProductsInstalledArray[product].ClientVersion, '8.0.0.0',2) <> 0 then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + IB80;
ProductsInstalledCount := ProductsInstalledCount + 1;
end;
end
else
ProductsInstalledArray[product].InstallType := NotInstalled;
end;
IB81Install: begin
//If we get here we have ambiguity with other versions of InterBase and Firebird
if ( pos('InterBase',ProductsInstalledArray[product].RegVersion) > 0 ) then begin
if CompareVersion(ProductsInstalledArray[product].ClientVersion, '8.1.0.0',2) <> 0 then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + IB81;
ProductsInstalledCount := ProductsInstalledCount + 1;
end;
end
else
ProductsInstalledArray[product].InstallType := NotInstalled;
end;
FB21Install: begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.1.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB21;
ProductsInstalledCount := ProductsInstalledCount + 1;
end;
end;
FB21_x64_Install: begin
if iswin64 then begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.1.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB21_x64;
ProductsInstalledCount := ProductsInstalledCount + 1;
end
end
else
ProductsInstalledArray[product].InstallType := NotInstalled;
end;
FB25Install: begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.5.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB25;
ProductsInstalledCount := ProductsInstalledCount + 1;
end;
end;
FB25_x64_Install: begin
if iswin64 then begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '2.5.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB25_x64;
ProductsInstalledCount := ProductsInstalledCount + 1;
end
end
else
ProductsInstalledArray[product].InstallType := NotInstalled;
end;
FB30Install: begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '3.0.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB30;
ProductsInstalledCount := ProductsInstalledCount + 1;
end;
end;
FB30_x64_Install: begin
if iswin64 then begin
if (CompareVersion(ProductsInstalledArray[product].ClientVersion, '3.0.0.0',2) <> 0) then
ProductsInstalledArray[product].InstallType := NotInstalled
else
if ((ProductsInstalledArray[product].InstallType AND ClientInstall) = ClientInstall) then begin
ProductsInstalled := ProductsInstalled + FB30_x64;
ProductsInstalledCount := ProductsInstalledCount + 1;
end
end
else
ProductsInstalledArray[product].InstallType := NotInstalled;
end;
end;//case end;//case
@ -649,34 +843,76 @@ begin
result := true; result := true;
end; end;
//Detect any 1.5 or 2.0 server running with default ClassName or mutex
function FirebirdDefaultServerRunning: String; //Detect server running with default ClassName or mutex
var
RunningServerVerString: String;
function FirebirdDefaultServerRunning: Boolean;
var var
Handle: Integer; Handle: Integer;
mutex_found: boolean; mutex_found: boolean;
mutexes: String;
begin begin
result := ''; RunningServerVerString := '';
//Look for a running version of Firebird 1.5 or later Result := false;
Handle := FindWindowByClassName('FB_Disabled');
if ( Handle = 0 ) then
Handle := FindWindowByClassName('FB_Server');
if ( Handle = 0 ) then
Handle := FindWindowByClassName('FB_Guard');
if (Handle > 0) then if FirebirdOneRunning then
result := '1.5' RunningServerVerString := 'Firebird v1.0 / InterBase';
else begin
mutex_found := CheckForMutexes('FirebirdGuardianMutex,FirebirdServerMutex');
if mutex_found then
result := '2.0'
else begin
mutex_found := CheckForMutexes('FirebirdGuardianMutexDefaultInstance,FirebirdServerMutexDefaultInstance');
if mutex_found then
result := '2.1'
end;
//Look for a valid window handle
if RunningServerVerString = '' then begin
//This is effectivley a test for Firebird running as an application.
//This is useful if Firebird is running without the guardian
//because prior to v2.0.4 there is no server mutex.
Handle := FindWindowByClassName('FB_Disabled');
if ( Handle = 0 ) then
Handle := FindWindowByClassName('FB_Server');
if ( Handle = 0 ) then
Handle := FindWindowByClassName('FB_Guard');
if (Handle > 0) then
RunningServerVerString := 'Firebird';
end; end;
//Look for a firebird mutex
if RunningServerVerString = '' then begin
//General Notes on testing for mutexes:
// - Mutexes are case-sensitive.
// - Don't escape the slash in Global\, Local\ etc. (We don't currently use Local\)
//
// v2.0 notes
// - v2.0 prior to 2.0.4 does not create a FirebirdServerMutex mutex,
// so server running without guardian is not detected.
// - v2.0.4 creates mutexes without the global prefix.
// - Later versions (if any) will use the prefix, so we will test for them anyway.
mutexes := 'Global\FirebirdGuardianMutex' + ',' +
'Global\FirebirdServerMutex' + ',' +
'FirebirdGuardianMutex' + ',' +
'FirebirdServerMutex';
mutex_found := CheckForMutexes(mutexes);
if mutex_found then
RunningServerVerString := 'Firebird';
end;
if RunningServerVerString = '' then begin
//v2.1.1 notes
// - v2.1.0 creates mutexes without the global prefix.
// - v2.1.1 and later should use the correct prefix.
mutexes := 'Global\FirebirdGuardianMutexDefaultInstance' + ',' +
'Global\FirebirdServerMutexDefaultInstance' + ',' +
'FirebirdGuardianMutexDefaultInstance' + ',' +
'FirebirdServerMutexDefaultInstance';
mutex_found := CheckForMutexes(mutexes);
if mutex_found then
RunningServerVerString := 'v2.1'
end;
if RunningServerVerString <> '' then
Result := True;
end; end;

View File

@ -25,6 +25,8 @@
Function Prototypes Function Prototypes
function IsWin32: boolean;
function Is32BitInstallMode: boolean;
function IsVista: boolean; function IsVista: boolean;
function IsWin2k3: boolean; function IsWin2k3: boolean;
function IsWinXP: boolean; function IsWinXP: boolean;
@ -108,6 +110,19 @@ v4.0 4.0.6001.16531 or greater Released with Windows Vista SP1 and
systems do not have v3.0 of the Windows Installer. systems do not have v3.0 of the Windows Installer.
*) *)
function IsWin32: boolean;
//helper function to simplify logic of x86/win64 checks.
begin
result := not IsWin64;
end;
function Is32BitInstallMode: boolean;
//helper function to simplify logic of x86/win64 checks.
begin
result := not Is64BitInstallMode;
end;
function IsVista: boolean; function IsVista: boolean;
var var
Version: TWindowsVersion; Version: TWindowsVersion;
@ -368,10 +383,17 @@ begin
end; end;
function GetRegistryEntry(RegKey, RegEntry: string): String;
function GetRegistryEntry(RootKey: Integer; RegKey, RegEntry: string): String;
begin begin
result := ''; Result := '';
RegQueryStringValue(HKEY_LOCAL_MACHINE, RegKey, RegEntry, Result); //if not win64 and RootKey is HKLM64 then we are on a 32-bit box,
//so skip looking in registry
if ( (RootKey = HKLM64) AND (isWin32) ) then
//do nothing
Result := ''
else
RegQueryStringValue(RootKey, RegKey, RegEntry, Result);
end; end;

View File

@ -23,7 +23,7 @@
; Usage Notes: ; Usage Notes:
; ;
; This script has been designed to work with Inno Setup v5.2.2 ; This script has been designed to work with Inno Setup v5.2.3
; It is available as a quick start pack from here: ; It is available as a quick start pack from here:
; http://www.jrsoftware.org/isdl.php#qsp ; http://www.jrsoftware.org/isdl.php#qsp
; ;
@ -52,13 +52,12 @@
;Hard code some defaults to aid debugging and running script standalone. ;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. ;In practice, these values are set in the environment and we use the env vars.
#define MajorVer "2" #define MajorVer "2"
#define MinorVer "1" #define MinorVer "5"
#define PointRelease "0" #define PointRelease "0"
#define BuildNumber "0" #define BuildNumber "0"
#define PackageNumber "0" #define PackageNumber "0"
;-------Start of Innosetup script debug flags section ;-------Start of Innosetup script debug flags section
; if iss_release is undefined then iss_debug is set ; if iss_release is undefined then iss_debug is set
@ -96,6 +95,9 @@
#undef files #undef files
;We speed up compilation (and hence testing) by not compressing contents. ;We speed up compilation (and hence testing) by not compressing contents.
#undef compression #undef compression
;Default to x64 for testing
#define PlatformTarget "x64"
#endif #endif
@ -109,33 +111,48 @@
; uses them. ; uses them.
#define release #define release
#define no_pdb #define no_pdb
#define i18n ;#define i18n
;------If necessary we can turn off i18n by uncommenting this undefine ;------If necessary we can turn off i18n by uncommenting this undefine
;#undef i18n ;#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") #define FB_MAJOR_VER GetEnv("FB_MAJOR_VER")
#endif
#ifdef FB_MAJOR_VER #ifdef FB_MAJOR_VER
#define MajorVer FB_MAJOR_VER #define MajorVer FB_MAJOR_VER
#endif #endif
#if Len(GetEnv("FB_MINOR_VER")) > 0
#define FB_MINOR_VER GetEnv("FB_MINOR_VER") #define FB_MINOR_VER GetEnv("FB_MINOR_VER")
#endif
#ifdef FB_MINOR_VER #ifdef FB_MINOR_VER
#define MinorVer FB_MINOR_VER #define MinorVer FB_MINOR_VER
#endif #endif
#if Len(GetEnv("FB_REV_VER")) > 0
#define FB_REV_NO GetEnv("FB_REV_NO") #define FB_REV_NO GetEnv("FB_REV_NO")
#endif
#ifdef FB_REV_NO #ifdef FB_REV_NO
#define PointRelease FB_REV_NO #define PointRelease FB_REV_NO
#endif #endif
#if Len(GetEnv("FB_BUILD_NO")) > 0
#define FB_BUILD_NO GetEnv("FB_BUILD_NO") #define FB_BUILD_NO GetEnv("FB_BUILD_NO")
#endif
#ifdef FB_BUILD_NO #ifdef FB_BUILD_NO
#define BuildNumber FB_BUILD_NO #define BuildNumber FB_BUILD_NO
#endif #endif
#if Len(GetEnv("FBBUILD_PACKAGE_NUMBER")) > 0
#define FBBUILD_PACKAGE_NUMBER GetEnv("FBBUILD_PACKAGE_NUMBER") #define FBBUILD_PACKAGE_NUMBER GetEnv("FBBUILD_PACKAGE_NUMBER")
#endif
#ifdef FBBUILD_PACKAGE_NUMBER #ifdef FBBUILD_PACKAGE_NUMBER
#define PackageNumber FBBUILD_PACKAGE_NUMBER #define PackageNumber FBBUILD_PACKAGE_NUMBER
#endif #endif
@ -149,8 +166,10 @@
#endif #endif
#define MyAppVerName MyAppName + " " + MyAppVerString #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") #define PlatformTarget GetEnv("FB_TARGET_PLATFORM")
#endif
#if PlatformTarget == "" #if PlatformTarget == ""
#define PlatformTarget "win32" #define PlatformTarget "win32"
#endif #endif
@ -162,9 +181,9 @@
#endif #endif
#define msvc_version 8 #define msvc_version 8
;BaseVer should be used for all v2.n installs. ;BaseVer should be used for all v2.5.n installs.
;This allows us to upgrade silently from 2.0 to 2.1 ;This allows us to upgrade silently from 2.5.m to 2.5.n
#define BaseVer MajorVer + "_0" #define BaseVer MajorVer + "_" + MinorVer
#define AppVer MajorVer + "_" + MinorVer #define AppVer MajorVer + "_" + MinorVer
#define GroupnameVer MajorVer + "." + MinorVer #define GroupnameVer MajorVer + "." + MinorVer
@ -269,7 +288,7 @@ Name: it; MessagesFile: compiler:Languages\Italian.isl; InfoBeforeFile: {#Script
Name: pl; MessagesFile: compiler:Languages\Polish.isl; InfoBeforeFile: {#ScriptsDir}\pl\instalacja_czytajto.txt; InfoAfterFile: {#ScriptsDir}\pl\czytajto.txt; Name: pl; MessagesFile: compiler:Languages\Polish.isl; InfoBeforeFile: {#ScriptsDir}\pl\instalacja_czytajto.txt; InfoAfterFile: {#ScriptsDir}\pl\czytajto.txt;
Name: pt; MessagesFile: compiler:Languages\Portuguese.isl; InfoBeforeFile: {#ScriptsDir}\pt\instalacao_leia-me.txt; InfoAfterFile: {#ScriptsDir}\pt\leia-me.txt Name: pt; MessagesFile: compiler:Languages\Portuguese.isl; InfoBeforeFile: {#ScriptsDir}\pt\instalacao_leia-me.txt; InfoAfterFile: {#ScriptsDir}\pt\leia-me.txt
Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: {#ScriptsDir}\ru\installation_readme.txt; InfoAfterFile: {#ScriptsDir}\ru\readme.txt; Name: ru; MessagesFile: compiler:Languages\Russian.isl; InfoBeforeFile: {#ScriptsDir}\ru\installation_readme.txt; InfoAfterFile: {#ScriptsDir}\ru\readme.txt;
Name: si; MessagesFile: compiler:Languages\Slovenian.isl; InfoBeforeFile: {#ScriptsDir}\si\instalacija_precitajMe.txt; InfoAfterFile: {#ScriptsDir}\readme.txt; ;Name: si; MessagesFile: compiler:Languages\Slovenian.isl; InfoBeforeFile: {#ScriptsDir}\si\instalacija_precitajMe.txt; InfoAfterFile: {#ScriptsDir}\readme.txt;
#endif #endif
[Messages] [Messages]
@ -284,7 +303,7 @@ it.BeveledLabel=Italiano
pl.BeveledLabel=Polski pl.BeveledLabel=Polski
pt.BeveledLabel=Português pt.BeveledLabel=Português
ru.BeveledLabel=Ðóññêèé ru.BeveledLabel=Ðóññêèé
si.BeveledLabel=Slovenski ;si.BeveledLabel=Slovenski
#endif #endif
[CustomMessages] [CustomMessages]
@ -299,7 +318,7 @@ si.BeveledLabel=Slovenski
#include "pl\custom_messages_pl.inc" #include "pl\custom_messages_pl.inc"
#include "pt\custom_messages_pt.inc" #include "pt\custom_messages_pt.inc"
#include "ru\custom_messages_ru.inc" #include "ru\custom_messages_ru.inc"
#include "si\custom_messages_si.inc" ;#include "si\custom_messages_si.inc"
#endif #endif
#ifdef iss_debug #ifdef iss_debug
@ -343,14 +362,14 @@ Name: CopyFbClientAsGds32Task; Description: {cm:CopyFbClientAsGds32Task}; Compon
[Run] [Run]
#if msvc_version == 8 #if msvc_version == 8
Filename: msiexec.exe; Parameters: "/qn /i ""{tmp}\vccrt{#msvc_version}_Win32.msi"" /L*v {tmp}\vccrt{#msvc_version}_Win32.log "; Check: HasWI30; Components: ClientComponent; 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" #if PlatformTarget == "x64"
Filename: msiexec.exe; Parameters: "/qn /i ""{tmp}\vccrt{#msvc_version}_x64.msi"" /L*v {tmp}\vccrt{#msvc_version}_x64.log "; Check: HasWI30; Components: ClientComponent; 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
#endif #endif
;Always register Firebird ;Only register Firebird if we are installing AND configuring
Filename: {app}\bin\instreg.exe; Parameters: "install "; StatusMsg: {cm:instreg}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized Filename: {app}\bin\instreg.exe; Parameters: "install "; StatusMsg: {cm:instreg}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: ConfigureFirebird;
Filename: {app}\bin\instclient.exe; Parameters: "install fbclient"; StatusMsg: {cm:instclientCopyFbClient}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyFBClientLib; Filename: {app}\bin\instclient.exe; Parameters: "install fbclient"; StatusMsg: {cm:instclientCopyFbClient}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyFBClientLib;
Filename: {app}\bin\instclient.exe; Parameters: "install gds32"; StatusMsg: {cm:instclientGenGds32}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyGds32 Filename: {app}\bin\instclient.exe; Parameters: "install gds32"; StatusMsg: {cm:instclientGenGds32}; MinVersion: 4.0,4.0; Components: ClientComponent; Flags: runminimized; Check: CopyGds32
@ -363,7 +382,7 @@ Filename: {app}\WOW64\instclient.exe; Parameters: "install gds32"; StatusMsg: {c
;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. ;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}\bin\instsvc.exe; Parameters: "remove "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird; Filename: {app}\bin\instsvc.exe; Parameters: "remove "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird;
Filename: {app}\bin\instsvc.exe; Parameters: "install {code:ServiceStartFlags} "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird; Filename: {app}\bin\instsvc.exe; Parameters: "install {code:ServiceStartFlags} "; StatusMsg: {cm:instsvcSetup}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized; Tasks: UseServiceTask; Check: ConfigureFirebird;
Filename: {app}\bin\instsvc.exe; Description: {cm:instsvcStartQuestion}; Parameters: "start {code:ServiceName} "; StatusMsg: {cm:instsvcStartMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: runminimized postinstall; Tasks: UseServiceTask; Check: StartEngine Filename: {app}\bin\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 ;If 'start as application' requested
Filename: {code:StartApp|{app}\bin\fbserver.exe}; Description: {cm:instappStartQuestion}; Parameters: -a; StatusMsg: {cm:instappStartMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: nowait postinstall; Tasks: UseApplicationTask; Check: StartEngine Filename: {code:StartApp|{app}\bin\fbserver.exe}; Description: {cm:instappStartQuestion}; Parameters: -a; StatusMsg: {cm:instappStartMsg}; MinVersion: 0,4.0; Components: ServerComponent; Flags: nowait postinstall; Tasks: UseApplicationTask; Check: StartEngine
@ -394,8 +413,7 @@ Name: {group}\Firebird {#FB_cur_ver} Release Notes; Filename: {app}\doc\Firebird
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} {cm:InstallationGuide} 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} {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} {cm:BugFixes} 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} {cm:BugFixes}
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} Release Notes; Filename: {app}\doc\Firebird_v{#FB21_cur_ver}.ReleaseNotes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {cm:ReleaseNotes}
Name: {group}\Firebird {#FB15_cur_ver} Release Notes; Filename: {app}\doc\Firebird_v{#FB15_cur_ver}.ReleaseNotes.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName} {cm:ReleaseNotes} Name: {group}\Firebird 2.1 Quick Start Guide; Filename: {app}\doc\Firebird-2.1-QuickStart.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName}
Name: {group}\Firebird 2.0 Quick Start Guide; Filename: {app}\doc\Firebird-2.0-QuickStart.pdf; MinVersion: 4.0,4.0; Comment: {#MyAppName}
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}\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" Name: "{group}\Firebird Web-site"; Filename: "{app}\doc\firebirdsql.org.url"
;Always install the original english version ;Always install the original english version
@ -425,7 +443,7 @@ Source: {#ScriptsDir}\it\*.txt; DestDir: {app}\doc; Components: DevAdminComponen
Source: {#ScriptsDir}\pl\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pl; Source: {#ScriptsDir}\pl\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pl;
Source: {#ScriptsDir}\pt\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pt; Source: {#ScriptsDir}\pt\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: pt;
Source: {#ScriptsDir}\ru\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: ru; Source: {#ScriptsDir}\ru\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: ru;
Source: {#ScriptsDir}\si\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: si; ;Source: {#ScriptsDir}\si\*.txt; DestDir: {app}\doc; Components: DevAdminComponent; Flags: ignoreversion; Languages: si;
#endif #endif
Source: {#FilesDir}\firebird.conf; DestDir: {app}; DestName: firebird.conf.default; Components: ServerComponent; check: FirebirdConfExists; 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}\firebird.conf; DestDir: {app}; DestName: firebird.conf; Components: ServerComponent; Flags: uninsneveruninstall; check: NoFirebirdConfExists
@ -678,8 +696,13 @@ end;
for i:=0 to ProductsInstalledCount-1 do for i:=0 to ProductsInstalledCount-1 do
InstallSummary := InstallSummary + InstallSummaryArray[i] + #13; InstallSummary := InstallSummary + InstallSummaryArray[i] + #13;
//If FB2 is installed // If FB21 is installed and installed platform does not match current platform
If ((ProductsInstalled AND FB2) = FB2) then // then notify user.
#if PlatformTarget == "x64"
If ((ProductsInstalled AND FB21_x64 ) = FB21_x64 ) then
#else
If ((ProductsInstalled AND FB21 ) = FB21 ) then
#endif
InstallSummary := InstallSummary InstallSummary := InstallSummary
+#13 + ExpandConstant('{cm:InstallSummarySuffix1}') +#13 + ExpandConstant('{cm:InstallSummarySuffix1}')
+#13 + ExpandConstant('{cm:InstallSummarySuffix2}') +#13 + ExpandConstant('{cm:InstallSummarySuffix2}')
@ -719,24 +742,16 @@ begin
end; end;
//If Fb2.0 is installed then we can install over it. //If existing install of the same majorver.minorver is
//unless we find the server running. //found then we can upgrade it.
if (ProductsInstalledCount = 1) AND if ( (ProductsInstalledCount = 1) AND
((ProductsInstalled AND FB2) = FB2) then begin #if PlatformTarget == "x64"
VerString := ( FirebirdDefaultServerRunning ); ((ProductsInstalled AND FB21_x64 ) = FB21_x64 ) ) then begin
if VerString <> '' then begin #else
result := false; ((ProductsInstalled AND FB21 ) = FB21 ) ) then begin
MsgBox( #13+Format(ExpandConstant('{cm:FbRunning1}'), [VerString]) #endif
+#13
+#13+ExpandConstant('{cm:FbRunning2}')
+#13+ExpandConstant('{cm:FbRunning3}')
+#13, mbError, MB_OK);
exit;
end
else begin
result := true; result := true;
exit; exit;
end
end end
; ;
@ -760,18 +775,12 @@ function InitializeSetup(): Boolean;
var var
i: Integer; i: Integer;
CommandLine: String; CommandLine: String;
VerString: String;
begin begin
result := true; result := true;
if not CheckWinsock2 then begin
result := False;
exit;
end
CommandLine:=GetCmdTail; CommandLine:=GetCmdTail;
if ((pos('HELP',Uppercase(CommandLine)) > 0) or if ((pos('HELP',Uppercase(CommandLine)) > 0) or
(pos('/?',Uppercase(CommandLine)) > 0) or (pos('/?',Uppercase(CommandLine)) > 0) or
(pos('/H',Uppercase(CommandLine)) > 0) ) then begin (pos('/H',Uppercase(CommandLine)) > 0) ) then begin
@ -780,7 +789,7 @@ begin
CloseHelpDlg; CloseHelpDlg;
result := False; result := False;
Exit; Exit;
end; end;
if pos('FORCE',Uppercase(CommandLine)) > 0 then if pos('FORCE',Uppercase(CommandLine)) > 0 then
@ -795,6 +804,17 @@ begin
if pos('COPYFBCLIENT', Uppercase(CommandLine)) > 0 then if pos('COPYFBCLIENT', Uppercase(CommandLine)) > 0 then
CopyFbClient := True; CopyFbClient := True;
// 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, //By default we want to install and confugure,
//unless subsequent analysis suggests otherwise. //unless subsequent analysis suggests otherwise.
InstallAndConfigure := Install + Configure; InstallAndConfigure := Install + Configure;
@ -804,20 +824,7 @@ begin
InitExistingInstallRecords; InitExistingInstallRecords;
AnalyzeEnvironment; AnalyzeEnvironment;
result := AnalysisAssessment; result := AnalysisAssessment;
if result then begin
//There is a possibility that all our efforts to detect an
//install were in vain and a server _is_ running...
VerString := FirebirdDefaultServerRunning;
if ( VerString <> '' ) then begin
result := false;
MsgBox( #13+Format(ExpandConstant('{cm:FbRunning1}'), [VerString])
+#13
+#13+ExpandConstant('{cm:FbRunning2}')
+#13+ExpandConstant('{cm:FbRunning3}')
+#13, mbError, MB_OK);
exit;
end;
end;
end; end;
@ -831,19 +838,26 @@ begin
if MsgBox(ExpandConstant('{cm:Winsock2Web1}')+#13#13+ExpandConstant('{cm:Winsock2Web2}'), mbInformation, MB_YESNO) = idYes then if MsgBox(ExpandConstant('{cm:Winsock2Web1}')+#13#13+ExpandConstant('{cm:Winsock2Web2}'), mbInformation, MB_YESNO) = idYes then
// User wants to visit the web page // User wants to visit the web page
ShellExec('open', sMSWinsock2Update, '', '', SW_SHOWNORMAL, ewNoWait, ErrCode); 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 #ifdef setuplogging
if OkToCopyLog then if OkToCopyLog then
FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE); FileCopy (ExpandConstant ('{log}'), ExpandConstant ('{app}\InstallationLogFile.log'), FALSE);
RestartReplace (ExpandConstant ('{log}'), ''); RestartReplace (ExpandConstant ('{log}'), '');
#endif /* setuplogging */ #endif /* setuplogging */
end; end;
//This function tries to find an existing install of Firebird 1.5 //This function tries to find an existing install of Firebird 2.n
//If it succeeds it suggests that directory for the install //If it succeeds it suggests that directory for the install
//Otherwise it suggests the default for Fb 1.5 //Otherwise it suggests the default for Fb 2.n
function ChooseInstallDir(Default: String): String; function ChooseInstallDir(Default: String): String;
var var
InterBaseRootDir, InterBaseRootDir,
@ -870,7 +884,7 @@ begin
InstallRootDir := Default; // but the user has changed the default InstallRootDir := Default; // but the user has changed the default
if (( InstallRootDir = '') and if (( InstallRootDir = '') and
( FirebirdVer[0] = 2 ) and ( FirebirdVer[1] = 0 ) ) then // Firebird 2.0 is installed ( FirebirdVer[0] = {#MajorVer} ) and ( FirebirdVer[1] = {#MinorVer} ) ) then // Firebird 2.n is installed
InstallRootDir := FirebirdRootDir; // but the user has changed the default InstallRootDir := FirebirdRootDir; // but the user has changed the default
// if we haven't found anything then try the FIREBIRD env var // if we haven't found anything then try the FIREBIRD env var
@ -1075,7 +1089,7 @@ end;
function StartEngine: boolean; function StartEngine: boolean;
begin begin
if ConfigureFirebird then if ConfigureFirebird then
result := not FirebirdOneRunning; result := not FirebirdDefaultServerRunning;
end; end;

View File

@ -1,13 +1,8 @@
========================================== ==========================================
Firebird 2.5.0 pre alpha (Windows Build) Firebird 2.5.0 Alpha 1 (Windows Build)
========================================== ==========================================
-------------------------------------------------------
The information below refers to Firebird 2.1.
Documentation for Firebird 2.5 is not yet available.
-------------------------------------------------------
o Introduction o Introduction
o Intended Users o Intended Users
@ -23,9 +18,9 @@ Welcome to Firebird 2.5.
Intended Users Intended Users
============== ==============
This is a pre-alpha version of Firebird. This is an alpha version of Firebird.
It is not intended for use. It is for It is not intended for production use. It is for
test purposes only. test purposes only.

View File

@ -1,24 +1,17 @@
Firebird Database Server 2.5 pre alpha Firebird Database Server 2.5 Alpha 1
================================================== ==================================================
-------------------------------------------------------
The information below refers to Firebird 2.1.
Documentation for Firebird 2.5 is not yet available.
-------------------------------------------------------
This document is a guide to installing this package of This document is a guide to installing this package of
Firebird 2.1 on the Windows platform. These notes refer Firebird 2.5 on the Windows platform. These notes refer
to the installation package itself, rather than to the installation package itself, rather than
Firebird 2.1 in general. In addition, these notes are Firebird 2.5 in general. In addition, these notes are
primarily aimed at users of the binary installer. primarily aimed at users of the binary installer.
It is assumed that readers of this document are already It is assumed that readers of this document are already
familiar with Firebird 2.0. If you are evaluating familiar with Firebird 2.1. If you are evaluating
Firebird 2.1 as part of a migration from Fb 1.5 you are Firebird 2.5 as part of a migration from Fb 2.1 you are
advised to review the Fb 2.0 documentation to advised to review the Fb 2.1 documentation to
understand the changes made between 1.5 and 2.0. understand the changes made between 2.1 and 2.5.
Contents Contents