PDA

View Full Version : سوال: چگونه می توان حجم برنامه های ساخته شده با Delphi XE2 را کم کرد؟



BORHAN TEC
سه شنبه 03 آبان 1390, 13:26 عصر
سلام:لبخند:

همانطور که می دانید به طور پیش فرض حجم فایلهای ساخته شده با Delphi XE2 زیاد است. من با استفاده از ابزارهای جانبی نظیر upx توانسته ام حجم فایل اجرایی ساخته شده با Delphi XE2 را به طور قابل ملاحظه ای کم کنم. ولی آیا می توان با تنظیمات خاصی در محیط دلفی و بدون استفاده از ابزارهای جانبی حجم فایلهای ساخته شده را کاهش داد؟؟؟

با تشکر...

Nima NT
سه شنبه 03 آبان 1390, 19:45 عصر
میتونید از کتابخانه های KOL استفاده کنید ، این مجموعه شامل یونیت های System و ... هست که با اسمبلی بازنویسی شده و بخش های کم کاربرد اون حذف شده.

BORHAN TEC
پنج شنبه 05 آبان 1390, 21:11 عصر
ممنون، ولی می خواستم ببینم که برای کاهش حجم محسوس فایل های تولید شده، دلفی تنظیمات خاصی ندارد؟

MohsenB
جمعه 20 آبان 1390, 00:52 صبح
سلا بر آقا شاهین


سایز بزرگ خروجی به مقدار زیاد بخاطر اطلاعات دیباگی هست که به همراه خروجی ساخته میشه . شما اونو میتونید از مسیر زیر غیر فعال کنید . البته توصیه میکنم فقط وقتی برنامتون نهایی شد از این گزینه استفاده کنید .

از منوی Project گزینه options... رو انتخاب کنید ، سپس Linking رو از زیر گروه Delphi Compiler انتخاب کنید ، در میان گزینه های سمت راست Debug Information رو به False تنظیم کنید .




موفق باشید

Felony
جمعه 20 آبان 1390, 06:36 صبح
سایز بزرگ خروجی به مقدار زیاد بخاطر اطلاعات دیباگی هست که به همراه خروجی ساخته میشه . شما اونو میتونید از مسیر زیر غیر فعال کنید . البته توصیه میکنم فقط وقتی برنامتون نهایی شد از این گزینه استفاده کنید .
به صورت پیش فرض غیر فعال هست .

MohsenB
جمعه 20 آبان 1390, 09:46 صبح
به صورت پیش فرض غیر فعال هست .

سلام

این گزینه برای من بصورت پیش فرض فعال بود .

درموقع فعال بودن این گزینه حجم برنامه ساده نهایی حدود هفت مگابایت میشود که با غیرفعال کردن آن به 1 مگابایت کاهش می یابد .



موفق باشید

robodanial
جمعه 30 دی 1390, 13:13 عصر
سلا بر آقا شاهین


سایز بزرگ خروجی به مقدار زیاد بخاطر اطلاعات دیباگی هست که به همراه خروجی ساخته میشه . شما اونو میتونید از مسیر زیر غیر فعال کنید . البته توصیه میکنم فقط وقتی برنامتون نهایی شد از این گزینه استفاده کنید .

از منوی Project گزینه options... رو انتخاب کنید ، سپس Linking رو از زیر گروه Delphi Compiler انتخاب کنید ، در میان گزینه های سمت راست Debug Information رو به False تنظیم کنید .

موفق باشید

میشه یکم توضیح بدید که این اطلاعات به چه دردمون می خوره (یعنی اگه از همون ابتدا false کنیم چه اشکالی واسه پروژمون به وجود می یاره) و چرا باید زمانی که برنامه نهایی شد این گزینه رو false کنیم؟

