Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.21;
Скачать: CL | DM;

Вниз

Как прикрутить к своему приложению "7z.dll"?   Найти похожие ветки 

 
Валигози ©   (2009-06-09 15:55) [0]

7z.dll - это dll-ка выполняющая основную работу в известном архиваторе "7zip": http://www.7-zip.org/
Вот какие функции она экспортирует:
SetLargePageMode
GetNumberOfMethods
GetNumberOfFormats
GetMethodProperty
GetHandlerProperty
GetHandlerProperty2
CreateObject

Собственно 7z.dll меня интересует вовсе не для работы с архивами *.7z, хочу воспользоваться возможностью архиватора 7zip "влезать" внутрь инсталляшки созданной с помощью Nullsoft-овского NSIS: http://nsis.sourceforge.net/Main_Page


 
Sapersky   (2009-06-09 17:09) [1]

На оф. сайте в разделе Links есть ссылки на Delphi-интерфейсы.


 
Валигози ©   (2009-06-09 18:23) [2]


> Sapersky   (09.06.09 17:09) [1]
> На оф. сайте в разделе Links есть ссылки на Delphi-интерфейсы.


Эти ссылки я естественно в первую очередь просмотрел:
1) Delphi interface to 7-zip dll
Эта ссылка нерабочая

2) TSevenZipVCL - Delphi VCL for 7zip format
Эта компонента умеет работать только с архивами 7zip. А если подсунуть ей инсталляшку cозданную с помощью NSIS - матерится, что это не архив.

3) Delphi API for 7-Zip plugins (7z, ZIP, RAR ...)
Вот это я вообще не понял при чём тут Delphi. Если скачать этот архив - внутри никаких исходников нет... :(


 
Sapersky   (2009-06-09 19:25) [3]

А если подсунуть ей инсталляшку cозданную с помощью NSIS - матерится, что это не архив.

Ну посмотрите TSevenZip.SFXCheck, он там ищет сигнатуру 7z по смещению 65536. Может, у NSIS она ближе к началу файла (написано что размер инсталлятора 34 кб), попробуйте поискать вообще по всему файлу.


 
Валико   (2009-06-09 20:42) [4]

А вы точно уверены что 7z.dll может это делать ?

Мне почему-то казалось, что влезать в инсталяшки это фича сугубо файл-менеджера, о чём довольно однозначно написано на сорсфорже...


 
Валигози ©   (2009-06-10 09:38) [5]


> Валико   (09.06.09 20:42) [4]
>
> А вы точно уверены что 7z.dll может это делать ?
>
> Мне почему-то казалось, что влезать в инсталяшки это фича
> сугубо файл-менеджера, о чём довольно однозначно написано
> на сорсфорже...

Уверен, что может. Я с помощью архиватора 7zip вхожу в NSIS-инсталляторы как в папки (точнее как в архивы), а файл "7z.dll" это ядро архиватора 7zip. Кроме того, в папке с архиватором есть ещё файл "7z.exe", который позволяет с командной строки выполнять все операции с архивами (используя в свою очередь "7z.dll"). Например если натравить на него NSIS-файл такой командой 7z.exe L nsisfile.exe - он выдаст список файлов внутри NSIS-инсталляшки. Вообще-то именно через "7z.exe", у меня сейчас всё и работает, просто захотелось отказаться от посредника "7z.exe" и использовать "7z.dll" напрямую...


 
sniknik ©   (2009-06-10 11:17) [6]

> просто захотелось отказаться от посредника "7z.exe" и использовать "7z.dll" напрямую...
а с чего решил что это просто посредник? в документации так написано?

по логике 7z.exe это программа архиватор, как и rar например, и может поддерживать множество алгоритмов архивирования (на усмотрение автора ее писавшего).
а 7z.dll это длл по реализации (и для распространения) родного алгоритма.

т.е. грубо говоря одно часть, другое целое.


 
Валигози ©   (2009-06-10 11:33) [7]


> sniknik ©   (10.06.09 11:17) [6]
>
> > просто захотелось отказаться от посредника "7z.exe" и
> использовать "7z.dll" напрямую...
> а с чего решил что это просто посредник? в документации
> так написано?

Это элементарно: 7z.exe это консольное приложение, 7zFM.exe это GUI-шное приложение, оба они подгружают 7-zip.dll и оба умеют работать с NSIS-архивами. Кроме того размер 7-zip.dll 726016, а  388096 и тем более 7z.exe всего 150016 байт. Логично, что бы всю "архивную" работу вложить в 7-zip.dll.


 
Валигози ©   (2009-06-10 11:37) [8]

Скажите, пожалуйста, кто знает, что означают в новых Дэлфях конструкции в угловых скобочках, например:?
var
 GArchiveMagics: TDictionary<AnsiString,TGUID>;


type
 TGUIDList = TList<TGUID>;

 TArchiveReader = class
 private class var
   FFormats: TObjectDictionary<string,TGUIDList>;


 
sniknik ©   (2009-06-10 12:37) [9]

> Кроме того размер 7-zip.dll 726016, а  388096 и тем более 7z.exe всего 150016 байт.
а "консольное" для dos-а 7za.exe где никаких dll 536064 байт. ну и что?

> Логично, что бы всю "архивную" работу вложить в 7-zip.dll.
с точки зрения распространения и поддержки своего формата, совершенно нелогично. это проблема программиста в конечный продукт поддержку разного вставлять.


 
Ega23 ©   (2009-06-10 12:51) [10]


> Логично, что бы всю "архивную" работу вложить в 7-zip.dll.


Совершенно не обязательно


 
Валигози ©   (2009-06-10 13:09) [11]


> Ega23 ©   (10.06.09 12:51) [10]
> > Логично, что бы всю "архивную" работу вложить в 7-zip.dll.
> Совершенно не обязательно

Я и не говорил, что обязательно - я сказал логично. Но это не важно. Всё же хочу вернуться к вопросу о угловых скобочках. Дело в том, что я нашёл исходник для подключения к 7z.dll (думаю это то что мне и нужно), но он написан на Delphi2009, а там используются какие-то неизвестные мне конструкции вида:
var
GArchiveMagics: TDictionary<AnsiString,TGUID>;

Возможно ли этот исходник переделать для Delphi6?
Вот ссылки на этот исходник:
1) http://google.com/codesearch/p?hl=ru#-qT0MeWnuto/trunk/src/uSevenZip.pas&q=lang:pascal
2) http://google.com/codesearch/p?hl=ru#-qT0MeWnuto/trunk/src/uStreamWrapper.pas&q=lang:pascal
3) http://google.com/codesearch/p?hl=ru#-qT0MeWnuto/trunk/src/uArchiveReader.pas&q=lang:pascal
...


 
sniknik ©   (2009-06-10 13:31) [12]

