From: <ob...@us...> - 2008-09-21 18:41:49
|
Revision: 11913 http://jvcl.svn.sourceforge.net/jvcl/?rev=11913&view=rev Author: obones Date: 2008-09-21 18:41:46 +0000 (Sun, 21 Sep 2008) Log Message: ----------- Mantis 4461: Now distinguishes correctly the BDSCOMMONDIR environment variable. Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-09-21 13:54:26 UTC (rev 11912) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-09-21 18:41:46 UTC (rev 11913) @@ -284,7 +284,7 @@ {$ENDIF ~COMPILER12_UP} CmdLineUtils, Utils, JvConsts, - JclBase, JclSysInfo, JclSimpleXml, JclBorlandTools; + JclBase, JclSysInfo, JclSimpleXml, JclSysUtils, JclFileUtils, JclBorlandTools; function DequoteStr(const S: string): string; begin @@ -1264,13 +1264,24 @@ end; function TCompileTarget.GetCommonProjectsDir: string; +var + RsVarsOutput, ComSpec: string; + Lines: TStrings; begin if IsBDS and (IDEVersion >= 5) then begin - if FEnvVars.IndexOfName('BDSCOMMONDIR') >= 0 then // do not localize - Result := ExpandDirMacros(EnvVars.Values['BDSCOMMONDIR']) // do not localize - else - Result := ExpandDirMacros(GetEnvironmentVariable('BDSCOMMONDIR')); // do not localize + // Inspired by the JCL installer. Maybe all this should be centralized... + if GetEnvironmentVar('COMSPEC', ComSpec) and (JclSysUtils.Execute(Format('%s /C "%s%sbin%srsvars.bat && set BDS"', + [ComSpec, ExtractShortPathName(RootDir), DirDelimiter, DirDelimiter]), RsVarsOutput) = 0) then + begin + Lines := TStringList.Create; + try + Lines.Text := RsVarsOutput; + Result := Lines.Values['BDSCOMMONDIR']; + finally + Lines.Free; + end; + end; if Result = '' then // ignore BDSCOMMONDIR env-var because Delphi and BCB do not know them Result := FCommonProjectsDir; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2008-09-21 19:55:40
|
Revision: 11914 http://jvcl.svn.sourceforge.net/jvcl/?rev=11914&view=rev Author: obones Date: 2008-09-21 19:55:36 +0000 (Sun, 21 Sep 2008) Log Message: ----------- Optimization Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-09-21 18:41:46 UTC (rev 11913) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-09-21 19:55:36 UTC (rev 11914) @@ -1264,29 +1264,9 @@ end; function TCompileTarget.GetCommonProjectsDir: string; -var - RsVarsOutput, ComSpec: string; - Lines: TStrings; begin if IsBDS and (IDEVersion >= 5) then - begin - // Inspired by the JCL installer. Maybe all this should be centralized... - if GetEnvironmentVar('COMSPEC', ComSpec) and (JclSysUtils.Execute(Format('%s /C "%s%sbin%srsvars.bat && set BDS"', - [ComSpec, ExtractShortPathName(RootDir), DirDelimiter, DirDelimiter]), RsVarsOutput) = 0) then - begin - Lines := TStringList.Create; - try - Lines.Text := RsVarsOutput; - Result := Lines.Values['BDSCOMMONDIR']; - finally - Lines.Free; - end; - end; - - if Result = '' then // ignore BDSCOMMONDIR env-var because Delphi and BCB do not know them - Result := FCommonProjectsDir; - Result := ExcludeTrailingPathDelimiter(FixBackslashBackslash(Result)); - end + Result := FCommonProjectsDir // Filled in LoadFromRegistry else Result := GetBDSProjectsDir; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2008-11-10 17:12:56
|
Revision: 12042 http://jvcl.svn.sourceforge.net/jvcl/?rev=12042&view=rev Author: ahuser Date: 2008-11-10 17:12:49 +0000 (Mon, 10 Nov 2008) Log Message: ----------- Mantis #4574: JVCL installer destroys CB2009's include and library path Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-11-09 13:05:59 UTC (rev 12041) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-11-10 17:12:49 UTC (rev 12042) @@ -803,6 +803,8 @@ Reg.CloseKey; end; + Reg.Free; + Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; if IsBDS then @@ -842,7 +844,7 @@ Reg.GetValueNames(FInstalledPersonalities); Reg.CloseKey; end; - + // BDS IDE Version 5 comes in three flavors: // - Delphi only (Spacely) // - C++ Builder only (Cogswell) @@ -887,7 +889,7 @@ ConvertPathList(PropertyNode.Value, FDebugDcuPaths); - if (IDEVersion = 5) and SupportsPersonalities([persBCB]) then + if SupportsPersonalities([persBCB]) then begin PropertyNode := PropertyGroupNode.Items.ItemNamed['CBuilderIncludePath']; // do not localize if Assigned(PropertyNode) then @@ -941,7 +943,40 @@ ConvertPathList(Reg.ReadString('SearchPath'), FGlobalCppSearchPaths); // do not localize Reg.CloseKey; end; - finally + + if IsBDS and (IDEVersion >= 6) and Reg.OpenKeyReadOnly(RegistryKey + '\C++\Paths') then // do not localize + begin + if FGlobalIncludePaths.Count = 0 then + ConvertPathList(Reg.ReadString('IncludePath'), FGlobalIncludePaths); // do not localize + if FGlobalCppSearchPaths.Count = 0 then + ConvertPathList(Reg.ReadString('SearchPath'), FGlobalCppSearchPaths); // do not localize + if FGlobalCppLibraryPaths.Count = 0 then + ConvertPathList(Reg.ReadString('LibraryPath'), FGlobalCppLibraryPaths); // do not localize + Reg.CloseKey; + end; + + if IsBDS and (IDEVersion = 6) then + begin + { Repair C++ Paths that were destroyed by a previous installer version } + if (FGlobalIncludePaths.IndexOf('$(BDS)\ObjRepos\Cpp') = -1) and + (FGlobalIncludePaths.IndexOf('$(BDS)\include\Indy10') = -1) and + (FGlobalIncludePaths.IndexOf('$(BDS)\RaveReports\Lib') = -1) then + begin + FGlobalIncludePaths.Insert(0, '$(BDS)\ObjRepos\Cpp'); + FGlobalIncludePaths.Insert(1, '$(BDS)\include\Indy10'); + FGlobalIncludePaths.Insert(2, '$(BDS)\RaveReports\Lib'); + end; + + if (FGlobalCppLibraryPaths.IndexOf('$(BDS)\lib') = -1) and + (FGlobalCppLibraryPaths.IndexOf('$(BDS)\lib\Indy10') = -1) and + (FGlobalCppLibraryPaths.IndexOf('$(BDS)\RaveReports\Lib') = -1) then + begin + FGlobalCppLibraryPaths.Insert(0, '$(BDS)\lib'); + FGlobalCppLibraryPaths.Insert(1, '$(BDS)\lib\Indy10'); + FGlobalCppLibraryPaths.Insert(2, '$(BDS)\RaveReports\Lib'); + end; + end; + finally Reg.Free; end; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2008-11-18 16:27:41
|
Revision: 12050 http://jvcl.svn.sourceforge.net/jvcl/?rev=12050&view=rev Author: ahuser Date: 2008-11-18 16:27:32 +0000 (Tue, 18 Nov 2008) Log Message: ----------- If "ForceEnvOptionsUpdate" is set the EnvOptions.dproj file must be considered out of date Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-11-17 23:32:53 UTC (rev 12049) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2008-11-18 16:27:32 UTC (rev 12050) @@ -775,6 +775,7 @@ i: Integer; EnvOptions: TJclSimpleXml; PropertyGroupNode, PropertyNode: TJclSimpleXMLElem; + ForceEnvOptionsUpdate: Boolean; begin Reg := TRegistry.Create; try @@ -855,10 +856,19 @@ if IsBDS and (IDEVersion = 5) and SupportsPersonalities([persBCB], True) then FName := 'CodeGear C++Builder'; + ForceEnvOptionsUpdate := False; + if IsBDS and (IDEVersion >= 5) then + begin + // If "ForceEnvOptionsUpdate" is set the EnvOptions.dproj file must be considered out of date + if Reg.OpenKeyReadOnly(RegistryKey + '\Globals') then + if Reg.ValueExists('ForceEnvOptionsUpdate') and (Reg.ReadString('ForceEnvOptionsUpdate') = '1') then + ForceEnvOptionsUpdate := True; + end; + // get library paths - if IsBDS and (IDEVersion >= 5) and FileExists(GetEnvOptionsFileName) then + if IsBDS and (IDEVersion >= 5) and FileExists(GetEnvOptionsFileName) and not ForceEnvOptionsUpdate then begin - // MsBuild + // MSBuild EnvOptions := TJclSimpleXML.Create; try EnvOptions.LoadFromFile(GetEnvOptionsFileName); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ou...@us...> - 2009-04-19 09:54:51
|
Revision: 12278 http://jvcl.svn.sourceforge.net/jvcl/?rev=12278&view=rev Author: outchy Date: 2009-04-19 09:54:46 +0000 (Sun, 19 Apr 2009) Log Message: ----------- no prolog in EnvOptions files. Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2009-04-17 14:03:24 UTC (rev 12277) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2009-04-19 09:54:46 UTC (rev 12278) @@ -873,6 +873,7 @@ try EnvOptions.LoadFromFile(GetEnvOptionsFileName); EnvOptions.Options := EnvOptions.Options - [sxoAutoCreate]; + EnvOptions.Options := EnvOptions.Options + [sxoDoNotSaveProlog]; PropertyGroupNode := EnvOptions.Root.Items.ItemNamed['PropertyGroup']; // do not localize if Assigned(PropertyGroupNode) then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2009-04-25 17:51:10
|
Revision: 12285 http://jvcl.svn.sourceforge.net/jvcl/?rev=12285&view=rev Author: obones Date: 2009-04-25 17:51:07 +0000 (Sat, 25 Apr 2009) Log Message: ----------- Do not save prolog, Delphi does not like it Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2009-04-25 17:45:35 UTC (rev 12284) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2009-04-25 17:51:07 UTC (rev 12285) @@ -1110,6 +1110,7 @@ try EnvOptions.LoadFromFile(GetEnvOptionsFileName); EnvOptions.Options := EnvOptions.Options + [sxoAutoCreate]; + EnvOptions.Options := EnvOptions.Options + [sxoDoNotSaveProlog]; PropertyGroupNode := EnvOptions.Root.Items.ItemNamed['PropertyGroup']; // do not localize This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2011-11-02 18:12:06
|
Revision: 13141 http://jvcl.svn.sourceforge.net/jvcl/?rev=13141&view=rev Author: ahuser Date: 2011-11-02 18:12:00 +0000 (Wed, 02 Nov 2011) Log Message: ----------- ForceEnvOptionsUpdate can be REG_SZ or REG_DWORD depending on which component installer wrote it into the registry Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2011-10-28 20:03:47 UTC (rev 13140) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2011-11-02 18:12:00 UTC (rev 13141) @@ -782,6 +782,7 @@ ConditionProperty: TJclSimpleXMLProp; ForceEnvOptionsUpdate: Boolean; LibraryKey: string; + ValueInfo: TRegDataInfo; begin Reg := TRegistry.Create; try @@ -867,8 +868,13 @@ begin // If "ForceEnvOptionsUpdate" is set the EnvOptions.dproj file must be considered out of date if Reg.OpenKeyReadOnly(RegistryKey + '\Globals') then - if Reg.ValueExists('ForceEnvOptionsUpdate') and (Reg.ReadString('ForceEnvOptionsUpdate') = '1') then - ForceEnvOptionsUpdate := True; + if Reg.GetDataInfo('ForceEnvOptionsUpdate', ValueInfo) then + case ValueInfo.RegData of // some installer write it as REG_DWORD instead of REG_SZ + rdString: + ForceEnvOptionsUpdate := Reg.ReadString('ForceEnvOptionsUpdate') = '1'; + rdInteger: + ForceEnvOptionsUpdate := Reg.ReadInteger('ForceEnvOptionsUpdate') = 1; + end; end; // get library paths This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2012-03-11 13:49:48
|
Revision: 13270 http://jvcl.svn.sourceforge.net/jvcl/?rev=13270&view=rev Author: ahuser Date: 2012-03-11 13:49:41 +0000 (Sun, 11 Mar 2012) Log Message: ----------- Fixed C++Builder XE2 path registration Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-03-02 15:04:38 UTC (rev 13269) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-03-11 13:49:41 UTC (rev 13270) @@ -1002,47 +1002,39 @@ Reg.CloseKey; end; - if IsBDS and Reg.OpenKeyReadOnly(RegistryKey + '\CppPaths') then // do not localize + // C++Builder global directories + if IsBDS then begin - ConvertPathList(Reg.ReadString('IncludePath'), FGlobalIncludePaths); // do not localize - ConvertPathList(Reg.ReadString('BrowsingPath'), FGlobalCppBrowsingPaths); // do not localize - Reg.CloseKey; - end; - - if IsBDS and (IDEVersion >= 6) and Reg.OpenKeyReadOnly(RegistryKey + '\C++\Paths') then // do not localize - begin - if FGlobalIncludePaths.Count = 0 then + // C++Builder (2006) 2007 + if {(IDEVersion < 6) and} Reg.OpenKeyReadOnly(RegistryKey + '\CppPaths') then // do not localize + begin ConvertPathList(Reg.ReadString('IncludePath'), FGlobalIncludePaths); // do not localize - if FGlobalCppBrowsingPaths.Count = 0 then ConvertPathList(Reg.ReadString('BrowsingPath'), FGlobalCppBrowsingPaths); // do not localize - if FGlobalCppLibraryPaths.Count = 0 then - ConvertPathList(Reg.ReadString('LibraryPath'), FGlobalCppLibraryPaths); // do not localize - Reg.CloseKey; - end; - - (* - if IsBDS and (IDEVersion = 6) then - begin - { Repair C++ Paths that were destroyed by a previous installer version } - if (FGlobalIncludePaths.IndexOf('$(BDS)\ObjRepos\Cpp') = -1) and - (FGlobalIncludePaths.IndexOf('$(BDS)\include\Indy10') = -1) and - (FGlobalIncludePaths.IndexOf('$(BDS)\RaveReports\Lib') = -1) then + Reg.CloseKey; + end; + // C++Builder 2009, 2010, XE + if (IDEVersion >= 6) and (IDEVersion < 9) and Reg.OpenKeyReadOnly(RegistryKey + '\C++\Paths') then // do not localize begin - FGlobalIncludePaths.Insert(0, '$(BDS)\ObjRepos\Cpp'); - FGlobalIncludePaths.Insert(1, '$(BDS)\include\Indy10'); - FGlobalIncludePaths.Insert(2, '$(BDS)\RaveReports\Lib'); + if FGlobalIncludePaths.Count = 0 then + ConvertPathList(Reg.ReadString('IncludePath'), FGlobalIncludePaths); // do not localize + if FGlobalCppBrowsingPaths.Count = 0 then + ConvertPathList(Reg.ReadString('BrowsingPath'), FGlobalCppBrowsingPaths); // do not localize + if FGlobalCppLibraryPaths.Count = 0 then + ConvertPathList(Reg.ReadString('LibraryPath'), FGlobalCppLibraryPaths); // do not localize + Reg.CloseKey; end; - - if (FGlobalCppLibraryPaths.IndexOf('$(BDS)\lib') = -1) and - (FGlobalCppLibraryPaths.IndexOf('$(BDS)\lib\Indy10') = -1) and - (FGlobalCppLibraryPaths.IndexOf('$(BDS)\RaveReports\Lib') = -1) then + // C++Builder XE2 only supports Win32 + if (IDEVersion >= 9) and Reg.OpenKeyReadOnly(RegistryKey + '\C++\Paths\' + GetPlatformStr) then // do not localize begin - FGlobalCppLibraryPaths.Insert(0, '$(BDS)\lib'); - FGlobalCppLibraryPaths.Insert(1, '$(BDS)\lib\Indy10'); - FGlobalCppLibraryPaths.Insert(2, '$(BDS)\RaveReports\Lib'); + if FGlobalIncludePaths.Count = 0 then + ConvertPathList(Reg.ReadString('IncludePath'), FGlobalIncludePaths); // do not localize + if FGlobalCppBrowsingPaths.Count = 0 then + ConvertPathList(Reg.ReadString('BrowsingPath'), FGlobalCppBrowsingPaths); // do not localize + if FGlobalCppLibraryPaths.Count = 0 then + ConvertPathList(Reg.ReadString('LibraryPath'), FGlobalCppLibraryPaths); // do not localize + Reg.CloseKey; end; end; - *) finally Reg.Free; end; @@ -1216,8 +1208,9 @@ Reg.CloseKey; end; if IsBDS and - (((IDEVersion >= 5) and Reg.OpenKey(RegistryKey + '\C++\Paths', False)) or // might not exist // do not localize - Reg.OpenKey(RegistryKey + '\CppPaths', False)) then // might not exist // do not localize + (((IDEVersion >= 5) and (IDEVersion < 9) and Reg.OpenKey(RegistryKey + '\C++\Paths', False)) or // may not exist // do not localize + ((IDEVersion >= 9) and Reg.OpenKey(RegistryKey + '\C++\Paths\' + GetPlatformStr, False)) or // may not exist // do not localize + Reg.OpenKey(RegistryKey + '\CppPaths', False)) then // may not exist // do not localize begin S := ConvertPathList(FGlobalIncludePaths); if not Reg.ValueExists('IncludePath') or (S <> Reg.ReadString('IncludePath')) then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ob...@us...> - 2012-03-21 08:40:59
|
Revision: 13277 http://jvcl.svn.sourceforge.net/jvcl/?rev=13277&view=rev Author: obones Date: 2012-03-21 08:40:48 +0000 (Wed, 21 Mar 2012) Log Message: ----------- Must compute and use IsValid as early as possible because some files (like rsvars.bat) are accessed by LoadFromRegistry Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-03-20 13:29:03 UTC (rev 13276) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-03-21 08:40:48 UTC (rev 13277) @@ -543,7 +543,6 @@ FKnownPackages := TDelphiPackageList.Create; LoadFromRegistry; - FIsValid := (RootDir <> '') and (Executable <> '') and FileExists(Executable); FIsEvaluation := not FileExists(RootDir + '\bin\dcc32.exe'); end; @@ -812,6 +811,13 @@ Reg.CloseKey; end; + FIsValid := (RootDir <> '') and (Executable <> '') and FileExists(Executable); + + // If we are not valid, no need to go any further as reading the rest of the values + // might try to access executable or batch files that are not here. + if not IsValid then + Exit; + Reg.Free; Reg := TRegistry.Create; Reg.RootKey := HKEY_CURRENT_USER; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ah...@us...> - 2012-12-11 21:31:39
|
Revision: 13481 http://jvcl.svn.sourceforge.net/jvcl/?rev=13481&view=rev Author: ahuser Date: 2012-12-11 21:31:31 +0000 (Tue, 11 Dec 2012) Log Message: ----------- Sort CompileTargets by version number so that XE3 is below XE and XE2. Modified Paths: -------------- trunk/jvcl/install/JVCLInstall/DelphiData.pas Modified: trunk/jvcl/install/JVCLInstall/DelphiData.pas =================================================================== --- trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-12-11 15:17:51 UTC (rev 13480) +++ trunk/jvcl/install/JVCLInstall/DelphiData.pas 2012-12-11 21:31:31 UTC (rev 13481) @@ -390,6 +390,11 @@ { TCompileTargetList } +function SortTargetsByVersionNumber(Item1, Item2: Pointer): Integer; +begin + Result := TCompileTarget(Item1).Version - TCompileTarget(Item2).Version; +end; + constructor TCompileTargetList.Create; begin inherited Create; @@ -410,6 +415,7 @@ LoadTargets(KeyCodeGear, 'BDS', CmdOptions.RegistryKeyBDS); // do not localize LoadTargets(KeyEmbarcadero, 'BDS', CmdOptions.RegistryKeyBDS); // do not localize end; + Sort(SortTargetsByVersionNumber); end; function TCompileTargetList.GetItems(Index: Integer): TCompileTarget; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |