Разархивировать файлы в существующие каталоги в Visual Studio 2005 C ++? - PullRequest
0 голосов
/ 02 декабря 2009

Возможно, на сервере клиентского компьютера уже существует структура каталогов, которая выглядит следующим образом:

-|
 +css
  |-ABC
  |-EFG
  |-XYZ
 +img
  |-ABC
  |-EFG
  |-XYZ
 +js
  |-ABC
  |-EFG
  |-XYZ
 +htm
  |-ABC
  |-EFG
  |-XYZ

Когда мы отправляем нашим клиентам обновления на их веб-сайты электронной коммерции, мы отправляем их в виде zip-файла, который имеет следующую структуру:

-|
 +css
  |-UniqueDirectory
 +img
  |-UniqueDirectory
 +js
  |-UniqueDirectory
 +htm
  |-UniqueDirectory

... где UniqueDirectory всегда одно и то же имя.

Как уже говорилось, есть ли способ, с помощью Visual C ++ 2005, написать программу для распаковки zip-файла, который мы отправляем клиенту в существующий каталог, не перезаписывая ни один из существующих каталогов (за исключением, конечно, UniqueDirectory, можно и нужно перезаписать).

Конечный результат после распаковки файла на клиентском компьютере должен быть:

-|
 +css
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +img
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +js
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ
 +htm
  |-ABC
  |-EFG
  |-UniqueDirectory
  |-XYZ

Можно ли это сделать с помощью C ++? Мои клиенты не обладают необходимыми техническими навыками, чтобы просто распаковать файлы в правильные каталоги. Они также не обязательно хотят устанавливать программу разархивирования.

Требуется ли внешняя библиотека? Предпочтительно я хотел бы сделать это, используя только библиотеки из Visual C ++ 2005, но если требуется внешняя библиотека, я хотел бы знать, как она называется.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Если вы не хотите самостоятельно реализовывать алгоритм сжатия / декомпрессии, используя только то, что доступно в VS2005, вы захотите использовать библиотеку, чтобы выполнить свою работу за вас. Я рекомендую zlib . Это бесплатно.

На сайте есть инструкции .

Редактировать: В ответ на вопрос в вашем комментарии, да, он достаточно стар, чтобы быть собранным VS2005. Я только что скачал последний источник и смог скомпилировать его в .dll. Копия, которую я скачал, была "исходный код zlib, версия 1.2.3, формат zipfile" . После распаковки файлов найдите каталог / projects / visualc6 /. Вы должны быть в состоянии построить библиотеку оттуда.

Кроме того, вы также можете скачать предварительно скомпилированную библиотеку с сайта zlib. Он указан с загрузками исходного файла как "DLL-библиотека, скомпилированная zlib, версия 1.2.3, формат zipfile" .

Редактировать: Имейте в виду, что zlib - это библиотека C . Если вам нужна библиотека C ++ , вы можете попробовать gzstream , который в основном является оболочкой C ++ для zlib.

0 голосов
/ 02 декабря 2009

Нет, MFC / ATL не имеют такой возможности. Если вы не учитываете распространяемый J #, который устанавливается вместе с Visual Studio и может использоваться через C ++ / CLI, вам нужна внешняя библиотека или изобретать велосипед.

...