Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Кто пользуется ZipForge


Автор: Teran 12.8.2006, 16:50
У меня такая проблема:
это код который позволяет делать из zip - exe
Код

 Archiver.FileName := ArcName.Text;   //Имя архива (.zip)
 Archiver.SFXStub := StubName.Text;  //Имя исполняемого файла, кот будет встраиваться в .zip
 if (SaveDialog1.Execute) then
   begin
    Archiver.MakeSFX(SaveDialog1.FileName);  //исходный SFX архив
   end;
 
вот код исполняемого файла, кот будет встраиваться в .zip:
Код

procedure TForm1.bnExtractClick(Sender: TObject);
begin
 Archiver.Options.OverwriteMode := omAlways;
 Archiver.FileName := Application.ExeName;
 Archiver.BaseDir := edPath.Text;
 Archiver.OpenArchive(fmOpenRead + fmShareDenyNone);
 Archiver.ExtractFiles('*.*');
 Archiver.CloseArchive;
 Close;
 Application.Terminate;
end;

все вроди бы все просто Но есть болшая проблема с вот этим самым файлом  кот. будет встраиваться в .zip -  его размер у меня свыше 300кб т.е. если сам яип весит 20кб и из него сделать SFX то к нему еще доваятся те 300
как можно сделать так чтоб при создании SFX архив выростал ну в пределах 50кб
 smile  smile  smile 

Автор: Alexeis 12.8.2006, 16:58
Так он что позволяет писать свои SFX модули? Если так то пишите код SFX на KOL или на чистом API + чистка отладочной информации. Тогда размер экзешника будет от 8,5 кб

Автор: Teran 12.8.2006, 17:23
Цитата(alexeis1 @  12.8.2006,  16:58 Найти цитируемый пост)
пишите код SFX на KOL

можно подробней а то я никогда об этом не слышал

Цитата(alexeis1 @  12.8.2006,  16:58 Найти цитируемый пост)
чистом API 

впринципе хотел но когда делаеш
Код

uses
  Windows, Messages, ZipForge;

программа сразу же стаёт = 360кб

Цитата(alexeis1 @  12.8.2006,  16:58 Найти цитируемый пост)
чистка отладочной информации

а каким образом её можно чистить?

Автор: Alexeis 12.8.2006, 17:44
Цитата(Teran @  12.8.2006,  17:23 Найти цитируемый пост)
программа сразу же стаёт = 360кб

Да это печально, вероянто  ZipForge имеет внутри ссылку на модуль Forms, который и довешивает 360кб
В этом случае работа с KOL&MCK невозможна. Чистка много не дает, можно удалить почти все ресурсы +
програмкой StripReloc, вычистить все остальное (ее исходники можно найти на этом форуме).

Автор: Teran 12.8.2006, 17:56
Цитата(alexeis1 @  12.8.2006,  17:44 Найти цитируемый пост)
вероянто  ZipForge имеет внутри ссылку на модуль Forms

а может есть какаято другая функция которая позволит разархивировать zip (там нужна только раархивация)?

Автор: Teran 12.8.2006, 19:28
Моежет ктото знает какойто другой "примитивный" компонент который бы позволял только разархивировать .zip архив?

Автор: Alexeis 12.8.2006, 20:48
Для KOL имеется альтернативная библиотека для работы с архивами ее можно скачать отсюда
http://bonanzas.rinet.ru/e_downloads.htm
Раздел Compression & Decompression здесь же можно найти и последнюю версию библиотеки KOL, а так же документацию по ней.

Автор: Teran 14.8.2006, 08:54
Интересное явление произошло: после установки KOL 
Delphi перестал компилировать любой проект (даже только созданный) пишет:
Код

[Fatal Error] MZW.dpr(36): Unit Classes was compiled with a different version of Variants.@VarClr

Автор: Teran 14.8.2006, 09:12
ПОдскажите пожалуйста как пользоваться вот этой самой KOL 
не разберусь на сайте целая куча компонент -  что нужно устанавливать?

Автор: Alexeis 14.8.2006, 09:23
Ой забыл сказать KOL and MSK работают с делфи 7 и меньше.

Добавлено @ 09:29 
Цитата(Teran @  14.8.2006,  09:12 Найти цитируемый пост)
ПОдскажите пожалуйста как пользоваться вот этой самой KOL 