vcldeveloper
چهارشنبه 05 بهمن 1390, 17:08 عصر
میشه یکم توضیح بدید که این اطلاعات به چه دردمون می خوره (یعنی اگه از همون ابتدا false کنیم چه اشکالی واسه پروژمون به وجود می یاره) و چرا باید زمانی که برنامه نهایی شد این گزینه رو false کنیم؟
Debug Information مجموعه اطلاعاتی هست که برای استفاده دیباگر دلفی تولید میشند، تا دیباگر بتونه از طریق اونها برنامه شما را مانیتور کنه، و در صورت بروز مشکل، اطلاعات کافی و مناسبی در اختیار شما قرار بده. اگر Debug Info نداشته باشید، عملا نمی تونید استفاده خاصی از دیباگر دلفی برای رفع اشکالات برنامه تون بکنید. حتی یک break point ساده هم کار نمیکنه.

بطور پیش فرض در نسخه های قبلی دلفی، کامپایلر Debug Information را در داخل فایل های DCU تولید می کرد، که این باعث می شد این اطلاعات در داخل فایل EXE تولید نشند، به همین علت، خیلی ها اهمیت چندانی به تولید شدن یا نشدن این اطلاعات نمی دادند. در دلفی XE2 این اطلاعات مستقیما به فایل EXE اضافه میشند. علتش هم اینه که برای برنامه های cross-platform، دلفی مجبوره از Remote Debugger استفاده کنه، در نتیجه وقتی برنامه مربوطه روی یک پلت فرم دیگه اجرا میشه، باید اطلاعات دیباگش هم باهاش باشند که بتونه توسط Remote Debugger قابل دیباگ کردن باشه. در نتیجه، الان دیگه برنامه نویس باید حواسش را جمع کنه که Build برای دیباگ کردن برنامه با Build برای مشتری نهایی فرق میکنه.

در دلفی به طور پیش فرض دو نوع Build Configuration برای هر پروژه وجود داره: Debug و Release. موقعی که دارید برنامه رو دیباگ می کنید، باید از حالت Debug استفاده کنید که به طور پیش فرض Debug Information رو هم برای فایل EXE فعال میکنه. وقتی خواستید برنامه را تحویل مشتری بدید، از حالت Release استفاده می کنید که اطلاعات دیباگ رو به برنامه پیوست نمیکنه. دقت کنید که تغییر حالت Build باید با Build مجدد پروژه همراه باشه، نه Compile ساده.

MohsenB
چهارشنبه 05 بهمن 1390, 20:27 عصر
سلام

برنامه های زیادی برای کم کردن حجم فایل یا به عبارتی فشرده کردن اونها و جود داره .
یکی از اون برنامه ها برنامه upx میباشد


برای نمونه با استفاده از upx شما میتوانید به نحو چشم گیری حجم فایلهای اجرایی را کم کنید

روش کار چنین است که : وارد محیط CommandPrompt شوید و به آدرس محل نصب این نرم افزار بروید و دستور زیر را اجرا کنید :


upx yourfile.exe

بجای yourfile اسم فایل اجرایی خودتان را بدهید . بعد از چند ثانیه کار به پایان میرسد .
توضیحات بیشتر و آپشن های بیشتر رو در توضیحات برنامه که ضمیمه شده پیدا کنید


موفق باشید

nobody.gu3st
پنج شنبه 06 بهمن 1390, 09:18 صبح
این حجم ها در حد فاجعه هستش بدون debug فرم خالی 1.56 بخدا این همه رو دلفی زحمت کشیدیم الان .... c# به 10 کلیو هم نمیرسه

loo30fer
پنج شنبه 06 بهمن 1390, 09:38 صبح
این حجم ها در حد فاجعه هستش بدون debug فرم خالی 1.56 بخدا این همه رو دلفی زحمت کشیدیم الان .... C#‎ به 10 کلیو هم نمیرسه
خوب اگه این حجم اینقدر براتون مشکل حساب میشه خودتون وقت بذارین و کلاسهای لازم رو از کتابخانه ها جدا کنید کاری که خودم اکثر مواقع میکنم مخصوصا تو dll نویسی.
ضمنا C#.net هست پس مسلما باید حجم به این کمی رو داشته باشه شما هم بیاین تو دلفی تیک Build with runtime packages رو بزنید و ایندفعه کمپایل کنید ایندفعه میبینید که حجم پروژتون چقدر کاهش پیدا میکنه ولی مانند محصولات net. وابسته به اون کتابخانه ها میشه و تا اون کتابخانه ها روی سیستم نصب نشه برنامه شما هیچ عملیاتی رو نمیتونه انجام بده.

