如何使用7z.dll?

如何使用7z.dll?,dll,inno-setup,Dll,Inno Setup,我现在有一个脚本来下载一个文件并复制到一个目录。但我如何才能使它,如果我压缩一个文件夹到一个压缩文件,然后需要解压缩时,压缩文件夹下载。单独为每个文件编写行需要花费太多时间。我知道我可以使用7z.dll来解压,但不知道如何将其放入代码中 [Code] procedure InitializeWizard; begin idpDownloadAfter(wpReady); end; procedure CurPageChanged(CurPageID

我现在有一个脚本来下载一个文件并复制到一个目录。但我如何才能使它,如果我压缩一个文件夹到一个压缩文件,然后需要解压缩时,压缩文件夹下载。单独为每个文件编写行需要花费太多时间。我知道我可以使用7z.dll来解压,但不知道如何将其放入代码中

 [Code]
    procedure InitializeWizard;
    begin
      idpDownloadAfter(wpReady);
    end;

    procedure CurPageChanged(CurPageID: Integer);
    begin
      if CurPageID = wpReady then
      begin
        idpClearFiles;

        if IsComponentSelected('IGR') then

          idpAddFile('http://www.mediafire.com/download/f9hnlkt1t75ykjk/waterfall_IGR.model', ExpandConstant('{tmp}\waterfall_IGR.model'));
      end;
    end;

    procedure CurStepChanged(CurStep: TSetupStep);
    begin
      if CurStep = ssPostInstall then 
      begin
        // Copy downloaded files to application directory
        FileCopy(ExpandConstant('{tmp}\waterfall_IGR.model'), ExpandConstant('{app}\res_mods\0.8.10\content\Environment\env_waterfall\waterfall_IGR.model'), false);
      end;
    end;

我不知道
7z.dll
是否可以直接工作,但可以做的是下载7zip portable,将其文件夹包含在包中,并将解压命令传递给
7za.exe

例如:
7za.exe x\in.zip-oc:\pathToOutFolder

我在创建一个7zip文件并使用-v选项将其拆分为多个small文件时遇到了相同的问题,我修复的方法是使用powershell我获取文件列表并动态创建Inno项目,它看起来像

$Files = Get-Item "$zipFilesLocation\*.*" 
$files | Select-object @{Name="Address"; Expression={"idpAddFile('<webaddress>" + $_.Name + "' ,  ExpandConstant('{tmp}\58-Formulary_201311.7z.001'));"}}
 and tghen just write each object into the iss file like 

foreach ($elem in $files)
{
$e = "idpAddFile( WebWrlString + '" + $elem.Name + "', ExpandConstant('{tmp}\"  + $elem.Name + "'));"
    $e | Out-File "Innopackage.iss" -Encoding ASCII  -Append
}
$Files=获取项“$ZipFileLocation\*.*”
$files | Select object@{Name=“Address”;Expression={“idpAddFile”(“++$\.Name+”),ExpandConstant(“{tmp}\58-Formulary_201311.7z.001”);“}”
然后将每个对象写入iss文件,如下所示
foreach($文件中的元素)
{
$e=“idpAddFile(WebWrlString+”+$elem.Name+”,ExpandConstant(“{tmp}\”+$elem.Name+”)
$e |输出文件“Innopackage.iss”-编码ASCII-追加
}

我希望这会有所帮助

…我会制作一些扩展工具库,比如service controller(我承诺用脚本编写,但库会更好)、这个archiver、新的下载器(我已经开始工作)、某种图像控制(带有PNG和一些淡入支持),等等。但是,所有这些至少有三个问题。我不会满足于发布一些未经测试或不稳定的东西,目前我不知道有谁会对这些项目做出贡献(我周围的人通常都很懒:-),而且,我正在从事一个全职项目(相当大的GIS)。@TLama,它的好朋友,有时可以进行一些小辩论。不过关于黑匣子,你是对的。@jyrka,我刚刚请了一位值得信赖的人,他使用
7z.exe
在c#net中生成一个zip包。他们说没有任何黑匣子。你真的必须试着找出在你的情况下会发生什么。你当然可以。可能看起来像。但是,这将在安装过程之后执行。请注意,我还没有测试这个脚本(没有时间)@codin,如果你愿意的话,可以把它放在你的答案中(如果它有效的话)。-)@TLama我知道{app}是选中的目录:-),只是如果安装程序下载文件,它应该像脚本中一样将其解压缩到{app},但安装文件夹中没有显示任何内容