Тут в двух словах не раскажишь есть свои тонкости, советую почитать 
http://bonanzas.rinet.ru/KOLBook.rar - тут все очень доступно оприсано

Автор: Snowy 14.8.2006, 09:35
Цитата(Teran @  14.8.2006,  08:54 Найти цитируемый пост)
Интересное явление произошло: после установки KOL 
Удали Variants.pas из папки с KOL.

Автор: Alexeis 14.8.2006, 09:38
Если в двух словах на форму нужно бросить KOLProject, назвать его, затем KOLForm, сохранить все это и закрыть, затем удалить файлы исходного проекта (project1.*) и открыть новый сгенерированый кол, затем уж на ненго все бросать.(только из палитры кол)

Автор: Teran 14.8.2006, 10:15
Цитата(alexeis1 @  14.8.2006,  09:38 Найти цитируемый пост)
нужно бросить KOLProject, назвать его, затем KOLForm

делаю так: 
создаю новый проект
кидаю на форму TKOLProject -> Называю KOL в поле projectDest заношу KOLDest
далее кидаю TKOLForm

откомпелировать не удаётся требует "Proxies" :
      [Fatal Error] DesignEditors.pas(530): File not found: 'Proxies.dcu'

затем все закрываю, удаляю project1.*(остается только Unit1.pas и Unit1.dfm)
открываю Unit1.pas  Но кнопка запуска "Run" ->Enabled=false 
???

Автор: Alexeis 14.8.2006, 10:25
А что нового проекта с ииенем указаным в projectdest не появилось?

Автор: Teran 14.8.2006, 10:43
теперь понял: он создает свой проект автоматом но нужно было еще прописать пути
а он может работать с zip архивами?

Автор: Alexeis 14.8.2006, 10:55
Цитата(Teran @  14.8.2006,  10:43 Найти цитируемый пост)
а он может работать с zip архивами?


Цитата(alexeis1 @  12.8.2006,  20:48 Найти цитируемый пост)
Для KOL имеется альтернативная библиотека для работы с архивами ее можно скачать отсюдаhttp://bonanzas.rinet.ru/e_downloads.htmРаздел Compression & Decompression


Автор: Teran 14.8.2006, 12:14
Эх не подходит их библиотека она не поддерживает архивы с паролем

Автор: Snowy 14.8.2006, 12:29
Библиотеки, поддерживающие пароль можно пересчитать по пальцам.
И те, что поддерживают далеко не компактные.
Но, т.к. у тебя SFX, то можешь сам пожать во что хошь и зашифровать как хошь - распаковывать всё равно тебе smile

Автор: Teran 14.8.2006, 12:50
Цитата(Snowy @  14.8.2006,  12:29 Найти цитируемый пост)
Но, т.к. у тебя SFX, то можешь сам пожать во что хошь и зашифровать как хошь - распаковывать всё равно тебе

Чуть чуть не так там происходят действия 
SFX архив строится не по "нормальным файлам", а уже по созданному архиву ".Zip"
чтоб так получилось это необходимо сперва разархивировать .zip затем заново запковать какимто упаковщиком (при больших файлах это - время)
Кроме этого при открытии его в WinZip-е я думаю что он открываться не захочет

Автор: Snowy 14.8.2006, 13:00
Цитата(Teran @  14.8.2006,  12:50 Найти цитируемый пост)
чтоб так получилось это необходимо сперва разархивировать .zip затем заново запковать какимто упаковщиком (при больших файлах это - время)
зачем? можно прям ZIP и шифровать.

Цитата(Teran @  14.8.2006,  12:50 Найти цитируемый пост)
Кроме этого при открытии его в WinZip-е я думаю что он открываться не захочет
Эт точно.

Автор: Alexeis 14.8.2006, 13:06
Цитата(Snowy @  14.8.2006,  13:00 Найти цитируемый пост)
Эт точно.

Это не всегда так, например Winrar Вдит SFX-ы сделпные SevenZIP...

Автор: dumb 14.8.2006, 13:11
что-то я не уловил проблемы.
сожми первым попавшимся архиватором, поддерживающим zip-sfx, какой нибудь маленький текстовичок. потом возьми hex-редактор и "выкуси" из файла распаковщик - от начала до (практически в конце) сигнатуры "PK\x3\x4" (кусок, начинающийся с этого места и есть zip-архив). сохраненный распаковщик просто приклеиваешь в начало любого обычного zip-архива.
например распаковщик (w31/9x), который приклеивает Total Commander весит 30к.

