最新 7z.dll 的 JEDI JclCompression 提取问题

JEDI JclCompression extraction issues with latest 7z.dll

我在 32 位版本的 7z.dll 9.20 for quite a while and have recently tried to upgrade to a more recent version (16.04 中使用了 JclCompression。随着 7z.dll 版本的更新,我无法提取 Bzip2 档案或压缩包 (.tgz),以及其他一些格式。 7z.dll 在 9.20 和 16.4 之间是否有什么变化会导致这种情况?

我也从 9.38 和 15.14 尝试 7z.dll,但 运行 遇到了同样的问题。

更多详情:

First chance exception at [=12=]40D523. Exception class $C0000094 with message 'integer divide by zero at 0x0040d523'.

Debug Output: Exception:Catastrophic failure Process myapp.exe (2400)

我已经按照 this post 上的提取代码进行操作。这是我看到错误的线程提取过程:

procedure TExtractThread.Execute();
begin
  if FArchive.ItemCount > 0 then
  begin
    FArchive.OnProgress := ArchiveProgress;
    FExtractionError := False;
    try
      FArchive.ExtractAll(FOutputDir);
    except on E: Exception do
      begin
        FExtractionError := True;
        OutputDebugString(pchar('Exception:'+E.Message));
      end;
    end;
  end;
end;

7zip 在 v9.20 (2010) 之后多年处于 alpha/beta 模式。随后的第一个稳定版本是 V15.12(2015 年 11 月),在您使用的 JCL 版本发布 几个月后 发布(2.8 Testing Build 5677,2015 年 9 月)。支持 7z.dll 版本 15.14 was added Jan 3, 2016. There does not seem to be any further updates checked in 比这更新的 DLL 版本。如果您想使用更新版本的 7Zip,您应该将 JCL 更新到当前版本。

如果您不想测试 Beta 版或每日构建版,那么可以使用当前稳定的 JCL 版本 (V2.4.1) is distributed with 7z.dll version 9.22 如果您对可靠性的需求超过任何新功能,则应该坚持使用它期间介绍过