1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
unit DLLWrapper;
interface
uses Classes, SysUtils;
function DoGenerate(const Source, Target: String; Stream: TStream; Config: String): Integer; forward;
var
WaitAfterGenerate: Boolean = False;
OptimalPatches: Boolean = False;
implementation
uses
OSUtil, Forms;
function DoGenerate(const Source, Target: String; Stream: TStream; Config: String): Integer;
var
F: TextFile;
Temp, BatchFile: String;
fs: TFileStream;
begin
BatchFile:=ExcludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName)) + PathDelim +'~generate_patch.bat';
AssignFile(F,BatchFile);
Rewrite(F);
Temp:=GetTempFile;
WriteLn(F,'@cls');
WriteLn(F,'@echo Generating '+ExtractFileName(Source)+' to '+ExtractFileName(Target)+'...');
Write(F,'genpat.exe "', Source, '" "', Target, '" "', Temp, '" /b='+Config);
if OptimalPatches then begin
Write(F,' /o');
end;
WriteLn(F,'');
if WaitAfterGenerate then begin
WriteLn(F,'@echo.');
WriteLn(F,'@pause');
end;
CloseFile(F);
ExecWaitBatchFile(ExtractFilePath(BatchFile),BatchFile);
fs:=TFileStream.Create(Temp,fmOpenRead);
Stream.CopyFrom(fs,fs.Size);
Result:=fs.Size;
fs.Free;
DeleteFile(Temp);
DeleteFile(BatchFile);
end;
end.
|