Автор: Teran 14.8.2006, 13:19
Цитата(dumb @  14.8.2006,  13:11 Найти цитируемый пост)
сохраненный распаковщик просто приклеиваешь в начало любого обычного zip-архива.

тоже не пойдет:при откусывании названия и виды у разпаковщиков то останутся, а мне нужно чтоб у меня разпаковщик назывался (например Test) и расположение кнопочек.... и caption....

Автор: Alexeis 14.8.2006, 13:25
Чет я сомневаюсь что "выкусывание" разрешено производителем архиватора. Если разрешено, мож у него и исходничек попросить smile 

Цитата

Запрещается размещать материал, который является ложным, дискредитирующим, оскорбительным, вульгарным, ненавистным, непристойным, угрожающим или нарушающем какой-либо закон. Также запрещается размещение любой рекламной информации, не согласованной с администрацией форума.


Добавлено @ 13:30 
Есть исходники для SFX, от Seven Zip, не знаю можно ли их комерчески использовать
http://unattended.solta.ru/7z424mod.7z

Добавлено @ 13:33 
Кто в курсе, что значит?
Цитата

7-Zip is free software distributed under the GNU LGPL.

Автор: dumb 14.8.2006, 13:35
[off]даже правила процитировал... ты, если сомневаешься, приведи пункт соглашения, который нарушается этим выкусыванием. действие это ничем не отличается от обычного преобразования в sfx. у рара, например, эти модули даже отдельно лежат. код распаковщика я патчить не советовал.[/off]

Teran, тогда гугл по "unzip source" и затачивание под свои цели. smile

Автор: Alexeis 14.8.2006, 13:37
Ага вот что говорит ФАК
Цитата

Can I use the source code of 7-Zip in a commercial application?

Since 7-Zip is licensed under the GNU LGPL you must follow the rules of that license. In brief, it means that any LGPL'ed code must remain licensed under the LGPL. For instance, you can change the code from 7-Zip or write a wrapper for some code from 7-Zip and compile it into a DLL but the source code of that DLL (including your modifications / additions / wrapper) must be licensed under the LGPL or GPL. Other code of your application can be licensed as you wish. This scheme allows users and developers to change LGPL'ed code and recompile that DLL. That is idea of free software. Read more here: http://www.gnu.org/. You can also read about the LZMA SDK, which is available under a more liberal license.


Добавлено @ 13:43 
Цитата(dumb @  14.8.2006,  13:35 Найти цитируемый пост)
у рара, например, эти модули даже отдельно лежат. код распаковщика я патчить не советовал

Даже бесплатный 7z требует лицензии, на измененый код своих частей.
А WinRar и подавно! UnRar.exe - пожалуйста используйте бесплатно, а патчить и проводить любой реверсинг строго запрещено

Автор: Teran 14.8.2006, 13:49
Цитата(dumb @  14.8.2006,  13:35 Найти цитируемый пост)
"unzip source" и затачивание под свои цели

с этого и началась эта беседа: Какие бы компоненты я не подключил к проекту - exe файл становиться =360кб, хотел изюользовать KOL но там библиотека не подддерживает работу с паролями на архивы
а что делать и не представляю?

Автор: Alexeis 14.8.2006, 14:00
Вот тут есть любопытная статья о том как можно пивасть модуль SFX для Zip
http://www.codeproject.com/file/sfxframework.asp

Автор: Teran 14.8.2006, 14:19
Код

License
You must mention my name in your application documentation/help box, something like, Portions © 2000 by Rui Godinho Lopes <ruiglopes@yahoo.com>. 
I would appreciate an email letting me know that you are using this code. 
I cannot be held responsible of any kind of data lost caused directly or indirectly by the use of this code. Use it at your own risk. 
You cannot sell this code. This is free software. 
If you use this code in a commercial application, you have to give me a copy of your product. 

Автор: Alexeis 14.8.2006, 14:39
Teran, и что в этом такого ни кто ведь не требует использовать его код. Написана статья к ней прилогаются исходники. Важно понять принцип, а затем написать аналог на делфи. За использование информации описанной в этой статье ведь деньги платить не надо smile !