MohsenB
پنج شنبه 06 بهمن 1390, 09:40 صبح
این حجم ها در حد فاجعه هستش بدون debug فرم خالی 1.56 بخدا این همه رو دلفی زحمت کشیدیم الان .... c# به 10 کلیو هم نمیرسه

سلام

اصلا مقایسه خوبی نیست

این مقایسه باید اینجوری انجام بشه :

حجم یه برنامه دلفی: 2 مگابایت
حجم یه برنامه سی شارپ و یا موارد دیگر : 100 کیلو بایت + 30 مگابایت فریم ورک (+ 1000 مگابایت دردسر نصب ! )


موفق باشید

tiphooo
جمعه 07 بهمن 1390, 04:28 صبح
برنامه UPX کاری مشابه winrar انجام می دهد و بیشتر مشکل دوستان شاید در ارسال فابلهای اجرایی با Email است که تا حد امکان می خواهند کم حجم باشد حال اینکه حجم برنامه ای که با WinRar فشرده شود با حجم برنامه ای که با UPX حجم ان را کاهش داده تقریبا برابری می کند و مشکل اینجاست که فایلهایی که از UPX برای کاهش حجمشان استفاده کرده اید با فشرده سازی دیگر عملا حجم آنها تغییری نمی کند با یک مثال ساده می تواند فهمید که UPX همان کار فشرده سازی را انجام می دهد ولی با تکنولوژی بالاتری نسبت به سایر فشرده سازیها که الگوریتم Decode کردن نیز در داخل خود برنامه UPX شده قرار می گیرد که در مقصد نیاز به نرم افزاری جهت Decode وجود نداشته باشد.

nobody.gu3st
شنبه 08 بهمن 1390, 10:09 صبح
بله محسن جان حرف شما کاملا متین هستش ولی .net رو به عنوان ابزار عمومی نصب میکنند و 7 هم پیش فرض داره ولی حرف شما رو هم رد نمیکنم ولی خوب اخه بجای کاهش حجم هر روز حجمش بالا میره و باعث میشه دشمنهای دلفی عزیز میدون داری کنند و بهش بتازند و ...

MohsenB
شنبه 08 بهمن 1390, 10:42 صبح
بله محسن جان حرف شما کاملا متین هستش ولی .net رو به عنوان ابزار عمومی نصب میکنند و 7 هم پیش فرض داره ولی حرف شما رو هم رد نمیکنم ولی خوب اخه بجای کاهش حجم هر روز حجمش بالا میره و باعث میشه دشمنهای دلفی عزیز میدون داری کنند و بهش بتازند و ...

سلام

خوب نصب .نت روی ویندوز 7 رو از یه جهت میشه خوب دونست اونم اینه که یکم کار نصب رو راحتتر میکنه ولی خودتون امتحان کنید یه ویندوز ایکس-پی نصب کنید بدون نصب .نت ، ویندوز در حدود 3 ثانیه بالا میاد و آماده کار میشه ، ولی حالا .نت نصب کنید ... . خیلی احتمال کمی داره که یک نفر که با .نت کار میکنه موقع عرضه نرم افزارش حالا تو نصب یا پیشنیازای نصب برنامش نصب بودن .نت رو الزام نکنه و این خودش حجم رو بیش از چندین برابر دلفی میکنه . چون اون برنامه رو مطمئن نیست که همه رو 7 نصب کنن و یا اصلا رو سیستمشون .نت داشته باشن .

