https://github.com/tereshenkovav/smartzipbuilder
Script-based utility for building zip-archives
https://github.com/tereshenkovav/smartzipbuilder
7zip delphi dev-tool freepascal scripting-engine
Last synced: 20 days ago
JSON representation
Script-based utility for building zip-archives
- Host: GitHub
- URL: https://github.com/tereshenkovav/smartzipbuilder
- Owner: tereshenkovav
- License: other
- Created: 2024-04-18T11:14:18.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-03T10:35:06.000Z (over 1 year ago)
- Last Synced: 2025-01-28T16:15:44.970Z (12 months ago)
- Topics: 7zip, delphi, dev-tool, freepascal, scripting-engine
- Language: Pascal
- Homepage:
- Size: 376 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SmartZipBuilder - умный скриптовый архиватор
Проект утилиты, которая позволяет на основе скрипта построить zip-архив сложной структуры.
Разработан на Delphi, поддерживается сборка компилятором FreePascalCompiler.
Использует код репозитория [d7zip](https://github.com/zedalaye/d7zip) и файл 7z.dll из архиватора
[7-Zip](https://www.7-zip.org) версии 4.65
## Возможности
* Автоматическое удаление целевого файла при запуске построения архива
* Установка имени целевого файла
* Установка степени сжатия и алгоритма сжатия
* Установка рабочего каталога в архиве (по умолчанию, используется корень архива)
* Добавление конкретного файла в архив с возможным изменением имени
* Добавление файлов по маске в архив
* Добавление каталога в архив и всех вложенных подкаталогов
* Добавление строки в указанный файл в архиве
* Поддержка переменных среды как строк в скрипте
* Поддержка аргументов архиватора как строк в скрипте
* Поддержка имен файлов и каталогов с пробелами, при использовании двойных кавычек
* Поддержка русских имен файлов и каталогов при кодировании файла скрипта в UTF-8
## Команды
`SetCompressor [имя алгоритма]`
Устанавливает алгоритм сжатия (Deflate, Deflate64, BZip2, LZMA, PPMD). По умолчанию используется Deflate.
`SetCompressionLevel [уровень сжатия]`
Задает уровень сжатия, от 0 до 9, где 9 - максимальное сжатие, а 0 - отсутствие сжатия.
По умолчанию уровень сжатия 5.
`ZipFile [имя файла]`
Задает имя выходного файла относительно текущего каталога.
`SetOutPath [каталог]`
Задает каталог в архиве, куда будут записываться данные, выводимые командами File, Files, Dir и Text.
По умолчанию, равно значению `.`. Это же значение можно указать, чтобы файлы и строки записывались в корневой каталог архива.
`File [имя файла] [имя файла в архиве]`
Записывает файл в архив. Имя файла указывается относительно текущего каталога локальной файловой системы. Имя файла в архиве может быть пропущено, тогда используется исходное имя файла.
`Files [маска файлов]`
Записывает все файлы, соответствующие маске, в архив. Маска файла указывается относительно текущего каталога локальной файловой системы.
`Dir [имя каталога] [имя каталога в архиве]`
Записывает каталог в архив со всеми вложенными подкаталогами. Имя каталога указывается относительно текущего каталога локальной файловой системы. Имя каталога в архиве может быть пропущено, тогда используется исходное имя каталога.
`Text [строка] [имя файла в архиве]`
Записывает в архив строку в файл с заданным именем. Если файл существует, то строка к нему добавляется. Строка может содержать символы переноса строки /r и /n
## Запуск построения, использование переменных среды и аргументов программы
В коде скрипта можно использовать переменные среды через знак %
`%VARNAME%`
и аргументы программы через знак $
`$ARGNAME$`
которые передаются при запуске по формату
`/ARGNAME=ARGVALUE`
Запуск построения выполняется через указание имени файла скрипта как первого аргумента исполнимого файла
`SmartZipBuilder.exe [имя файла скрипта] [дополнительные необязательные аргументы]`
## Пример скрипта
Текст файла скрипта
```
# Это комментарий
SetCompressor Deflate
SetCompressionLevel 9
ZipFile %TEMP%\myarc.zip
SetOutPath bin
File "builds\my best prog.exe" prog1.exe
Files builds\*.dll
SetOutPath data
Dir data\images
Text Language:\r\n$LANG$ defautlang
```
и его выполнение
`SmartZipBuilder.exe script.zsb /LANG=ru`
## Сборка из исходных текстов
Для сборки проекта нужен либо установленный
[Delphi](https://delphi.embarcadero.com/)
(проверено с версиями 10 и 11),
либо [FreePascalCompiler](https://www.freepascal.org)
(проверено с версией 3.2.2)
При использовании Delphi нужно открыть проект
`src\SmartZipBuilder.dproj` и выполнить его сборку в конфигурации Release.
В каталоге bin появится исполняемый файл `SmartZipBuilder.exe`
При использовании FreePascal нужно открыть каталог
`build` и запустить файл `make_win32.bat`
В каталоге bin появится исполняемый файл `SmartZipBuilder.exe`
В обоих случаях необходимо использовать 32-битную сборку, потому что
файл 7z-4-65.dll, необходимый для работы исполняемого файла, имеет такую разрядность.
Файл переименован с целью избежать конфликта с установленным архиватором 7-Zip.