Jelajahi Sumber

Revert adding Redir suffixes + TRedir<T>.

Martijn Laan 3 bulan lalu
induk
melakukan
028432c711

+ 2 - 2
Projects/SetupLdr.dpr

@@ -2,7 +2,7 @@ program SetupLdr;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -509,7 +509,7 @@ begin
         { Even though Setup has terminated by now, the system may still have
           the file locked for a short period of time (esp. on multiprocessor
           systems), so use DelayDeleteFile to delete it. }
-        DelayDeleteFileRedir(False, TempFile, 13, 50, 250);
+        DelayDeleteFile(False, TempFile, 13, 50, 250);
       if TempDir <> '' then
         RemoveDirectory(PChar(TempDir));
       if SetupLdrWnd <> 0 then

+ 1 - 1
Projects/Src/Compression.SevenZipDecoder.pas

@@ -283,7 +283,7 @@ begin
   LogFmt('Extracting 7-Zip archive %s to %s. Full paths? %s', [ArchiveFileName, DestDir, SYesNo[FullPaths]]);
 
   var SaveCurDir := GetCurrentDir;
-  if not ForceDirectoriesRedir(False, DestDir) or not SetCurrentDir(DestDir) then
+  if not ForceDirectories(False, DestDir) or not SetCurrentDir(DestDir) then
     raise Exception.Create(FmtSetupMessage(msgErrorExtractionFailed, ['-1']));
   try
     State.DisableFsRedir := DisableFsRedir;

+ 23 - 23
Projects/Src/Setup.InstFunc.pas

@@ -47,7 +47,7 @@ type
 function CheckForMutexes(const Mutexes: String): Boolean;
 procedure CreateMutexes(const Mutexes: String);
 function DecrementSharedCount(const RegView: TRegView; const Filename: String): Boolean;
