Hold infinity in palm of your hand and eternity in your hour... ARJZ 0.15 бета, 7 апреля 1995 ========================================== ARJZ (c) Булат Зиганшин, 1994-95 г. ARJZ для OS/2 (c) Булат Зиганшин, Игорь Житко, 1994-95 г. ARJZ.DOC (c) Марк Шевченко, Булат Зиганшин, 1995 г. Содержание: 0. Введение 0.0. Что такое ARJZ 0.1. Достоинства и недостатки 0.2. Результаты тестирования 1. Как работать с ARJZ 1.0. Установка ARJZ (и UNARJZ) на ваш компьютер 1.0.0. Содержимое архива 1.0.1. Стандартная установка ARJZ 1.0.2. Использование ARJZ/UNARJZ под именем ARJ 1.1. Логика работы ARJZ 1.2. Версии ARJZ для DOS, защищённого режима DOS, OS/2 и NT 2. Использование 2.0. Вызов из командной строки 2.1. Различия в обработке опций ARJ и ARJZ 2.2. Собственные опции ARJZ 2.3. Переменные окружения ARJZ_SW и ARJZ0_SW 2.4. Совместное использование ARJZ и UNARJZ 3. Техническая информация Как переделать UNARJ (by Robert Jung), чтобы он мог извлекать файлы из архивов, созданных ARJZ. 4. Распространение 0. Введение Несколько замечаний, перед тем, как перейти к описанию программы ARJZ: 1) На протяжении этого руководства под "оригинальной программой" понимается ARJ Роберта Юнга (c). 2) Названия программ пишутся заглавными буквами, а имена файлов - прописными (т.е. ARJZ и arjz.exe). 3) Если вы не планируете глубокого изучения ARJZ, прочитайте только разделы 0.0. (Что такое ARJZ) и 1.0.2. (Использование ARJZ вместо ARJ). Так вы сэкономите своё время. 0.0. Что такое ARJZ ARJZ (по воле автора программы произносится как "арж-зет") - это новый архиватор, основанный на известной программе ARJ Роберта Юнга. В отличие от таких современных средств архивирования, как RAR и UC2, ARJZ использует формат файлов, командную строку и опции, совместимые с одной из самых популярных программ сжатия данных, а это имеет свои преимущества. В частности: 1) Практически всё программное обеспечение, расчитанное на вызов ARJ, будет работать так же и с программой ARJZ без всякой модификации. Например, не надо будет переписывать ни ARCVIEW, ни NC 4.0, ни DN, ни тех .BAT файлов, которые вы могли создать за время пользования ARJ'ем. 2) Для того, чтобы использовать возможности ARJZ'а при работе с вашими старыми архивами, вам совсем не нужно переархивировать их заново. 3) Вы так же почти избавляетесь от необходимости изучать новый архиватор. Зная, как запускается ARJ, вы знаете, как запускается ARJZ. Однако, следует иметь в виду, что 1) ARJZ позволяет сжимать файлы, используя более мощные методы, чем оригинальная программа. В этом случае ARJ НЕ СМОЖЕТ ПРОВОДИТЬ ОБРАБОТКУ ПОЛУЧЕННЫХ АРХИВОВ, СВЯЗАННУЮ С РАСПАКОВКОЙ, т.е. деархивирование, тестирование и т.д. В любом случае вы сохраните возможность обновлять и сливать архивы, переименовывать или удалять файлы в них, а так же получать список файлов в архивах. (См. подробнее раздел "Логика работы ARJZ"). 2) ARJZ/UNARJZ с одной стороны, поддерживают не все команды и опции ARJ'а, а с другой - вводят новые и это может создавать проблемы при работе. В действительности такие проблемы встречаются чрезвычайно редко и легко разрешимы (см. раздел 1.3). 0.1. Достоинства и недостатки К достоинствам ARJZ можно отнести 1) Версии под DOS (реальный/расширенный режимы), OS/2 и NT. В программу для расширенного режима DOS встроен расширитель, поэтому она работает на компьютерах 386+ без какого-либо дополнительного программного обеспечения. 2) Высокую скорость сжатия: ARJZ сжимает файлы с тем же качеством, что и ARJ примерно в полтора раза быстрее последнего (кроме версии, работающей в реальном режиме). 3) Высокую степень сжатия (в этом случае полученные архивы не будут распаковываться ARJ'ем). По этому параметру ARJZ находится на уровне RAR/UC2 (в этом вы можете убедится сами - you see too ;-). 4) Так называемый "полуэкранный интерфейс". ARJZ может во время работы выводить на экран окошко с двумя индикаторами процесса, именем архива и именем пакуемого файла - это замечательная особенность предназначена специально для таких программ, как ARC- или ARJVIEW, SHEZ, ARJMENU, NC 4.0+, DN и др. 5) Здесь, конечно не место для описания преимуществ UNARJZ'а, но тем не менее... Высокая скорость распаковки. Даже на XT UNARJZ работает в среднем в 1.5-2 раза быстрее, чем ARJ, а при использовании специальной опции (см. UNARJZ.DOC) разница возрастает ещё в два раза. Учитывая, что процедуры деархиватора оптимизированы отдельно под процессоры 286, 386, 486 и Pentium, вы можете себе представить скорость работы UNARJZ'а, например, на 486DX/33. 6) ARJZ написан таким образом, что его можно использовать и как отдельный архиватор и как надстройку над ARJ'ем: если он не может распознать команд или опций командной строки, то запускает оригинальную программу. Это, фактически, означает, что, используя ARJZ, вы, тем не менее, не теряете ни одной опции ARJ'а. Недостатки ARJZ 1) В ARJZ (по крайней мере, пока) нет поддержки многотомных (multi volume), резервных (backup) и самораспакующихся (SFX) архивов. Заметьте, что UNARJZ распаковывает любые архивы, созданные ARJ. 2) ARJZ не является полноценным архиватором в том смысле, что он самостоятельно не удаляет и не переименовывает файлы в архивах, не может сливать архивы и т.д. Всю эту работу можно сделать с помощью оригинальной программы, поэтому нельзя говорить, что пара ARJZ/UNARJZ полностью заменяет собой ARJ. 0.2. Результаты тестирования Помещены в файл BENCH.DOC 1. Как работать с ARJZ 1.0. Установка ARJZ (и UNARJZ) на ваш компьютер ARJZ - программа достаточно гибкая для того, чтобы растянуть описание её установки на долгие-долгие килобайты. Чтобы не делать этого, мы расскажем (и то не очень подробно) о нескольких режимах работы ARJZ, подходящих большинству пользователей. Всё остальное вы при желании можете узнать, прочитав этот файл до конца. 1.0.0. Содержимое архива В полный комплект поставки входят следующие исполняемые файлы: 1) arjz386p.exe - версия для защищенного режима DOS 2) arjz086.exe - версия для реального режима DOS 3) arjz-os2.exe - версия для OS/2 (консольная программа) 4) arjz-nt.exe - версия для NT (консольная программа) 5) arjz-4gw.exe - альтернативная версия для защищенного режима DOS 6) arjzfast.exe - быстрая версия для защищенного режима DOS Отличия между ними подробно описаны в п. 1.2 Также в комплект поставки входят: - описание программы в файле ARJZ.DOC - результаты сравнения с другими архиваторами в файле BENCH.DOC - рекомендуемые файлы настройки для NC 4.0+ (PACKER.SET), DN (DN.ARH) и ARCVIEW (ARCVIEW.INI). Обратите внимание, что эти файлы рассчитаны на то, что ARJZ можно вызвать как ARJZ.EXE, а пара UNARJZ/ARJ доступна под общим именем ARJ.EXE - возможны другие файлы, такие как README, HISTORY, TODO, FILE_ID.DIZ и др. Ввиду того, что многочисленные EXE-шники занимают большую часть архива, а один человек вряд-ли будет использовать их все, допустимо распространение неполных дистрибутивов - при условии, что будут сохранены все неисполняемые файлы и будет добавлен файл, в котором говорится, где можно получить недостающие версии программы. 1.0.1. Стандартная установка ARJZ Скопируйте выбранную вами версию программы ARJZ (т.е. версию для DOS, защищённого режима DOS, OS/2 или NT) в тот же каталог, в котором у вас находятся ARJ и UNARJZ. Добавте в autoexec.bat строчку: │ │set arjz_sw=-ti │ Стандартная установка позволит вам создавать архивы с расширением .ARJ, которые: 1) Будут меньше архивов, созданных программой ARJ; 2) Будут просматриваться и распаковываться такими программами, как ARCVIEW (для распаковки вам необходимо установить UNARJZ). Кроме того, вы получите замечательную возможность - "полуоконный интерфейс". Для вызова архиватора используйте имя "arjz.exe". Если вам нужно создать "переносимый" .ARJ архив, т.е. такой, который мог бы распаковаться оригинальной программой, вызывайте программу ARJ по имени "arj.exe" (или используйте опцию "-md" при вызове ARJZ). 1.0.2. Использование ARJZ/UNARJZ под именем ARJ Для того, чтобы использовать возможности ARJZ необязательно вызывать его явно, как это описано в пункте 1.0.1. Можно сделать так, что все три программы: ARJ, ARJZ и UNARJZ будут выступать под одной "личиной" - именем arj.exe. В этом случае для распаковки архивов будет вызываться UNARJZ, для упаковки - ARJZ, если ни та, ни другая программа не смогут обработать архив, вызовется ARJ. Этот вариант может быть лучше стандартной установки, однако не всегда. Подробности см. в разделе 1.1 "Логика работы ARJZ". Скопируйте arjz.exe в каталог с программами ARJ и UNARJZ. Переименуйте arj.exe в unarjz.exe, а arjz.exe - в arj.exe. В файле autoexec.bat добавьте строчку: │ │set arjz_sw=-maunarjz.exe -ti │ Всё, установка закончена. Теперь вы можете, как и раньше, запускать ARJ, но в действительности работать вместо него будет ARJZ. Вы и сами это заметите - во время архивирования на экране появляется не свойственное оригинальной программе окно с индикаторами процесса. Кроме того, при работе в защищённом режиме DOS, время работы значительно сокращается. ЗАМЕЧАНИЕ: Если вы хотите, чтобы создаваемые ARJZ'ом архивы могли распаковываться и тестироваться ARJ'ем, добавте в список опций, указанных в переменной ARJZ_SW "-md". 1.1. Логика работы ARJZ ARJZ расчитан на совместную работу с ARJ. По умолчанию, вместо того, чтобы выдавать ошибку "нераспознанная команда/опция", он запускает программу arjj.exe из того же каталога, в котором сам находится, передавая ей все свои параметры. Это позволяет работать совместно таким программам, как ARJZ/ARJ, ARJZ/UNARJZ и ARJZ/UNARJZ/ARJ: 1) Вариант ARJZ/ARJ может возникнуть только в том случае, если у вас нет программы UNARJZ, что маловероятно, поэтому мы не будем подробно его рассматривать; 2) Вариант ARJZ/UNARJZ возможен, если вы решите полностью отказаться от ARJ. В этом случае вы лишитесь большинства возможностей оригинальной программы, но если вы ими не пользуетесь, то ничего страшного не произойдёт. Вы не сможете стирать и переименовывать файлы в архивах, сортировать и сливать архивы и т.д. См. раздел 2.4 "Совместное использование ARJZ и UNARJZ". 3) Вариант ARJZ/UNARJZ/ARJ наиболее вероятен. Вы получаете в своё распоряжение все достоинства ARJZ/UNARJZ и, кроме того, не теряете ни одной опции оригинальной программы. Эта конфигурация так же описана в разделе 2.4. Стоит обратить внимание ещё на одну подробность. Дело в том, что ARJZ задумывался, не просто как "быстрый" ARJ, но и как "мощный" ARJ - в нём реализованы более мощные алгоритмы сжатия, чем в оригинальной программе. В связи с этим ARJ не будет распаковывать файлы, которые сжаты при помощи этих алгоритмов. ARJZ может работать в режиме совместимости с ARJ - в этом случае создаваемые им архивы могут обрабатываться последним, как свои родные. Потенциальных пользователей программы ARJZ можно разделить на три категории и для каждой из этих категорий потребуется свой вариант установки. К первой категории мы отнесём тех, кто будет использовать ARJZ как "быстрый" ARJ. Им необходимо прочитать раздел 1.0.2 и особенно внимательно замечание к этому разделу. Ко второй категории пользователей относятся те, кто собирается использовать ARJZ как "мощный" ARJ. Об этом написано опять-таки в разделе 1.0.2, но замечание вам читать уже не нужно. Последняя категория - это те, кому по роду занятий часто приходится выдавать свои архивы "человеку со стороны". Эти архивы должны быть совместимы с ARJ, иначе они не смогут распаковаться там, где ARJZ'а нет. Архивы же "для себя" пользователи третьей категории могут создавать, используя мощные методы сжатия. Если вы относитесь к ним, читайте раздел 1.0.1. 1.2. Версии ARJZ для DOS, защищённого режима DOS, OS/2 и NT Имеются некоторые отличия в программах для DOS, защищённого режима DOS, OS/2 и NT. Во-первых, в OS/2, как известно, имена файлов длиннее, чем в DOS, и ARJZ для OS/2 это учитывает. Однако, в UNARJZ для DOS не предусмотрено каких-либо опций для распаковки архивов, созданных под OS/2. При распаковке таких архивов имена файлов будут сокращаться самим DOS'ом - он автоматически обрезает имя файла до 8-ми символов, а его расширение - до 3-х. В ближайшем будущем планируется встроить решение этой проблемы в программу UNARJZ, но пока вам необходимо учитывать это отличие в работе версий. Те же самые замечания о длине имён файлов справедливы и для NT. Во-вторых, версия для реального режима DOS сжимает немного хуже и работает немного дольше, чем другие версии программы (это связано с небольшим различием в алгоритмах для реального и защищенного режима). Далее, ARJZ для защищённого режима DOS НЕ ВЫГРУЖАЕТ СЕБЯ ИЗ ПАМЯТИ при запуске ARJ'а и не может запускаться из UNARJZ. Из этого следует, что вы не можете организовать работу программ ARJ, ARJZ и UNARJZ в порядке UNARJZ/ARJZ/ARJ, если используете ARJZ для защищённого режима. Такие ограничения объясняются особенностями расширителя из пакета Symantec C++, который не обеспечивает некоторых недокументированных возможностей DOS. Он также не работает под NT, поэтому под этой операционной системой вы должны использовать версию для NT, реального режима DOS или ARJZ-4GW.EXE (см. ниже). Обратите внимание, что ARJZ работает в защищённом режиме процессоров 386, под 286 вы должны пользоваться версией для реального режима DOS. Версия для защищённого режима DOS занимает в нижней (conventional) памяти всего 50 Кбайт - всё остальное (700 Kбайт) располагается в расширенной (extended) памяти. Если расширенной памяти не хватает, то вместо неё начинает использоваться нижняя память. Есть также альтернативная версия для защищенного режима, в комплект поставки она входит под именем ARJZ-4GW.EXE. Она работает под NT и может вызываться из UNARJZ, однако не поддерживает "полуэкранный интерфейс", требует для запуска наличия DOS4GW.EXE и занимает в ОЗУ на 300 Кбайт больше, чем ARJZ386P.EXE. Наконец, есть программа под названием ARJZFAST.EXE, она аналогична версии для защищенного режима DOS, но работает быстрее. В частности, для текстовых файлов она комбинирует степень сжатия, характерную для RAR, и быстродействие, характерное для PKZIP/AIN. Поэтому ARJZFAST особо рекомендуется для использования при упаковке почты. Он также будет лучше стандартной версии при работе с любыми другими хорошо сжимающимися файлами, например с графическими или с базами данных. Недостатком этой программы является меньшая степень сжатия исполняемых и других не очень хорошо сжимающихся файлов. 2. Использование 2.0. Вызов из командной строки Синтаксис: │ │arjz команда [опции] архив [каталог\] [файлы...] [!списки...] │ Как видим, программа вызывается точно также, как и ARJ. Она поддерживает команды: │ │afmu │ и опции: │ │<->-+!$acdefgikmrstuwxyz, <-h>acx, <-j>fhklmrs │ Описание этих комманд и опций смотрите в файле ARJ.DOC (на англ. языке). 2.1. Различия в обработке опций ARJ и ARJZ Некоторые опции ARJ'а расширены или сокращены в ARJZ'е: -+ Обработать опции из переменной окружения или отменить обработку опций из ARJZ_SW В ARJ эта опция, заданная без параметров, указывает, что содержимое переменной окружения ARJ_SW должно игнорироваться. В ARJZ это означает, что вместо ARJZ_SW должна использоваться переменная ARJZ0_SW. Это позволяет всё-таки добавлять автоматически такие опции, как "-ti" и "-jl1", даже если ARJZ вызван с "-+" (ARCVIEW обычно вставляет эту опцию при вызове архиватора/деархиватора). -hx Указать расширение архивов по умолчанию При вызове ARJ можно задавать расширение архивов по умолчанию: │ │arj a -hx.foo.bar example │ Будет создан архив "example.foo". │ │arj x -hx.foo.bar example │ Будет распакован архив "example.foo", если его нет, то распакуется архив "example.bar". Из примеров видно, что при создании архива (команды "a", "m", "u" и "f") необходимости в более чем одном расширении по умолчанию не возникает. Поэтому ARJZ распознаёт только одно расширение, заданное после опции "-hx". -jh Указать размер буфера для алгоритма Хафмана Если при использовании этой опции значение параметра не указано, то оно принимается равным 65535. -jl1 Сокращённый формат вывода имён пакуемых файлов Если вы пакуете файлы из другого каталога, то ARJ в именах сжимаемых файлов выдаёт на экран путь до этого каталога: │ │arj a -r example LIBRY │ │ARJ 2.41 Copyright (c) 1990-93 Robert K Jung. Jun 03 1993 │ │Creating archive : EXAMPLE.ARJ │Adding LIBRY\H\GLOBAL.H 68.1% │Adding LIBRY\H\KERNEL.H 74.6% │Adding LIBRY\H\TYPEDEF.H 58.5% │Adding LIBRY\H\VIDEO.H 55.8% │Adding LIBRY\H\LIBRY.H 79.4% │Adding LIBRY\C\KERNEL.C 100.0% │Adding LIBRY\C\MAIN.C 64.9% │Adding LIBRY\C\KERNEL.OBJ 86.6% │Adding LIBRY\C\QC.INI 100.0% │Adding LIBRY\C\MS.LIB 26.3% │Adding LIBRY\HELP\SHARING.TXT 70.1% │ 11 file(s) │ Если вы зададите в командной строке опцию "-jl", то на экран будут выдаваться только имена файлов, без пути: │ │arj a -r -jl example LIBRY │ │ARJ 2.41 Copyright (c) 1990-93 Robert K Jung. Jun 03 1993 │ │Creating archive : EXAMPLE.ARJ │Adding GLOBAL.H 68.1% │Adding KERNEL.H 74.6% │Adding TYPEDEF.H 58.5% │Adding VIDEO.H 55.8% │Adding LIBRY.H 79.4% │Adding KERNEL.C 100.0% │Adding MAIN.C 64.9% │Adding KERNEL.OBJ 86.6% │Adding QC.INI 100.0% │Adding MS.LIB 26.3% │Adding SHARING.TXT 70.1% │ 11 file(s) │ Однако, вместе с опцией "-r", "-jl" не - самый удобный выход избавиться от лишней информации на экране. Опция "-jl1" (которой нет в оригинальной программе) не добавляет в имена файлов путь до рабочего каталога: │ │arj a -r -jl1 example LIBRY │ │ARJZ-086 0.14 pre-alpha, Jan 30 1995 │ │Pack level 7, huffman buffer 16000, distance 65276(too far 16000), │binary type │Creating archive : EXAMPLE.ARJ │Adding H\GLOBAL.H 68.3% │Adding H\KERNEL.H 74.6% │Adding H\TYPEDEF.H 58.5% │Adding H\VIDEO.H 55.8% │Adding H\LIBRY.H 79.4% │Adding C\KERNEL.C 100.0% │Adding C\MAIN.C 64.9% │Adding C\KERNEL.OBJ 86.6% │Adding C\QC.INI 100.0% │Adding C\MS.LIB 26.5% │Adding HELP\SHARING.TXT 70.1% │ 11 file(s) │ Эту опцию, как очень удобную, вы можете добавить в переменную окружения ARJZ_SW. -jm Максимальное сжатие В ARJ методы "-m1", "-m2" и "-m3" - на самом деле модификации одного и того же алгоритма сжатия. Опции "-jm" и "-jm1" влияют на каждый из этих методов, однако в последних версиях ARJ документируется их использование только с методом "-m1". "-m2 -jm" даёт практически сжатие "-m1", а "-m3 -jm" устанавливает режим медленного и некачественного сжатия и поэтому никогда не используется. В отличие от ARJ, ARJZ, если встречает какую-нибудь из этих опций, автомагически устанавливает метод сжатия "-m1". -js Список файлов, которые следует архивировать без сжатия В ARJZ эта опция гораздо гибче, чем в ARJ. Например, вы можете использовать маски: │ │arjz a archive -js.arj.a[0-9][0-9] │ задавать имена файлов: │ │arjz a archive -jsUNARJZ.EXE -js*.ARJ │ и т.д. В ARJZ опции -js и -x имеют одинаковый синтаксис, поэтому полное описание возможных вариантов использования опции -js вы найдете в описании опции -x. -x Исключить файлы из обработки В отличие от ARJ, вы можете задавать имена исключаемых файлов через точку с запятой: │ │arjz a example -xabc.foo;def.bar │ задавать расширения исключаемых файлов через точку: │arjz a example -x.foo.bar │ и даже задавать список расширений исключаемых файлов: │arjz a example -x.!extlist │ В последнем случае список исключений хранится в файле extlist в виде │ │ex1 │ex2 │... │exN │ В ARJ при использовании опции "-x" действуют до того запутанные правила, что даже сам Роберт Юнг в них вряд ли разбирается. В ARJZ они упрощены до предела: "-x" исключает те же самые файлы, которые добавлялись бы в архив при указании в командной строке. Как и в ARJ'е, можно задавать следующие параметры опции "-x": 1) Маски имён файлов, например, "-x*.arj" и даже "-xa*a.b*b"; 2) Имена файлов, содержащих список исключений: "-x!list.fil". В каждой строчке "list.fil" может стоять маска файла или имя директория. -z Комментарий к архиву Если параметр этой опции опущен, то ARJ предлагает ввести текст комментария с клавиатуры. ARJZ в этом случае считает опцию нераспознанной. Поэтому, если вы хотите воспользоваться упаковкой именно ARJZ, сначала создайте архив и затем используйте команду ARJ 'c' (comment); либо заранее поместите текст комментария в файл и используйте опцию -z с именем этого файла. 2.2. Собственные опции ARJZ В этом разделе перечислены дополнительные опции ARJZ'а, которых нет в оригинальной программе. Вы НЕ ДОЛЖНЫ использовать опции ARJ'а, которые ARJZ не поддерживает (см. выше) и опции ARJZ'а, которые не поддерживает ARJ, ВМЕСТЕ. Например, нельзя запускать ARJZ таким образом: │ │arjz a example -v1200 -t9 │ (ARJZ пока не поддерживает опции "-v", а ARJ'у не известна опция "-t9"). Если что-то подобное произошло, вы должны решить, какие именно опции для вас важнее и использовать их: │ │arjz a example -v1200 -jm │ (многотомный архив создаётся оригинальной программой, которую ARJZ вызывает автоматически, встретив незнакомую опцию). В приводимых примерах считается, что имя запускаемого файла ARJZ'а - arjz.exe. Опции: ─────────────────────────────────────────────────────────────────────────────── -t9 - Сжимать файлы, как звуковые При указании этой опции используется специальный метод предварительной обработки файлов, который позволяет улучшить сжатие файлов, содержащих звуковые образы (samples), т.е. файлов типа .WAV, .VOC, .MOD, .STM и др., примерно на 10%. На других типах файлов сжатие, как правило, ухудшается. В качестве эксперимента можете попробовать сжимить неупакованые графические файлы, т.е. .BMP, .PIC, несжатый .TIF и др. - на них такая обработка тоже может давать свои результаты. Пример: │ │arjz a -t9 example *.stm │ Сжимает все .STM файлы из текущего каталога, используя специальный метод обработки, и заносит их в архив EXAMPLE.ARJ ЗАМЕЧАНИЕ: Файлы, сжатые при включенной опции "-t9" могут распаковываться только программой UNARJZ. -ma... - Имя файла с оригинальным ARJ Если ARJZ не может распознать команду или опцию командной строки, то он пытается запустить оригинальную программу ARJ. По умолчанию предполагается, что она находится в файле arjj.exe, который ищется через переменную окружения PATH. Опция "-ma..." используется для того, чтобы изменить имя ARJ'а по-умолчанию, если вам по какой-то причине не подходит arjj.exe. В действительности, запускать таким образом можно не только ARJ, но и всё, что угодно. В частности, можно пользоваться тандемом ARJZ/UNARJZ, как одной программой с помощью командной строки вида: │ │arjz l -maunarjz.exe example │ Другое применение "-ma..." - получение диагностического сообщения о нераспознанных командах/опциях. В этом случае вы не должны указывать имя запускаемой программы: │ │arjz % -ma example │ ARJZ выдаст сообщение о том, что он не может распознать команду '%'. При запуске ARJ'а, ARJZ для реальнлгл режима DOS полностью выгружается из памяти. -mpN - Степень упаковки Несмотря на то, что ARJZ поддерживает опции ARJ'а, предназначенные для изменения метода упаковки, у него имеется альтернативная система их обозначения: ┌───────────┬────────┬───────────────────────────────────────────┐ │ ARJ │ ARJZ │ Комментарии │ ├───────────┼────────┼───────────────────────────────────────────┤ │ -m1 -jm │ -mp9 │ самый медленный из методов и самый мощный │ │ -m1 -jm1 │ -mp8 │ │ │ -m1 │ -mp7 │ метод по умолчанию │ │ -m2 │ -mp6 │ │ │ -m2 │ -mp5 │ │ │ -m3 │ -mp4 │ │ │ -m3 │ -mp3 │ │ │ -m4 │ -mp2 │ │ │ -m4 │ -mp1 │ самый быстрый сжимающий метод │ │ -m0 │ -mp0 │ сохранение (без сжатия) │ └───────────┴────────┴───────────────────────────────────────────┘ Задание опции "-mp" без параметров невозможно. -md[N] - Максимальная дистанция для слов Техническая опция. Если вы задаёте в командной строке "-md" или "-md26624", то создаётся архив, который может быть впоследствии распакован оригинальной программой. В других случаях рекомендуем не менять параметра этой опции. -mf[N] - Максимальная дистанция для 3-х байтных слов Физический, так сказать, смысл параметра этой опции настолько специфичен, что объяснить его человеку, мало знающему о сжатии, очень трудно, поэтому мы и не будем ничего объяснять. Упрощённо, если значение параметра небольшое, то ARJZ лучше сжимает текстовые файлы, если большое, то двоичные. Минимальное значение параметра - 0, максимальное - 65000. Если параметр не задан, то в качестве него по умолчанию принимается значение 4096. При загрузке программы значение этого параметра равно 16384. На самом деле, изменение этого параметра не играет существенной роли, но может быть использовано для достижения "пикового" сжатия. Для лучшего сжатия текстовых файлов применяйте опции "-jh -mf -t1". -ti - Эмулировать внешний вид упаковщика NC 4.0 При использовании этой опции, ARJZ во время сжатия файлов будет выдавать на экран окно примерно такого вида: ╔═══════════════════════════════════════════╗ ║ Adding ║ ║ ... ║ ║ to ║ ║ ... ║ ║ ║ ║ Size: 1,234,567 bytes ║ ║ ███████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 23% ║ ║ Total: 890,123 bytes ║ ║ █████████████████▒▒▒▒▒▒ 75% ║ ║ Estimated time: 00:00:00 ║ ║ Elapsed time: 00:00:00 ║ ╚═══════════════════════════════════════════╝ В связи с тем, что такое окно выглядит привлекательнее, чем стандартный вывод программы ARJ, рекомендуем всегда использовать эту опцию, т.е. включить её в переменную среды окружения ARJZ_SW. Если вывод на экран будет происходить некорректно, попробуйте использовать опцию "-tib". -tib - Выводить окна, используя Video BIOS То же самое, что и "-ti", но при выводе на экран используются функции BIOS. Вы можете использовать эту опцию в случае, если у вас нестандартная видеоаппаратура и программа "глючит" при выводе окошек на экран. -tiv - Выводить степень сжатия файлов на экран При использовании опции "-ti" на экран не выдаётся информация о степени сжатия файлов. Опция "-tiv" говорит ARJZ'у, что эти значения должны выводится во время архивирования. 2.3. Переменные окружения ARJZ_SW и ARJZ0_SW Переменныя ARJZ_SW имеет в ARJZ'е то же значение, что и ARJ_SW в ARJ'е. Обработка её происходит в следующем порядке: 1) проверяется наличие переменной ARJZ_SW; 2) если она отсутствует, то опции берутся из ARJ_SW; 3) если в ARJ_SW встретилась незнакомая команда или опция, то вызывается программа arjj.exe (предполагается, что это - оригинальный ARJ); Кроме того, если вы указали в командной строке опцию "-+" без параметров, то проверяется наличие переменной ARJZ0_SW. Она предназначена главным образом для установки "самых полезных опций", которые не нужно отключать ни в коем случае. К таким опциям могут относиться "-ti", "-jl1" и "-md". Вместо опций вы можете указать файл конфигурации (его формат описан в документации к оригинальному ARJ'у, ARJ.DOC): │ │set arjz_sw=c:\config\arj_cfg1.cfg │ Эта строчка означает, что опции будут браться из файла c:\config\arj_cfg1.cfg. Наиболее часто по умолчанию устанавливаются опции: -ti Всегда выводить информацию о процессе сжатия в окно. -md Совместимость с ARJ'ем. В том случае, если вы создаёте архивы, которыми пользуется ещё кто-нибудь, кроме вас, вставьте эту опцию, так как у ваших адресатов может не оказаться программы UNARJZ. -jm Максимальное сжатие. -jl1 Укороченные имена файлов при выводе на экран. 2.4. Совместное использование ARJZ и UNARJZ Как правило, ARJZ и UNARJZ всегда используются вместе, так как файлы, сжатые ARJZ'ом не всегда могут быть распакованы оригинальной программой. Исключение составляет случай, когда ARJZ используется только как "скоростной ARJ", но и здесь UNARJZ нелогично не использовать - он так же быстро работает. Здесь описано несколько вариантов совместного использования программ ARJ, ARJZ и UNARJZ. Вариант первый: расширение возможностей ARJ'а. Именно он описан в разделе 1.2. В этом случае вы пользуетесь программой ARJ как и раньше, но кроме того в вашем распоряжении оказываются дополнительные возможности. Осуществить этот вариант вы можете двумя способами, изменяя порядок взаимного вызова программ (в скобках указаны настоящие названия программ): способ первый arj.exe (UNARJZ) -> arjz.exe -> arjj.exe (ARJ) способ второй arj.exe (ARJZ) -> unarjz.exe -> arjj.exe (ARJ) Как видите, первый способ выгоднее в том случае, если вы чаще разархивируете, чем архивируете, а второй - наоборот. ЗАМЕЧАНИЕ: Если вы пользуетесь версией ARJZ для защищённого режима, то перый способ запуска для вас невозможен, так как ARJZ виснет, если запускается из UNARJZ (особенность расширителя). Этот вариант (например, первый способ) реализуется так: а) проследите, чтобы ARJ, ARJZ и UNARJZ находились в каталогах, доступных через переменную PATH и назывались arjj.exe, arjz.exe и arj.exe соответственно; б) добавьте в переменную окружения UNARJZ_SW опцию "-taarjz.exe". Она аналогична опции "-ma" (см. выше); Теперь при вызове ARJ.EXE на самом деле будет запускаться UNARJZ. Если он не сможет распознать команд или опций в командной строке, то запустит ARJZ, который при нераспознанных командах или опциях в свою очередь запустит ARJ. Вариант второй: использование ARJZ/UNARJZ как пары архиватор/деархиватор наподобие PKZIP/PKUNZIP. ARJZ/UNARJZ по своим возможностям не превосходят, конечно, ARJ, однако этих возможностей вполне хватает. В этом случае вы можете даже не иметь на диске программу ARJ. Для реализации второго варианта вам необходимо добавить в переменную окружения UNARJZ_SW опцию "-ta", а в переменную окружения ARJZ_SW - опцию "-ma". Вариант третий: вы так же можете эмулировать одной программой сразу и архиватор и деархиватор. Это можно сделать, напр., так: а) поместите arjz.exe и unarjz.exe в каталоги, доступные через PATH; б) добавьте в переменную окружения ARJZ_SW строчку "-maunarjz.exe", а в переменную окружения UNARJZ_SW - строчку "-ta". Теперь при вызове ARJZ вы сможете как архивировать, так и разархивировать файлы. Вы так же можете просто скопировать ARJZ поверх установленной пары ARJ/UNARJZ (см. UNARJZ.DOC). В этом случае, вызывая "arjz.exe", вы архивируете файлы ARJZ'ом, вызывая "arj.exe" - архивируете ARJ'ем, и первые и вторые архивы распаковываются командой "arj.exe" (так как на самом деле это UNARJZ :-). Это может быть удобно, если вы используете возможности дополнительного сжатия программы ARJZ, но вашими архивами пользуются другие люди, у которых может не быть программы UANRJZ. В этом случае вам необходимо твёрдо знать, чем именно вы архивируете файлы - ARJ'ем или ARJZ'ом. 3. Техническая информация Как переделать UNARJ (by Robert Jung), чтобы он мог извлекать файлы из архивов, созданных ARJZ (при этом он сохранит возможность обрабатывать архивы, созданные ARJ'ем). С чисто технической точки зрения, архивы, создаваемые ARJZ, отличаются от архивов ARJ'а только двумя особенностями: 1) ARJZ использует при сжатии окно поиска в 64K вместо окна в 26K, используемого ARJ'ем. 2) Чтобы ARJ не пытался распаковывать файлы, сжатые с использованием окна больше 26K, в архивных заголовках для этих файлов проставляется требование к версии деархиватора, которому заведомо не удовлетворяет ни одна версия ARJ. (Существующие версии ARJ'а используют номера от 0 до 7. ARJZ проставляет в это поле (arj_x_nbr) значение 50, если достаточно буфера в 32K; значение 51, если достаточно буфера в 64K. Если файл достаточно мал или используется опция -md, то в это поле проставляется значение 1, что позволяет производить распаковку ARJ'ем.) Таким образом, для распаковки UNARJ'ем архивов, созданных ARJZ, необходимо внести в текст программы следующие изменения (номера строк по UNARJ'у 2.30): 1) Если вы создаете программу для реального режима или защищенного режима 286-го процессора, нужно компилировать её в large или compact модели памяти 2) Поменять определение DDICSIZ c 26624 на 65520, т.е. строку 36 в файле DECODE.C #define DDICSIZ 26624 заменить на #define DDICSIZ 65520 3) Поменять тип переменных, которые используются в качестве индексов, с short на uint, т.е. строки 340-343 и 466-469 в файле DECODE.C short i; short j; short c; short r; заменить на uint i; short j; uint c; uint r; (j как индекс не используется) 4) Изменить проверки в соответствии с изменившимся типом переменных, т.е. строки 376 и 506 в файле DECODE.C if ((i = r - i - 1) < 0) заменить на if ((i = r - i - 1) > r) 5) Разрешить деархивацию в случаях, когда поле arj_x_nbr содержит значение 50 или 51, т.е. строку 679 в файле UNARJ.C if (arj_x_nbr > ARJ_X_VERSION) заменить на if (arj_x_nbr > ARJ_X_VERSION && arj_x_nbr!=50 && arj_x_nbr!=51) 6) Хотя это не имеет отношения к ARJZ, я все же скажу, что иногда очень полезно бывает добавить в командную строку компилятора опцию -D_QC или в начало UNARJ.H строку "#define _QC" ;-) 4. Распространение !! Это важно !! На данном этапе программа проходит бета-тестирование и доводку, поэтому она может не работать так, как описано в этой документации. С другой стороны, документация не всегда может отражать существующее положение вещей с программой. Просьба, при обнаружении каких-либо ошибок или несоответствий, сообщать об этом автору программы (см. ниже). ARJZ относится к классу свободнораспространяемого программного обеспечения (freeware). Это означает, что вы можете: 1) Пользоваться программой абсолютно бесплатно. 2) Копировать программу кому бы то ни было, не спрашивая чьего-либо разрешения. 3) Высказать автору свою признательность за написание ARJZ'а, передав ему любым, доступным для вас, способом, любую, доступную для вас сумму, которая будет принята с благодарностью. Должны предупредить, что подобный шаг с вашей стороны не обязывает автора к чему бы то ни было и расценивается только как благотворительность. В то же время вы не должны: 1) Менять что-либо в сообщениях программы или в этом файле. 2) Использовать программу с целью наживы без дележа с её создателем. 3) Предъявлять автору какие-либо претензии. Вы вольны пользоваться или не пользоваться этой программой. Её создатель не несёт никакой ответственности за последствия её работы. Булат Зиганшин (версия для DOS, защищённого режима DOS, OS/2, NT, документация): д.т. 8-(8439)-58-23-84, FIDO 2:5049/10 Игорь Житко (версия для OS/2): FIDO 2:5049/10 Марк Шевченко (документация) FIDO 2:5049/10.77