Я знаю, что подобный вопрос задавали здесь много, но я не вполне доволен ответами (и даже с вопросами).
Основная цель - совместимость - она должна быть применима к максимально возможному диапазону оконных машин (включая XP, Vista, Win2003, которые все еще содержат около 20% доли Windows) и производится файлы должны использоваться на компьютерах Unix/Mac (поэтому предпочтительны стандартные форматы архивирования/сжатия).
Какие существуют опции:
- Создание пакета, который реализует некоторый zip-алгоритм. По-видимому, это возможно - но только с отдельными файлами и с использованием CERTUTIL для двоичная обработка (некоторые машины не имеют CERTUTIL по умолчанию и не может быть установлен на WinXP Home Edition)
- Использование shell.application через WSH. Лучший вариант в соответствии с для меня. Это позволяет застегивать целые каталоги и может использоваться на каждом окна машины
- Makecab - несмотря на то, что его сжатие не настолько переносимо доступны на всех машинах Windows. Некоторые внешние программы, такие как 7zip способны извлекать содержимое CAB, но это будет не так удобно, когда файлы должны использоваться в Unix/Mac.And while сжатие одного файла довольно просто, сохраняя структура каталогов требует немного больших усилий.
- Использование .NET Framework - не очень хороший вариант .Form.NET 2.0 есть GZipStream, но он позволяет сжатие только отдельных файлов..СЕТЬ 4.5 имеет возможности Zip, но он не поддерживается в Vista и XP. И даже больше -.NET по умолчанию не установлен на XP и Win2003, но так как очень вероятно, что .NET 2.0 до 4.0 он значительный опиум.
- Powershell - поскольку он полагается на .NET, он обладает такими же возможностями. не установлен по умолчанию в XP, 2003 и Vista, поэтому я пропущу его.