Join many Files to One using Inno Only
Code:
const
joinFileBufsize = 4096;
procedure ConcatenateFiles(const InFileNames: array of string; const OutFileName: string);
var
i: Integer;
InStream, OutStream: TFileStream;
read : longInt;
Buffer : string;
begin
OutStream := TFileStream.Create(OutFileName, fmOpenwrite);
try
// if not done so, read() will fail, maybe it internally assumes that bufsize is 0
for i := 0 to joinFileBufsize do
buffer := buffer + '0';
for i := 0 to high(InFileNames) do
begin
InStream := TFileStream.Create(InFileNames[i], fmOpenRead);
try
while InStream.Position <> InStream.Size do
begin
read := InStream.Read(buffer,joinFileBufsize);
OutStream.Write(buffer,read);
end;
finally
InStream.Free;
end;
end;
finally
OutStream.Free;
end;
end;
function InitializeSetup(): Boolean;
begin
ConcatenateFiles(['test.iss','join.iss'],'JoinTest');
end;