mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-26 11:17:57 +08:00
Added methods that enable the update of running main application just giving the direction of newest main application file.
This commit is contained in:
@ -123,7 +123,7 @@
|
|||||||
<Directories Name="UnitOutputDir">..\..\build</Directories>
|
<Directories Name="UnitOutputDir">..\..\build</Directories>
|
||||||
<Directories Name="PackageDLLOutputDir">..\..\build</Directories>
|
<Directories Name="PackageDLLOutputDir">..\..\build</Directories>
|
||||||
<Directories Name="PackageDCPOutputDir"></Directories>
|
<Directories Name="PackageDCPOutputDir"></Directories>
|
||||||
<Directories Name="SearchPath">..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\smdbgrid\build;..\..\components\smdbgrid\resources;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build</Directories>
|
<Directories Name="SearchPath">..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\smdbgrid\build;..\..\components\smdbgrid\resources;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build;..\..\res</Directories>
|
||||||
<Directories Name="Packages">Vcl50;Vclx50;VclSmp50;Vcldb50;vclado50;ibevnt50;Vclbde50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;vcl;rtl;dbrtl;vcldb;bdertl;ZUtils6;ZCommon6</Directories>
|
<Directories Name="Packages">Vcl50;Vclx50;VclSmp50;Vcldb50;vclado50;ibevnt50;Vclbde50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;vcl;rtl;dbrtl;vcldb;bdertl;ZUtils6;ZCommon6</Directories>
|
||||||
<Directories Name="Conditionals"></Directories>
|
<Directories Name="Conditionals"></Directories>
|
||||||
<Directories Name="DebugSourceDirs">..\..\source;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\source;..\..\components\heidisql\source;..\..\components\smdbgrid\source;..\..\components\synedit\source;..\..\components\zeosdbo\src;..\..\components\zeosdbo\src\plain;..\..\components\zeosdbo\src\component;..\..\components\zeosdbo\src\core;..\..\components\zeosdbo\src\dbc;..\..\components\zeosdbo\src\parsesql;..\..\components\virtualtreeview\Source</Directories>
|
<Directories Name="DebugSourceDirs">..\..\source;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\source;..\..\components\heidisql\source;..\..\components\smdbgrid\source;..\..\components\synedit\source;..\..\components\zeosdbo\src;..\..\components\zeosdbo\src\plain;..\..\components\zeosdbo\src\component;..\..\components\zeosdbo\src\core;..\..\components\zeosdbo\src\dbc;..\..\components\zeosdbo\src\parsesql;..\..\components\virtualtreeview\Source</Directories>
|
||||||
|
@ -19,10 +19,10 @@
|
|||||||
<DCC_HppOutput>..\..\build</DCC_HppOutput>
|
<DCC_HppOutput>..\..\build</DCC_HppOutput>
|
||||||
<DCC_BplOutput>..\..\build</DCC_BplOutput>
|
<DCC_BplOutput>..\..\build</DCC_BplOutput>
|
||||||
<DCC_DcpOutput>..\..\build</DCC_DcpOutput>
|
<DCC_DcpOutput>..\..\build</DCC_DcpOutput>
|
||||||
<DCC_UnitSearchPath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build</DCC_UnitSearchPath>
|
<DCC_UnitSearchPath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build;..\..\res</DCC_UnitSearchPath>
|
||||||
<DCC_ResourcePath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build</DCC_ResourcePath>
|
<DCC_ResourcePath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build;..\..\res</DCC_ResourcePath>
|
||||||
<DCC_ObjPath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build</DCC_ObjPath>
|
<DCC_ObjPath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build;..\..\res</DCC_ObjPath>
|
||||||
<DCC_IncludePath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build</DCC_IncludePath>
|
<DCC_IncludePath>..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\Resources;..\..\components\tntunictrls\build;..\..\res</DCC_IncludePath>
|
||||||
<DCC_Define>RELEASE</DCC_Define>
|
<DCC_Define>RELEASE</DCC_Define>
|
||||||
<DCC_Description>HeidiSQL</DCC_Description>
|
<DCC_Description>HeidiSQL</DCC_Description>
|
||||||
<DCC_AssertionsAtRuntime>False</DCC_AssertionsAtRuntime>
|
<DCC_AssertionsAtRuntime>False</DCC_AssertionsAtRuntime>
|
||||||
@ -40,10 +40,10 @@
|
|||||||
<DCC_HppOutput>..\..\build</DCC_HppOutput>
|
<DCC_HppOutput>..\..\build</DCC_HppOutput>
|
||||||
<DCC_BplOutput>..\..\build</DCC_BplOutput>
|
<DCC_BplOutput>..\..\build</DCC_BplOutput>
|
||||||
<DCC_DcpOutput>..\..\build</DCC_DcpOutput>
|
<DCC_DcpOutput>..\..\build</DCC_DcpOutput>
|
||||||
<DCC_UnitSearchPath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build</DCC_UnitSearchPath>
|
<DCC_UnitSearchPath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build;..\..\res</DCC_UnitSearchPath>
|
||||||
<DCC_ResourcePath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build</DCC_ResourcePath>
|
<DCC_ResourcePath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build;..\..\res</DCC_ResourcePath>
|
||||||
<DCC_ObjPath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build</DCC_ObjPath>
|
<DCC_ObjPath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build;..\..\res</DCC_ObjPath>
|
||||||
<DCC_IncludePath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build</DCC_IncludePath>
|
<DCC_IncludePath>$(BDS)\RaveReports\Lib;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy10;..\..\components\compilerdetection\include;..\..\components\heidisql\include;..\..\components\edbimage\build;..\..\components\heidisql\build;..\..\components\synedit\build;..\..\components\synedit\resources;..\..\components\zeosdbo\build;..\..\components\virtualtreeview\build;..\..\components\virtualtreeview\resources;..\..\components\tntunictrls\build;..\..\res</DCC_IncludePath>
|
||||||
<DCC_Define>DEBUG</DCC_Define>
|
<DCC_Define>DEBUG</DCC_Define>
|
||||||
<DCC_Description>HeidiSQL</DCC_Description>
|
<DCC_Description>HeidiSQL</DCC_Description>
|
||||||
<DCC_UNIT_PLATFORM>True</DCC_UNIT_PLATFORM>
|
<DCC_UNIT_PLATFORM>True</DCC_UNIT_PLATFORM>
|
||||||
|
@ -85,6 +85,8 @@ type
|
|||||||
function TColorToHex( Color : TColor ): string;
|
function TColorToHex( Color : TColor ): string;
|
||||||
function GetVTCaptions( VT: TVirtualStringTree; OnlySelected: Boolean = False; Column: Integer = 0 ): TStringList;
|
function GetVTCaptions( VT: TVirtualStringTree; OnlySelected: Boolean = False; Column: Integer = 0 ): TStringList;
|
||||||
function Pos2(const Needle, HayStack: string; const StartPos: Integer) : Integer;
|
function Pos2(const Needle, HayStack: string; const StartPos: Integer) : Integer;
|
||||||
|
procedure ExtractUpdater;
|
||||||
|
procedure UpdateItWith(const _file: String);
|
||||||
|
|
||||||
var
|
var
|
||||||
MYSQL_KEYWORDS : TStringList;
|
MYSQL_KEYWORDS : TStringList;
|
||||||
@ -92,6 +94,8 @@ var
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
{$R updater.res}
|
||||||
|
|
||||||
uses main;
|
uses main;
|
||||||
|
|
||||||
type
|
type
|
||||||
@ -2134,6 +2138,85 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Extract the updater from resource.
|
||||||
|
}
|
||||||
|
procedure ExtractUpdater;
|
||||||
|
var
|
||||||
|
ri: HRSRC;
|
||||||
|
rh: THandle;
|
||||||
|
bf: PChar;
|
||||||
|
ms: TMemoryStream;
|
||||||
|
begin
|
||||||
|
// look for resource UPDATER
|
||||||
|
ri := FindResource( HInstance, 'UPDATER', 'EXE' );
|
||||||
|
|
||||||
|
// define the Handle
|
||||||
|
rh := LoadResource( HInstance, ri );
|
||||||
|
|
||||||
|
if ( rh <> 0 ) then
|
||||||
|
begin
|
||||||
|
// alloc memory space
|
||||||
|
ms := TMemoryStream.Create();
|
||||||
|
try
|
||||||
|
ms.Clear();
|
||||||
|
bf := LockResource( rh );
|
||||||
|
|
||||||
|
// load the resource on memory stream
|
||||||
|
ms.WriteBuffer( bf[0], SizeOfResource( HInstance, ri ) );
|
||||||
|
ms.Seek( 0, 0 );
|
||||||
|
|
||||||
|
// save the resource like executable
|
||||||
|
ms.SaveToFile( ExtractFilePath( Application.ExeName ) + 'updater.exe' );
|
||||||
|
finally
|
||||||
|
// free memory
|
||||||
|
UnlockResource( rh );
|
||||||
|
FreeResource( rh );
|
||||||
|
ms.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{**
|
||||||
|
Update the current application with the file.
|
||||||
|
|
||||||
|
@param _file the file that will replace the current application
|
||||||
|
}
|
||||||
|
procedure UpdateItWith(const _file: String);
|
||||||
|
var
|
||||||
|
app: String;
|
||||||
|
begin
|
||||||
|
// sanitize: try to remove the oldest updater
|
||||||
|
DeleteFile( PAnsiChar( ExtractFilePath( Application.ExeName ) + 'updater.exe' ) );
|
||||||
|
|
||||||
|
// retrive the application name without extension
|
||||||
|
app := Copy( Application.Exename, 1, ( Length( Application.Exename ) - 4 ) );
|
||||||
|
|
||||||
|
// sanitize: try to remove the oldest file
|
||||||
|
DeleteFile( PAnsiChar( app + '.old' ) );
|
||||||
|
|
||||||
|
// verify the file existence
|
||||||
|
if ( FileExists( _file ) ) then
|
||||||
|
begin
|
||||||
|
// copy to current application folder the newest file
|
||||||
|
CopyFile( PChar( _file ), PChar( app + '.new' ), False );
|
||||||
|
|
||||||
|
// extract the updater from current application resource
|
||||||
|
ExtractUpdater();
|
||||||
|
|
||||||
|
// call the updater
|
||||||
|
WinExec( PAnsiChar( '"' + ExtractFilePath( Application.ExeName ) + 'updater.exe" "' + app + '"' ), 0 );
|
||||||
|
|
||||||
|
// stop running the current application
|
||||||
|
Application.Terminate();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user