Автор: imageman 14.8.2006, 15:47
а почему всё-таки откинули мысль криптовать своим алгоритмом? 

Последовательность, примерно, такая:

Упаковываем в ZIP, потом шифруем и приплюсовываем в начало собственный SFX.

Распаковка. Берем файл, в памяти его дешифруем и из памяти уже берем дешифрованный ZIP и распаковываем. (MemoryStream). 

Автор: Snowy 14.8.2006, 15:50
imageman, потому что WinZip не возьмёт smile

Автор: Teran 14.8.2006, 16:06
чегото я наверно всеравно недопонимаю, Как можно создать EXE файл маленьким если только при встрече в программе
Код

uses
  ZipForge;

она тутже выростает?
(аналогично и другие компоненты, работающие с архивомами)

Добавлено @ 16:08 
Цитата(imageman @  14.8.2006,  15:47 Найти цитируемый пост)
из памяти уже берем дешифрованный ZIP и распаковываем

при этом действии всеравно прийдется использовать ZipForge

Автор: Alexeis 14.8.2006, 16:12
Цитата(Teran @  14.8.2006,  16:06 Найти цитируемый пост)
Как можно создать EXE файл маленьким если только при встрече в программе

Так sfx писать надо без него, а вот програму которая будет делать из SFX модуля SFX архив, можно с чем угодно писать.

Добавлено @ 16:14 
Цитата(Teran @  14.8.2006,  16:06 Найти цитируемый пост)
при этом действии всеравно прийдется использовать ZipForge

Почему это есть же для KOL распаковщик zip.

Автор: Teran 14.8.2006, 16:27
Цитата(alexeis1 @  14.8.2006,  16:12 Найти цитируемый пост)
Почему это есть же для KOL распаковщик zip

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

Автор: Alexeis 14.8.2006, 16:44
Цитата(Teran @  14.8.2006,  16:27 Найти цитируемый пост)
а так - он отпал

Ну код то открытый можно и дописать если что, компоненик ведь по всему видно, что готового решения нет, значит "на штурм" формата zip.

Добавлено @ 16:56 
Таки нашел еще один пакетик где можно делать SFX
http://www.angusj.com/delphi/tzip.zip

SFX - модуль занимает всего 33,5кб, кроме того в проекте имеется его исходник позволяющий создавать SFX, по своему вкусу! Выполнен он ввиде DPR проекта (без ) VCL!

Автор: Teran 14.8.2006, 17:48
Цитата(alexeis1 @  14.8.2006,  16:44 Найти цитируемый пост)
Выполнен он ввиде DPR проекта (без ) VCL!

пахнет чемто вкусным. Эх теперь бы разобраться в этом коде, а то там чтото страшное....

Добавлено @ 17:57 
немного непонятно от куда там берутся ListBox,кнопки, Edit и в каком месте они создаются

Автор: Alexeis 15.8.2006, 00:13
Цитата(Teran @  14.8.2006,  17:48 Найти цитируемый пост)
от куда там берутся ListBox,кнопки, Edit и в каком месте они создаются 
 Они создаются на API, кроме того диаог имеет свой ресурс, который можно изменять или дополнять в зависимости от своих нужд. Чтоб найти место создания ListBox и Edit надо запустить поиск по CreateWindow или CreateWindowEx, поскольку именно они в конечном итоге создают окнонные компоненты.

Автор: Teran 15.8.2006, 08:19
alexeis1 спасибо огромное за подробное растолкование всей темы котрая мне была необходима (поделюсь +)
но там контролы не создаются по CreateWindow или CreateWindowEx (по поиску не нашел), просто все эти шаблоны помещены в ресурс и выводятся с помощью DialogBox-ов:
DialogBox( hInstance, 'MAIN_DIALOG1', 0, @Main); и DialogBox( hInstance, 'PSWD_DIALOG', 0, @PwdProc );

Автор: Snowy 15.8.2006, 09:07
Вот после собаки - имя функции, которая будет работать с этим диалогом.
А параметры самого диалога - в ресурсах.

Добавлено @ 09:08 
Вопрос плавно перетекает в тему для раздела WinAPI.
Отношения к ZIP он уже не имеет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)