PDA

View Full Version : حجم بالای فایل exe



systole
چهارشنبه 01 شهریور 1391, 12:18 عصر
سلام دوستان
بنده یه فرم توی دلفی 2009 ایجاد کردم و اونو کامپایلش کردم بدون هیچ کنترل اضافی مثل دکمه و ... اما در عین ناباوری حجمش شده یه چیزی حدود 450 کیلوبایت !!
میشه کنیعلتشو بگید؟
با vb6 اگه یه فایل مشابه اون ایجاد کنیم حجمش میشه یه چیز حدود 20 کیلوبایت!!

Felony
چهارشنبه 01 شهریور 1391, 13:52 عصر
برای اینکه دلفی کتابخانه های استفاده شده در برنامه رو به فایل exe نهایی الحاق میکنه تا یک فایل اجرایی Native تحویلتون بده ؛ اون فایل 20 کیلوبایتی که با VB میسازید Native نیست ؛ اگر میخواین فایل اجرای تولید شده برای برنامتون تو دلفی Native نباشه و حجمش مثل اون خروجی VB کم باشه از project option در بخش packages - > Runtime packages تیک گزینه Link with runtime packages رو بزنید ، با زدن این تیک کتابخانه ها و توابع مربوط به VCL و RTL از پکیج ها بارگذاری میشه و دیگه به فایل exe الحاق نمیشن که حجم فایل نهایی زیاد بشه و پکیج ها باید روی سیستم مقصد موجود باشند تا برنامه بتونه کتابخانه ها رو از اون ها بخونه و اجرا بشه .

systole
چهارشنبه 01 شهریور 1391, 14:29 عصر
با این حساب چون خود مایکروسافت سازنده ویندوزه کتابخانه های مربوط به برنامه های تولید شده با وی بی همراه با نصب ویندوز ، نصب میشن اما برای دلفی باید این کار به شکل دستی صورت بگیره.درسته؟
اما من چند تا برنامه دیدم که با دلفی نوشته شده بودن اما حجمی در حد 30 کیلوبات داشتن؟!!!
لطفا راهنمایی بفرمایید...

Felony
چهارشنبه 01 شهریور 1391, 15:15 عصر
با این حساب چون خود مایکروسافت سازنده ویندوزه کتابخانه های مربوط به برنامه های تولید شده با وی بی همراه با نصب ویندوز ، نصب میشن اما برای دلفی باید این کار به شکل دستی صورت بگیره.درسته؟
یه چیز تو این مایه ها .


اما من چند تا برنامه دیدم که با دلفی نوشته شده بودن اما حجمی در حد 30 کیلوبات داشتن؟!!!
به جای استفاده از کتابخانه های VCL و ... به صورت مستقیم از API هایی که سیستم عامل در اختیارتون قرار میده استفاده کنید تا برنامتون وابستگی به Package های نداشته باشه .

بهروز عباسی
چهارشنبه 01 شهریور 1391, 22:18 عصر
درود

چرا وقتی یک برنامه رو با نسخه های جدید دلفی (مثلاً XE2) کامپایل می کنم حجمش نسبت به کامپایل همون برنامه (بدون کوچکترین تغییری)با نسخه های قدیمی (مثلاً Delphi 7) افزایش پیدا می کنه؟؟
آیا نوع پیاده سازی توابع در نسخه های جدید فرق میکنه؟؟

Felony
پنج شنبه 02 شهریور 1391, 06:07 صبح
خوب برای چی نسخه جدید عرضه میشه ؟ چون قابلیت های جدید اضافه شده و کتابخانه های مختلف VCL کاملتر شدن و توابع و کامپوننت های جدید بهشون اضافه شده ، بنابراین حجم فایل تولیدی نهایی که از این کتابخانه ها استفاده میکنن هم بیشتر میشه .

mahdy.asia
شنبه 04 شهریور 1391, 13:40 عصر
شما می تونید بدون اینکه هیچ اختلالی در اجرای فایل تون پیش بیاد حجم فایل exe تون رو کاهش بدید. برای اینکار upx.exe رو از لینک زیر دانلود کنید و استفاده نمایید
لینک دانلود
http://www.4shared.com/zip/Kt0Beh0w/upx300w.html

بهروز عباسی
شنبه 04 شهریور 1391, 20:14 عصر
شما می تونید بدون اینکه هیچ اختلالی در اجرای فایل تون پیش بیاد حجم فایل exe تون رو کاهش بدید. برای اینکار upx.exe رو از لینک زیر دانلود کنید و استفاده نمایید
لینک دانلود
http://www.4shared.com/zip/Kt0Beh0w/upx300w.html

درود به همه
دوست عزیز این قبیل برنامه ها درسته که حجم برنامه رو پایین می ارن اما موقع اجرای باعث مصرف زیاد حافظه (RAM) میشن که فکر کنم اگه برنامه ما برای اجرای طبیعی خودش دارای پردازش سنگینی باشه و حافظه هم زیاد مصرف کنه روی سیستم های ضعیف ممکنه مشکل ساز باشه ()

موفق باشید.