حجم برنامه یه زمانی مهم بود ، زمانی که حافظه ها خیلی گرون بودن و سیستم های کامپیوتری حافظه کمی داشتن ، ولی الان دیگه اهمیت حجم فایل خیلی کم رنگ شده . برای نمونه انواع نرم افزارای جدید رو ببینید که با حجم های خیلی بالا عرضه میشن و هیچکس دیگه ملاکش حجم برنامه نیست بلکه کارایی و پرفرمنس برنامه هست . شما کار خودتونو بکنید ، همیشه برای بهانه گرفتن ، بهانه موجوده .


موفق باشید

nobody.gu3st
شنبه 08 بهمن 1390, 12:03 عصر
حرفتون کاملا متین هستش ولی خوب تو بعد امنیت و هک حجم حرف اول رو میزنه برای مثال سرور یک دانلودر و همچنین برنامه های تحت نت

lord_viper
یک شنبه 09 بهمن 1390, 09:14 صبح
حرفتون کاملا متین هستش ولی خوب تو بعد امنیت و هک حجم حرف اول رو میزنه برای مثال سرور یک دانلودر و همچنین برنامه های تحت نت
برای اینجور مسایل شما میتونین برنامتون رو با کامپوننتهای Kol بنویسین
یا اینکه فقط از توابع ویندوز استفاده کنین در این صورت حجم برنامه خروجی حدود 18-20 کیلوبایت میشه اما در این حالت شما نمیتونین از مزایای کامپوننتهای vcl استفاده کنین

BORHAN TEC
یک شنبه 09 بهمن 1390, 10:14 صبح
منم کاملاً با جناب MohsenB موافق هستم. حجم برنامه در زمان کنونی خیلی مهم نیست. من مدتی به حجم برنامه هایی که بر روی سیستمم نصب می کردم توجه می کردم و متوجه شدم که حجم اکثر برنامه هایی که نصب می کردم بیش از 30 مگابایت بود. به نظر من در زمان کنونی مشتری ها بیشترین چیزی که ملاک قرار می دهند کارایی برنامه است و نه حجم آن! در کل به نظر من اگر میشد که کتابخانه های دات را هم به فایل های اجرایی پیوند زد مطمئن باشید که حجم برنامه های آن هم کمتر از دلفی نمی شد چه بسا که این موضوع را نیز به خوبی می شد در VC++ و محیط های دیگر هم مشاهده کرد.


این حجم ها در حد فاجعه هستش بدون debug فرم خالی 1.56 بخدا این همه رو دلفی زحمت کشیدیم الان .... C#‎ به 10 کلیو هم نمیرسه
دوست عزیز یکسری کتابخانه های پایه به برنامه ها پیوند زده می شوند که نیاز برنامه شما هستند حال چه یک فرم داشته باشید و چه صد تا فرم و این به این معنی نیست که اگر برنامه شما 100 تا فرم داشته باشد حجم برنامه شما 156 مگابایت می شود.

gbg
یک شنبه 09 بهمن 1390, 16:00 عصر
فکر می کنم در نسخه جدید استایل هم به برنامه اضافه میشه ولی هنوز چک نکردم

MohsenB
یک شنبه 09 بهمن 1390, 16:09 عصر
فکر می کنم در نسخه جدید استایل هم به برنامه اضافه میشه ولی هنوز چک نکردم

سلام

اگه منظورتون "تم" هست که الان داره ، ولی ربطش به موضوع تاپیک چیه ؟

gbg
یک شنبه 09 بهمن 1390, 16:32 عصر
منظورم تو قسمت Project -> Project Skin option Editor بود
در ضمن پروژه رو تو حالت Release بزارین بعد Build کنین تو فولدر Projects\Release\Win32 ببینین به غیر از فایل اجرایی و Unit1.dcu چه فایل هایی هست
اونها هم به پروژتون پیوند خورده
سایز فایل ساخته شده برای من 894 KB (915,456 bytes) هست که فکر کنم مناسبه

این دو خط هم تو فایل dpr اضافه کنین

{$IFOPT D-}{$WEAKLINKRTTI ON}{$ENDIF}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

بازم حجم کم میشه برای من 842 کیلوبایت شد.