Winapi 如何让Inno安装程序解压缩单个文件?

Winapi 如何让Inno安装程序解压缩单个文件?,winapi,zip,inno-setup,pascalscript,Winapi,Zip,Inno Setup,Pascalscript,有没有一种方法可以从一个zip文件中解压一个文件? 我使用的代码基于for,非常适合解压,但不知道如何解压单个文件: [code]: 常数 无进度框=4; 回答“是”,回答“全部”=16; 过程解压缩(ZipPath,TargetPath:string); 变量 外壳:变体; ZipFile:变体; TargetFolder:变体; 开始 Shell:=CreateOleObject('Shell.Application'); ZipFile:=Shell.NameSpace(ZipPath);

有没有一种方法可以从一个zip文件中解压一个文件? 我使用的代码基于for,非常适合解压,但不知道如何解压单个文件:

[code]:
常数
无进度框=4;
回答“是”,回答“全部”=16;
过程解压缩(ZipPath,TargetPath:string);
变量
外壳:变体;
ZipFile:变体;
TargetFolder:变体;
开始
Shell:=CreateOleObject('Shell.Application');
ZipFile:=Shell.NameSpace(ZipPath);
如果是VarIsClear(ZipFile),则
RaiseException(格式('ZIP文件“%s”不存在或无法打开',[ZipPath]);
TargetFolder:=Shell.NameSpace(TargetPath);
如果是VarIsClear(TargetFolder),则
RaiseException(格式('目标路径“%s”不存在',[TargetPath]);
TargetFolder.CopyHere(ZipFile.Items,无进度框或对所有项目作出“是”的响应);
结束;

我找到了一种可行的方法,不是我所期望的,而是实用的

UnZip(AppFolder+'\modulos\seimpresoras-2.2.zip', tmpFolder); 
FileCopy(tmpFolder+'\seimpresoras\resources\default.properties', AppFolder+'\printers.properties', False);
用于检索对ZIP存档“文件夹”中特定文件的引用。然后将该引用传递给以提取它

const
无进度框=4;
回答“是”,回答“全部”=16;
过程解压缩(ZipPath,文件名,TargetPath:string);
变量
外壳:变体;
ZipFile:变体;
项目:变体;
TargetFolder:变体;
开始
Shell:=CreateOleObject('Shell.Application');
ZipFile:=Shell.NameSpace(ZipPath);
如果是VarIsClear(ZipFile),则
RaiseException(格式('无法打开ZIP文件“%s”或不存在',[ZipPath]);
Item:=ZipFile.ParseName(文件名);
如果变量为线性(项目),则
RaiseException(格式('在“%s”ZIP文件中找不到“%s”,[FileName,ZipPath]);
TargetFolder:=Shell.NameSpace(TargetPath);
如果是VarIsClear(TargetFolder),则
RaiseException(格式('目标路径“%s”不存在',[TargetPath]);
TargetFolder.CopyHere(项目、否进度框或对所有项目的回答为“是”);
结束;