快速创建多个文件的 .cab 文件的最佳方法是什么?

快速创建多个文件的 .cab 文件的最佳方法是什么?

我想制作一个包含多个文件的 .cab 文件。我遇到的任何教程或指南都只适用于少数文件。

答案1

根据维基百科

CAB文件格式可能采用以下压缩算法:

  • 放气– 由 ZIP 文件格式的作者 Phil Katz 发明
  • 量子压缩– 经 Quantum 存档器作者 David Stafford 授权
  • 龙珠星– 由乔纳森·福布斯和托米·普塔宁发明,福布斯加入微软时赠予该公司

因此,任何 .zip 压缩器都应该打开该文件,甚至是所有最新 Windows 版本所自带的文件。

然而,正如文章所指出的,由于其格式,很少有归档程序可以创建 .cab 文件。根据以下内容列表这些程序可以写入.cab 文件:

  • ZipGenius
  • 压缩包
  • 伊扎克
  • 强力存档器
  • 拖拉拉链
  • 温艾斯

答案2

您可以使用 Windows 内置命令,makecab但首先您需要生成一个文件列表。

dir C:\FolderName /s /b /a-d > c:\temp\files.txt

这将列出 C:\FolderName 目录中的所有文件,并保存为具有完整路径名的文本文件。现在我们将使用 files.txt 文件来创建 cab 文件。

makecab /d CabinetName1=test.cab /D DiskDirectoryTemplate=C:\temp /f c:\temp\files.txt

上述命令将使用之前生成的文件列表在您的 C:\Temp 文件夹中生成一个 test.cab 文件。

其他有用参考: Microsoft Cabinet 参考。makecab.exe 详细信息。

答案3

“一个CAB 文件最多可用于存储 65,535 个文件,总大小可达 1.99 GiB。要将多个文件压缩为单个 CAB 文件,请使用包含要压缩和打包的文件列表的指令文件。

指令文件(list.txt):

.Set CabinetNameTemplate=Out.cab;
.Set Cabinet=on;
.Set Compress=off;
.Set DiskDirectoryTemplate=;
file1
file2
file3
.etc

可选地,设置压缩(为了节省空间),然后在cmd中输入命令:

makecab /f list.txt

要创建自解压档案:

copy /b "%windir%\system32\extrac32.exe"+"Out.cab" CABfiles.exe

在 Win 10 CMD 上测试。

答案4

您是否需要更新或重新生成 CAB 文件,也许需要替换现有 CAB 中的单个文件,同时保留 CAB 中的文件夹结构?这就是我需要做的。快速研究表明,没有简单的 7Zip 或 WinZip 方法来更新现有的 CAB。我找到了一条成功的方法,即重新生成一个新的 CAB 文件,就像旧的 CAB 文件一样,只是里面有一些我修改过的文件。

执行此操作的工具是 MakeCab 实用程序的 GUI 前端。使用正确的命令行,MakeCab 将根据文件夹中的所有文件创建 CAB 文件。
在此处获取 MakeCab:https://github.com/sapientcoder/CabMaker

创建更新的 CAB 文件的工作流程如下:

  1. 打开命令行,并使用扩展命令将文件从现有 CAB 文件提取到文件夹结构。

展开 -F:* \MyServer\ServerMigration2020\ExportedConfigurationSourceFiles\MyOriginalCABFile.cab \MyServer\CaptureSV\ServerMigration2020\Cabfiles\CabSourceFiles

此 Expand 命令将提取原始 CAB 文件内的所有文件并将其放在 CabSourceFiles 文件夹中,并保留文件夹结构。

  1. 对提取的文件和文件夹进行任何您想要的更新。在我的例子中,有一个文件,一个 XML 文件,我在文件夹结构中进行了替换。

  2. 运行 CabMaker GUI 来创建更新的 CAB 文件。请注意,这适用于仅包含文件和文件夹的“普通”CAB 文件,而不适用于包含额外标头和一组安装程序文件的一部分的“安装程序”CAB 文件。

好的,如何获取和使用 CabMaker 工具?
在这里获取:https://github.com/sapientcoder/CabMaker 我只是从 GitHub 下载了 CabMaker C# 代码并在 Visual Studio 2019 中运行它,没有任何变化。

CabMaker GUI 立即出现。我输入了源文件夹(Expand 命令中的输出文件夹)和目标文件夹(放置生成的 CAB 文件的位置)以及所需的 CAB 文件名,然后单击“制作 CAB”按钮,它便运行了。生成的 CAB 文件运行良好,成功导入应用程序并生成正确设置的配置。

CabMaker GUI 屏幕截图

好的,那么为什么我是否需要制作 CAB 文件?好吧,我们正在将供应商应用程序从旧服务器迁移到新服务器,并使用应用程序的“导出”功能来捕获当前状态配置文件,我们可以将这些文件“导入”到新服务器上的应用程序中。另一种方法是使用消费者应用程序笨重的 GUI 手动导航并对已更改的文件和文件夹名称进行数百次更改。我决定最好在包含所有设置的 CAB 中的 XML 文件中对文件和文件夹进行更改。在服务器切换日,一切都进展顺利;有时我们很幸运。向 GitHub 贡献者 SapientCoder 致以崇高的敬意!

相关内容