我想制作一个包含多个文件的 .cab 文件。我遇到的任何教程或指南都只适用于少数文件。
答案1
答案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 文件的工作流程如下:
- 打开命令行,并使用扩展命令将文件从现有 CAB 文件提取到文件夹结构。
展开 -F:* \MyServer\ServerMigration2020\ExportedConfigurationSourceFiles\MyOriginalCABFile.cab \MyServer\CaptureSV\ServerMigration2020\Cabfiles\CabSourceFiles
此 Expand 命令将提取原始 CAB 文件内的所有文件并将其放在 CabSourceFiles 文件夹中,并保留文件夹结构。
对提取的文件和文件夹进行任何您想要的更新。在我的例子中,有一个文件,一个 XML 文件,我在文件夹结构中进行了替换。
运行 CabMaker GUI 来创建更新的 CAB 文件。请注意,这适用于仅包含文件和文件夹的“普通”CAB 文件,而不适用于包含额外标头和一组安装程序文件的一部分的“安装程序”CAB 文件。
好的,如何获取和使用 CabMaker 工具?
在这里获取:https://github.com/sapientcoder/CabMaker
我只是从 GitHub 下载了 CabMaker C# 代码并在 Visual Studio 2019 中运行它,没有任何变化。
CabMaker GUI 立即出现。我输入了源文件夹(Expand 命令中的输出文件夹)和目标文件夹(放置生成的 CAB 文件的位置)以及所需的 CAB 文件名,然后单击“制作 CAB”按钮,它便运行了。生成的 CAB 文件运行良好,成功导入应用程序并生成正确设置的配置。
好的,那么为什么我是否需要制作 CAB 文件?好吧,我们正在将供应商应用程序从旧服务器迁移到新服务器,并使用应用程序的“导出”功能来捕获当前状态配置文件,我们可以将这些文件“导入”到新服务器上的应用程序中。另一种方法是使用消费者应用程序笨重的 GUI 手动导航并对已更改的文件和文件夹名称进行数百次更改。我决定最好在包含所有设置的 CAB 中的 XML 文件中对文件和文件夹进行更改。在服务器切换日,一切都进展顺利;有时我们很幸运。向 GitHub 贡献者 SapientCoder 致以崇高的敬意!