Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Песочница > Почему формат Win32-приложений в D2005/D2006 изм. |
Автор: FlashSoft 3.1.2006, 06:48 |
Здравствуйте! Чисто для любопытства интересует следующий вопрос. Если в Delphi 2005/2006 (возможно и в Delphi 8 - не проверял) скомпилировать Win32-приложение (кстати, и для VisualStudio, начиная с 2003), то его невозможно сжать упаковщиками типа upx. Вроде бы создается проект для платформы Win32, а не для .NET, а такая картошка получается. Где туплю? |
Автор: Snowy 3.1.2006, 14:47 |
Попробуй так: upx.exe -9 --force Project1.exe |
Автор: Alexeis 3.1.2006, 15:03 |
ASPack жмет нормально и все работает. |
Автор: FlashSoft 3.1.2006, 23:15 |
upx.exe -9 --force Project1.exe Да, это upx пишет. Спасибо за ответы. Просто было немного страшно ![]() Был такой глюк, когда распакованная программа не работала на 2000, а на XP Работала. Исходный еxe работал и на двух, а распакованный отказался ![]() |
Автор: Guedda 4.1.2006, 13:16 |
А, кстати, upx лучше, чем ASPack? |
Автор: Snowy 4.1.2006, 13:50 | ||
Вопрос спорный. Когда как. Но обычно UPX жмет сильнее. Кроме того, стоит учитывать побочные эффекты, которые оценить сложно. Лично я выбрал upx. На мой взгляд, более серъезная поделка. |
Автор: Guedda 4.1.2006, 13:53 |
А, если можно, где можно почитать про побочные эффекты одного и другого? Спасибо. |
Автор: Snowy 4.1.2006, 20:01 | ||
Сложный вопрос. Обычно вычисляется экспериментальным путум. Можно спросить у upx методом upx -help Он покажет варианты ключей, что можно не сжимать. Обычно это и есть проблемы. Также можно попробовать поиск по форуму по слову http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=b86d52cc0a8405b7aca4f5ebb65a772f&search_in=posts&result_type=topics&flag=search&debug=&highlite=upx Обычно проблем никаких, но есть и исключения. |
Автор: FRAGNATIC 4.1.2006, 20:55 |
сжимать программы а особено длл ваще оч вредно оочч) это нагружает систему) |
Автор: Alex 5.1.2006, 00:30 | ||
C этого места по подробней можно? Что касается, что лучше upx или AsPack, то вопрос спорный, но об не корректной работе программ упакованных upx я слышал, да и сам сталкивался, а вот об не корректности упакованных AsPack нет. Сам долгое время паковал upx, но сейчас перешел на AsPack |
Автор: FRAGNATIC 5.1.2006, 00:54 | ||||
красиво расписать не смогу всё а перво источник в дауне( а так в кратце про длл
|
Автор: Guedda 5.1.2006, 10:04 |
В общем... Мне так кажется, что вообще не нужны паковщики программ. А писать нужно на API, чтобы программы занимали меньше места. |
Автор: Alexeis 5.1.2006, 11:39 |
Guedda так можно и до ассемблера дойти.... А вообще оружие надо выбирать соответственно врагу и универсального решения в этих вопросах нет ![]() |
Автор: Snowy 5.1.2006, 12:12 | ||
Тут я не согласен. Одно дело сжимать dll общего назначения, а совсем другое паковать ехе. Паковать ехе ничем не вредно. Oсобенно писанные на VCL. |
Автор: Alexeis 5.1.2006, 13:42 | ||
При быстрых процессорах это даже полезно ![]() так как работа HDD гораздо медленнее чем с RAM и зачастую распоковка в RAM происходит быстрее чем чтение с диска большого файла. ![]() ![]() |
Автор: _hunter 5.1.2006, 14:13 |
чтобы это ( тормоза ) заметить -- файл должен быть несколько сотен мегабайт и ужаться он должен в несколько десятков мегабайт. что при правильном подходе к проектированию просто нереально: при сто-метровых exe-шниках стоит задуматься о разделении функциональности... Добавлено @ 14:12 P.S. exe-шники максимального размера, что на компе нашел: nero.exe 19087360 WINWORD.EXE 12037688 причем ни первый ни второй не жмутся ![]() Добавлено @ 14:13 P.P.S. оба читаются меньше чем за секунду |
Автор: Alexeis 5.1.2006, 14:39 |
Хорошо бы засечь время поточнее.... ![]() |
Автор: _hunter 5.1.2006, 15:06 | ||
код такой:
перед запуском копировался файл на 700 метров ( для очистки кеша ) время 0.344 сек. |
Автор: Alexeis 5.1.2006, 17:21 |
Я имел ввиду по точнее определить время запуска сжатого и не сжатого exe, хотя nero не лучший пример так как грузит много библиотек. |
Автор: _hunter 5.1.2006, 17:44 |
куда уж точнее ( там время зависит уже от особенностей строения программы )? + ты говорил о экономии времени за счет считывания меньшего числа байт с диска. эта экономия незначитильна ( доли секунды ) |
Автор: FRAGNATIC 5.1.2006, 17:47 |
alexeis1 да время разумеется у сдатого будет меньше совсем на незаметную какплю хотябы потому что сжатый сначало распаковывается а потом запускается) вот и всё. я говорил о забивании памяти) |
Автор: Alex 6.1.2006, 01:12 |
FRAGNATIC, а теперь давайте по думаем сколько памяти мы там жрем пакуя стандартный exe размером в 1Мбайт при этом пользователю мы можем отдать этот не упакованный вариант, а наш конкурент с похожей программой его упакует и получит 300Кбайт. И мы оба выходим на рынок. И нтересно чей продукт купят? При этом этого 1 Мбайта в памяти ни кто не заметит. Упаковка exe значительно упрощает распостранение программ, при нынешних мощностях вычислительной техники заботиться об 1Мб памяти это просто смешно. У нас половина программ народ пишит когда при старте грузит в память все формы при этом программы в памяти занимают ужас сколько. Итог: паковать нужно, но с умом, не нужно паковать все и вся. PS: По мне лучше при написании приложения следить, что бы оно память не ело как фиг знает что. (все чаще встречаю вроде бы не плохо организованные приложения, но память едят как фиг знает что) |
Автор: FRAGNATIC 6.1.2006, 01:17 |
Alex ну про ехе может я и не прав) а вот про длл которые тоже очень любят поковать я думаю всёже их не стоит поковать=) |
Автор: Poseidon 6.1.2006, 02:09 | ||
|
Автор: FlashSoft 6.1.2006, 02:53 | ||
Только паковщики не нужны, имхо. Файл можно сжать WinRAR, а еще лучше 7zip (для пересылки по почте, например). А вот защищиать программы от просмотра разными редакторами ресурсов, отдалять процесс дизассемблирования, надо. А сделать это без упаковки программы очень сложно (хотя никто не отменял скрэмблирование и заинлайнивание всех функций в исходнике и др). Вот такая ситуация. А можно так. Если в программном комплексе используется много exe, dll, то можно рантайм-библиотеки не линковать к файлам, а класть в текущий каталог с файлами или system32. Тогда скорость должна немного возрасти, так как всеми файлами используются одни и те же библиотеки. |
Автор: FRAGNATIC 6.1.2006, 02:59 | ||
выше уже писал по сути да но длл препологает под собой один запуск а юзает её много приложений! |
Автор: FRAGNATIC 6.1.2006, 04:45 | ||
ну вообщем-то а смысл поковать 2мб и преврать их в 1мб ? по мне так разницы не какой темболее если речь идёт о 20 мб которые мона в мегов 18 превратить. размер критичен тока для вирусов и троянов а для нормальных приложений он имхо не важен)) насчёт покупателей то покупатель выберет то приложение которое лучше работает поэтому надо старатся чтобы твоё приложение было лучше чем у твоего конкуретна) и мало кто ведётся на мелкий размер скорее даже я знаю многих которые подумалибы что за нах чё оно такое маленькое хорошоя прога не может быть такой мелкой и выбралибы 1мб =)))) а насчёт заботится об памяти имхо 1мб ни что но всёже когда можно всеголишь не упоковав приложение спасти его то это номано) а если все начнут поковать и так по одному мб...... а то что многие пишут приложения которые и так расходуют памяти немерено из-за кривости то это уже их роблемы. |
Автор: Петрович 6.1.2006, 14:01 |
Это все безполезный спор из разряда "На вкус и цвет ..." Что касается скорости, то это вопрос спорный, трудно поддающийся измерению. Думаю что разница в скорости загрузки конечно есть, но ее величина, особенно абсолютная, не настолько велика чтобы тратить время на ее определение. Единственное когда эта разница может быть существенной, так это при запуске программы с медленных носителей, таких как FDD и Flash-диски. Первые наверное уже врядли интересны, а вот вторые, как мне кажется, последнее время становятся более актуальными. Что касается размера, то тут опять-же, все зависит от носителя. Конечно, при хранении программы на HDD, размер не имеет значения. Но, вот например у меня есть комерческая программа, которая после ужимания может работать с FDD. Причем, есть потребители которые ее так используют. Хотя конечно это скорее исключение чем правило. Для Flash-дисков, размер опять же наверное не так существенен - их удельная стоимость снижается гиганскими темпами. Ну и конечно размер может иметь значение при дистрибуции. Особенно если она осуществляется по интернету - широкополосный интернет пока еще доступен далеко не всем. ![]() Что касается UPX | ASPack | .... Опять же вопрос личных пристрастий. Хотя, лично я отказался от использования UPX. Я уже когда-то писал что столкнулся с серьезной проблемой при его использовании. С тех пор пользую AsPack - пока (года 3) проблем не было и у меня, ни у моих клиентов. Добавлено @ 14:01 Да, совсем забыл. О занимаемой памяти ужатыми DLL. Конечно, как уже кто-то здесь писал, памяти такой процесс будет занимать больше. Но, не забывайте, речь идет о виртуальной памяти. Поэтому, использование реальной физической памяти опять же будет сильно зависить от постороения программы, алгоритмов ее работы, текущего режима использования, ... Так что здесь тоже все не так просто и однозначно ![]() |
Автор: Guedda 10.1.2006, 17:06 |
Я думаю, если хорошо знаешь API, ассемблер не понадобится. |
Автор: Akella 5.7.2006, 14:34 | ||
процесс сжатия идёт, но файл не сжимается Добавлено @ 14:36
я сравнивал - у меня противоположный результат (проект на D7 был) |