Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Внизпростейшая прога весит 300 кб... Найти похожие ветки
← →
heruvim4ik (2002-03-09 14:32) [0]Ещё один вопрос:
Например, создаю я простейшую программу, которая... ну не знаю... два числа складывает... а она весит > 300 кб... может я чё не так делаю???
← →
vrRaven (2002-03-09 14:51) [1]библиотека VCL очень много весит... Пиши на API или MFC...
Или воспользуйся компрессорами исполняемых файлов(например ASPack)...
← →
Anatoly Podgoretsky (2002-03-09 15:05) [2]Используй run-time пакеты, как в VB и C и будет твоя программа маленькая, но пакеты надо таскать с собой, если будешь распространаять.
← →
Искатель (2002-03-09 15:55) [3]Или использовать KOL - Key Objects Library
Русская страница http://bonanzas.rinet.ru/rindex.htm
← →
copyr25 (2002-03-09 16:00) [4]Откажитесь от форм.
Редактируйте непосредственно .dpr, как, ну, например в Паскале для DOS
делали:
program Project1;
uses Windows, ...;
BEGIN
END.
Но тогда всю заботу Вам придется взять на себя:)
← →
copyr25 (2002-03-09 16:06) [5]Или используйте aspack, например: http://www.entechtaiwan.com/aspack.htm
← →
heruvim4ik (2002-03-09 19:07) [6]Сжимаю АСПаком, оп иконку пропаривает :-((((
← →
lipskiy (2002-03-09 23:05) [7]Насчет AsPack почитай конфу:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1015398402&n=3
("Помогите с объемом программы..." в "Потрепаться".
Пакостная вещь, этот AsPack и ему подобные...
Я тоже его раньше юзал, и не знал кое-чего...
← →
copyr25 (2002-03-09 23:12) [8]2 lipskiy : Не, нормально сжимает, зря Вы:))
← →
lipskiy (2002-03-10 01:14) [9]2 copyr25
Да я и не говорю, что ненормально, сжимает-то прекрасно, 35% как с куста, я сам все время юзал. Но вот ОСу от такого ехешника тяжко бывает, оказывается...
← →
Aleks1 (2002-03-10 02:26) [10]> heruvim4ik © (09.03.02 14:32)
Еще добавлю только - для "вредной" программы вес действительно важен, для "полезной" - по-фигу. Имхо почти по-фигу, но нужно очень поискать такой комп, где это помешает нормальной работе.
← →
Шрек (2002-03-10 04:37) [11]>vrRaven (09.03.02 14:51)
>библиотека VCL очень много весит... Пиши на API или MFC...
MFC есть для Делфи?? Расскажи поподробнее об этом.
← →
Андрей Сенченко (2002-03-11 12:15) [12]>> Aleks1 (10.03.02 02:26)
>> нужно очень поискать такой комп, где это помешает
>> нормальной работе
Комп в филиале предприятия находящемся примерно в 2000 км от Тебя при скорости их модема 14,6 и необходимости слать обновления пргограммы раз в неделю.
Нашелся ?
← →
JibSkeart (2002-03-11 12:42) [13]А что Обычные Zip,Rar Нынче не в Моде ??
← →
Hawk2 (2002-03-11 13:14) [14]А если перед компиляцией готовой програмки повыключать из проекта лишние пакеты Project->Options->закладка Packages? А из Uses лишние модули, может поможет?
← →
wicked (2002-03-11 13:24) [15]2 Hawk2
это ничего не даст... компилятор всё-таки использует smartlinking (умное связывание :) и лишнего не включает... единственное, из-за чего стоит это делать, так это из-за того, что (лишние) модули могут содержать (лишние) секции автоинициализации...
← →
drpass (2002-03-11 13:26) [16]>JibSkeart
В моде. Только на своем опыте знаю - чтобы юзеры в филиалах где-нибудь в пгт Фундуклеево Забулдыгинского района смогли что-нибудь обновить, единственная операция, которую они должны выполнить - это нажать клавишу Enter. Иначе они будут весь день звонить в компьютерный отдел, с ужасом спрашивая "а что такое "заменить файл". Такая мудрость, как архивация, им недоступна
Я обычно делаю простой дистрибутив, например, с помощью Ghost Installer (www.gInstall.com), который без всяких вопросов распакует и установит все файлы.
← →
copyr25 (2002-03-11 17:55) [17]JibSkeart: А причем тут zip или rar? Разговор, насколько я понимаю, про размер exe-шника.
← →
Tsatur Soft (2002-03-11 19:09) [18]ASPACK прога классная, но если ты считаешь, что твой ехе-шник - святое дело и не хочешь его сжимать( я сам этого не люблю), пользуся инсталятором, например, NSIS - штука классная.
← →
Anatoly Podgoretsky (2002-03-11 20:30) [19]Андрей Сенченко © (11.03.02 12:15)
copyr25 © (11.03.02 17:55)
300 кб жмем, получаем примерно 144, делим на 14.4, получаем 10, умножаем на 10, получаем 100, на всякий случай добавляем 20, итого 2 минут, о чем речь
← →
KvORubin (2002-03-11 21:51) [20]> Anatoly Podgoretsky ©
Какие 2 минут ??? - мне так-же нужно сжать ехе,,
Моя программа делится на несколько частей, каждая
часть делает своё дело и передаёт данные другой части,,,
Так Вот: Этих частей 4 штуки_ЕХЕ давайте прибавим:
300 * 4 = 1.2Mb + код = 3Mb - кому нужны такие размеры ???
(Писать вручную интерфейс не позваляет..)
Кто-нибудь видел что лежит внутри скомпелированной ехе,
там столько грязи, что лучше не смотреть :)
Вопрос: Как избавиться от этой грязи ???
← →
vuk (2002-03-11 22:14) [21]to KvORubin:
От "грязи" избавиться не выйдет, т.к. это не грязь. Однако тот код, что попадает в исполняемый модуль зачастую никогда не исполняется, но здесь сделать ничего нельзя - это издержки компонентной технологии (любой). Для борьбы с объемом можно попробовать использовать компиляцию с использованием пакетов. В этом случае в исполняемый модуль включается только тот код, который имеет отношение к конкретному приложению. Код компонентов в этом случае находится в пакетах и поэтому в обновлении не нуждается. Только здесь нужно осторожно - можно нарваться на проблемы с версиями пакетов.
← →
lipskiy (2002-03-11 23:03) [22]Черт, а как тогда можно сделать нормальную инсталляху, если рабочий ехешник весит в несжатом виде, скажем, мегабайт? Любой внешний инсталлер добавляет объема килобайт 500, ну 300, но не меньше. А весь код по инсталляции (скопировать десяток файлов и прописать пяток ключей в реестре) занимает, ну, 10 кб максимум! Есть простой способ - когда исполняемый ехешник запускает как инсталлер, если имеет другое имя, сам себя копирует, переименовывает и запускается потом как уже установленное приложение. Но в этом варианте неудобно то, что не хочется включать в этот ехешник все ресурсы дистрибутива, а если не включать - то класть рядом и паковать архиватором все вместе - это тоже отстой, так как приходится париться юзеру дважды - распаковать архив, потом запустить Setup. А еще, как верно заметил drpass, забулдыгинские юзеры не найдут WinZip или WinRar - и привет! А если самораспаковыающийся делать - тоже фигня, запускаешь уже вроде ехешник, вроде как инсталлятор, а потом оказывается что нужно еще чего-то запускать, причем оно само об этом не говорит - надо догадаться.
← →
Иван Шихалев (2002-03-17 16:30) [23]Вообще-то WinRAR при создании самораспаковывающихся архивов позволяет указать запускаемый сразу после распаковки экзешник и многое другое. И 7-Zip позволяет... Да и инсталляторы обычно сжимать умеют...
← →
KvORubin (2002-03-17 19:02) [24]> Иван Шихалев ©
Нет нет и нет,, архиваторы это уже крайний случай, их нужно использовать для хранения и транспортировки файлов.
> vuk ©
В слове "Грязь" имеется ввиду не сам лишний код, а картинки,,
в ехе присутствуют куча ненужных картинок и если кто и видел их
или-же кто-то увидит, то ВАМ станет просто смешно - что там лежит.
← →
lipskiy (2002-03-17 19:17) [25]2 KvORubin
А чего там за картинки? Действительно любопытно!
Может их вырезать оттуда мона?
← →
KvORubin (2002-03-17 19:58) [26]> lipskiy ©
А чёрт их знает, я их увидел, когда каким-то взломщиком ехе взламывал и поразился, там кроме картинок ещё борахла навалом.
К примеру:
Для Button1 Вы можете выбрать уже готовую картинку назначения типо OK CANCEL и подобные (только непомню точно в каком случае)
Короче возможно, что вы ети картинки видели..
ОНИ ТАМ - ОНИ КОМПИЛИРУЮТСЯ ВМЕСТЕ !!!
Яб сам от них избавился с удовольствием !!!???
← →
Anatoly Podgoretsky (2002-03-17 20:08) [27]Давай изьбавься, только потом не жалуйся если какой либо диалог не найдет нужному ему ресурса
← →
Косильщик_Лужаёв (2002-03-17 21:57) [28]Ну-у-у-у , я вырезал в общем подчистую всю эту "грязь" (Resource Hacker"ом или VC++) - картинки , иконки , курсоры и прочую дребедень , в результате 300 кб уменьшались килобайт так на 10 . Всего лишь . Так что это думаю не выход .
← →
KvORubin (2002-03-17 22:08) [29]> Косильщик_Лужаёв ©
Вот блин, я тоже так думаю...
Напимер:
Пишу очень большой проект с очень большим и сложным интерфейсом.
есть ли какой-то способ: создать форму вручную, етс она будет весить очень мало и при этом лепить интерфейс так как на обычной 300 килобайтной форме ???
← →
Косильщик_Лужаёв (2002-03-18 00:25) [30]
> KvORubin ©
program buttons;
uses windows, messages;
var wc : TWndClassEx;
MainWnd : HWND;
btns : array[0..10] of HWND;
Mesg : TMsg;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
case msg of
wm_destroy :
Begin
postquitmessage(0); exit;
Result:=0;
End;
else Result:=DefWindowProc(wnd,msg,wparam,lparam);
end;
End;
var xPos,yPos,nWidth,nHeight : Integer;
begin
wc.cbSize:=sizeof(wc);
wc.style:=cs_hredraw or cs_vredraw;
wc.lpfnWndProc:=@WindowProc;
wc.cbClsExtra:=0;
wc.cbWndExtra:=0;
wc.hInstance:=HInstance;
wc.hIcon:=LoadIcon(0,idi_application);
wc.hCursor:=LoadCursor(0,idc_arrow);
wc.hbrBackground:=COLOR_BTNFACE+1;
wc.lpszMenuName:=nil;
wc.lpszClassName:="Buttons : Main";
RegisterClassEx(wc);
xPos:=100;
yPos:=150;
nWidth:=400;
nHeight:=250;
MainWnd:=CreateWindowEx(0,"Buttons : Main",
"Buttons styles",
ws_overlappedwindow,
xPos,yPos,nWidth,nHeight,0,0,
Hinstance,nil);
Btns[0]:=CreateWindowEx(0,"button","bs_pushutton",bs_pushbutton or ws_child or ws_visible,10,10,150,25,MainWnd,0,hinstance,nil);
Btns[0]:=CreateWindowEx(0,"button","bs_defpushutton",bs_defpushbutton or ws_child or ws_visible,10,40,150,25,MainWnd,0,hinstance,nil);
Btns[2]:=CreateWindowEx(0,"button","bs_autocheckbox",bs_autocheckbox or ws_child or ws_visible,10,70,150,25,MainWnd,0,hinstance,nil);
Btns[3]:=CreateWindowEx(0,"button","bs_autoradiobutton",bs_autoradiobutton or ws_child or ws_visible,10,100,150,25,MainWnd,0,hinstance,nil);
Btns[4]:=CreateWindowEx(0,"button","bs_groupbox",bs_groupbox or ws_child or ws_visible,10,130,150,35,MainWnd,0,hinstance,nil);
Btns[5]:=CreateWindowEx(0,"button","bs_auto3state",bs_auto3state or ws_child or ws_visible,10,170,150,25,MainWnd,0,hinstance,nil);
ShowWindow(MainWnd,CmdShow);
While GetMessage(Mesg,0,0,0) do
begin
TranslateMessage(Mesg);
DispatchMessage(Mesg);
end;
end.
вот тебе пример , с инета скачивал , весит 9 кб , форма с кнопками . Только если проект большой - гимор будет соответствующий . Тут ведь ещё события к обьектам не написаны , так , просто кнопочки на форме ...
← →
lipskiy (2002-03-18 00:53) [31]> есть ли какой-то способ: создать форму вручную, етс она
> будет весить очень мало и при этом лепить интерфейс так
> как на обычной 300 килобайтной форме ???
IMHO, если на API, то так и будет. А если просто динамически крейтить формы используя класс TForm, то чтобы его использовать уже придется подкомпилировать все его ресурсы (Forms, Controls,...) и получатся те же 300кб.
← →
KvORubin (2002-03-18 15:07) [32]> Косильщик_Лужаёв ©
Спасибо, но мне нужно то, о чём > lipskiy © говорит..
Но вижу этому не суждено быть, раз 300 значит 300 ;((
← →
Андрей Сенченко (2002-03-18 15:48) [33]Нет... Ну если не лениво или размер настолько критичен, что это необходимо - просто пройди по объявленным в программе модулям ( Windows, SysUtils и т.п. ) и скопируй оттуда все необходимые Тебе функции и процедуры в свой проект.
Предупреждаю сразу, что работа сия подобна цепной реакции ( одни функции потнут за собой другие ) и очень кропотливая, но если надо ...
← →
KvORubin (2002-03-18 17:07) [34]Нет, это слишком много времени и нервов.
← →
Andrey007 (2002-03-18 17:12) [35]А ещё можно разбить свою программу на несколько маленьких dll. И посылать пользователям только то, что нужно обновить. Или программу, которая делает тоже самое если пользователи неграмотные.
← →
KvORubin (2002-03-18 21:10) [36]> Andrey007
Как работать с ДЛЛ ками, я с ними не сталкивался, если у кого есть желание, объясните ПЛИЗ !!!
← →
Suntechnic (2002-03-19 00:31) [37]Как я понял основными проблемами "больших" программ является необходимость обновления. А почему никто патчами не пользуется? Под патчами я понимаю программку, которая будет править старый exe и переделывать его в новый. Зачем тянуть 10 метров по сети, если в программе ничего не поменялось, за исключением 10 байт? Насколько я знаю существуют специальные приложения по созданию патчей(этим у нас билд инженер занимается, так что названий я не знаю, знаю только что имеются) или можно самому написать. Задача не очень сложная, зато интересная. И не надо будет тётенькам из Забулдыгино объяснять что такое ZIP.
А использовать всякие упаковшики я бы не рекомендовал. Тут это тема уже неоднократно подымалась, так что желающие смогут найти почему.
← →
lipskiy (2002-03-19 01:04) [38]2 Suntechnic
!!! Очень интересная мысль! Я об этом раньше никогда не слышал (в смысле - о правке самого ехешника, слышал только о подмене модулей (dllек)).
А нельзя ли поподробнее?
← →
Suntechnic (2002-03-19 01:49) [39]>lipskiy © (19.03.02 01:04)
>А нельзя ли поподробнее?
Ды что подробнее то? Возьми, например, старую версию своей программы, и новую. И посмотри разницу с помощью любой утилиты(например той что идёт вместе с WinCom). В зависимости от того, что менялось разница будет измерятся в байтах. Вот тебе и надо написать утилиту, которая просто напросто уберёт из старой версии ненужные байта, и добавит необходимые. Конечно задача не настолько тривиальная, как я описал, но вполне выполнимая. Естественно сама утилита должна быть на API, чтобы не жрать драгоценные байты при пересылке.
← →
lipskiy (2002-03-19 01:59) [40]2 Suntechnic
Черт, до меня недоперло сразу - то есть отслеживать компилированный код тут совсем не нужно (как я вначале почему-то подумал), а просто написать маленькую утилитку, вернее две, одна мне сравнит два ехешника и выдаст никий блочек разницы (блочки разниц) и некие адреса этих блочков, а другая утилитка, что у юзера, возьмет эти блочки и перепишет в ехешнике. Мудро! Действительно интересная задачка, обязательно попробую такую фишку сделать.
← →
lipskiy (2002-03-19 02:03) [41]Тут самый сложный момент - корректно найти различия. Нет ли где описаний каких-нибудь по этой теме? Ведь нужно не просто побайтно сравнивать, а искать вставленные и вырезанные блоки. Как это делается? (чисто алгоритмически).
← →
Suntechnic (2002-03-19 02:16) [42]>lipskiy © (19.03.02 02:03)
>вернее две, одна мне сравнит два ехешника и выдаст никий блочек разницы (блочки разниц) и некие адреса этих блочков, а другая утилитка, что у юзера...
Это зависит от реализации. Можно всё в одну впихнуть, а можно и в две разнести. В одну удобнее, т.к. тёте Маше из Мухосранска не надо будет объяснять, что надо запустить вот это и нажать туда-то...
>Ведь нужно не просто побайтно сравнивать, а искать вставленные и вырезанные блоки.
Тебе ж говорят, задача не такая тривиальная как кажется :). Тебе голова на что дана? А описание алгоритма ты навряд ли найдёшь. Это всё равно, что пытаться найти алгоритм замены подстроки.
← →
Andrey007 (2002-03-19 09:34) [43]2KvORubin
>Как работать с ДЛЛ ками, я с ними не сталкивался, если у кого есть желание, объясните ПЛИЗ !!!
Ну, посмотрите help, книжки какие-нибудь. Может чего и на этом сайте есть.
← →
lipskiy (2002-03-19 12:59) [44]
> Тебе ж говорят, задача не такая тривиальная как кажется
> :). Тебе голова на что дана?
В ней рот, которым я ем :)
> А описание алгоритма ты навряд ли найдёшь
Да просто спросил, ведь если есть готовые решения, то чего изобретать гайку от велосипеда. Придумаем, конечно!
← →
Andrey007 (2002-03-19 14:30) [45]Насчёт сравнения файлов. В состав всех ОС от MS входит программа File Compare (fc.exe). Она запускается в консольном окошке и выплёвывает в него результаты сравнения. Но можно сделать и так, чтобы результаты сравнения двух файлов сохранялись в текстовый файл. Осталось только обработать эти результаты.
← →
vedmed (2002-03-19 15:41) [46]Еще насчёт сравнения файлов см. http://rpi.net.au/~ajohnson/delphi компонент TDiff
← →
-=GaLaN=- (2002-03-25 01:36) [47]2Андрей Сенченко:
> Ну если не лениво или размер настолько критичен, что это необходимо - просто пройди по объявленным в программе модулям (Windows, SysUtils и т.п. ) и скопируй оттуда все необходимые Тебе функции и процедуры в свой проект.
И ничего не улучшится. Потому что как уже было сказано компилятор в дельфи smart и лишнее все равно не добавляет.
← →
Alex_LG (2002-03-25 14:50) [48]всё улучшится - не такой он уж и "smart" :0)
← →
-=GaLaN=- (2002-03-25 18:54) [49]Говорю же - пробовал - не помогает.
← →
Андрей Сенченко (2002-03-25 19:07) [50]-=GaLaN=- © (25.03.02 18:54)
Ну мне то помагало. После того, как SysUtils до 2-х нужных мне функций покоцал - значительно легче стало.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.007 c