在 Delphi 中创建 7zip 存档

Create an 7zip archive in Delphi

我将这个 7zip 包装器用于 Delphi 7,效果很好

https://github.com/zedalaye/d7zip

它创建存档但覆盖里面已有的文件

var
  Arch: I7zOutArchive;
 begin
  Arch := CreateOutArchive(CLSID_CFormat7z);
  SetCompressionLevel(Arch, 2);
  Arch.AddFile('C:\Test.bin', 'Test.bin');
  Arch.SaveToFile('C:\Test.zip');
 end;

它会删除保存在 'Test.zip' 中的所有其他文件 无论如何我可以将文件保存在 'Test.zip' 中并使用此包装器在 Delphi 7

中写入新文件

您正在使用的包装器不允许您更新 现有存档,只能创建 新存档。因此,要 添加 文件到现有存档,您必须执行以下操作:

  • 使用CreateInArchive()打开现有存档
  • 使用CreateOutArchive()创建一个新的临时存档
  • 从输入存档复制 个文件到输出存档
  • 个文件添加到输出存档
  • 关闭两个存档
  • 用新存档替换旧存档