PDA

View Full Version : مقاله: چطور یک برنامه قابل حمل بسازیم!؟



kral_pontiac
سه شنبه 12 آبان 1388, 20:59 عصر
در این مطلب قصد ندارم از دید یک کاربر معمولی به نرم افزارهای پرتابل نگاه کنم. همانطور که از تیتر مطلب پیداست، میخواهم از دید یک برنامه نویس، نحوه نوشتن یک برنامه قابل حمل را جدا از زبان و محیط برنامه نویسی و البته برای پلت فرم ویندوز مورد بررسی قرار دهم. در آخر نیز به بررسی قابل حمل بودن برنامه های نوشته شده در پلت فرم دات نت و زبان برنامه نویسی دلفی خواهم پرداخت.

یک برنامه قابل حمل یا Portable Application(=پرتابل) برنامه ای است که به صورت مستقل و بدون نیاز به نصب در یک سیستم عامل اجرا شود و به درستی کار کند. معمولاٌ از این برنامه ها در حافظه های قابل حمل مانند CD و USB flash drive استفاده می شود. این روزها کاربران بسیاری با این برنامه ها آشنایی دارند و همیشه یکی دو جین از این نرم افزارها را روی کول دیسک خودشان به همراه دارند.
واژه “برنامه قابل حمل” نباید با “قابلیت حمل برنامه” اشتباه گرفته شود. منظور از “قابلیت حمل برنامه” یا Software Portability (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FSoftware_portability) این است که سورس کد یک برنامه را بتوان برای پلت فرم های مختلف کامپیوتری کامپایل و بر روی آن ها اجرا کرد. برنامه های قابل حمل معمولاٌ برای تنها یک پلت فرم خاص ایجاد می شوند و در برخی مواقع حتی نیاز به پیش نیازهایی برای اجرا در همان پلت فرم دارند.
برنامه های قابل حمل برای این طراحی شده اند که :


بدون نیاز به نصب روی سیستم عامل، اجرا شوند
هیچ ردپایی از خود در سیستم عاملی که اجرا می شوند، باقی نگذارند
داده ها و تنظیماتشان را در کنار خودشان (حافظه قابل حمل) نگهداری کنند


پس شما برای اینکه یک برنامه قابل حمل بسازید باید شرط های زیر را رعایت کنید :
1- یک فایل اجرایی از برنامه بسازید که در یک سیستم عامل خاص بدون نیاز به نصب فایل هایی خاص، اجرا شود و کار اصلی خودش را انجام دهد
برای این کار شما باید مطمئن شوید که برنامه شما برای اجرا به هیچ فایلی وابسته نیست، یا اگر وابسته است، از نوع فایل های ActiveX (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FActiveX) و DLLهای COM (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FComponent_Object_Model) نیست! به این علت که این نوع فایل ها باید در سیستم عامل ویندوز کاربر ثبت شوند و معمولاٌ دردسر های زیادی با خود به همراه دارند. اگر فایل اجرایی برنامه شما به فایل های معمولی متنی یا نوع دار (مثلاً باینری) وابسته است، برای اجرا روی سیستم های مختلف مشکلی نخواهد داشت. در مورد وابستگی برنامه شما به یک دیتابیس هم باید به نوع فایل دیتابیس خود توجه کنید. دیتابیس های SQL Server را که به هیچ وجه منطقی نیست در برنامه های قابل حمل استفاده کنید، چون این نوع دیتابیس در برنامه های چندکاربره و تحت شبکه استفاده می شود. دیتابیس های Microsoft Access هم به علت وابستگی به یکسری فایل خاص ممکن است برنامه شما را برای اجرا با مشکل مواجه کند. بهترین انتخاب برای دیتابیس در یک برنامه قابل حمل SQLite (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fsqlite.org%2F) خواهد بود. SQLite یک دیتابیس توکار است که هم سبک است و هم ساده و البته رایگان.
2- برنامه شما هیچ تغییری در سیستم عامل کاربر یا فایل های سیستمی آن ندهد
معمولاً کاربران برنامه های قابل حمل را روی حافظه فلش خود ذخیره می کنند تا به راحتی بتوانند آن ها را روی کامپیوترهای مختلف اجرا کنند و به مقصود خود برسند. در واقع برنامه های قابل حمل نقش مهمان ناخوانده را برای یک سیستم عامل دارند. بدون اینکه نصب شوند و یا خود را معرفی کنند، اجرا می شوند و کار خودشان را انجام می دهند. به همین علت یک برنامه قابل حمل نباید تغییری ناخواسته در سیستم عامل کاربر ایجاد کند، زیرا ممکن است این اولین و آخرین باری باشد که در این سیستم عامل اجرا می شود. به طور مثال یک برنامه قابل حمل به هیچ وجه نباید رجستری ویندوز را تغییر دهد.
البته در این مورد یک حالت خاص داریم، زمانی که برنامه قابل حمل برای تغییر قسمتی از سیستم عامل ساخته شده، مثلاً یک نرم افزار Registry Tweak یا یک برنامه برای حذف فایل های اضافی از روی سیستم عامل، که می توانید در این گونه موارد این شرط را رعایت نکنید و البته که کاربر از هدف اجرای نرم افزار شما آگاه است.
3- تنظیمات و داده های احتمالی برنامه را در کنار خود برنامه ذخیره کنید
تنظیمات یک برنامه قابل حمل نیز باید قابل حمل باشد! این جمله بدین معنی است که اگر کاربر در یک سیستم عامل تنظیمات برنامه را تغییر داد، دفعه بعد و در یک سیستم عامل دیگر برنامه را با تنظیمات جدیدش (که در سیستم عامل قبلی تغییر داده) اجرا کند. پس نباید تنظیمات برنامه را در هارد دیسک های یک کامپیوتر ذخیره کرد (مگر اینکه برنامه از روی هارد دیسک اجرا شود)، بلکه باید در کنار برنامه (معمولاٌ فلش دیسک) ذخیره نمود. یادتان باشد که با توجه به قانون دوم، شما نباید تنظیمات برنامه خود را در رجیستری ویندوز ذخیره کنید. در این حالت بهترین راه ذخیره سازی تنظیمات در فایل های متنی با ساختار INI (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FINI_file) در کنار فایل اجرایی برنامه شماست.