> Возможно ли этот исходник переделать для Delphi6?
а зачем?
дисклаймер первой же ссылки
@author  original from JEDI Code Library by Uwe Schuster AND Jan Goyvaerts
          modified by iLuE
@version 2009/02/15 1.0 Initial revision.

т.е. у него есть автор, а эта уже "переделка". вопрос - с чего? какая версия послужила исходником?

задавай сам себе правильные вопросы, в них решение. © я.


 
Валигози ©   (2009-06-10 14:06) [13]


> sniknik ©   (10.06.09 13:31) [12]
>
> > Возможно ли этот исходник переделать для Delphi6?
> а зачем?
> дисклаймер первой же ссылки
> @author  original from JEDI Code Library by Uwe Schuster
> AND Jan Goyvaerts
>           modified by iLuE
> @version 2009/02/15 1.0 Initial revision.
> т.е. у него есть автор, а эта уже "переделка". вопрос -
> с чего? какая версия послужила исходником?
>
> задавай сам себе правильные вопросы, в них решение. © я.
>

Действительно! Вот это я туплю! И что интересно, что я видел этот комментарий и даже искал эти исходники на sourceforge.net, а сейчас внимательно перечитал этот комментарий, опять зашёл на sourceforge.net, скачал библиотеку JCL и действительно в ней есть модуль sevenzip.pas. Спасибо! Буду разбираться...



Страницы: 1 вся ветка

Текущий архив: 2010.03.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
2-1263993297
Чайник
2010-01-20 16:14
2010.03.21
Кириллица в OpenGL


2-1263994251
webpauk
2010-01-20 16:30
2010.03.21
Обращение к свойствам TForm по его Handle


2-1263488516
HRustBB
2010-01-14 20:01
2010.03.21
как вызвать процедуру по ссылке?


2-1263562192
fford
2010-01-15 16:29
2010.03.21
вызов функции из потока


3-1236243330
ford
2009-03-05 11:55
2010.03.21
проблемма с вычиткой BLOB полей из базы данных