Как лучше всего быстро создать CAB-файл из нескольких файлов?

Как лучше всего быстро создать CAB-файл из нескольких файлов?
На чтение
11 мин.
Просмотров
18
Дата обновления
11.11.2024

Я хочу создать 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-файла:

  1. Откройте командную строку и используйте команду Expand для извлечения файлов из существующего CAB-файла в структуру папок.

развернуть -F: * MyServer ServerMigration2020 ExportedConfigurationSourceFiles MyOriginalCABFile. cab MyServer CaptureSV ServerMigration2020 Cabfiles CabSourceFiles

Эта команда Expand извлекает все файлы из исходного CAB-файла и помещает их в папку CabSourceFiles, сохраняя структуру папок.

  1. Внесите необходимые обновления в извлеченные файлы и папки. В моем случае был один файл, XML-файл, который я заменил в структуре папок.

  2. Запустите графический интерфейс 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



0 Комментариев
Комментариев на модерации: 0
Оставьте комментарий