http://farasun.files.wordpress.com/2009/10/csharpportable.png (http://farasun.files.wordpress.com/2009/10/csharpportable.png)
نوشتن برنامه قابل حمل در پلت فرم دات نت
اکثر برنامه های نوشته شده با زبان های دات نتی پرتابل هستند! شاید بگویید که وابستگی به دات نت فریم ورک، پرتابل بودن نرم افزارهای نوشته شده در دات نت را نقض می کند. اما این تفکر شما اشتباه است. تمام نرم افزارهای پرتابل یک پیش نیاز دارند، آن هم پلت فرم اجراست. به طور مثال یک برنامه پرتابل فقط روی ویندوز اکس پی اجرا می شود. این پرتابل بودن این برنامه را نقض نمی کند، فقط پیش نیاز اجرا که همان پلت فرم است را مشخص می کند. در مورد دات نت نیز همینطور است. دات نت یک پلت فرم است که برنامه های نوشته شده توسط این فریم ورک برای اجرا به آن نیاز دارند. این به هیچ وجه پرتابل بودن برنامه های دات نت را نقض نمی کند.
پس در حالت عادی تمام نرم افزارهای تحت دات نت قابل حمل هستند. اگر یکی از شرط های بالا را نقض کنید، آن وقت برنامه دات نت خود را غیر قابل حمل کرده اید!
نوشتن برنامه قابل حمل در دلفی
در حالت عادی، برنامه های نوشته شده به این زبان، شرط اول را دارند. یعنی به فایل خاصی برای اجرا وابسته نیستند. کامپایلر دلفی کد Native تولید می کند، و به همین علت فایل اجرایی آن روی هر ویندوزی و بدون احتیاج به نصب اجرا می شود. مگر اینکه خود شما با وابسته کردن فایل اجرایی برنامه خود به کامپوننت خاصی، این شرط را نقض کنید. در دلفی شما فقط کافیست که دو شرط آخر را رعایت کنید تا یک برنامه پرتابل عالی ساخته باشید.

http://farasun.wordpress.com/2009/10/08/how-to-develop-a-portable-application/ (http://forum.azarteam.com/redirector.php?url=http%3A%2F%2Ffarasun.wordpress. com%2F2009%2F10%2F08%2Fhow-to-develop-a-portable-application%2F)

seyed_farid
پنج شنبه 17 دی 1388, 15:05 عصر
با سلام
اصولاً چرا پورتابل و چرا باتوجه به قابليتهاي برنامه هاي پورتابل و خصوصيتهاي آنها در عدم دستكاري ويندوز و فايلهاي ديگر سيستم ، استفاده از اين روش فراگير نيست و اينقدر برنانه ها را پيچيده و وابسته به هزار جور فايل ديگه ميكنند؟:گیج:

alidehban
شنبه 08 اسفند 1388, 01:14 صبح
با سلام
اصولاً چرا پورتابل و چرا باتوجه به قابليتهاي برنامه هاي پورتابل و خصوصيتهاي آنها در عدم دستكاري ويندوز و فايلهاي ديگر سيستم ، استفاده از اين روش فراگير نيست و اينقدر برنانه ها را پيچيده و وابسته به هزار جور فايل ديگه ميكنند؟:گیج:


بهترین جایی که برنامه های پورتابل بدرد میخورن وقتیه که سیستم عاملی که باهاش بالا اومدی خودش پورتابل باشه! :متفکر: