Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2010.03.21;
Скачать: [xml.tar.bz2];

Вниз

Как прикрутить к своему приложению "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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
1-1243237795
_REA
2009-05-25 11:49
2010.03.21
Китайский язык


15-1262449871
NailMan
2010-01-02 19:31
2010.03.21
Как сделать залипающий курсор мышки у края десктопа


2-1263609315
Делфиец
2010-01-16 05:35
2010.03.21
Есть ли метод оперделения какой контрол в фокусе


3-1236865701
Zalum
2009-03-12 16:48
2010.03.21
изображение из поля blob


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский