ZIPTV
压缩解压控件
含源代码。
简单的例子:
uses ztvUnGZip, ztvUnTar;
var
Fn : string;
GZip: TUnGZip;
Tar : TUnTAR;
TmpPath: string;
begin
TmpPath := TempPath + '$rcutools%ITEM_CONTENT%apos;;
if DlgOpen(Fn, '', 'RCU 固件(*.tar.gz)|*.tar.gz|所有文件(*.*)|*.*') then
begin
GZip := TUnGZip.Create(nil);
try
GZip.ArchiveFile := Fn;
GZip.FileSpec.Add('test.tar');
GZip.ExtractDir := TmpPath;
if GZip.Extract = 0 then
raise Exception.Create('选择的文件不是合法的固件包或者固件包被损坏!');
finally
GZip.Free;
end;
/// 提取版本号信息并显示,同时可以验证固件包是否正确
Tar := TUnTar.Create(nil);
try
Tar.ArchiveFile := TmpPath + '\test.tar';
Tar.FileSpec.Add('savelog');
Tar.ExtractDir := TmpPath;
if Tar.Extract = 0 then
raise Exception.Create('固件包中找不到版本信息,请确认固件包是否合法!');
finally
Tar.Free;
end;
edtFirm.Text := Fn;
if DirectoryExists(TmpPath) then DeleteDirectory(TmpPath);
end;
end;