Browse Source

Delete left over temporary file right away on errors.

Martijn Laan 5 năm trước cách đây
mục cha
commit
389a6df774
1 tập tin đã thay đổi với 6 bổ sung1 xóa
  1. 6 1
      Projects/Install.pas

+ 6 - 1
Projects/Install.pas

@@ -3497,6 +3497,7 @@ var
   PrevState: TPreviousFsRedirectionState;
   PrevState: TPreviousFsRedirectionState;
   DestFile, TempFile: String;
   DestFile, TempFile: String;
   TempF: TFileStream;
   TempF: TFileStream;
+  TempFileLeftOver: Boolean;
   HTTPDataReceiver: THTTPDataReceiver;
   HTTPDataReceiver: THTTPDataReceiver;
   HTTPClient: THTTPClient;
   HTTPClient: THTTPClient;
   HTTPResponse: IHTTPResponse;
   HTTPResponse: IHTTPResponse;
@@ -3530,6 +3531,7 @@ begin
   HTTPDataReceiver := nil;
   HTTPDataReceiver := nil;
   HTTPClient := nil;
   HTTPClient := nil;
   TempF := nil;
   TempF := nil;
+  TempFileLeftOver := False;
   try
   try
     { Setup downloader }
     { Setup downloader }
     HTTPDataReceiver := THTTPDataReceiver.Create;
     HTTPDataReceiver := THTTPDataReceiver.Create;
@@ -3546,6 +3548,7 @@ begin
       raise Exception.Create('DisableFsRedirectionIf failed');
       raise Exception.Create('DisableFsRedirectionIf failed');
     try
     try
       TempF := TFileStream.Create(TempFile, fmCreate);
       TempF := TFileStream.Create(TempFile, fmCreate);
+      TempFileLeftOver := True;
     finally
     finally
       RestoreFsRedirection(PrevState);
       RestoreFsRedirection(PrevState);
     end;
     end;
@@ -3602,12 +3605,14 @@ begin
         SetLastError(LastError);
         SetLastError(LastError);
         Win32ErrorMsg('MoveFile'); { Throws an exception }
         Win32ErrorMsg('MoveFile'); { Throws an exception }
       end;
       end;
-
+      TempFileLeftOver := False;
     end;
     end;
   finally
   finally
     TempF.Free;
     TempF.Free;
     HTTPClient.Free;
     HTTPClient.Free;
     HTTPDataReceiver.Free;
     HTTPDataReceiver.Free;
+    if TempFileLeftOver then
+      DeleteFileRedir(DisableFsRedir, TempFile);
   end;
   end;
 end;
 end;