function TLazarusManager.RenameLazarusExecutable(const Directory: string
): TModalResult;
var
NewFilename: String;
BackupFilename: String;
CurFilename: String;
begin
NewFilename:=AppendPathDelim(Directory)+'lazarus.new'+GetExeExt;
BackupFilename:=AppendPathDelim(Directory)+'lazarus.old'+GetExeExt;
CurFilename:=AppendPathDelim(Directory)+'lazarus'+GetExeExt;
if FileExistsUTF8(NewFileName) then
begin
if FileExistsUTF8(CurFilename) then
begin
if FileExistsUTF8(BackupFileName) then
if not DeleteFileUTF8(BackupFileName) then begin
MessageDlg (format('Can''t delete "%s"'+LineEnding+'%s',
[BackupFileName, SysErrorMessageUTF8(GetLastOSError)]),
mtError, [mbOK], 0);
Result := mrAbort;
exit;
end;
if not RenameFileUTF8(CurFilename, BackupFileName) then begin
MessageDlg (format('Can''t rename "%s" to "%s"'+LineEnding+'%s',
[CurFilename, BackupFileName, SysErrorMessageUTF8(GetLastOSError)]),
mtError, [mbOK], 0);
Result := mrAbort;
exit;
end;
InvalidateFileStateCache;
end;
if not RenameFileUTF8(NewFileName, CurFilename) then begin
MessageDlg (format('Can''t rename "%s" to "%s"'+LineEnding+'%s',
[NewFileName, CurFilename, SysErrorMessageUTF8(GetLastOSError)]),
mtError, [mbOK], 0);
Result := mrAbort;
exit;
end;
InvalidateFileStateCache;
end;
Result:=mrOk;
end;