BORHAN TEC
شنبه 04 شهریور 1391, 20:59 عصر
دوست عزیز این قبیل برنامه ها درسته که حجم برنامه رو پایین می ارن اما موقع اجرای باعث مصرف زیاد حافظه (RAM) میشن که فکر کنم اگه برنامه ما برای اجرای طبیعی خودش دارای پردازش سنگینی باشه و حافظه هم زیاد مصرف کنه روی سیستم های ضعیف ممکنه مشکل ساز باشه ()
upx نبسبت به موارد مشابه خیلی خوب عمل میکنه و مشکلی رو برای شما به وجود نمیاره!

بهروز عباسی
شنبه 04 شهریور 1391, 22:09 عصر
upx نبسبت به موارد مشابه خیلی خوب عمل میکنه و مشکلی رو برای شما به وجود نمیاره!
تصوریر زیرو مشاهده کنید ببینیدتفاوت چقدره ؟
اونم واسه یک برنامه ساده


91838

Saeid59_m
شنبه 06 دی 1393, 21:20 عصر
من توی XE6 تمام Packege ها رو هم غیر فعال کردم نیم مگ هم کم نشد از حجم فایل exe پروژه ام هم VCL هست (حجم فایل 5MB)، همین فایل توی دلفی 7 یک مگا بایته . با اینکه 15 ساله با دلفی برنامه می نویسم دیگه ازش بدم اومده :افسرده:

BORHAN TEC
یک شنبه 07 دی 1393, 21:35 عصر
احتمالاً شما برنامه رو در حالت Debug کامپایل می کنید. اگه پروژه در حالت Release کامپایل بشه حجم فایل exe به صورت چشمگیری کاهش پیدا میکنه.

Saeid59_m
دوشنبه 08 دی 1393, 00:03 صبح
احتمالاً شما برنامه رو در حالت Debug کامپایل می کنید. اگه پروژه در حالت Release کامپایل بشه حجم فایل exe به صورت چشمگیری کاهش پیدا میکنه.

خیر در حالت Release هم کمپایل کردم حجمش کم شد نه به طور چشمگر بلکه خیلی جزئی . من خیلی دلفی رو دست دارم ولی فکر می کنم دیگه وقت مهاجرت به C#‎‎‎‎‎‎ هرچند اصلا از .net خوشم نمی یاد .
به هرحال به نظر من بدترین چیز برای یک کامپایلر حجم بالای فایل اجرایی اش هست . چون اینطور 1- شما برای آپدیت نرم افزارها تون به مشکل بر می خورید 2- اجرای برنامه کند خواهد شد 3- تمام تلاش شما در برنامه نویسی برای استفاده بهنیه از منابع (مانند استفاده از تصاویر اشتراکی ، استفاده از کدهایی که باعث سرعت بیشتر برنامه میشه و ...) هدر خواهد رفت .

BORHAN TEC
دوشنبه 08 دی 1393, 12:24 عصر
من هم با XE6 کار می کنم و مشکلاتی که شما میگید رو ندارم. همین الان پروژه ای که برای نوشتنش 15000 خط کد زدم فایل اجراییش با upx به 900 کیلوبایت رسیده! البته به Build with runtime packages کامپایل شده. یکسری کامپوننتها هستند که حجم فایل exe رو زیاد بالا میبرند مثل کامپوننتهای tms(که پکیجهاش به صورت DesignTime/Runtime هست!) و devExpress. دقیقاً بگین که از چه کامپوننتهایی استفاده می کنید؟ آیا یونیتهای اضافی رو از پروژه با کمک ابزاری مثل Uses Cleaner از مجموعه cnWizards حذف کرده اید؟

پ.ن: البته این نظر شخصی منه: کسی که تو زمونه ای که اینترنت پرسرعت وجود داره اگه نتونه 5 مگابایت آپدیت بگیره همون بهتر که اصلاً پای کامپیوتر نشینه! اینکه حجم آپدیت چند کیلوبایت باشه برای موقعی بود که اینترنت دیال آپ بود، کسی که حاضر نیست که دست توی جیبش کنه و اینترنت پرسرعت بگیره حقی نداره که بخاطر چند مگابایت آپدیت از شما ایراد بگیره! مثلاً همین الان که شما داری از دلفی استفاده میکنی مطمعناً 5 گیگابایت دانلود کردید، الان شما میتونی به شرکت سازندش ایراد بگیری(حتی اگه پولش رو هم میدادید) که چرا 5 گیگابایت؟! بیشترین چیزی که مهمه کیفیت محصوله و نه چند مگابایت بیشتر یا کمتر!

یوسف زالی
دوشنبه 08 دی 1393, 14:41 عصر
1- شما برای آپدیت نرم افزارها تون به مشکل بر می خورید 2- اجرای برنامه کند خواهد شد 3- تمام تلاش شما در برنامه نویسی برای استفاده بهنیه از منابع (مانند استفاده از تصاویر اشتراکی ، استفاده از کدهایی که باعث سرعت بیشتر برنامه میشه و ...) هدر خواهد رفت .

1- می تونید آپدیتتون رو ماژولار کنید، DLL بذارید، و ...
2- کندی اجرا خیلی به حجم ربط نداره، خیلی خیلی کم تاثیر می گذاره مگر این که قرار باشه برنامه از روی سرور روی کلاینت ران بشه
3- اصلا ربط مورد سوم رو نمی فهمم