Я хочу создать CAB-файл из нескольких файлов. Любое учебное пособие или руководство, с которым я столкнулся, полезно только для нескольких файлов.
Согласно Википедии:
Формат файла CAB может использовать следующие алгоритмы сжатия:
- DEFLATE — изобретен Филом Кацем, автором формата файлов ZIP
- Квантовое сжатие — по лицензии Дэвида Стаффорда, автора квантового архиватора.
- LZX — изобретено Джонатан Форбс и Томи Поутанен, данный Microsoft, когда Forbes присоединился к компании.
Таким образом, любой архиватор .zip должен открываться файл, даже тот, который является встроенным во всех последних версиях Windows.
Однако, как указано в статье, существует несколько архиваторов, которые создают файлы .cab из-за их формата. Согласно следующему списку эти программы могут записывать файлы .cab:
- ZipGenius
- AlZip
- IZArc
- PowerArchiver
- TugZip
- WinAce
Вы можете использовать встроенную команду Windows makecab
, но сначала вам нужно создать список файлов.
dir C: FolderName/s/b/ad> c: temp files.txt
Это перечислит все файлы в каталоге C: FolderName и сохранить как текстовый файл с полным путем. Теперь мы собираемся использовать файл files.txt для создания CAB-файла.
makecab/d CabinetName1 = test.cab/D DiskDirectoryTemplate = C: temp/fc:tempfiles.txt
Приведенная выше команда сгенерирует файл test.cab в вашей папке C: Temp, используя список файлов, созданный ранее.
Дополнительная полезная ссылка: Справочник по шкафу Microsoft. и сведения о makecab.exe.
4
Вам нужно обновить или регенерировать файл CAB, возможно, заменить один файл в существующем CAB, сохранив при этом структуру папок в CAB? Вот что мне нужно было сделать. Быстрое исследование не выявило простого способа 7Zip или WinZip для обновления существующего CAB на месте. Я нашел путь к успеху, регенерировав новый файл CAB, точно так же, как старый файл CAB, за исключением нескольких измененных файлов в нем.
Инструмент, который делает это, представляет собой интерфейс графического интерфейса для интерфейса Утилита MakeCab. MakeCab с правой командной строкой создаст CAB-файл из всех файлов в папке.
Получите MakeCab здесь: https://github.com/sapientcoder/CabMaker
Рабочий процесс для создания обновленного CAB-файла:
- Откройте командную строку и используйте команду Expand для извлечения файлов из существующего CAB-файла в структуру папок.
развернуть -F: * MyServer ServerMigration2020 ExportedConfigurationSourceFiles MyOriginalCABFile. cab MyServer CaptureSV ServerMigration2020 Cabfiles CabSourceFiles
Эта команда Expand извлекает все файлы из исходного CAB-файла и помещает их в папку CabSourceFiles, сохраняя структуру папок.
-
Внесите необходимые обновления в извлеченные файлы и папки. В моем случае был один файл, XML-файл, который я заменил в структуре папок.
-
Запустите графический интерфейс CabMaker, чтобы создать обновленный файл CAB. Обратите внимание, что это работает для «простого» CAB-файла, состоящего только из файлов и папок, а не для CAB-файла «установщика», который имеет дополнительные заголовки и является частью набора файлов установщика.
Хорошо, как получить и использовать инструмент CabMaker?
Получите его здесь: https://github.com/sapientcoder/CabMaker Я просто загрузил код CabMaker C # с GitHub и запустил его в Visual Studio 2019, без изменений.
Графический интерфейс CabMaker появился прямо сейчас. Я вошел в свою исходную папку (выходная папка в команде «Развернуть») и в свою целевую папку (куда помещается результирующий CAB-файл) и желаемое имя CAB-файла, и нажал кнопку «Создать CAB», и он запустился. Полученный CAB-файл прекрасно работал, успешно импортировался в приложение и давал правильно заданную конфигурацию.
Итак, зачем мне нужно было создавать CAB-файл? Итак, мы переносили приложение поставщика со старого сервера на новый и использовали функцию «экспорта» приложения для захвата файлов конфигурации текущего состояния, которые мы могли «импортировать» в приложение на новом сервере. альтернативой было использование неуклюжего графического интерфейса пользовательского приложения для ручной навигации и внесения нескольких сотен изменений в имена файлов и папок, которые изменились. Я решил, что было бы лучше внести изменения в файл и папку в XML-файле в CAB, в котором хранятся все настройки. Все это прекрасно сработало в день переключения серверов; иногда нам везет. Слава участнику GitHub, SapientCoder!
1