mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2026-03-13 09:24:25 +08:00
Add feature 1769207 "Automatic Software Update":
Implements a simple dialog which tells the user if there is some new release or nightly build available. Parses http://www.heidisql.com/updatecheck.php as a .ini file. Download buttons just start the webbrowser currently. Todo: Automatic invocation of this dialog at regular intervals (for example once a week) Todo: Automatic download + update + restart
This commit is contained in:
@@ -34,7 +34,8 @@ uses
|
||||
column_selection in '..\..\source\column_selection.pas' {ColumnSelectionForm},
|
||||
data_sorting in '..\..\source\data_sorting.pas' {DataSortingForm},
|
||||
runsqlfile in '..\..\source\runsqlfile.pas' {RunSQLFileForm},
|
||||
createdatabase in '..\..\source\createdatabase.pas' {CreateDatabaseForm};
|
||||
createdatabase in '..\..\source\createdatabase.pas' {CreateDatabaseForm},
|
||||
updatecheck in '..\..\source\updatecheck.pas' {frmUpdateCheck};
|
||||
|
||||
{$R *.RES}
|
||||
|
||||
|
||||
@@ -34,7 +34,8 @@ uses
|
||||
column_selection in '..\..\source\column_selection.pas' {ColumnSelectionForm},
|
||||
data_sorting in '..\..\source\data_sorting.pas' {DataSortingForm},
|
||||
runsqlfile in '..\..\source\runsqlfile.pas' {RunSQLFileForm},
|
||||
createdatabase in '..\..\source\createdatabase.pas' {CreateDatabaseForm};
|
||||
createdatabase in '..\..\source\createdatabase.pas' {CreateDatabaseForm},
|
||||
updatecheck in '..\..\source\updatecheck.pas' {frmUpdateCheck};
|
||||
|
||||
{$R *.RES}
|
||||
|
||||
|
||||
@@ -134,6 +134,9 @@
|
||||
<Form>tbl_properties_form</Form>
|
||||
</DCCReference>
|
||||
<DCCReference Include="..\..\source\threading.pas" />
|
||||
<DCCReference Include="..\..\source\updatecheck.pas">
|
||||
<Form>frmUpdateCheck</Form>
|
||||
</DCCReference>
|
||||
<DCCReference Include="..\..\source\usermanager.pas">
|
||||
<Form>UserManagerForm</Form>
|
||||
</DCCReference>
|
||||
|
||||
BIN
res/arrow_refresh.gif
Normal file
BIN
res/arrow_refresh.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 976 B |
@@ -98,7 +98,7 @@ begin
|
||||
Screen.Cursor := crHourGlass;
|
||||
|
||||
// App-Version
|
||||
LabelVersion.Caption := 'Version ' + appversion;
|
||||
LabelVersion.Caption := FullAppVersion;
|
||||
|
||||
// Compile-date
|
||||
FileAge(ParamStr(0), Compiled);
|
||||
|
||||
@@ -562,6 +562,10 @@ object MainForm: TMainForm
|
||||
object N8: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object menuUpdateCheck: TMenuItem
|
||||
Caption = 'Check for updates ...'
|
||||
OnClick = menuUpdateCheckClick
|
||||
end
|
||||
object menuWebsite: TMenuItem
|
||||
Tag = 56
|
||||
Caption = 'HeidiSQL Website'
|
||||
|
||||
@@ -141,6 +141,7 @@ type
|
||||
N8: TMenuItem;
|
||||
Import1: TMenuItem;
|
||||
ToolButton1: TToolButton;
|
||||
menuUpdateCheck: TMenuItem;
|
||||
procedure btnSQLHelpClick(Sender: TObject);
|
||||
procedure menuWindowClick(Sender: TObject);
|
||||
procedure focusWindow(Sender: TObject);
|
||||
@@ -198,6 +199,7 @@ type
|
||||
procedure HandleWMCopyData(var msg: TWMCopyData); message WM_COPYDATA;
|
||||
procedure HandleWMProcessLog(var msg: TMessage); message WM_PROCESSLOG;
|
||||
procedure HandleWMClearRightClickPointer(var msg: TMessage); message WM_CLEAR_RIGHTCLICK_POINTER;
|
||||
procedure menuUpdateCheckClick(Sender: TObject);
|
||||
private
|
||||
regMain : TRegistry;
|
||||
function GetChildwin: TMDIChild;
|
||||
@@ -221,7 +223,9 @@ var
|
||||
StatusText : String = 'Initializing...';
|
||||
StatusIconIndex : Integer = 43;
|
||||
loadsqlfile : boolean = true; // load sql-file into query-memo at startup?
|
||||
appversion : String = 'x.y $Rev$';
|
||||
AppVersion : String = 'x.y';
|
||||
AppRevision : String = '$Rev$';
|
||||
FullAppVersion : String;
|
||||
DirnameCommonAppData,
|
||||
DirnameUserAppData,
|
||||
DIRNAME_SNIPPETS,
|
||||
@@ -260,7 +264,8 @@ uses
|
||||
Helpers,
|
||||
Threading,
|
||||
mysql_structures,
|
||||
MysqlConn;
|
||||
MysqlConn,
|
||||
UpdateCheck;
|
||||
|
||||
{$R *.DFM}
|
||||
|
||||
@@ -448,14 +453,16 @@ begin
|
||||
ToolBarStandard.Top := GetRegValue(REGNAME_TOOLBAR2TOP, ToolBarStandard.Top);
|
||||
ToolBarData.Top := GetRegValue(REGNAME_TOOLBARDATATOP, ToolBarData.Top);
|
||||
|
||||
// Beautify appversion
|
||||
if Pos('$Rev: WC', appversion) < 1 then begin
|
||||
appversion := Copy(appversion, 1, Pos('$Rev', appversion) + 4);
|
||||
appversion := appversion + ' unknown';
|
||||
end else appversion := StringReplace(appversion, 'WC ', '', []);
|
||||
appversion := StringReplace( appversion, '$Rev', 'Revision', [rfIgnoreCase] );
|
||||
appversion := StringReplace( appversion, '$', '', [] );
|
||||
appversion := Trim( appversion );
|
||||
// Beautify AppRevision
|
||||
if Pos('$Rev: WC', AppRevision) < 1 then
|
||||
AppRevision := 'unknown'
|
||||
else begin
|
||||
AppRevision := StringReplace( AppRevision, '$Rev: WC', '', [rfIgnoreCase] );
|
||||
AppRevision := StringReplace( AppRevision, '$', '', [] );
|
||||
AppRevision := Trim( AppRevision );
|
||||
end;
|
||||
// Compose full version string
|
||||
FullAppVersion := 'Version ' + AppVersion + ', Revision ' + AppRevision;
|
||||
|
||||
// "All users" folder for HeidiSQL's data (All Users\Application Data)
|
||||
DirnameCommonAppData := GetShellFolder(CSIDL_COMMON_APPDATA) + '\' + APPNAME + '\';
|
||||
@@ -718,9 +725,9 @@ procedure TMainForm.CopyHTMLtableExecute(Sender: TObject);
|
||||
begin
|
||||
// Copy data in actual dataset as HTML
|
||||
if ChildWin.PageControlMain.ActivePage = ChildWin.tabData then
|
||||
dataset2html(ChildWin.GetVisualDataset(), TZQuery(ChildWin.GetVisualDataset()).Sql.Text, '', ChildWin.prefConvertHTMLEntities, APPNAME + ' ' + appversion )
|
||||
dataset2html(ChildWin.GetVisualDataset(), TZQuery(ChildWin.GetVisualDataset()).Sql.Text, '', ChildWin.prefConvertHTMLEntities, APPNAME + ' ' + FullAppVersion )
|
||||
else if ChildWin.PageControlMain.ActivePage = ChildWin.tabQuery then
|
||||
dataset2html(ChildWin.GetVisualDataset(), TZReadOnlyQuery(ChildWin.GetVisualDataset()).Sql.Text, '', ChildWin.prefConvertHTMLEntities, APPNAME + ' ' + appversion);
|
||||
dataset2html(ChildWin.GetVisualDataset(), TZReadOnlyQuery(ChildWin.GetVisualDataset()).Sql.Text, '', ChildWin.prefConvertHTMLEntities, APPNAME + ' ' + FullAppVersion);
|
||||
end;
|
||||
|
||||
|
||||
@@ -941,7 +948,7 @@ begin
|
||||
Screen.Cursor := crHourGlass;
|
||||
case FilterIndex of
|
||||
1 : dataset2csv(query, FieldSep, FieldEncl, LineSep, Filename);
|
||||
2 : dataset2html(query, FileName, FileName, ConvertHTMLSpecialChars, APPNAME+' '+appversion);
|
||||
2 : dataset2html(query, FileName, FileName, ConvertHTMLSpecialChars, APPNAME+' '+FullAppVersion);
|
||||
3 : dataset2xml(query, FileName, FileName);
|
||||
end;
|
||||
ChildWin.prefCSVSeparator := FieldSep;
|
||||
@@ -1266,5 +1273,13 @@ begin
|
||||
ShowStatus( STATUS_MSG_READY, 2 );
|
||||
end;
|
||||
|
||||
procedure TMainForm.menuUpdateCheckClick(Sender: TObject);
|
||||
var
|
||||
frm : TfrmUpdateCheck;
|
||||
begin
|
||||
frm := TfrmUpdateCheck.Create(Self);
|
||||
frm.ShowModal;
|
||||
FreeAndNil(frm);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
218
source/updatecheck.dfm
Normal file
218
source/updatecheck.dfm
Normal file
@@ -0,0 +1,218 @@
|
||||
object frmUpdateCheck: TfrmUpdateCheck
|
||||
Left = 0
|
||||
Top = 0
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Check for updates ...'
|
||||
ClientHeight = 176
|
||||
ClientWidth = 294
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -11
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = []
|
||||
OldCreateOrder = False
|
||||
Position = poMainFormCenter
|
||||
OnShow = FormShow
|
||||
DesignSize = (
|
||||
294
|
||||
176)
|
||||
PixelsPerInch = 96
|
||||
TextHeight = 13
|
||||
object lblStatus: TLabel
|
||||
Left = 40
|
||||
Top = 16
|
||||
Width = 236
|
||||
Height = 51
|
||||
Anchors = [akLeft, akTop, akRight, akBottom]
|
||||
AutoSize = False
|
||||
Caption = 'lblStatus'
|
||||
end
|
||||
object Image1: TImage
|
||||
Left = 16
|
||||
Top = 16
|
||||
Width = 18
|
||||
Height = 17
|
||||
Picture.Data = {
|
||||
0954474946496D61676547494638396110001000F70000296B21296B29297329
|
||||
317B29397331398431398439427342428439428C394294394A8C424A94424A9C
|
||||
42528C4A52944A529C4A529C5252A54A5A94525A9C525AA552638C5A638C6363
|
||||
946363A55A63AD5A6BAD6373946B73B56373B56B73BD6B7B9C7B7BBD6B7BBD73
|
||||
7BBD7B7BC66B7BC67384A58484BD7B84C67B84C6848CAD848CAD8C8CB5848CB5
|
||||
8C8CC6848CCE8494AD8C94BD9494CE8494CE8C9CB59C9CBD9C9CC6949CCE949C
|
||||
D694A5CE9CA5D69CADC6ADADCEA5ADCEADADD6A5B5CEADB5CEB5B5D6B5B5DEAD
|
||||
B5DEB5BDD6B5BDDEB5BDDEBDCEDECEDEEFDEE7EFE7EFF7EFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21F9040100004B002C
|
||||
000000001000100087296B21296B29297329317B293973313984313984394273
|
||||
42428439428C394294394A8C424A94424A9C42528C4A52944A529C4A529C5252
|
||||
A54A5A94525A9C525AA552638C5A638C6363946363A55A63AD5A6BAD6373946B
|
||||
73B56373B56B73BD6B7B9C7B7BBD6B7BBD737BBD7B7BC66B7BC67384A58484BD
|
||||
7B84C67B84C6848CAD848CAD8C8CB5848CB58C8CC6848CCE8494AD8C94BD9494
|
||||
CE8494CE8C9CB59C9CBD9C9CC6949CCE949CD694A5CE9CA5D69CADC6ADADCEA5
|
||||
ADCEADADD6A5B5CEADB5CEB5B5D6B5B5DEADB5DEB5BDD6B5BDDEB5BDDEBDCEDE
|
||||
CEDEEFDEE7EFE7EFF7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFF08AD0097081C389007C1830833B040B844C990141A1A30
|
||||
484021828A83485C84403163860B1728442C58315009C81B1F419E10F1018189
|
||||
81413E7444416180000008108020B8D2C508072D061EE07090C244043108922C
|
||||
322408901F4F7FECD8B14408C11C0F121440701087888136289C40B10103411D
|
||||
213E48902836E4021A037D84C071C323C80F2228604812B7434790283C644070
|
||||
E1C8411B19281418108080051A7C11B298C0B032DCCA01010021F9040100004B
|
||||
002C000000001000100087296B21296B29297329317B29397331398431398439
|
||||
427342428439428C394294394A8C424A94424A9C42528C4A52944A529C4A529C
|
||||
5252A54A5A94525A9C525AA552638C5A638C6363946363A55A63AD5A6BAD6373
|
||||
946B73B56373B56B73BD6B7B9C7B7BBD6B7BBD737BBD7B7BC66B7BC67384A584
|
||||
84BD7B84C67B84C6848CAD848CAD8C8CB5848CB58C8CC6848CCE8494AD8C94BD
|
||||
9494CE8494CE8C9CB59C9CBD9C9CC6949CCE949CD694A5CE9CA5D69CADC6ADAD
|
||||
CEA5ADCEADADD6A5B5CEADB5CEB5B5D6B5B5DEADB5DEB5BDD6B5BDDEB5BDDEBD
|
||||
CEDECEDEEFDEE7EFE7EFF7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFF08AD0097081C389007C1830833B040B844C990141A
|
||||
1A30484021828A83485C84403163860B1728442C58315009C81B1F419E10F101
|
||||
818981413E7444416180000008108020B8D2C508072D061EE07090C244043108
|
||||
922C322408901F4F7FECD8B14408C11C0F121440701087888136289C40B10103
|
||||
411D213E48902836E4021A037D84C071C323C80F2228604812B7434790283C64
|
||||
4070E1C8411B19281418108080051A7C11B298C0B032DCCA01010021F9040100
|
||||
004B002C000000001000100087296B21296B29297329317B2939733139843139
|
||||
8439427342428439428C394294394A8C424A94424A9C42528C4A52944A529C4A
|
||||
529C5252A54A5A94525A9C525AA552638C5A638C6363946363A55A63AD5A6BAD
|
||||
6373946B73B56373B56B73BD6B7B9C7B7BBD6B7BBD737BBD7B7BC66B7BC67384
|
||||
A58484BD7B84C67B84C6848CAD848CAD8C8CB5848CB58C8CC6848CCE8494AD8C
|
||||
94BD9494CE8494CE8C9CB59C9CBD9C9CC6949CCE949CD694A5CE9CA5D69CADC6
|
||||
ADADCEA5ADCEADADD6A5B5CEADB5CEB5B5D6B5B5DEADB5DEB5BDD6B5BDDEB5BD
|
||||
DEBDCEDECEDEEFDEE7EFE7EFF7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFF08AD0097081C389007C1830833B040B844C990
|
||||
141A1A30484021828A83485C84403163860B1728442C58315009C81B1F419E10
|
||||
F101818981413E7444416180000008108020B8D2C508072D061EE07090C24404
|
||||
3108922C322408901F4F7FECD8B14408C11C0F121440701087888136289C40B1
|
||||
0103411D213E48902836E4021A037D84C071C323C80F2228604812B743479028
|
||||
3C644070E1C8411B19281418108080051A7C11B298C0B032DCCA01010021F904
|
||||
0100004B002C000000001000100087296B21296B29297329317B293973313984
|
||||
31398439427342428439428C394294394A8C424A94424A9C42528C4A52944A52
|
||||
9C4A529C5252A54A5A94525A9C525AA552638C5A638C6363946363A55A63AD5A
|
||||
6BAD6373946B73B56373B56B73BD6B7B9C7B7BBD6B7BBD737BBD7B7BC66B7BC6
|
||||
7384A58484BD7B84C67B84C6848CAD848CAD8C8CB5848CB58C8CC6848CCE8494
|
||||
AD8C94BD9494CE8494CE8C9CB59C9CBD9C9CC6949CCE949CD694A5CE9CA5D69C
|
||||
ADC6ADADCEA5ADCEADADD6A5B5CEADB5CEB5B5D6B5B5DEADB5DEB5BDD6B5BDDE
|
||||
B5BDDEBDCEDECEDEEFDEE7EFE7EFF7EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08AD0097081C389007C1830833B040B844
|
||||
C990141A1A30484021828A83485C84403163860B1728442C58315009C81B1F41
|
||||
9E10F101818981413E7444416180000008108020B8D2C508072D061EE07090C2
|
||||
44043108922C322408901F4F7FECD8B14408C11C0F121440701087888136289C
|
||||
40B10103411D213E48902836E4021A037D84C071C323C80F2228604812B74347
|
||||
90283C644070E1C8411B19281418108080051A7C11B298C0B032DCCA0101003B}
|
||||
Transparent = True
|
||||
end
|
||||
object btnRelease: TButton
|
||||
Left = 16
|
||||
Top = 73
|
||||
Width = 260
|
||||
Height = 25
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Caption = 'Download new release'
|
||||
ModalResult = 1
|
||||
TabOrder = 0
|
||||
OnClick = btnReleaseClick
|
||||
end
|
||||
object btnBuild: TButton
|
||||
Left = 16
|
||||
Top = 104
|
||||
Width = 260
|
||||
Height = 25
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Caption = 'Download nightly build'
|
||||
ModalResult = 1
|
||||
TabOrder = 1
|
||||
OnClick = btnBuildClick
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 16
|
||||
Top = 135
|
||||
Width = 260
|
||||
Height = 25
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
Default = True
|
||||
ModalResult = 2
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
150
source/updatecheck.pas
Normal file
150
source/updatecheck.pas
Normal file
@@ -0,0 +1,150 @@
|
||||
unit updatecheck;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Classes, Forms,
|
||||
Dialogs, StdCtrls, ExtActns, IniFiles, Controls, ExtCtrls, GIFImg;
|
||||
|
||||
type
|
||||
TfrmUpdateCheck = class(TForm)
|
||||
btnRelease: TButton;
|
||||
btnBuild: TButton;
|
||||
lblStatus: TLabel;
|
||||
btnCancel: TButton;
|
||||
Image1: TImage;
|
||||
procedure btnBuildClick(Sender: TObject);
|
||||
procedure btnReleaseClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
d : TDownLoadURL;
|
||||
ReleaseURL, BuildURL : String;
|
||||
procedure Status(txt: String);
|
||||
procedure ReadCheckFile;
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses helpers, main;
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
{$I const.inc}
|
||||
|
||||
|
||||
|
||||
{**
|
||||
Update status text
|
||||
}
|
||||
procedure TfrmUpdateCheck.Status(txt: String);
|
||||
begin
|
||||
lblStatus.Caption := txt;
|
||||
Repaint;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Download check file
|
||||
}
|
||||
procedure TfrmUpdateCheck.FormShow(Sender: TObject);
|
||||
var
|
||||
TempPath: array[0..MAX_PATH] of Char;
|
||||
begin
|
||||
Status('Initiating ... ');
|
||||
Caption := 'Check for '+APPNAME+' updates ...';
|
||||
|
||||
// Detect temp directory
|
||||
GetTempPath(MAX_PATH, @TempPath);
|
||||
|
||||
// Initially hide download buttons
|
||||
btnRelease.Enabled := False;
|
||||
btnBuild.Enabled := False;
|
||||
btnCancel.Enabled := False;
|
||||
|
||||
d := TDownLoadURL.Create(Self);
|
||||
d.URL := APPDOMAIN + 'updatecheck.php';
|
||||
// Todo: find a better temp directory
|
||||
d.Filename := StrPas(TempPath) + APPNAME + '_updatecheck.ini';
|
||||
Screen.Cursor := crHourglass;
|
||||
Status('Downloading check file '+d.URL+' ... ');
|
||||
try
|
||||
// Download the check file
|
||||
d.ExecuteTarget(nil);
|
||||
ReadCheckFile;
|
||||
DeleteFile(d.Filename);
|
||||
finally
|
||||
FreeAndNil(d);
|
||||
Screen.Cursor := crDefault;
|
||||
btnCancel.Enabled := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Parse check file for updated version + release
|
||||
}
|
||||
procedure TfrmUpdateCheck.ReadCheckFile;
|
||||
var
|
||||
Ini : TIniFile;
|
||||
ReleaseVersion, BuildRevision, statustxt : String;
|
||||
const
|
||||
INISECT_RELEASE = 'Release';
|
||||
INISECT_BUILD = 'Build';
|
||||
begin
|
||||
Status('Reading check file ...');
|
||||
statustxt := 'No update available.';
|
||||
|
||||
// Read [Release] section of check file
|
||||
Ini := TIniFile.Create(d.Filename);
|
||||
if Ini.SectionExists(INISECT_RELEASE) then begin
|
||||
ReleaseVersion := Ini.ReadString(INISECT_RELEASE, 'Version', 'unknown');
|
||||
ReleaseURL := Ini.ReadString(INISECT_RELEASE, 'URL', '');
|
||||
statustxt := 'Release available: Version ' + ReleaseVersion + ' (yours: '+AppVersion+')' + CRLF;
|
||||
btnRelease.Caption := 'Download version ' + ReleaseVersion;
|
||||
// Enable the download button if the current version is outdated
|
||||
btnRelease.Enabled := ReleaseVersion <> AppVersion;
|
||||
end;
|
||||
|
||||
// Read [Build] section of check file
|
||||
if Ini.SectionExists(INISECT_BUILD) then begin
|
||||
BuildRevision := Ini.ReadString(INISECT_BUILD, 'Revision', 'unknown');
|
||||
BuildURL := Ini.ReadString(INISECT_BUILD, 'URL', '');
|
||||
statustxt := statustxt + 'Build available: Revision ' + BuildRevision + ' (yours: '+AppRevision+')' + CRLF;
|
||||
btnBuild.Caption := 'Download build ' + BuildRevision;
|
||||
// A new release should have priority over a new nightly build.
|
||||
// So the user should not be able to download a newer build here
|
||||
// before having installed the new release.
|
||||
btnBuild.Enabled := (BuildRevision <> AppRevision) and (not btnRelease.Enabled);
|
||||
end;
|
||||
|
||||
// Display summary
|
||||
Status(statustxt);
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Download release installer via web browser
|
||||
}
|
||||
procedure TfrmUpdateCheck.btnReleaseClick(Sender: TObject);
|
||||
begin
|
||||
ShellExec(ReleaseURL);
|
||||
end;
|
||||
|
||||
|
||||
{**
|
||||
Download latest build via web browser
|
||||
TODO: internally replace heidisql.exe:
|
||||
1. create a batch file which replaces heidisql.exe
|
||||
2. quit Heidi
|
||||
3. start the batch
|
||||
4. start Heidi
|
||||
}
|
||||
procedure TfrmUpdateCheck.btnBuildClick(Sender: TObject);
|
||||
begin
|
||||
ShellExec(ReleaseURL);
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user