Что нового

Способы архивирования

winkot

Новичок
Сообщения
169
Репутация
0
Необходимо, что бы программа могла создавать архивы без применения установленных или нет дополнительных программ-архиваторов. Попробовал разные варианты и у всех их есть недостатки. 7Zip UDF не может по нормальному работать с русскими буквами, для _ZIP UDF нужна доработка (спасибо Joiner). К тому же функционал у них заметно меньше, чем у самих архиваторов. Но есть же другой способ. Можно просто включить в исполняемый файл 7za.exe и может быть 7za.dll и все! Ими легко управлять, обеспечивается полный функционал. и все это легко сделать.
Что вы думаете по этому поводу? Есть ли недостатки у этого способа по сравнению с UDF?

 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Есть библиотека и dll по работе с 7Z.
Я использовал 7za. Проект Jmpack
JMPack
 
Последнее редактирование:
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0
Есть библиотека и dll по работе с 7Z.
Ну да, есть. Но она не работает с русскими буквами. В этом и проблема.

Я использовал 7za.
Каким образом? Вместе с библиотекой?
Я как раз и предлагаю включить в состав исполняемого файла 7za.exe
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Сначала я использовал 7-zip32.dll. Тема на официальном форуме.
Да, там нужно использовать перевод кириллицы в OEM
но тут никакой сложности
в последней версии проекта я использовал 7za.exe без dll
7za.exe это консольная версия - 7-Zip Extra: standalone console version
проблем с кириллицей не наблюдал
Пример
Код:
Local $wkdir = @ScriptDir
 Local $arc = 'Far.7z';имя создаваемого архива
 Local $folder = 'Far';папка, которую упаковываем
 Run(@ScriptDir & '\7za.exe a -ssw -mx9 -bsp2 -r0 -aoa -y -pPASSWORD "' & $wkdir & '\' & $arc & '" ' & '"' & $folder & '\*"', '', @SW_HIDE, 0x8)

что значат флаги запуска приложения - смотри справку к 7z
 
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0
Понял. т.е вы как раз и использовали тот вариант о котором я и говорил.
Не подскажете, где можно посмотреть какие функции есть у самого 7za.exe и что добавляет 7za.dll? В каких случаях следует добавлять 7za.dll?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Не подскажете, где можно посмотреть какие функции есть у самого 7za.exe
стандартная справка к 7z, которая идет с установкой. Раздел справки Command Line Version User's Guide
что добавляет 7za.dll? В каких случаях следует добавлять 7za.dll?
тут я не могу подсказать. в библиотеке находятся дополнительные функции. мне нужна была лишь упаковка-распаковка. для этого достаточно 7za.exe
 
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0
стандартная справка к 7z
К сожалению про 7za.exe там только:
7za.exe - standalone console version of 7-Zip with reduced formats support.
7za.exe : support for only some formats of 7-Zip.
Сообщение автоматически объединено:

мне нужна была лишь упаковка-распаковка. для этого достаточно 7za.exe
Я попробовал, для этого достаточно даже 7zr.exe Она весит еще меньше. Но вот полный перечень ее функций не известен.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
К сожалению про 7za.exe там только:
там все, что нужно. а нужно только 7za.exe
Но вот полный перечень ее функций не известен.
все есть в справке
Сообщение автоматически объединено:

7za.exe работает с кириллицей.
Пример на удаление файла
Код:
Run(@ScriptDir & '\7za.exe d  Архив.7z  документ.txt -r')

если есть пробелы, то берем в кавычки
Код:
Run(@ScriptDir & '\7za.exe d "Мой Архив.7z" "тестовый документ.txt" -r')

в данном примере происходит рекурсивное удаление файла "тестовый документ" из все подпапок архива
Если нужно удалить только один файл
Код:
Run(@ScriptDir & '\7za.exe d "Мой Архив.7z" "Папка\тестовый документ.txt"')
 
Последнее редактирование:
Автор
W

winkot

Новичок
Сообщения
169
Репутация
0
Да, 7za.exe без проблем работает. Вопрос чисто философский - использовать 7Zip UDF или инсталлировать в исполняемый файл сам 7za.exe.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Если для удаления файла можно обращаться непосредственно к программе-архиватору, то получение, например, списка файлов в архиве в массив намного муторнее таким способом. В конце концов даже для удаления сначала нужно заполучить этот самый список, если речь идёт о реальной автоматизации, а не о полуавтоматизации с помощью пользователя. Именно в этом подлинная цель использования подобных UDF.
 
Верх