|
@@ -1787,7 +1787,7 @@ var
|
|
|
|
|
|
function RecurseExternalCopyFiles(const DisableFsRedir: Boolean;
|
|
function RecurseExternalCopyFiles(const DisableFsRedir: Boolean;
|
|
const SearchBaseDir, SearchSubDir, SearchWildcard: String; const SourceIsWildcard: Boolean;
|
|
const SearchBaseDir, SearchSubDir, SearchWildcard: String; const SourceIsWildcard: Boolean;
|
|
- const CurFile: PSetupFileEntry; const FileLocationFilenames: TStringList;
|
|
|
|
|
|
+ const Excludes: TStringList; const CurFile: PSetupFileEntry; const FileLocationFilenames: TStringList;
|
|
var ExpectedBytesLeft: Integer64; var ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll: TOverwriteAll;
|
|
var ExpectedBytesLeft: Integer64; var ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll: TOverwriteAll;
|
|
var WarnedPerUserFonts: Boolean): Boolean;
|
|
var WarnedPerUserFonts: Boolean): Boolean;
|
|
var
|
|
var
|
|
@@ -1815,6 +1815,9 @@ var
|
|
else
|
|
else
|
|
FileName := SearchWildcard; { use the case specified in the script }
|
|
FileName := SearchWildcard; { use the case specified in the script }
|
|
|
|
|
|
|
|
+ if IsExcluded(SearchSubDir + FileName, Excludes) then
|
|
|
|
+ Continue;
|
|
|
|
+
|
|
Result := True;
|
|
Result := True;
|
|
SourceFile := SearchBaseDir + SearchSubDir + FileName;
|
|
SourceFile := SearchBaseDir + SearchSubDir + FileName;
|
|
DestName := ExpandConst(CurFile^.DestName);
|
|
DestName := ExpandConst(CurFile^.DestName);
|
|
@@ -1848,7 +1851,7 @@ var
|
|
if IsRecurseableDirectory(FindData) then
|
|
if IsRecurseableDirectory(FindData) then
|
|
Result := RecurseExternalCopyFiles(DisableFsRedir, SearchBaseDir,
|
|
Result := RecurseExternalCopyFiles(DisableFsRedir, SearchBaseDir,
|
|
SearchSubDir + FindData.cFileName + '\', SearchWildcard,
|
|
SearchSubDir + FindData.cFileName + '\', SearchWildcard,
|
|
- SourceIsWildcard, CurFile, FileLocationFileNames,
|
|
|
|
|
|
+ SourceIsWildcard, Excludes, CurFile, FileLocationFileNames,
|
|
ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
|
|
ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
|
|
WarnedPerUserFonts) or Result;
|
|
WarnedPerUserFonts) or Result;
|
|
until not FindNextFile(H, FindData);
|
|
until not FindNextFile(H, FindData);
|
|
@@ -1882,7 +1885,6 @@ var
|
|
end;
|
|
end;
|
|
|
|
|
|
var
|
|
var
|
|
- FileLocationFilenames: TStringList;
|
|
|
|
I: Integer;
|
|
I: Integer;
|
|
CurFileNumber: Integer;
|
|
CurFileNumber: Integer;
|
|
CurFile: PSetupFileEntry;
|
|
CurFile: PSetupFileEntry;
|
|
@@ -1897,10 +1899,17 @@ var
|
|
PromptIfOlderOverwriteAll := oaUnknown;
|
|
PromptIfOlderOverwriteAll := oaUnknown;
|
|
WarnedPerUserFonts := False;
|
|
WarnedPerUserFonts := False;
|
|
|
|
|
|
- FileLocationFilenames := TStringList.Create;
|
|
|
|
|
|
+ var FileLocationFilenames: TStringList := nil;
|
|
|
|
+ var Excludes: TStringList := nil;
|
|
try
|
|
try
|
|
|
|
+ FileLocationFilenames := TStringList.Create;
|
|
for I := 0 to Entries[seFileLocation].Count-1 do
|
|
for I := 0 to Entries[seFileLocation].Count-1 do
|
|
FileLocationFilenames.Add('');
|
|
FileLocationFilenames.Add('');
|
|
|
|
+
|
|
|
|
+ Excludes := TStringList.Create;
|
|
|
|
+ Excludes.StrictDelimiter := True;
|
|
|
|
+ Excludes.Delimiter := ',';
|
|
|
|
+
|
|
for CurFileNumber := 0 to Entries[seFile].Count-1 do begin
|
|
for CurFileNumber := 0 to Entries[seFile].Count-1 do begin
|
|
CurFile := PSetupFileEntry(Entries[seFile][CurFileNumber]);
|
|
CurFile := PSetupFileEntry(Entries[seFile][CurFileNumber]);
|
|
if ((CurFile^.FileType <> ftUninstExe) or Uninstallable) and
|
|
if ((CurFile^.FileType <> ftUninstExe) or Uninstallable) and
|
|
@@ -1932,13 +1941,14 @@ var
|
|
end
|
|
end
|
|
else
|
|
else
|
|
SourceWildcard := ExpandConst(CurFile^.SourceFilename);
|
|
SourceWildcard := ExpandConst(CurFile^.SourceFilename);
|
|
|
|
+ Excludes.CommaText := CurFile^.Excludes;
|
|
ProgressBefore := CurProgress;
|
|
ProgressBefore := CurProgress;
|
|
repeat
|
|
repeat
|
|
SetProgress(ProgressBefore);
|
|
SetProgress(ProgressBefore);
|
|
ExpectedBytesLeft := CurFile^.ExternalSize;
|
|
ExpectedBytesLeft := CurFile^.ExternalSize;
|
|
FoundFiles := RecurseExternalCopyFiles(DisableFsRedir,
|
|
FoundFiles := RecurseExternalCopyFiles(DisableFsRedir,
|
|
PathExtractPath(SourceWildcard), '', PathExtractName(SourceWildcard),
|
|
PathExtractPath(SourceWildcard), '', PathExtractName(SourceWildcard),
|
|
- IsWildcard(SourceWildcard), CurFile, FileLocationFileNames,
|
|
|
|
|
|
+ IsWildcard(SourceWildcard), Excludes, CurFile, FileLocationFileNames,
|
|
ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
|
|
ExpectedBytesLeft, ConfirmOverwriteOverwriteAll, PromptIfOlderOverwriteAll,
|
|
WarnedPerUserFonts);
|
|
WarnedPerUserFonts);
|
|
until FoundFiles or
|
|
until FoundFiles or
|
|
@@ -1956,6 +1966,7 @@ var
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
finally
|
|
|
|
+ Excludes.Free;
|
|
FileLocationFilenames.Free;
|
|
FileLocationFilenames.Free;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|