2013-04-05 2 views
3

Я решил использовать makecab.exe для моего требования создать файлы cab в моем приложении. http://msdn.microsoft.com/en-us/library/bb417343.aspx#microsoftmakecabusersguideИспользование файла MakeCab.exe & .ddf (т. Е. С использованием файла директивы), как указать имя файла кэша назначения?

И мне нужно хранить файлы в соответствии с заданным путем независимо от того, является ли относительная или абсолютная внутренняя часть кабины и извлекать файлы с сохраненным исходным путем. Поэтому я буду использовать файл директивы для этого и дать этот ввод команде makecab.

windows command promt zip/compress directory

Но выход кабины хранится в папке \ Disk1 1.cab.

Пожалуйста, помогите мне узнать, как я могу указать желаемое имя файла в качестве адресата (я возьму имя файла машины из пользовательского ввода)?

Кроме того, возможно ли добавить больше файлов в существующий файл кабины во втором запуске команды makecab?

ответ

3

Наконец-то нашли решение.

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

DiskDirectoryTemplate=template [Вывод шаблона имя каталога; * заменяется номером диска]
CabinetNameTemplate=template [шаблон имени файла в шкафу; * Заменяется номером кабинета]

Описание от Microsoft MakeCAB User's Guide

DiskDirectoryTemplate = шаблон

Установить шаблон имя каталога вывода. Для каждого диска макета создается один каталог для .

По умолчанию: .Set DiskDirectoryTemplate = DISK *; По умолчанию: DISK1, DISK2, и т. Д.

Поскольку MakeCAB обрабатывает файл директивы, он создает один или несколько дисков «изображения». Однако вместо использования определенного формата диска MakeCAB просто создает один поддиректорий для каждого диска и помещает файлы для каждого диска в соответствующий каталог. Если * существует в , эта переменная заменяется на номер диска. Если нет * указано , то все файлы помещаются в одну директорию, указанную этой переменной.

Эта переменная используется, только если для диска не существует переменной DiskDirectoryn.

Примеры:

.Set DiskDirectoryTemplate=C:\EXCEL6\DISK* ; Put files in separate dirs 
.Set DiskDirectoryTemplate=C:\EXCEL6  ; Put all files in C:\EXCEL6 
.Set DiskDirectoryTemplate=     ; Put all files in current dir 

CabinetNameTemplate = шаблон

Устанавливает шаблон имени файла кабинета.

По умолчанию: .Set CabinetNameTemplate=*.CAB ; 1.CAB, 2.CAB, ...

Этот шаблон используется для создания имени файла каждого кабинета. * в этом шаблоне заменяется номером шкафа (1, 2 и т. Д.). Эта переменная используется только в том случае, если для шкафа не существует переменной CabinetNamen n.

ПРИМЕЧАНИЕ. Убедитесь, что имя расширенного шкафа не превышает для вашей файловой системы! Например, если вы использовали «CABINET * .CAB», и MakeCAB должны были создать 10 или более шкафов, тогда у вас были бы имена кабинетов, такие как CABINET10.CAB, что 9.3, что является недопустимым именем в файле FAT система. К сожалению, MakeCAB не обнаружил бы , пока он уже не создал 9 шкафов!

Примеры:

.Set CabinetNameTemplate=EXCEL*.DIA ; EXCEL1.DIA, EXCEL2.DIA, etc. 

.Set CabinetNameTemplate=*.   ; 1, 2, 3, etc. 

Кроме того, когда файлы разбиты на такси (в случае, если размер шкафа превышает предельный размер), то вы можете установить последующие имена файлов кабинета также с помощью переменной CabinetName п:

CabinetNamen=filename [имя файла кабинета для номера кабинета п]

CabinetNamen = filename

Имя файла кабинета для указанного шкафа.

По умолчанию:; По умолчанию ни одна из этих переменных не определена

Если переменная не определена для определенного диска, то в MakeCAB для построения имени шкафа используется шаблон CabinetNameTemplate.

Пример:

.Set CabinetName2=test2.cab