-function DelTreeRedir(const DisableFsRedir: Boolean; const Path: String;
+function DelTree(const DisableFsRedir: Boolean; const Path: String;
   const IsDir, DeleteFiles, DeleteSubdirsAlso, BreakOnError: Boolean;
   const DeleteDirProc: TDeleteDirProc; const DeleteFileProc: TDeleteFileProc;
   const Param: Pointer): Boolean;
@@ -56,20 +56,20 @@ procedure EnumFileReplaceOperationsFilenames(const EnumFunc: TEnumFROFilenamesPr
 function GenerateNonRandomUniqueTempDir(const LimitCurrentUserSidAccess: Boolean;
   Path: String; var TempDir: String): Boolean;
 function GetComputerNameString: String;
-function GetFileDateTimeRedir(const DisableFsRedir: Boolean; const Filename: String;
+function GetFileDateTime(const DisableFsRedir: Boolean; const Filename: String;
   var DateTime: TFileTime): Boolean;
-function GetSHA256OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TSHA256Digest;
+function GetSHA256OfFile(const DisableFsRedir: Boolean; const Filename: String): TSHA256Digest;
 function GetSHA256OfAnsiString(const S: AnsiString): TSHA256Digest;
 function GetSHA256OfUnicodeString(const S: UnicodeString): TSHA256Digest;
 function GetRegRootKeyName(const RootKey: HKEY): String;
-function GetSpaceOnDiskRedir(const DisableFsRedir: Boolean; const DriveRoot: String;
+function GetSpaceOnDisk(const DisableFsRedir: Boolean; const DriveRoot: String;
   var FreeBytes, TotalBytes: Integer64): Boolean;
-function GetSpaceOnNearestMountPointRedir(const DisableFsRedir: Boolean;
+function GetSpaceOnNearestMountPoint(const DisableFsRedir: Boolean;
   const StartDir: String; var FreeBytes, TotalBytes: Integer64): Boolean;
 function GetUserNameString: String;
 procedure IncrementSharedCount(const RegView: TRegView; const Filename: String;
   const AlreadyExisted: Boolean);
-function InstExecRedir(const DisableFsRedir: Boolean; const Filename, Params: String;
+function InstExec(const DisableFsRedir: Boolean; const Filename, Params: String;
   WorkingDir: String; const Wait: TExecWait; const ShowCmd: Integer;
   const ProcessMessagesProc: TProcedure; const OutputReader: TCreateProcessOutputReader;
   var ResultCode: Integer): Boolean;
@@ -78,8 +78,8 @@ function InstShellExec(const Verb, Filename, Params: String; WorkingDir: String;
   const ProcessMessagesProc: TProcedure; var ResultCode: Integer): Boolean;
 procedure InternalError(const Id: String);
 procedure InternalErrorFmt(const S: String; const Args: array of const);
-function IsDirEmptyRedir(const DisableFsRedir: Boolean; const Dir: String): Boolean;
-function IsProtectedSystemFileRedir(const DisableFsRedir: Boolean;
+function IsDirEmpty(const DisableFsRedir: Boolean; const Dir: String): Boolean;
+function IsProtectedSystemFile(const DisableFsRedir: Boolean;
   const Filename: String): Boolean;
 function MakePendingFileRenameOperationsChecksum: TSHA256Digest;
 function ModifyPifFile(const Filename: String; const CloseOnExit: Boolean): Boolean;
@@ -89,11 +89,11 @@ procedure RefreshEnvironment;
 function ReplaceSystemDirWithSysWow64(const Path: String): String;
 function ReplaceSystemDirWithSysNative(Path: String; const IsWin64: Boolean): String;
 procedure UnregisterFont(const FontName, FontFilename: String; const PerUserFont: Boolean);
-procedure RestartReplaceRedir(const DisableFsRedir: Boolean; TempFile, DestFile: String);
+procedure RestartReplace(const DisableFsRedir: Boolean; TempFile, DestFile: String);
 procedure SplitNewParamStr(const Index: Integer; var AName, AValue: String);
 procedure Win32ErrorMsg(const FunctionName: String);
 procedure Win32ErrorMsgEx(const FunctionName: String; const ErrorCode: DWORD);
-function ForceDirectoriesRedir(const DisableFsRedir: Boolean; Dir: String): Boolean;
+function ForceDirectories(const DisableFsRedir: Boolean; Dir: String): Boolean;
 
 implementation
 
@@ -252,7 +252,7 @@ begin
   Result := Path;
 end;
 
-procedure RestartReplaceRedir(const DisableFsRedir: Boolean; TempFile, DestFile: String);
+procedure RestartReplace(const DisableFsRedir: Boolean; TempFile, DestFile: String);
 { Renames TempFile to DestFile the next time Windows is started. If DestFile
   already existed, it will be overwritten. If DestFile is '' then TempFile
   will be deleted.. }
@@ -274,7 +274,7 @@ begin
     Win32ErrorMsg('MoveFileEx');
 end;
 
-function DelTreeRedir(const DisableFsRedir: Boolean; const Path: String;
+function DelTree(const DisableFsRedir: Boolean; const Path: String;
   const IsDir, DeleteFiles, DeleteSubdirsAlso, BreakOnError: Boolean;
   const DeleteDirProc: TDeleteDirProc; const DeleteFileProc: TDeleteFileProc;
   const Param: Pointer): Boolean;
@@ -325,7 +325,7 @@ begin
             end
             else begin
               if DeleteSubdirsAlso then
-                if not DelTreeRedir(DisableFsRedir, BasePath + S, True, True, True, BreakOnError,
+                if not DelTree(DisableFsRedir, BasePath + S, True, True, True, BreakOnError,
                    DeleteDirProc, DeleteFileProc, Param) then
                   Result := False;
             end;
@@ -348,7 +348,7 @@ begin
   end;
 end;
 
-function IsDirEmptyRedir(const DisableFsRedir: Boolean; const Dir: String): Boolean;
+function IsDirEmpty(const DisableFsRedir: Boolean; const Dir: String): Boolean;
 { Returns True if Dir contains no files or subdirectories.
   Note: If Dir does not exist or lacks list permission, False will be
   returned. }
@@ -530,7 +530,7 @@ begin
   end;
 end;
 
-function GetFileDateTimeRedir(const DisableFsRedir: Boolean; const Filename: String;
+function GetFileDateTime(const DisableFsRedir: Boolean; const Filename: String;
   var DateTime: TFileTime): Boolean;
 var
   Handle: THandle;
@@ -550,7 +550,7 @@ begin
   DateTime.dwHighDateTime := 0;
 end;
 
-function GetSHA256OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TSHA256Digest;
+function GetSHA256OfFile(const DisableFsRedir: Boolean; const Filename: String): TSHA256Digest;
 { Gets SHA-256 sum as a string of the file Filename. An exception will be raised upon
   failure. }
 var
@@ -586,7 +586,7 @@ var
   SFCInitialized: Boolean;
   SfcIsFileProtectedFunc: function(RpcHandle: THandle; ProtFileName: PWideChar): BOOL; stdcall;
 
-function IsProtectedSystemFileRedir(const DisableFsRedir: Boolean;
+function IsProtectedSystemFile(const DisableFsRedir: Boolean;
   const Filename: String): Boolean;
 { Returns True if the specified file is protected by Windows File Protection
   (and therefore can't be replaced). }
@@ -656,7 +656,7 @@ begin
   end;
 end;
 
-function InstExecRedir(const DisableFsRedir: Boolean; const Filename, Params: String;
+function InstExec(const DisableFsRedir: Boolean; const Filename, Params: String;
   WorkingDir: String; const Wait: TExecWait; const ShowCmd: Integer;
   const ProcessMessagesProc: TProcedure; const OutputReader: TCreateProcessOutputReader;
   var ResultCode: Integer): Boolean;
@@ -950,7 +950,7 @@ begin
     SendNotifyMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
 end;
 
-function GetSpaceOnDiskRedir(const DisableFsRedir: Boolean; const DriveRoot: String;
+function GetSpaceOnDisk(const DisableFsRedir: Boolean; const DriveRoot: String;
   var FreeBytes, TotalBytes: Integer64): Boolean;
 var
   GetDiskFreeSpaceExFunc: function(lpDirectoryName: PChar;
@@ -993,7 +993,7 @@ begin
   end;
 end;
 
-function GetSpaceOnNearestMountPointRedir(const DisableFsRedir: Boolean;
+function GetSpaceOnNearestMountPoint(const DisableFsRedir: Boolean;
   const StartDir: String; var FreeBytes, TotalBytes: Integer64): Boolean;
 { Gets the free and total space available on the specified directory. If that
   fails (e.g. if the directory does not exist), then it strips off the last
@@ -1007,7 +1007,7 @@ begin
   Dir := RemoveBackslashUnlessRoot(StartDir);
   LastLen := 0;
   while Length(Dir) <> LastLen do begin
-    if GetSpaceOnDiskRedir(DisableFsRedir, Dir, FreeBytes, TotalBytes) then begin
+    if GetSpaceOnDisk(DisableFsRedir, Dir, FreeBytes, TotalBytes) then begin
       Result := True;
       Break;
     end;
@@ -1053,13 +1053,13 @@ begin
   AValue := '';
 end;
 
-function ForceDirectoriesRedir(const DisableFsRedir: Boolean; Dir: String): Boolean;
+function ForceDirectories(const DisableFsRedir: Boolean; Dir: String): Boolean;
 begin
   Dir := RemoveBackslashUnlessRoot(Dir);
   if (PathExtractPath(Dir) = Dir) or DirExistsRedir(DisableFsRedir, Dir) then
     Result := True
   else
-    Result := ForceDirectoriesRedir(DisableFsRedir, PathExtractPath(Dir)) and
+    Result := ForceDirectories(DisableFsRedir, PathExtractPath(Dir)) and
       CreateDirectoryRedir(DisableFsRedir, Dir);
 end;
 

+ 47 - 47
Projects/Src/Setup.Install.pas

@@ -238,12 +238,12 @@ begin
     Result := '(invalid)';
 end;
 
-function TryToGetSHA256OfFileRedir(const DisableFsRedir: Boolean; const Filename: String;
+function TryToGetSHA256OfFile(const DisableFsRedir: Boolean; const Filename: String;
   var Sum: TSHA256Digest): Boolean;
 { Like GetSHA256OfFile but traps exceptions locally. Returns True if successful. }
 begin
   try
-    Sum := GetSHA256OfFileRedir(DisableFsRedir, Filename);
+    Sum := GetSHA256OfFile(DisableFsRedir, Filename);
     Result := True;
   except
     Result := False;
@@ -349,7 +349,7 @@ begin
   SetProgress(AMaxProgress);
 end;
 
-procedure AddAttributesToFileRedir(const DisableFsRedir: Boolean;
+procedure AddAttributesToFile(const DisableFsRedir: Boolean;
   const Filename: String; Attribs: Integer);
 var
   ExistingAttr: DWORD;
@@ -804,7 +804,7 @@ var
   type
     TMakeDirFlags = set of (mdNoUninstall, mdAlwaysUninstall, mdDeleteAfterInstall,
       mdNotifyChange);
-  function MakeDirRedir(const DisableFsRedir: Boolean; Dir: String;
+  function MakeDir(const DisableFsRedir: Boolean; Dir: String;
     const Flags: TMakeDirFlags): Boolean;
   { Returns True if a new directory was created.
     Note: If DisableFsRedir is True, the mdNotifyChange flag should not be
@@ -822,7 +822,7 @@ var
         Exit;
     end
     else begin
-      MakeDirRedir(DisableFsRedir, PathExtractDir(Dir), Flags - [mdAlwaysUninstall]);
+      MakeDir(DisableFsRedir, PathExtractDir(Dir), Flags - [mdAlwaysUninstall]);
       LogFmt('Creating directory: %s', [Dir]);
       if not CreateDirectoryRedir(DisableFsRedir, Dir) then begin
         ErrorCode := GetLastError;
@@ -854,7 +854,7 @@ var
   procedure CreateDirs;
   { Creates the application's directories }
 
-    procedure ApplyPermissionsRedir(const DisableFsRedir: Boolean;
+    procedure ApplyPermissions(const DisableFsRedir: Boolean;
       const Filename: String; const PermsEntry: Integer);
     var
       P: PSetupPermissionEntry;
@@ -862,14 +862,14 @@ var
       if PermsEntry <> -1 then begin
         LogFmt('Setting permissions on directory: %s', [Filename]);
         P := Entries[sePermission][PermsEntry];
-        if not GrantPermissionOnFileRedir(DisableFsRedir, Filename,
+        if not GrantPermissionOnFile(DisableFsRedir, Filename,
            TGrantPermissionEntry(Pointer(P.Permissions)^),
            Length(P.Permissions) div SizeOf(TGrantPermissionEntry)) then
           LogFmt('Failed to set permissions on directory (%d).', [GetLastError]);
       end;
     end;
 
-    procedure ApplyNTFSCompressionRedir(const DisableFsRedir: Boolean;
+    procedure ApplyNTFSCompression(const DisableFsRedir: Boolean;
       const Filename: String; const Compress: Boolean);
     begin
       if Compress then
@@ -886,7 +886,7 @@ var
     N: String;
   begin
     { Create main application directory }
-    MakeDirRedir(InstallDefaultDisableFsRedir, WizardDirValue, []);
+    MakeDir(InstallDefaultDisableFsRedir, WizardDirValue, []);
 
     { Create the rest of the directories, if any }
     for CurDirNumber := 0 to Entries[seDir].Count-1 do
@@ -899,11 +899,11 @@ var
           if doDeleteAfterInstall in Options then Include(Flags, mdDeleteAfterInstall);
           if doUninsAlwaysUninstall in Options then Include(Flags, mdAlwaysUninstall);
           N := RemoveBackslashUnlessRoot(PathExpand(ExpandConst(DirName)));
-          MakeDirRedir(InstallDefaultDisableFsRedir, N, Flags);
-          AddAttributesToFileRedir(InstallDefaultDisableFsRedir, N, Attribs);
-          ApplyPermissionsRedir(InstallDefaultDisableFsRedir, N, PermissionsEntry);
+          MakeDir(InstallDefaultDisableFsRedir, N, Flags);
+          AddAttributesToFile(InstallDefaultDisableFsRedir, N, Attribs);
+          ApplyPermissions(InstallDefaultDisableFsRedir, N, PermissionsEntry);
           if (doSetNTFSCompression in Options) or (doUnsetNTFSCompression in Options) then
-            ApplyNTFSCompressionRedir(InstallDefaultDisableFsRedir, N, doSetNTFSCompression in Options);
+            ApplyNTFSCompression(InstallDefaultDisableFsRedir, N, doSetNTFSCompression in Options);
           NotifyAfterInstallEntry(AfterInstall);
         end;
       end;
@@ -1043,7 +1043,7 @@ var
       FileLocationFilenames.Objects[LocationEntry] := Pointer(Hash);
     end;
 
-    procedure ApplyPermissionsRedir(const DisableFsRedir: Boolean;
+    procedure ApplyPermissions(const DisableFsRedir: Boolean;
       const Filename: String; const PermsEntry: Integer);
     var
       Attr: DWORD;
@@ -1054,7 +1054,7 @@ var
         if (Attr <> INVALID_FILE_ATTRIBUTES) and (Attr and FILE_ATTRIBUTE_DIRECTORY = 0) then begin
           LogFmt('Setting permissions on file: %s', [Filename]);
           P := Entries[sePermission][PermsEntry];
-          if not GrantPermissionOnFileRedir(DisableFsRedir, Filename,
+          if not GrantPermissionOnFile(DisableFsRedir, Filename,
              TGrantPermissionEntry(Pointer(P.Permissions)^),
              Length(P.Permissions) div SizeOf(TGrantPermissionEntry)) then
             LogFmt('Failed to set permissions on file (%d).', [GetLastError]);
@@ -1062,7 +1062,7 @@ var
       end;
     end;
 
-    procedure ApplyNTFSCompressionRedir(const DisableFsRedir: Boolean;
+    procedure ApplyNTFSCompression(const DisableFsRedir: Boolean;
       const Filename: String; const Compress: Boolean);
     begin
       if Compress then
@@ -1085,7 +1085,7 @@ var
           'Will replace on restart.', [Func, LastError]);
         LastOperation := SetupMessages[msgErrorRestartReplace];
         NeedsRestart := True;
-        RestartReplaceRedir(DisableFsRedir, TempFile, DestFile);
+        RestartReplace(DisableFsRedir, TempFile, DestFile);
         ReplaceOnRestart := True;
         DoBreak := True;
         DoContinue := False;
@@ -1213,7 +1213,7 @@ var
         end;
 
         { See if it's a protected system file.  }
-        if IsProtectedSystemFileRedir(DisableFsRedir, DestFile) then begin
+        if IsProtectedSystemFile(DisableFsRedir, DestFile) then begin
           Log('Dest file is protected by Windows File Protection.');
           IsProtectedFile := (CurFile^.FileType = ftUserFile);
         end else
@@ -1235,7 +1235,7 @@ var
           CurFileDateValid := True;
         end
         else
-          CurFileDateValid := GetFileDateTimeRedir(DisableFsRedir, ASourceFile, CurFileDate);
+          CurFileDateValid := GetFileDateTime(DisableFsRedir, ASourceFile, CurFileDate);
         if CurFileDateValid then
           LogFmt('Time stamp of our file: %s', [FileTimeToStr(CurFileDate)])
         else
@@ -1250,7 +1250,7 @@ var
 
           LastOperation := SetupMessages[msgErrorReadingExistingDest];
 
-          ExistingFileDateValid := GetFileDateTimeRedir(DisableFsRedir, DestFile, ExistingFileDate);
+          ExistingFileDateValid := GetFileDateTime(DisableFsRedir, DestFile, ExistingFileDate);
           if ExistingFileDateValid then
             LogFmt('Time stamp of existing file: %s', [FileTimeToStr(ExistingFileDate)])
           else
@@ -1311,7 +1311,7 @@ var
                    not(foOverwriteSameVersion in CurFile^.Options) then begin
                   if foReplaceSameVersionIfContentsDiffer in CurFile^.Options then begin
                     { Get the two files' SHA-256 hashes and compare them }
-                    if TryToGetSHA256OfFileRedir(DisableFsRedir, DestFile, ExistingFileHash) then begin
+                    if TryToGetSHA256OfFile(DisableFsRedir, DestFile, ExistingFileHash) then begin
                       if Assigned(CurFileLocation) then
                         CurFileHash := CurFileLocation^.SHA256Sum
                       else begin
@@ -1319,7 +1319,7 @@ var
                         { This GetSHA256OfFile call could raise an exception, but
                           it's very unlikely since we were already able to
                           successfully read the file's version info. }
-                        CurFileHash := GetSHA256OfFileRedir(DisableFsRedir, ASourceFile);
+                        CurFileHash := GetSHA256OfFile(DisableFsRedir, ASourceFile);
                         LastOperation := SetupMessages[msgErrorReadingExistingDest];
                       end;
                       { If the two files' SHA-256 hashes are equal, skip the file }
@@ -1474,11 +1474,11 @@ var
         { Extract or copy the file to a temporary file. Create the destination
           file's directory if it didn't already exist. }
         LastOperation := SetupMessages[msgErrorCreatingTemp];
-        TempFile := GenerateUniqueNameRedir(DisableFsRedir, PathExtractPath(DestFile), '.tmp');
+        TempFile := GenerateUniqueName(DisableFsRedir, PathExtractPath(DestFile), '.tmp');
         Flags := [];
         if foUninsNeverUninstall in CurFile^.Options then Include(Flags, mdNoUninstall);
         if foDeleteAfterInstall in CurFile^.Options then Include(Flags, mdDeleteAfterInstall);
-        MakeDirRedir(DisableFsRedir, PathExtractDir(TempFile), Flags);
+        MakeDir(DisableFsRedir, PathExtractDir(TempFile), Flags);
         DestF := TFileRedir.Create(DisableFsRedir, TempFile, fdCreateAlways, faReadWrite, fsNone);
         try
           TempFileLeftOver := True;
@@ -1609,7 +1609,7 @@ var
               DeleteFilesAfterInstallList.AddObject(DestFile, Pointer(Ord(DisableFsRedir)));
             { Set file attributes *after* renaming the file since Novell
               reportedly can't rename read-only files. }
-            AddAttributesToFileRedir(DisableFsRedir, DestFile, CurFile^.Attribs);
+            AddAttributesToFile(DisableFsRedir, DestFile, CurFile^.Attribs);
           end;
         end;
 
@@ -1625,7 +1625,7 @@ var
           Log('Leaving temporary file in place for now.');
           if AllowFileToBeDuplicated then
             SetFileLocationFilename(CurFile^.LocationEntry, TempFile);
-          AddAttributesToFileRedir(DisableFsRedir, TempFile, CurFile^.Attribs);
+          AddAttributesToFile(DisableFsRedir, TempFile, CurFile^.Attribs);
         end;
 
         { If it's a font, register it }
@@ -1716,17 +1716,17 @@ var
         { Apply permissions (even if the file wasn't replaced) }
         LastOperation := '';
         if TempFile <> '' then
-          ApplyPermissionsRedir(DisableFsRedir, TempFile, CurFile^.PermissionsEntry)
+          ApplyPermissions(DisableFsRedir, TempFile, CurFile^.PermissionsEntry)
         else
-          ApplyPermissionsRedir(DisableFsRedir, DestFile, CurFile^.PermissionsEntry);
+          ApplyPermissions(DisableFsRedir, DestFile, CurFile^.PermissionsEntry);
 
         { Set NTFS compression (even if the file wasn't replaced) }
         if (foSetNTFSCompression in CurFile^.Options) or (foUnsetNTFSCompression in CurFile^.Options) then begin
           LastOperation := '';
           if TempFile <> '' then
-            ApplyNTFSCompressionRedir(DisableFsRedir, TempFile, foSetNTFSCompression in CurFile^.Options)
+            ApplyNTFSCompression(DisableFsRedir, TempFile, foSetNTFSCompression in CurFile^.Options)
           else
-            ApplyNTFSCompressionRedir(DisableFsRedir, DestFile, foSetNTFSCompression in CurFile^.Options);
+            ApplyNTFSCompression(DisableFsRedir, DestFile, foSetNTFSCompression in CurFile^.Options);
         end;
 
         { Install into GAC (even if the file wasn't replaced) }
@@ -1789,7 +1789,7 @@ var
   procedure CopyFiles(const Uninstallable: Boolean);
   { Copies all the application's files }
 
-    function RecurseExternalCopyFilesRedir(const DisableFsRedir: Boolean;
+    function RecurseExternalCopyFiles(const DisableFsRedir: Boolean;
       const SearchBaseDir, SearchSubDir, SearchWildcard: String; const SourceIsWildcard: Boolean;
       const Excludes: TStringList; const CurFile: PSetupFileEntry; const FileLocationFilenames: TStringList;
       var ExpectedBytesLeft: Integer64; var ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll: TOverwriteAll;
@@ -1853,7 +1853,7 @@ var
           try
             repeat
               if IsRecurseableDirectory(FindData) then
-                Result := RecurseExternalCopyFilesRedir(DisableFsRedir, SearchBaseDir,
+                Result := RecurseExternalCopyFiles(DisableFsRedir, SearchBaseDir,
                   SearchSubDir + FindData.cFileName + '\', SearchWildcard,
                   SourceIsWildcard, Excludes, CurFile, FileLocationFileNames,
                   ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
@@ -1877,7 +1877,7 @@ var
           Flags := [];
           if foUninsNeverUninstall in CurFile^.Options then Include(Flags, mdNoUninstall);
           if foDeleteAfterInstall in CurFile^.Options then Include(Flags, mdDeleteAfterInstall);
-          MakeDirRedir(DisableFsRedir, DestName, Flags);
+          MakeDir(DisableFsRedir, DestName, Flags);
           Result := True;
         end;
       end;
@@ -1950,7 +1950,7 @@ var
             repeat
               SetProgress(ProgressBefore);
               ExpectedBytesLeft := CurFile^.ExternalSize;
-              FoundFiles := RecurseExternalCopyFilesRedir(DisableFsRedir,
+              FoundFiles := RecurseExternalCopyFiles(DisableFsRedir,
                 PathExtractPath(SourceWildcard), '', PathExtractName(SourceWildcard),
                 IsWildcard(SourceWildcard), Excludes, CurFile, FileLocationFileNames,
                 ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
@@ -2072,7 +2072,7 @@ var
         ProbableFilename := LinkFilename;
       LogFmt('Dest filename: %s', [ProbableFilename]);
       SetFilenameLabelText(ProbableFilename, True);
-      MakeDirRedir(False, PathExtractDir(ProbableFilename), Flags);
+      MakeDir(False, PathExtractDir(ProbableFilename), Flags);
 
       { Delete any old files first }
       DeleteFile(LinkFilename);
@@ -2234,7 +2234,7 @@ var
             if IniDir <> '' then begin
               while True do begin
                 try
-                  MakeDirRedir(False, IniDir, []);
+                  MakeDir(False, IniDir, []);
                   Break;
                 except
                   if AbortRetryIgnoreTaskDialogMsgBox(
@@ -2569,7 +2569,7 @@ var
         NumRead: Cardinal;
         Buf: array[0..16383] of Byte;
       begin
-        ExeFilename := GenerateUniqueNameRedir(False, Dir, '.exe');
+        ExeFilename := GenerateUniqueName(False, Dir, '.exe');
         DestF := nil;
         SourceF := TFile.Create(NewParamStr(0), fdOpenExisting, faRead, fsRead);
         try
@@ -2794,10 +2794,10 @@ var
           NotifyBeforeInstallEntry(BeforeInstall);
           case DeleteType of
             dfFiles, dfFilesAndOrSubdirs:
-              DelTreeRedir(InstallDefaultDisableFsRedir, ExpandConst(Name), False, True, DeleteType = dfFilesAndOrSubdirs, False,
+              DelTree(InstallDefaultDisableFsRedir, ExpandConst(Name), False, True, DeleteType = dfFilesAndOrSubdirs, False,
                 nil, nil, nil);
             dfDirIfEmpty:
-              DelTreeRedir(InstallDefaultDisableFsRedir, ExpandConst(Name), True, False, False, False, nil, nil, nil);
+              DelTree(InstallDefaultDisableFsRedir, ExpandConst(Name), True, False, False, False, nil, nil, nil);
           end;
           NotifyAfterInstallEntry(AfterInstall);
         end;
@@ -2940,7 +2940,7 @@ var
       when using a 64-bit Uninstall key) }
     BaseDir := ReplaceSystemDirWithSysWow64(PathExpand(ExpandConst(SetupHeader.UninstallFilesDir)));
     LogFmt('Directory for uninstall files: %s', [BaseDir]);
-    MakeDirRedir(False, BaseDir, []);
+    MakeDir(False, BaseDir, []);
 
     FillChar(ExistingFiles, SizeOf(ExistingFiles), 0);  { set all to False }
     FindFiles;
@@ -3369,7 +3369,7 @@ begin
   const DisableFsRedir = False; { Like everything else working on the temp dir }
 
   if CreateDirs then
-    ForceDirectoriesRedir(DisableFsRedir, PathExtractPath(DestFile));
+    ForceDirectories(DisableFsRedir, PathExtractPath(DestFile));
   DestF := TFileRedir.Create(DisableFsRedir, DestFile, fdCreateAlways, faWrite, fsNone);
   try
     try
@@ -3389,7 +3389,7 @@ begin
     DeleteFileRedir(DisableFsRedir, DestFile);
     raise;
   end;
-  AddAttributesToFileRedir(DisableFsRedir, DestFile, CurFile^.Attribs);
+  AddAttributesToFile(DisableFsRedir, DestFile, CurFile^.Attribs);
 end;
 
 procedure ExtractTemporaryFile(const BaseName: String);
@@ -3589,15 +3589,15 @@ begin
   { Prepare directory }
   if FileExists(DestFile) then begin
     if (RequiredSHA256OfFile <> '') and
-       (RequiredSHA256OfFile = SHA256DigestToString(GetSHA256OfFileRedir(DisableFsRedir, DestFile))) then begin
+       (RequiredSHA256OfFile = SHA256DigestToString(GetSHA256OfFile(DisableFsRedir, DestFile))) then begin
       Log('  File already downloaded.');
       Result := 0;
       Exit;
     end;
     SetFileAttributesRedir(DisableFsRedir, DestFile, GetFileAttributesRedir(DisableFsRedir, DestFile) and not FILE_ATTRIBUTE_READONLY);
-    DelayDeleteFileRedir(DisableFsRedir, DestFile, 13, 50, 250);
+    DelayDeleteFile(DisableFsRedir, DestFile, 13, 50, 250);
   end else
-    ForceDirectoriesRedir(DisableFsRedir, PathExtractPath(DestFile));
+    ForceDirectories(DisableFsRedir, PathExtractPath(DestFile));
 
   HTTPDataReceiver := nil;
   HTTPClient := nil;
@@ -3620,7 +3620,7 @@ begin
     HTTPClient.OnReceiveData := HTTPDataReceiver.OnReceiveData;
 
     { Create temporary file }
-    TempFile := GenerateUniqueNameRedir(DisableFsRedir, PathExtractPath(DestFile), '.tmp');
+    TempFile := GenerateUniqueName(DisableFsRedir, PathExtractPath(DestFile), '.tmp');
     TempF := TFileRedir.Create(DisableFsRedir, TempFile, fdCreateAlways, faWrite, fsNone);
     TempFileLeftOver := True;
 
@@ -3652,7 +3652,7 @@ begin
       { Check hash if specified, otherwise check everything else we can check }
       if RequiredSHA256OfFile <> '' then begin
         try
-          SHA256OfFile := SHA256DigestToString(GetSHA256OfFileRedir(DisableFsRedir, TempFile));
+          SHA256OfFile := SHA256DigestToString(GetSHA256OfFile(DisableFsRedir, TempFile));
         except on E: Exception do
           raise Exception.Create(FmtSetupMessage(msgErrorFileHash1, [E.Message]));
         end;

+ 20 - 25
Projects/Src/Setup.MainFunc.pas

@@ -206,7 +206,7 @@ procedure NotifyAfterInstallFileEntry(const FileEntry: PSetupFileEntry);
 procedure NotifyBeforeInstallEntry(const BeforeInstall: String);
 procedure NotifyBeforeInstallFileEntry(const FileEntry: PSetupFileEntry);
 function PreviousInstallCompleted(const WizardComponents, WizardTasks: TStringList): Boolean;
-function CodeRegisterExtraCloseApplicationsResourceRedir(const DisableFsRedir: Boolean; const AFilename: String): Boolean;
+function CodeRegisterExtraCloseApplicationsResource(const DisableFsRedir: Boolean; const AFilename: String): Boolean;
 procedure RegisterResourcesWithRestartManager(const WizardComponents, WizardTasks: TStringList);
 procedure RemoveTempInstallDir;
 procedure SaveInf(const FileName: String);
@@ -1483,7 +1483,7 @@ begin
   if TempInstallDir <> '' then begin
     if Debugging then
       DebugNotifyTempDir('');
-    if not DelTreeRedir(False, TempInstallDir, True, True, True, False, nil,
+    if not DelTree(False, TempInstallDir, True, True, True, False, nil,
        TempDeleteFileProc, Pointer(GetTickCount())) then
       Log('Failed to remove temporary directory: ' + TempInstallDir);
   end;
@@ -1742,7 +1742,7 @@ end;
 function EnumFiles(const EnumFilesProc: TEnumFilesProc;
   const WizardComponents, WizardTasks: TStringList; const Param: Pointer): Boolean;
 
-  function RecurseExternalFilesRedir(const DisableFsRedir: Boolean;
+  function RecurseExternalFiles(const DisableFsRedir: Boolean;
     const SearchBaseDir, SearchSubDir, SearchWildcard: String;
     const SourceIsWildcard: Boolean; const Excludes: TStringList; const CurFile: PSetupFileEntry): Boolean;
   var
@@ -1789,7 +1789,7 @@ function EnumFiles(const EnumFilesProc: TEnumFilesProc;
         try
           repeat
             if IsRecurseableDirectory(FindData) then
-              if not RecurseExternalFilesRedir(DisableFsRedir, SearchBaseDir,
+              if not RecurseExternalFiles(DisableFsRedir, SearchBaseDir,
                  SearchSubDir + FindData.cFileName + '\', SearchWildcard,
                  SourceIsWildcard, Excludes, CurFile) then begin
                 Result := False;
@@ -1833,7 +1833,7 @@ begin
           { External file }
           SourceWildcard := ExpandConst(CurFile^.SourceFilename);
           Excludes.DelimitedText := CurFile^.Excludes;
-          if not RecurseExternalFilesRedir(DisableFsRedir, PathExtractPath(SourceWildcard), '',
+          if not RecurseExternalFiles(DisableFsRedir, PathExtractPath(SourceWildcard), '',
              PathExtractName(SourceWildcard), IsWildcard(SourceWildcard), Excludes, CurFile) then begin
             Result := False;
             Exit;
@@ -1851,13 +1851,13 @@ begin
         if ShouldProcessEntry(WizardComponents, WizardTasks, Components, Tasks, Languages, Check) then begin
           case DeleteType of
             dfFiles, dfFilesAndOrSubdirs:
-              if not DelTreeRedir(InstallDefaultDisableFsRedir, ExpandConst(Name), False, True, DeleteType = dfFilesAndOrSubdirs, True,
+              if not DelTree(InstallDefaultDisableFsRedir, ExpandConst(Name), False, True, DeleteType = dfFilesAndOrSubdirs, True,
                  DummyDeleteDirProc, EnumFilesProc, Param) then begin
                 Result := False;
                 Exit;
               end;
             dfDirIfEmpty:
-              if not DelTreeRedir(InstallDefaultDisableFsRedir, ExpandConst(Name), True, False, False, True,
+              if not DelTree(InstallDefaultDisableFsRedir, ExpandConst(Name), True, False, False, True,
                  DummyDeleteDirProc, EnumFilesProc, Param) then begin
                 Result := False;
                 Exit;
@@ -1874,7 +1874,7 @@ end;
 var
   CheckForFileSL: TStringList;
 
-function CheckForFileProc(const DisableFsRedir: Boolean; const AFilename: String;
+function CheckForFile(const DisableFsRedir: Boolean; const AFilename: String;
   const Param: Pointer): Boolean;
 var
   Filename: String;
@@ -1905,7 +1905,7 @@ begin
     EnumFileReplaceOperationsFilenames(EnumProc, CheckForFileSL);
     if CheckForFileSL.Count = 0 then
       Exit;
-    Result := EnumFiles(CheckForFileProc, WizardComponents, WizardTasks, nil);
+    Result := EnumFiles(CheckForFile, WizardComponents, WizardTasks, nil);
   finally
     CheckForFileSL.Free;
   end;
@@ -1919,17 +1919,18 @@ var
   RegisterFileBatchFilenames: PArrayOfPWideChar;
   RegisterFileFilenamesBatchMax, RegisterFileFilenamesBatchCount: Integer;
 
-function RegisterFileRedir(const DisableFsRedir: Boolean; const AFilename: String;
-  const CheckFilter: Boolean): Boolean;
+function RegisterFile(const DisableFsRedir: Boolean; const AFilename: String;
+  const Param: Pointer): Boolean;
 var
   Filename, Text: String;
   I, Len: Integer;
-  Match: Boolean;
+  CheckFilter, Match: Boolean;
 begin
   Filename := AFilename;
 
   { First: check filters and self. }
   if Filename <> '' then begin
+    CheckFilter := Boolean(Param);
     if CheckFilter then begin
       Match := False;
       Text := PathLowercase(PathExtractName(Filename));
@@ -1998,20 +1999,14 @@ begin
   Result := RmSessionStarted; { Break the enum if there was an error, else continue. }
 end;
 
-function RegisterFileProc(const DisableFsRedir: Boolean; const AFilename: String;
-  const Param: Pointer): Boolean;
-begin
-  Result := RegisterFileRedir(DisableFsRedir, AFilename, Boolean(Param));
-end;
-
 { Helper function for [Code] to register extra files. }
 var
   AllowCodeRegisterExtraCloseApplicationsResource: Boolean;
 
-function CodeRegisterExtraCloseApplicationsResourceRedir(const DisableFsRedir: Boolean; const AFilename: String): Boolean;
+function CodeRegisterExtraCloseApplicationsResource(const DisableFsRedir: Boolean; const AFilename: String): Boolean;
 begin
   if AllowCodeRegisterExtraCloseApplicationsResource then
-    Result := RegisterFileRedir(DisableFsRedir, AFilename, False)
+    Result := RegisterFile(DisableFsRedir, AFilename, Pointer(False))
   else begin
     InternalError('Cannot call "RegisterExtraCloseApplicationsResource" function at this time');
     Result := False;
@@ -2030,7 +2025,7 @@ begin
   try
     { Register our files. }
     RmRegisteredFilesCount := 0;
-    EnumFiles(RegisterFileProc, WizardComponents, WizardTasks, Pointer(True));
+    EnumFiles(RegisterFile, WizardComponents, WizardTasks, Pointer(True));
     { Ask [Code] for more files. }
     if CodeRunner <> nil then begin
       AllowCodeRegisterExtraCloseApplicationsResource := True;
@@ -2047,7 +2042,7 @@ begin
     end;
     { Don't forget to register leftovers. }
     if RmSessionStarted then
-      RegisterFileRedir(False, '', False);
+      RegisterFile(False, '', nil);
   finally
     for I := 0 to RegisterFileFilenamesBatchCount-1 do
       FreeMem(RegisterFileBatchFilenames[I]);
@@ -2691,7 +2686,7 @@ var
       InstallMode := imSilent;
   end;
 
-  function RecurseExternalGetSizeOfFilesRedir(const DisableFsRedir: Boolean;
+  function RecurseExternalGetSizeOfFiles(const DisableFsRedir: Boolean;
     const SearchBaseDir, SearchSubDir, SearchWildcard: String;
     const SourceIsWildcard: Boolean; const RecurseSubDirs: Boolean): Integer64;
   var
@@ -2727,7 +2722,7 @@ var
         try
           repeat
             if IsRecurseableDirectory(FindData) then begin
-              I := RecurseExternalGetSizeOfFilesRedir(DisableFsRedir, SearchBaseDir,
+              I := RecurseExternalGetSizeOfFiles(DisableFsRedir, SearchBaseDir,
                 SearchSubDir + FindData.cFileName + '\', SearchWildcard,
                 SourceIsWildcard, RecurseSubDirs);
               Inc6464(Result, I);
@@ -3390,7 +3385,7 @@ begin
               SourceWildcard := NewParamStr(0)
             else
               SourceWildcard := ExpandConst(SourceFilename);
-            ExternalSize := RecurseExternalGetSizeOfFilesRedir(
+            ExternalSize := RecurseExternalGetSizeOfFiles(
               ShouldDisableFsRedirForFileEntry(PSetupFileEntry(Entries[seFile][I])),
               PathExtractPath(SourceWildcard),
               '', PathExtractName(SourceWildcard), IsWildcard(SourceWildcard),

+ 3 - 3
Projects/Src/Setup.RegSvr.pas

@@ -2,7 +2,7 @@ unit Setup.RegSvr;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -98,9 +98,9 @@ begin
   DeleteOldTempFiles(PathExtractPath(SelfFilename));
   NewFilename := RenameToNonRandomTempName(SelfFilename);
   if NewFilename <> '' then
-    RestartReplaceRedir(False, NewFilename, '')
+    RestartReplace(False, NewFilename, '')
   else
-    RestartReplaceRedir(False, SelfFilename, '');
+    RestartReplace(False, SelfFilename, '');
 end;
 
 procedure RunRegSvr;

+ 7 - 7
Projects/Src/Setup.ScriptFunc.HelperFunc.pas

@@ -2,7 +2,7 @@ unit Setup.ScriptFunc.HelperFunc;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -65,8 +65,8 @@ procedure CrackCodeRootKey(CodeRootKey: HKEY; var RegView: TRegView;
   var RootKey: HKEY);
 function GetSubkeyOrValueNames(const RegView: TRegView; const RootKey: HKEY;
   const SubKeyName: String; const Stack: TPSStack; const ItemNo: Longint; const Subkey: Boolean): Boolean;
-function GetMD5OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TMD5Digest;
-function GetSHA1OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TSHA1Digest;
+function GetMD5OfFile(const DisableFsRedir: Boolean; const Filename: String): TMD5Digest;
+function GetSHA1OfFile(const DisableFsRedir: Boolean; const Filename: String): TSHA1Digest;
 function GetMD5OfAnsiString(const S: AnsiString): TMD5Digest;
 function GetMD5OfUnicodeString(const S: UnicodeString): TMD5Digest;
 function GetSHA1OfAnsiString(const S: AnsiString): TSHA1Digest;
@@ -76,7 +76,7 @@ procedure ExecAndLogOutputLog(const S: String; const Error, FirstLine: Boolean;
 procedure ExecAndLogOutputLogCustom(const S: String; const Error, FirstLine: Boolean; const Data: NativeInt);
 function CustomMessage(const MsgName: String): String;
 function NewExtractRelativePath(BaseName, DestName: string): string;
-function NewFileSearchRedir(const DisableFsRedir: Boolean;
+function NewFileSearch(const DisableFsRedir: Boolean;
   const Name, DirList: String): String;
 function GetExceptionMessage(const Caller: TPSExec): String;
 function GetCodePreviousData(const ExpandedAppID, ValueName, DefaultValueData: String): String;
@@ -301,7 +301,7 @@ begin
   Result := True;
 end;
 
-function GetMD5OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TMD5Digest;
+function GetMD5OfFile(const DisableFsRedir: Boolean; const Filename: String): TMD5Digest;
 { Gets MD5 sum of the file Filename. An exception will be raised upon
   failure. }
 var
@@ -323,7 +323,7 @@ begin
   Result := MD5Final(Context);
 end;
 
-function GetSHA1OfFileRedir(const DisableFsRedir: Boolean; const Filename: String): TSHA1Digest;
+function GetSHA1OfFile(const DisableFsRedir: Boolean; const Filename: String): TSHA1Digest;
 { Gets SHA-1 sum of the file Filename. An exception will be raised upon
   failure. }
 var
@@ -455,7 +455,7 @@ end;
   - it uses NewFileExistsRedir instead of FileExists
   - it doesn't search the current directory unless it's told to
   - it always returns a fully-qualified path }
-function NewFileSearchRedir(const DisableFsRedir: Boolean;
+function NewFileSearch(const DisableFsRedir: Boolean;
   const Name, DirList: String): String;
 var
   I, P, L: Integer;

+ 13 - 13
Projects/Src/Setup.ScriptFunc.pas

@@ -838,15 +838,15 @@ var
     end);
     RegisterScriptFunc('DELAYDELETEFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      DelayDeleteFileRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart), Stack.GetInt(PStart-1), 250, 250);
+      DelayDeleteFile(ScriptFuncDisableFsRedir, Stack.GetString(PStart), Stack.GetInt(PStart-1), 250, 250);
     end);
     RegisterScriptFunc('DELTREE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetBool(PStart, DelTreeRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetBool(PStart-2), Stack.GetBool(PStart-3), Stack.GetBool(PStart-4), False, nil, nil, nil));
+      Stack.SetBool(PStart, DelTree(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetBool(PStart-2), Stack.GetBool(PStart-3), Stack.GetBool(PStart-4), False, nil, nil, nil));
     end);
     RegisterScriptFunc('GENERATEUNIQUENAME', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, GenerateUniqueNameRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetString(PStart-2)));
+      Stack.SetString(PStart, GenerateUniqueName(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetString(PStart-2)));
     end);
     RegisterScriptFunc('GETCOMPUTERNAMESTRING', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -854,7 +854,7 @@ var
     end);
     RegisterScriptFunc('GETMD5OFFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, MD5DigestToString(GetMD5OfFileRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
+      Stack.SetString(PStart, MD5DigestToString(GetMD5OfFile(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
     end);
     RegisterScriptFunc('GETMD5OFSTRING', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -866,7 +866,7 @@ var
     end);
     RegisterScriptFunc('GETSHA1OFFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, SHA1DigestToString(GetSHA1OfFileRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
+      Stack.SetString(PStart, SHA1DigestToString(GetSHA1OfFile(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
     end);
     RegisterScriptFunc('GETSHA1OFSTRING', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -878,7 +878,7 @@ var
     end);
     RegisterScriptFunc('GETSHA256OFFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, SHA256DigestToString(GetSHA256OfFileRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
+      Stack.SetString(PStart, SHA256DigestToString(GetSHA256OfFile(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1))));
     end);
     RegisterScriptFunc('GETSHA256OFSTREAM', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -895,7 +895,7 @@ var
     RegisterScriptFunc('GETSPACEONDISK', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
       var FreeBytes, TotalBytes: Integer64;
-      if GetSpaceOnDiskRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), FreeBytes, TotalBytes) then begin
+      if GetSpaceOnDisk(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), FreeBytes, TotalBytes) then begin
         if Stack.GetBool(PStart-2) then begin
           Div64(FreeBytes, 1024*1024);
           Div64(TotalBytes, 1024*1024);
@@ -914,7 +914,7 @@ var
     RegisterScriptFunc('GETSPACEONDISK64', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
       var FreeBytes, TotalBytes: Integer64;
-      if GetSpaceOnDiskRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), FreeBytes, TotalBytes) then begin
+      if GetSpaceOnDisk(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), FreeBytes, TotalBytes) then begin
         Stack.SetInt64(PStart-2, Int64(FreeBytes.Hi) shl 32 + FreeBytes.Lo);
         Stack.SetInt64(PStart-3, Int64(TotalBytes.Hi) shl 32 + TotalBytes.Lo);
         Stack.SetBool(PStart, True);
@@ -1011,7 +1011,7 @@ var
     end);
     RegisterScriptFunc('ISPROTECTEDSYSTEMFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetBool(PStart, IsProtectedSystemFileRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1)));
+      Stack.SetBool(PStart, IsProtectedSystemFile(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1)));
     end);
     RegisterScriptFunc('MAKEPENDINGFILERENAMEOPERATIONSCHECKSUM', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -1040,11 +1040,11 @@ var
     end);
     RegisterScriptFunc('RESTARTREPLACE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      RestartReplaceRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart), Stack.GetString(PStart-1));
+      RestartReplace(ScriptFuncDisableFsRedir, Stack.GetString(PStart), Stack.GetString(PStart-1));
     end);
     RegisterScriptFunc('FORCEDIRECTORIES', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetBool(PStart, ForceDirectoriesRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1)));
+      Stack.SetBool(PStart, ForceDirectories(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1)));
     end);
   end;
 
@@ -1178,7 +1178,7 @@ var
     end);
     RegisterScriptFunc('REGISTEREXTRACLOSEAPPLICATIONSRESOURCE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetBool(PStart, CodeRegisterExtraCloseApplicationsResourceRedir(Stack.GetBool(PStart-1), Stack.GetString(PStart-2)));
+      Stack.SetBool(PStart, CodeRegisterExtraCloseApplicationsResource(Stack.GetBool(PStart-1), Stack.GetString(PStart-2)));
     end);
     RegisterScriptFunc('GETWIZARDFORM', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
@@ -1326,7 +1326,7 @@ var
     end);
     RegisterScriptFunc('FILESEARCH', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin
-      Stack.SetString(PStart, NewFileSearchRedir(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetString(PStart-2)));
+      Stack.SetString(PStart, NewFileSearch(ScriptFuncDisableFsRedir, Stack.GetString(PStart-1), Stack.GetString(PStart-2)));
     end);
     RegisterScriptFunc('RENAMEFILE', procedure(const Caller: TPSExec; const OrgName: AnsiString; const Stack: TPSStack; const PStart: Cardinal)
     begin

+ 3 - 3
Projects/Src/Setup.SecurityFunc.pas

@@ -2,7 +2,7 @@ unit Setup.SecurityFunc;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -14,7 +14,7 @@ interface
 uses
   Windows, SysUtils, Shared.CommonFunc, Shared.Struct;
 
-function GrantPermissionOnFileRedir(const DisableFsRedir: Boolean; Filename: String;
+function GrantPermissionOnFile(const DisableFsRedir: Boolean; Filename: String;
   const Entries: TGrantPermissionEntry; const EntryCount: Integer): Boolean;
 function GrantPermissionOnKey(const RegView: TRegView; const RootKey: HKEY;
   const Subkey: String; const Entries: TGrantPermissionEntry;
@@ -157,7 +157,7 @@ const
   OBJECT_INHERIT_ACE    = 1;
   CONTAINER_INHERIT_ACE = 2;
 
-function GrantPermissionOnFileRedir(const DisableFsRedir: Boolean; Filename: String;
+function GrantPermissionOnFile(const DisableFsRedir: Boolean; Filename: String;
   const Entries: TGrantPermissionEntry; const EntryCount: Integer): Boolean;
 { Grants the specified access to the specified file/directory. Returns True if
   successful. On failure, the thread's last error code is set. }

+ 2 - 2
Projects/Src/Setup.SpawnClient.pas

@@ -2,7 +2,7 @@ unit Setup.SpawnClient;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -144,7 +144,7 @@ var
   M: TMemoryStream;
 begin
   if not RunAsOriginalUser or not SpawnServerPresent then begin
-    Result := InstExecRedir(DisableFsRedir, Filename, Params, WorkingDir,
+    Result := InstExec(DisableFsRedir, Filename, Params, WorkingDir,
       Wait, ShowCmd, ProcessMessagesProc, OutputReader, ResultCode);
     Exit;
   end;

+ 2 - 2
Projects/Src/Setup.SpawnServer.pas

@@ -2,7 +2,7 @@ unit Setup.SpawnServer;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -379,7 +379,7 @@ begin
           TExecWait(EWait), EShowCmd, ProcessMessagesProc, FResultCode);
       end
       else begin
-        ExecResult := InstExecRedir(EDisableFsRedir <> 0, EFilename, EParams, EWorkingDir,
+        ExecResult := InstExec(EDisableFsRedir <> 0, EFilename, EParams, EWorkingDir,
           TExecWait(EWait), EShowCmd, ProcessMessagesProc, nil, FResultCode);
       end;
       if ExecResult then

+ 3 - 3
Projects/Src/Setup.Uninstall.pas

@@ -237,7 +237,7 @@ begin
       Sleep(500);
   end;
   UninstallExitCode := 0;
-  DelayDeleteFileRedir(False, UninstExeFilename, 13, 50, 250);
+  DelayDeleteFile(False, UninstExeFilename, 13, 50, 250);
   if Debugging then
     DebugNotifyUninstExe('');
   { Pre-Windows 2000 Add/Remove Programs will try to bring itself to the
@@ -371,8 +371,8 @@ begin
   TempFile := AddBackslash(TempDir) + '_unins.tmp';
   if not TempDirExisted then
     try
-      RestartReplaceRedir(False, TempFile, '');
-      RestartReplaceRedir(False, TempDir, '');
+      RestartReplace(False, TempFile, '');
+      RestartReplace(False, TempDir, '');
     except
       { ignore exceptions }
     end;

+ 10 - 10
Projects/Src/Setup.UninstallLog.pas

@@ -2,7 +2,7 @@ unit Setup.UninstallLog;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -245,7 +245,7 @@ begin
   Result := False;
 end;
 
-procedure LoggedRestartDeleteDirRedir(const DisableFsRedir: Boolean; Dir: String);
+procedure LoggedRestartDeleteDir(const DisableFsRedir: Boolean; Dir: String);
 begin
   Dir := PathExpand(Dir);
   if not DisableFsRedir then begin
@@ -262,7 +262,7 @@ const
   drFalse = '0';
   drTrue = '1';
 
-function LoggedDeleteDirRedir(const DisableFsRedir: Boolean; const DirName: String;
+function LoggedDeleteDir(const DisableFsRedir: Boolean; const DirName: String;
   const DirsNotRemoved, RestartDeleteDirList: TSimpleStringList): Boolean;
 const
   FILE_ATTRIBUTE_REPARSE_POINT = $00000400;
@@ -278,7 +278,7 @@ begin
     { If the directory has the read-only attribute, strip it first }
     if Attribs and FILE_ATTRIBUTE_READONLY <> 0 then begin
       if (Attribs and FILE_ATTRIBUTE_REPARSE_POINT <> 0) or
-         IsDirEmptyRedir(DisableFsRedir, DirName) then begin
+         IsDirEmpty(DisableFsRedir, DirName) then begin
         if SetFileAttributesRedir(DisableFsRedir, DirName, Attribs and not FILE_ATTRIBUTE_READONLY) then
           Log('Stripped read-only attribute.')
         else
@@ -299,7 +299,7 @@ begin
          ListContainsPathOrSubdir(RestartDeleteDirList, DirName) then begin
         LogFmt('Failed to delete directory (%d). Will delete on restart (if empty).',
           [LastError]);
-        LoggedRestartDeleteDirRedir(DisableFsRedir, DirName);
+        LoggedRestartDeleteDir(DisableFsRedir, DirName);
       end
       else
         LogFmt('Failed to delete directory (%d).', [LastError]);
@@ -452,7 +452,7 @@ type
 function LoggedDeleteDirProc(const DisableFsRedir: Boolean; const DirName: String;
   const Param: Pointer): Boolean;
 begin
-  Result := LoggedDeleteDirRedir(DisableFsRedir, DirName, PDeleteDirData(Param)^.DirsNotRemoved, nil);
+  Result := LoggedDeleteDir(DisableFsRedir, DirName, PDeleteDirData(Param)^.DirsNotRemoved, nil);
 end;
 
 function LoggedDeleteFileProc(const DisableFsRedir: Boolean; const FileName: String;
@@ -608,7 +608,7 @@ var
           LogFmt('The file appears to be in use (%d). Will delete on restart.',
             [LastError]);
           try
-            RestartReplaceRedir(DisableFsRedir, Filename, '');
+            RestartReplace(DisableFsRedir, Filename, '');
             NeedRestart := True;
             { Add the file's directory to the list of directories that should
               be restart-deleted later }
@@ -715,7 +715,7 @@ var
         (e.g. '0C:\Program Files\My Program') }
       DisableFsRedir := (S[1] = drTrue);
       System.Delete(S, 1, 1);
-      LoggedDeleteDirRedir(DisableFsRedir, S, nil, RestartDeleteDirList[DisableFsRedir]);
+      LoggedDeleteDir(DisableFsRedir, S, nil, RestartDeleteDirList[DisableFsRedir]);
     end;
   end;
   
@@ -817,7 +817,7 @@ begin
                   try
                     if GetLogActive and (CurRec^.ExtraData and utRun_LogOutput <> 0) then
                       OutputReader := TCreateProcessOutputReader.Create(RunExecLog, 0);
-                    if not InstExecRedir(CurRec^.ExtraData and utRun_DisableFsRedir <> 0,
+                    if not InstExec(CurRec^.ExtraData and utRun_DisableFsRedir <> 0,
                        CurRecData[0], CurRecData[1], CurRecData[2], Wait,
                        ShowCmd, ProcessMessagesProc, OutputReader, ErrorCode) then begin
                       LogFmt('CreateProcess failed (%d).', [ErrorCode]);
@@ -964,7 +964,7 @@ begin
             end;
           utDeleteDirOrFiles:
             if (CallFromUninstaller or (CurRec^.ExtraData and utDeleteDirOrFiles_Extra = 0)) then begin
-              if DelTreeRedir(CurRec^.ExtraData and utDeleteDirOrFiles_DisableFsRedir <> 0,
+              if DelTree(CurRec^.ExtraData and utDeleteDirOrFiles_DisableFsRedir <> 0,
                  CurRecData[0], CurRec^.ExtraData and utDeleteDirOrFiles_IsDir <> 0,
                  CurRec^.ExtraData and utDeleteDirOrFiles_DeleteFiles <> 0,
                  CurRec^.ExtraData and utDeleteDirOrFiles_DeleteSubdirsAlso <> 0,

+ 3 - 3
Projects/Src/Setup.WizardForm.pas

@@ -2,7 +2,7 @@ unit Setup.WizardForm;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -2374,7 +2374,7 @@ procedure TWizardForm.NextButtonClick(Sender: TObject);
 
     if InstallMode = imNormal then begin
       { Check if there's enough free disk space }
-      if GetSpaceOnNearestMountPointRedir(False, T, FreeSpace, TotalSpace) then begin
+      if GetSpaceOnNearestMountPoint(False, T, FreeSpace, TotalSpace) then begin
         if Compare64(FreeSpace, MinimumSpace) < 0 then
           { If not, show warning }
           if LoggedMsgBox(FmtSetupMessage(msgDiskSpaceWarning,
@@ -2414,7 +2414,7 @@ procedure TWizardForm.NextButtonClick(Sender: TObject);
     Result := False;
 
     if InstallMode = imNormal then begin
-      if GetSpaceOnNearestMountPointRedir(False, DirEdit.Text, FreeSpace, TotalSpace) then begin
+      if GetSpaceOnNearestMountPoint(False, DirEdit.Text, FreeSpace, TotalSpace) then begin
         if Compare64(FreeSpace, CurrentComponentsSpace) < 0 then
           if LoggedMsgBox(FmtSetupMessage(msgDiskSpaceWarning,
                [IntToKBStr(CurrentComponentsSpace), IntToKBStr(FreeSpace)]),

+ 6 - 6
Projects/Src/SetupLdrAndSetup.InstFunc.pas

@@ -2,7 +2,7 @@ unit SetupLdrAndSetup.InstFunc;
 
 {
   Inno Setup
-  Copyright (C) 1997-2025 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
 
@@ -21,7 +21,7 @@ type
 function CreateTempDir(const LimitCurrentUserSidAccess: Boolean;
   var Protected: Boolean): String; overload;
 function CreateTempDir(const LimitCurrentUserSidAccess: Boolean): String; overload;
-procedure DelayDeleteFileRedir(const DisableFsRedir: Boolean; const Filename: String;
+procedure DelayDeleteFile(const DisableFsRedir: Boolean; const Filename: String;
   const MaxTries, FirstRetryDelayMS, SubsequentRetryDelayMS: Integer);
 function DetermineDefaultLanguage(const GetLanguageEntryProc: TGetLanguageEntryProc;
   const Method: TSetupLanguageDetectionMethod; const LangParameter: String;
@@ -35,7 +35,7 @@ function CreateSafeDirectory(const LimitCurrentUserSidAccess: Boolean; Path: Str
 function CreateSafeDirectory(const LimitCurrentUserSidAccess: Boolean; Path: String;
   var ErrorCode: DWORD): Boolean; overload;
 function IntToBase32(Number: Longint): String;
-function GenerateUniqueNameRedir(const DisableFsRedir: Boolean; Path: String;
+function GenerateUniqueName(const DisableFsRedir: Boolean; Path: String;
   const Extension: String): String;
 
 implementation
@@ -146,7 +146,7 @@ begin
   end;
 end;
 
-function GenerateUniqueNameRedir(const DisableFsRedir: Boolean; Path: String;
+function GenerateUniqueName(const DisableFsRedir: Boolean; Path: String;
   const Extension: String): String;
 var
   Rand, RandOrig: Longint;
@@ -177,7 +177,7 @@ var
   ErrorCode: DWORD;
 begin
   while True do begin
-    Dir := GenerateUniqueNameRedir(False, GetTempDir, '.tmp');
+    Dir := GenerateUniqueName(False, GetTempDir, '.tmp');
     if CreateSafeDirectory(LimitCurrentUserSidAccess, Dir, ErrorCode, Protected) then
       Break;
     if ErrorCode <> ERROR_ALREADY_EXISTS then
@@ -235,7 +235,7 @@ begin
     WM_QUERYENDSESSION and WM_ENDSESSION messages. }
 end;
 
-procedure DelayDeleteFileRedir(const DisableFsRedir: Boolean; const Filename: String;
+procedure DelayDeleteFile(const DisableFsRedir: Boolean; const Filename: String;
   const MaxTries, FirstRetryDelayMS, SubsequentRetryDelayMS: Integer);
 { Attempts to delete Filename up to MaxTries times, retrying if the file is
   in use. It sleeps FirstRetryDelayMS msec after the first try, and

+ 28 - 39
Projects/Src/SetupLdrAndSetup.RedirFunc.pas

@@ -18,19 +18,13 @@ interface
 uses
   Windows, SysUtils, Shared.FileClass, Shared.VerInfoFunc;
 
-type
-  TRedir<T> = class
-    class function RedirIf(const Disable: Boolean; const FailResult: T; const Func: TFunc<T>): T; overload;
-    class function RedirIf(const Disable: Boolean; const Func: TFunc<T>): T; overload;
-  end;
-
-function AreFsRedirectionFunctionsAvailable: Boolean;
-
 type
   TPreviousFsRedirectionState = record
     DidDisable: Boolean;
     OldValue: Pointer;
   end;
+
+function AreFsRedirectionFunctionsAvailable: Boolean;
 function DisableFsRedirectionIf(const Disable: Boolean;
   var PreviousState: TPreviousFsRedirectionState): Boolean;
 procedure RestoreFsRedirection(const PreviousState: TPreviousFsRedirectionState);
@@ -165,51 +159,46 @@ begin
     Wow64RevertWow64FsRedirectionFunc(PreviousState.OldValue);
 end;
 
-{ TRedir<T> }
+{ *Redir functions }
 
-class function TRedir<T>.RedirIf(const Disable: Boolean; const FailResult: T; const Func: TFunc<T>): T;
+function CreateFileRedir(const DisableFsRedir: Boolean; const FileName: String;
+  const DesiredAccess, ShareMode: DWORD; const SecurityAttributes: PSecurityAttributes;
+  const CreationDisposition, FlagsAndAttributes: DWORD; TemplateFile: THandle): THandle;
+var
+  PrevState: TPreviousFsRedirectionState;
+  ErrorCode: DWORD;
 begin
-  var PrevState: TPreviousFsRedirectionState;
-  if not DisableFsRedirectionIf(Disable, PrevState) then begin
-    Result := FailResult;
+  if not DisableFsRedirectionIf(DisableFsRedir, PrevState) then begin
+    Result := INVALID_HANDLE_VALUE;
     Exit;
   end;
-  var ErrorCode: DWORD;
   try
-    Result := Func;
+    Result := CreateFile(PChar(Filename), DesiredAccess, ShareMode, SecurityAttributes,
+      CreationDisposition, FlagsAndAttributes, TemplateFile);
     ErrorCode := GetLastError;
   finally
     RestoreFsRedirection(PrevState);
   end;
-  SetLastError(ErrorCode)
-end;
-
-class function TRedir<T>.RedirIf(const Disable: Boolean;
-  const Func: TFunc<T>): T;
-begin
-  Result := RedirIf(Disable, Default(T), Func);
-end;
-
-{ *Redir functions }
-
-function CreateFileRedir(const DisableFsRedir: Boolean; const FileName: String;
-  const DesiredAccess, ShareMode: DWORD; const SecurityAttributes: PSecurityAttributes;
-  const CreationDisposition, FlagsAndAttributes: DWORD; TemplateFile: THandle): THandle;
-begin
-  Result := TRedir<THandle>.RedirIf(DisableFsRedir, INVALID_HANDLE_VALUE, function: THandle
-    begin
-      Result := CreateFile(PChar(Filename), DesiredAccess, ShareMode, SecurityAttributes,
-        CreationDisposition, FlagsAndAttributes, TemplateFile);
-    end);
+  SetLastError(ErrorCode);
 end;
 
 function CreateDirectoryRedir(const DisableFsRedir: Boolean; const Filename: String;
   const SecurityAttributes: PSecurityAttributes): BOOL;
+var
+  PrevState: TPreviousFsRedirectionState;
+  ErrorCode: DWORD;
 begin
-  Result := TRedir<BOOL>.RedirIf(DisableFsRedir, function: BOOL
-    begin
-      Result := CreateDirectory(PChar(Filename), SecurityAttributes);
-  	end);
+  if not DisableFsRedirectionIf(DisableFsRedir, PrevState) then begin
+    Result := False;
+    Exit;
+  end;
+  try
+    Result := CreateDirectory(PChar(Filename), SecurityAttributes);
+    ErrorCode := GetLastError;
+  finally
+    RestoreFsRedirection(PrevState);
+  end;
+  SetLastError(ErrorCode);
 end;
 
 function CreateProcessRedir(const DisableFsRedir: Boolean;