From 50aba915c547dd07a823d9adc8abcab00c8177c1 Mon Sep 17 00:00:00 2001 From: gbamber Date: Fri, 27 Jan 2017 11:23:26 +0000 Subject: [PATCH] DeleteShortCut public function added git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5714 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../latest_stable/testapp/testapp.lps | 99 +++++++++---------- .../latest_stable/testapp/umainform.lfm | 15 ++- .../latest_stable/testapp/umainform.pas | 13 +++ .../latest_stable/ulazautoupdate.pas | 19 +++- .../lazautoupdate/latest_stable/ushortcut.pas | 14 ++- 5 files changed, 102 insertions(+), 58 deletions(-) diff --git a/components/lazautoupdate/latest_stable/testapp/testapp.lps b/components/lazautoupdate/latest_stable/testapp/testapp.lps index 664bafaa6..5d0dd6609 100644 --- a/components/lazautoupdate/latest_stable/testapp/testapp.lps +++ b/components/lazautoupdate/latest_stable/testapp/testapp.lps @@ -3,14 +3,14 @@ - + - + @@ -19,9 +19,9 @@ - - - + + + @@ -32,7 +32,7 @@ - + @@ -43,15 +43,15 @@ - - - + + + - - - + + + @@ -187,8 +187,8 @@ - - + + @@ -234,129 +234,126 @@ - - - - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + diff --git a/components/lazautoupdate/latest_stable/testapp/umainform.lfm b/components/lazautoupdate/latest_stable/testapp/umainform.lfm index da91e9158..efb41fc36 100644 --- a/components/lazautoupdate/latest_stable/testapp/umainform.lfm +++ b/components/lazautoupdate/latest_stable/testapp/umainform.lfm @@ -1,7 +1,7 @@ object mainform: Tmainform - Left = 509 + Left = 518 Height = 209 - Top = 326 + Top = 285 Width = 335 BorderIcons = [biSystemMenu] Caption = 'mainform' @@ -93,6 +93,15 @@ object mainform: Tmainform TabOrder = 6 Visible = False end + object cmd_MakeDesktopShortcut: TButton + Left = 184 + Height = 25 + Top = 112 + Width = 139 + Caption = 'Make Desktop Shortcut' + OnClick = cmd_MakeDesktopShortcutClick + TabOrder = 7 + end object LazAutoUpdate1: TLazAutoUpdate About.Description.Strings = ( 'A component for updating your application'#13#10'Designed for projects hosted by SourceForge'#13#10#13#10'Main methods:'#13#10'Procedure AutoUpdate'#13#10'Function NewVersionAvailable: Boolean'#13#10'Function DownloadNewVersion: Boolean'#13#10'Function UpdateToNewVersion: Boolean'#13#10'Procedure ShowWhatsNewIfAvailable'#13#10'For troubleshooting, set DebugMode=TRUE' @@ -126,7 +135,7 @@ object mainform: Tmainform GitHubRepositoryName = 'TestApp' GitHubBranchOrTag = 'updates' ShortCut.ShortcutName = 'AnotherName' - ShortCut.Category = scUtility + ShortCut.Category = scAudioVideo Left = 200 Top = 24 end diff --git a/components/lazautoupdate/latest_stable/testapp/umainform.pas b/components/lazautoupdate/latest_stable/testapp/umainform.pas index d54cea71b..db4083d24 100644 --- a/components/lazautoupdate/latest_stable/testapp/umainform.pas +++ b/components/lazautoupdate/latest_stable/testapp/umainform.pas @@ -45,6 +45,7 @@ type { Tmainform } Tmainform = class(TForm) + cmd_MakeDesktopShortcut: TButton; cmd_SilentUpdate: TButton; cmd_AutoUpdate: TButton; cmd_updateToNewVersion: TButton; @@ -56,6 +57,7 @@ type StatusBar1: TStatusBar; procedure cmd_AutoUpdateClick(Sender: TObject); procedure cmd_DownloadNewVersionClick(Sender: TObject); + procedure cmd_MakeDesktopShortcutClick(Sender: TObject); procedure cmd_NewVersionAvailableClick(Sender: TObject); procedure cmd_SilentUpdateClick(Sender: TObject); procedure cmd_updateToNewVersionClick(Sender: TObject); @@ -163,6 +165,17 @@ begin LazAutoUpdate1.DownloadNewVersion; end; +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; + procedure Tmainform.cmd_AutoUpdateClick(Sender: TObject); begin {$IFDEF DEBUGMODE} diff --git a/components/lazautoupdate/latest_stable/ulazautoupdate.pas b/components/lazautoupdate/latest_stable/ulazautoupdate.pas index b3f0595dc..1371d325d 100644 --- a/components/lazautoupdate/latest_stable/ulazautoupdate.pas +++ b/components/lazautoupdate/latest_stable/ulazautoupdate.pas @@ -356,6 +356,7 @@ type procedure RelocateLauImportFile; // Uses properties in TShortCutClass function MakeShortCut: boolean; + function DeleteShortCut: boolean; // (use fShortCutClass.ShortCutName) // Download lists (now superceded by CopyTree) // TODO: Use Indexed properties to handle list access @@ -966,7 +967,7 @@ begin end; end; end; - +// A couple of public functions for installer apps function TLazAutoUpdate.MakeShortCut: boolean; begin Result := False; // assume failure, look for success @@ -996,6 +997,22 @@ begin fShortCutClass.TargetArguments, fShortCutClass.ShortcutName, fShortCutClass.IconFileName, fShortCutClass.CategoryString); end; +function TLazAutoUpdate.DeleteShortCut: boolean; +begin + Result := False; // assume failure, look for success + if Assigned(fOndebugEvent) then + fFireDebugEvent := True; + + if fFireDebugEvent then + fOndebugEvent(Self, 'DeleteShortCut', 'DeleteShortCut called'); + If fShortCutClass.ShortcutName='' then + begin + if fFireDebugEvent then + fOndebugEvent(Self, 'DeleteShortCut', 'ShortCut.ShortCutName was empty!'); + Exit; + end; + Result:=DeleteDesktopShortcut(fShortCutClass.ShortCutName); +end; procedure TLazAutoUpdate.ShowWhatsNewIfAvailable; begin diff --git a/components/lazautoupdate/latest_stable/ushortcut.pas b/components/lazautoupdate/latest_stable/ushortcut.pas index a3e6b1d64..7d576139b 100644 --- a/components/lazautoupdate/latest_stable/ushortcut.pas +++ b/components/lazautoupdate/latest_stable/ushortcut.pas @@ -83,6 +83,8 @@ uses function CreateDesktopShortCut(Target, TargetArguments, ShortcutName, IconFileName, Category: string): boolean; +function DeleteDesktopShortcut(ShortcutName: string):Boolean; + implementation {$IFDEF UNIX} @@ -208,18 +210,24 @@ end; {$ENDIF UNIX} {$IFDEF MSWINDOWS} -procedure DeleteDesktopShortcut(ShortcutName: string); +Function DeleteDesktopShortcut(ShortcutName: string):Boolean; var PIDL: PItemIDList; InFolder: array[0..MAX_PATH] of char; LinkName: WideString; begin + Result:=FALSE; { Get the desktop location } SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL); SHGetPathFromIDList(PIDL, InFolder); LinkName := IncludeTrailingPathDelimiter(InFolder) + ShortcutName + '.lnk'; - SysUtils.DeleteFile(LinkName); + If SysUtils.DeleteFile(LinkName) then Result:=TRUE; +end; +{$ELSE} +Function DeleteDesktopShortcut(ShortcutName: string):Boolean; +begin + Result:=FALSE; end; - {$ENDIF MSWINDOWS} + end.