2017-01-13 18:59:49 +00:00
|
|
|
unit umainform;
|
|
|
|
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
|
|
|
Classes, SysUtils, Forms, ComCtrls,
|
2017-01-16 12:51:19 +00:00
|
|
|
Buttons, StdCtrls,LazFileUtils,FileUtil,
|
2017-01-20 11:11:56 +00:00
|
|
|
ulazautoupdate,eventlog,Dialogs;
|
2017-01-13 18:59:49 +00:00
|
|
|
CONST
|
|
|
|
{$IFDEF WINDOWS}
|
|
|
|
{$IFDEF CPU32}
|
2017-01-20 11:11:56 +00:00
|
|
|
{$IFDEF DEBUGMODE}
|
|
|
|
C_VERSIONSINNAME = 'testappwin32debug.ini';
|
|
|
|
C_ZIPFILENAME = 'testappwin32debug.zip';
|
|
|
|
C_LogFileName = 'testappwin32debuglog.txt';
|
|
|
|
{$ELSE}
|
2017-01-13 18:59:49 +00:00
|
|
|
C_VERSIONSINNAME = 'testappwin32.ini';
|
|
|
|
C_ZIPFILENAME = 'testappwin32.zip';
|
2017-01-16 12:51:19 +00:00
|
|
|
C_LogFileName = 'testappwin32log.txt';
|
2017-01-20 11:11:56 +00:00
|
|
|
{$ENDIF}
|
2017-01-13 18:59:49 +00:00
|
|
|
{$ENDIF}
|
|
|
|
{$IFDEF CPU64}
|
|
|
|
C_VERSIONSINNAME = 'testappwin64.ini';
|
|
|
|
C_ZIPFILENAME = 'testappwin64.zip';
|
2017-01-16 12:51:19 +00:00
|
|
|
C_LogFileName = 'testappwin64log.txt';
|
2017-01-13 18:59:49 +00:00
|
|
|
{$ENDIF}
|
|
|
|
{$ENDIF}
|
|
|
|
{$IFDEF LINUX}
|
|
|
|
{$IFDEF CPU32}
|
|
|
|
C_VERSIONSINNAME = 'testapplinux32.ini';
|
|
|
|
C_ZIPFILENAME = 'testapplinux32.zip';
|
2017-01-16 12:51:19 +00:00
|
|
|
C_LogFileName = 'testapplinux32log.txt';
|
2017-01-13 18:59:49 +00:00
|
|
|
{$ENDIF}
|
|
|
|
{$IFDEF CPU64}
|
|
|
|
C_VERSIONSINNAME = 'testapplinux64.ini';
|
|
|
|
C_ZIPFILENAME = 'testapplinux64.zip';
|
2017-01-16 12:51:19 +00:00
|
|
|
C_LogFileName = 'testapplinux64log.txt';
|
2017-01-13 18:59:49 +00:00
|
|
|
{$ENDIF}
|
|
|
|
{$ENDIF}
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
|
|
{ Tmainform }
|
|
|
|
|
|
|
|
Tmainform = class(TForm)
|
2017-01-27 14:16:25 +00:00
|
|
|
chk_DebugMode: TCheckBox;
|
|
|
|
chk_ShowDialogs: TCheckBox;
|
|
|
|
chk_ShowProgress: TCheckBox;
|
2017-01-27 11:35:59 +00:00
|
|
|
cmd_DeleteDesktopShortcut: TButton;
|
2017-01-27 11:23:26 +00:00
|
|
|
cmd_MakeDesktopShortcut: TButton;
|
2017-01-13 18:59:49 +00:00
|
|
|
cmd_AutoUpdate: TButton;
|
|
|
|
cmd_updateToNewVersion: TButton;
|
|
|
|
cmd_DownloadNewVersion: TButton;
|
|
|
|
cmd_NewVersionAvailable: TButton;
|
|
|
|
cmd_close: TBitBtn;
|
|
|
|
lbl_Version: TLabel;
|
|
|
|
LazAutoUpdate1: TLazAutoUpdate;
|
|
|
|
StatusBar1: TStatusBar;
|
2017-01-27 14:16:25 +00:00
|
|
|
procedure chk_DebugModeChange(Sender: TObject);
|
|
|
|
procedure chk_ShowDialogsChange(Sender: TObject);
|
|
|
|
procedure chk_ShowProgressChange(Sender: TObject);
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure cmd_AutoUpdateClick(Sender: TObject);
|
2017-01-27 11:35:59 +00:00
|
|
|
procedure cmd_DeleteDesktopShortcutClick(Sender: TObject);
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure cmd_DownloadNewVersionClick(Sender: TObject);
|
2017-01-27 11:23:26 +00:00
|
|
|
procedure cmd_MakeDesktopShortcutClick(Sender: TObject);
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure cmd_NewVersionAvailableClick(Sender: TObject);
|
2017-01-14 07:43:26 +00:00
|
|
|
procedure cmd_SilentUpdateClick(Sender: TObject);
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure cmd_updateToNewVersionClick(Sender: TObject);
|
|
|
|
procedure FormActivate(Sender: TObject);
|
|
|
|
procedure FormCreate(Sender: TObject);
|
2017-01-16 12:51:19 +00:00
|
|
|
procedure FormDestroy(Sender: TObject);
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure LazAutoUpdate1DebugEvent(Sender: TObject; lauMethodName,
|
|
|
|
lauMessage: string);
|
|
|
|
procedure LazAutoUpdate1Downloaded(Sender: TObject; ResultCode,
|
|
|
|
BytesDownloaded: integer);
|
|
|
|
procedure LazAutoUpdate1NewVersionAvailable(Sender: TObject;
|
|
|
|
Newer: boolean; OnlineVersion: string);
|
|
|
|
private
|
2017-01-16 12:51:19 +00:00
|
|
|
Logger: TEventLog;
|
|
|
|
procedure WriteAndLog(szText: string);
|
2017-01-20 11:20:14 +00:00
|
|
|
procedure CloseLog;
|
2017-01-13 18:59:49 +00:00
|
|
|
public
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
var
|
|
|
|
mainform: Tmainform;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
|
|
{ Tmainform }
|
2017-01-20 11:20:14 +00:00
|
|
|
procedure Tmainform.CloseLog;
|
|
|
|
begin
|
|
|
|
If Assigned(Logger) then
|
|
|
|
begin
|
2017-01-27 14:16:25 +00:00
|
|
|
If Logger.Active then Logger.Info('End of Log');
|
2017-01-20 11:20:14 +00:00
|
|
|
Logger.Active:=False;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
2017-01-16 12:51:19 +00:00
|
|
|
procedure Tmainform.WriteAndLog(szText: string);
|
|
|
|
begin
|
|
|
|
Logger.Info(szText);
|
|
|
|
end;
|
2017-01-13 18:59:49 +00:00
|
|
|
|
|
|
|
procedure Tmainform.FormCreate(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.DebugMode:=TRUE;
|
|
|
|
LazAutoUpdate1.VersionsININame:=C_VERSIONSINNAME;
|
|
|
|
LazAutoUpdate1.ZipfileName:=C_ZIPFILENAME;
|
2017-01-20 11:11:56 +00:00
|
|
|
LazAutoUpdate1.GitHubProjectname:='lazarusccr';
|
|
|
|
LazAutoUpdate1.GitHubRepositoryName:='TestApp';
|
|
|
|
LazAutoUpdate1.GitHubBranchOrTag:='updates';
|
|
|
|
LazAutoUpdate1.ShowUpdateInCaption:=TRUE;
|
2017-01-13 18:59:49 +00:00
|
|
|
Caption:=Application.Title;
|
2017-01-16 12:51:19 +00:00
|
|
|
if FileExistsUTF8(C_LogFileName) then
|
|
|
|
DeleteFile(C_LogFileName);
|
2017-01-20 11:11:56 +00:00
|
|
|
Application.Processmessages;
|
2017-01-16 12:51:19 +00:00
|
|
|
Logger := TEventLog.Create(nil);
|
2017-01-20 11:11:56 +00:00
|
|
|
TRY
|
2017-01-16 12:51:19 +00:00
|
|
|
Logger.LogType := ltFile;
|
|
|
|
Logger.FileName := C_LogFileName;
|
|
|
|
Logger.Active := True;
|
2017-01-27 14:16:25 +00:00
|
|
|
Logger.Info('Testing Logging functionality');
|
2017-01-20 11:11:56 +00:00
|
|
|
Except
|
|
|
|
Raise Exception.Create('Trouble with the logger. Click OK to quit');
|
|
|
|
If Assigned(Logger) then FreeAndNil(Logger);
|
|
|
|
Application.Terminate;
|
|
|
|
end;
|
2017-01-27 14:16:25 +00:00
|
|
|
Logger.Active := False;
|
|
|
|
if FileExistsUTF8(C_LogFileName) then
|
|
|
|
DeleteFile(C_LogFileName);
|
2017-01-20 11:11:56 +00:00
|
|
|
// FORCE AN UPDATE EVERY TIME HERE?
|
|
|
|
// LazAutoUpdate1.AppVersion:='0.0.0.0';
|
|
|
|
lbl_Version.Caption:='Version: ' + LazAutoUpdate1.AppVersion;
|
2017-01-16 12:51:19 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.FormDestroy(Sender: TObject);
|
|
|
|
begin
|
2017-01-20 11:20:14 +00:00
|
|
|
CloseLog;
|
|
|
|
If Assigned(Logger) then FreeAndNil(Logger);
|
2017-01-13 18:59:49 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.cmd_NewVersionAvailableClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.NewVersionAvailable;
|
|
|
|
end;
|
|
|
|
|
2017-01-14 07:43:26 +00:00
|
|
|
procedure Tmainform.cmd_SilentUpdateClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
end;
|
|
|
|
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure Tmainform.cmd_updateToNewVersionClick(Sender: TObject);
|
|
|
|
begin
|
2017-01-20 11:11:56 +00:00
|
|
|
{$IFDEF DEBUGMODE}
|
|
|
|
ShowMessage('Please do not try updating in DEBUG mode');
|
|
|
|
{$ELSE}
|
2017-01-20 11:20:14 +00:00
|
|
|
CloseLog;
|
2017-01-20 11:11:56 +00:00
|
|
|
LazAutoUpdate1.UpdateToNewVersion;
|
|
|
|
{$ENDIF}
|
2017-01-13 18:59:49 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.FormActivate(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.ShowWhatsNewIfAvailable;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.cmd_DownloadNewVersionClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.DownloadNewVersion;
|
|
|
|
end;
|
|
|
|
|
2017-01-27 11:23:26 +00:00
|
|
|
procedure Tmainform.cmd_MakeDesktopShortcutClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.ShortCut.ShortCutName:='Test Application';
|
|
|
|
LazAutoUpdate1.ShortCut.Target:=Application.EXEName;
|
|
|
|
LazAutoUpdate1.ShortCut.IconFilename:=ChangeFileExt(Application.EXEName,'.ico');
|
|
|
|
If LazAutoUpdate1.MakeShortCut then
|
|
|
|
ShowMessage('Success! New shortcut is now on your desktop')
|
|
|
|
else
|
|
|
|
ShowMessage('MakeShortCut failed');
|
|
|
|
end;
|
|
|
|
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure Tmainform.cmd_AutoUpdateClick(Sender: TObject);
|
|
|
|
begin
|
2017-01-20 11:11:56 +00:00
|
|
|
{$IFDEF DEBUGMODE}
|
|
|
|
ShowMessage('Please do not try updating in DEBUG mode');
|
|
|
|
{$ELSE}
|
2017-01-20 11:20:14 +00:00
|
|
|
CloseLog;
|
2017-01-13 18:59:49 +00:00
|
|
|
LazAutoUpdate1.AutoUpdate;
|
2017-01-20 11:11:56 +00:00
|
|
|
{$ENDIF}
|
2017-01-13 18:59:49 +00:00
|
|
|
end;
|
|
|
|
|
2017-01-27 14:16:25 +00:00
|
|
|
procedure Tmainform.chk_DebugModeChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
If chk_DebugMode.Checked then
|
|
|
|
begin
|
|
|
|
Logger.Active := True;
|
|
|
|
Logger.Info('Logging started');
|
|
|
|
LazAutoUpdate1.DebugMode:=True;
|
|
|
|
end
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.DebugMode:=False;
|
|
|
|
Logger.Info('Logging ended');
|
|
|
|
Logger.Active := False;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.chk_ShowDialogsChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.ShowDialogs:=chk_ShowDialogs.Checked;
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.chk_ShowProgressChange(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.ShowUpdateInCaption:=chk_ShowProgress.Checked;
|
|
|
|
end;
|
|
|
|
|
2017-01-27 11:35:59 +00:00
|
|
|
procedure Tmainform.cmd_DeleteDesktopShortcutClick(Sender: TObject);
|
|
|
|
begin
|
|
|
|
LazAutoUpdate1.ShortCut.ShortCutName:='Test Application';
|
|
|
|
If LazAutoUpdate1.DeleteShortCut then
|
|
|
|
ShowMessage('Success! New shortcut is toast')
|
|
|
|
else
|
|
|
|
ShowMessage('DeleteShortCut failed');
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
2017-01-13 18:59:49 +00:00
|
|
|
procedure Tmainform.LazAutoUpdate1DebugEvent(Sender: TObject; lauMethodName,
|
|
|
|
lauMessage: string);
|
|
|
|
begin
|
|
|
|
StatusBar1.SimpleText:='Debug Message: (' + lauMethodName + ') ' + lauMessage;
|
2017-01-16 12:51:19 +00:00
|
|
|
WriteAndLog(StatusBar1.SimpleText);
|
2017-01-13 18:59:49 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.LazAutoUpdate1Downloaded(Sender: TObject; ResultCode,
|
|
|
|
BytesDownloaded: integer);
|
|
|
|
begin
|
|
|
|
StatusBar1.SimpleText:=Format('Downloaded. StatusCode=%d BytesDownloaded=%d',
|
|
|
|
[ResultCode,BytesDownloaded]);
|
2017-01-16 12:51:19 +00:00
|
|
|
WriteAndLog(StatusBar1.SimpleText);
|
2017-01-13 18:59:49 +00:00
|
|
|
end;
|
|
|
|
|
|
|
|
procedure Tmainform.LazAutoUpdate1NewVersionAvailable(Sender: TObject;
|
|
|
|
Newer: boolean; OnlineVersion: string);
|
|
|
|
begin
|
|
|
|
If Newer then
|
|
|
|
StatusBar1.SimpleText:='New version available. Online Version is ' + OnlineVersion
|
|
|
|
else
|
2017-01-16 12:51:19 +00:00
|
|
|
StatusBar1.SimpleText:='Online version is not newer. Online Version is ' + OnlineVersion;
|
|
|
|
|
|
|
|
WriteAndLog(StatusBar1.SimpleText);
|
2017-01-13 18:59:49 +00:00
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
end.
|
|
|
|
|