function BuildCmdLine( Cmd,ArchiveFileName:string;Options:TArchiverOptions;Path:String;FileList:array of const;UseResFile:boolean ):String;
function FindOpen ( Handle:HWND;ArchiveFileName:string;dwMode:DWORD ):THARC; override;
function FindFirst( hArc:THArc;var IndivisualInfo:TIndivisualInfo;FileMask:string ):integer; override;
function FindNext ( hArc:THArc;var IndivisualInfo:TIndivisualInfo ):integer; override;
function FindClose( hArc:THArc ):integer; override;
public
function Rar( Handle:HWND;CmdLine:string;var Output:string ):Integer;
function UnpackFiles ( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;DstPath:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer; override;
// function PackFiles ( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;BaseDir:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer; override;
// function RemoveItem ( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;BaseDir:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer; override;
// function MakeSfxFile ( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions ;var Output:string ):Integer; override;
function UnpackToMem ( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;FileName:string;lpvBuffer:LPVOID;dwSize:DWORD;lpdwWriteSize:LPDWORD ):Integer; override;
function CheckArchive ( ArchiveFileName:string;CheckMode:integer;CheckOptions:integer ):DWORD; override;
function SetOwnerWindowEx ( Handle:HWND;lpArcProc:LPARCHIVERPROC ):boolean; override;
function KillOwnerWindowEx( Handle:HWND ):boolean; override;
end;
function IsRarArchive( ArchiveFileName:string ):boolean;
function TRar32.UnpackFiles( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;DstPath:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer;
var
Cmd: string;
begin
if Options.x = 0
then Cmd := '-e'
else Cmd := '-x';
FCmdLine := BuildCmdLine( Cmd,ArchiveFileName,Options,DstPath,FileList,ruOnUnpack in Options.ResFileUsage );
result := Rar( Handle,FCmdLine,Output );
end;
{
function TRar32.PackFiles( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;BaseDir:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer;
begin
FCmdLine := BuildCmdLine( '-x',ArchiveFileName,Options,BaseDir,FileList,ruOnPack in Options.ResFileUsage );
result := Rar( Handle,FCmdLine,Output );
end;
function TRar32.RemoveItem( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;BaseDir:String;FileList:array of const;UseResFile:boolean;var Output:string ):Integer;
function TRar32.UnpackToMem( Handle:HWND;ArchiveFileName:string;Options:TArchiverOptions;FileName:string;lpvBuffer:LPVOID;dwSize:DWORD;lpdwWriteSize:LPDWORD ):Integer;