PDA

View Full Version : مقاله: ساخت برنامه نصب (Setup) به صورت سفارشی (Custom) با تکنیک حرفه ای MSI Wrapping



محمد باقری نسب
یک شنبه 22 خرداد 1390, 15:46 عصر
به نام خدا

یکی از دقدقه های مهم هر برنامه نویس پس از نوشتن یک نرم افزار تجاری و رسیدن به مرحله ارائه به مشتری ، ساخت و طراحی برنامه نصب و یا همان Installer می باشد.
در روند طراحی یک Installer نکات مختلفی مد نظر برنامه نویس قرار می گیرد که برخی از آنها عبارتند از:

• قابلیت کپی کردن فایلهای نرم افزار بر روی سیستم مقصد و امکان تغییر مسیر نصب نرم افزار
• ساخت میانبر (Shortcut) در بخشهای مختلف ویندوز سیستم مقصد. مثلا بر روی Desktop
• امکان دسترسی به Registry ویندوز و اعمال تغییرات مورد نیاز
• امکان دسترسی به برنامه نصب از طریق Control Panel بخش نرم افزار های نصب شده بر روی سیستم
• امکان طراحی رابط کاربری (UI) سفارشی و دلخواه جهت نمایش مراحل نصب به کاربر
• و غیره...

از چه روش هایی می توان برای ساخت برنامه نصب استفاده نمود؟

جهت خواندن ادامه مقاله و دریافت فایلهای مربوطه به آدرس زیر مراجعه نمایید:

ادامه مقاله... (http://mbnsoft.ir/index.php/article/net-framework/11-article/net-framework/19-article1.html)

http://mbnsoft.ir/index.php/article/net-framework/11-article/net-framework/19-article1.html

mohsencom
یک شنبه 22 خرداد 1390, 17:29 عصر
شما که کار به این زیبایی کردین چه خوب بود یک Sample هم از این کارتون میذاشتن و نحوه کامل استفاده از dll تا کارتون جامع و کامل باشه :قلب:

PetekDincos
یک شنبه 22 خرداد 1390, 18:03 عصر
با سلام
لطفا بیشتر توضیح بدید با تشکر

haghft
یک شنبه 22 خرداد 1390, 18:30 عصر
منم درست متوجه نشدم یه نمونه بزار لطفا

محمد باقری نسب
دوشنبه 23 خرداد 1390, 08:28 صبح
نمونه ای از عملکرد کتابخانه ضمیمه شده است.
فایل MSI هم توسط برنامه Advanced Installer 8.0 تولید شده است.

دانلود: msiwrapper_sample.zip (http://mbnsoft.ir/downloads/msiwrapper_sample.zip)

توضیح عملکرد برنامه:

bnnoor
دوشنبه 23 خرداد 1390, 11:14 صبح
تشکر دوست عزیز اما میشه لطف کنید توضیح بدید این روش شما چه مزیتی نسبت به دو روش قبلی داره؟

محمد باقری نسب
دوشنبه 23 خرداد 1390, 11:23 صبح
تشکر دوست عزیز اما میشه لطف کنید توضیح بدید این روش شما چه مزیتی نسبت به دو روش قبلی داره؟

لطف کنید مقاله رو کامل و با دقت بخونید خودتون متوجه میشید! مثل بقیه دوستان که با دقت خوندند.

bnnoor
دوشنبه 23 خرداد 1390, 13:45 عصر
شما که کار به این زیبایی کردین چه خوب بود یک Sample هم از این کارتون میذاشتن و نحوه کامل استفاده از dll تا کارتون جامع و کامل باشه :قلب:


با سلام
لطفا بیشتر توضیح بدید با تشکر


منم درست متوجه نشدم یه نمونه بزار لطفا

البته فکر میکنم دوستان هم مثل من متوجه نشدند دوست عزیز

محمد باقری نسب
دوشنبه 23 خرداد 1390, 14:05 عصر
البته فکر میکنم دوستان هم مثل من متوجه نشدند دوست عزیز

با عرض معضرت bnnoor جان دوست من. قصد بی احترامی نداشتم ولی خوب قبل از پست اول خودت من نمونه برنامه رو هم واسه شما گذاشتم قربونت برم.

مزیت این روش که توی مقاله هم هست اینه که:


با استفاده از این کتابخانه قدرت و امکانات بالا و سرعت در پیاده سازی در روش اول ، و سفارشی بودن رابط کاربری در روش دوم با یکدیگر ترکیب می شوند و نتیجه کار چیزی خواهد شد که تمامی خواسته های مارا از یک Setup ایده ال برآورده می سازد.

محمد باقری نسب
دوشنبه 23 خرداد 1390, 15:34 عصر
روند کلی اینه که کتابخانه ی MSIWrapper فایل MSI شما رو بوسیله ی کلاس Setup و توابع Install و Uninstall بارگزاری میکنه. بعد MSI رو به صورت Silent اجرا می کنه و بعد فرامین مربوطه رو واسش ارسال می کنه و نهایتا پیشرفت عملیات رو هم به شکلی خاص از اون دریافت کرده و به برنامه شما ارائه میکنه تا هر جوری که دلتون خواست نشونش بدین.

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

پس با این حساب شما به طور کلی می تونید از این به بعد بدون فکر کردن به هر یک از معایبی که روشهای قبلی داشتند ، از روش جدید استفاده کنید و در اصل به قول خودمون "همونی رو که میخوایید در بیارید"

ساختار کلاس Setup بدین شکل است:

توابع:

Install: پارامتر اول مسیر فایل MSI مورد نظر جهت نصب و پارامتر دوم مسیری که قرار است برنامه در آنجا نصب شود.
در صورتی که مشکلی در روند کار پیش نیاید مقدار True و در غیر این صورت مقدار False از تابع بر می گردد. مثلا در صورتی که برنامه قبلا نصب شده باشد مقدار برگشتی False خواهد بود.

Uninstall: تنها پارامتر ، مسیر فایل MSI مورد نظر جهت حذف برنامه می باشد.
در صورتی که مشکلی در روند کار پیش نیاید مقدار True و در غیر این صورت مقدار False از تابع بر می گردد. مثلا در صورتی که هنوز برنامه نصب نشده باشد مقدار برگشتی False خواهد بود.

خصیصه ها:

InstallationDirectory: مسیر نصب. در صورتی که برنامه قبلا نصب شده باشد حاوی مسیری است که در آن برنامه قبلا نصب شده است.
IsInstalled: جهت بررسی وضعیت کنونی نصب برنامه. که آیا برنامه پیش از این بر روی سیستم نصب هست یا خیر.
ProductCode: کد محصول که در سازنده کلاس به عنوان ورودی می بایست ارسال شود.
ProductName: نام برنامه ای که قرار است حذف و یا نصب شود.

رویداد:

OnProgress: پارامتر اول مقدار کنونی پیشرفت و پارامتر دوم حداکثر مقدار پیشرفت می باشد (که معمولا پارامتر اول جهت مقدار دهی خصیصه ی Value از ProgressBar و پارامتر دوم جهت مقدار دهی خصیصه ی Maximum). پیشرفت عملیات حذف و یا نصب نرم افزار.
مقداری که باید از Handler این رویداد برگردد مشخص می کند که آیا عملیات ادامه پیدا کند و یا خیر. (مقدار True جهت ادامه عملیات و مقدار False جهت انصراف از ادامه عملیات)

دانلود: msiwrapper_sample.zip (http://mbnsoft.ir/downloads/msiwrapper_sample.zip)

Hossis
پنج شنبه 26 خرداد 1390, 11:22 صبح
فقط یک سوال که مدتها دغدغه من بوده
این کامپوننت، به طور خودکار ، کامپوننت ها و فریم ورک مورد نیاز برای اجرای برنامه رو تشخیص میده یا باید اونها رو جداگانه به اون معرفی کنیم
البته من هنوز با اون کار نکردم ، شاید سوال من بایک نگاه به برنامه جواب داده بشه.

shahinghorbani
دوشنبه 30 خرداد 1390, 22:53 عصر
اقا شما رو به پیر به پیغمبر یکی یه لینکی چیزی بده که بشه باهاش اس کیو ال رو روی کامپیوتر مقصد نصب کرد و دیتابیس رو اتچ کرد اس کیو ال رو ها نه اس کیو ال اکسپرس با این ام اس آی میشه؟

aghayex
پنج شنبه 06 مرداد 1390, 16:56 عصر
تشکر از اینکه معلوماتتون رو بدون هیچ انتظاری در اختیار دوستان قرار می دید
یه سوال اگر رابط کاربری من که باهاش برنامه نصب رو درست می کنم با دات نت ساخته بشه خوب قبلش باید دات نت مخصوص اون برنامه رو نصب کنم تا اینکه برنامه نصب اجرا بشه و این یه نقص بزرگی هست چون یکی از کارهایی که یه برنامه نصب انجام میده نصب نرم افزار هایی هست که برنامه به اونا نیاز داره تا اجرا بشه

محمد باقری نسب
شنبه 08 مرداد 1390, 10:58 صبح
سلام مجدد به همه عزیزانم.

- در مورد دوستی که گفته بود آیا میشود SQL رو هم با این روش نصب نمود باید بگم که صد در صد شما امکان انجام این عمل را دارید. در اصل در این تکنیک جهت نصب هرگونه نرم افزاری تمامی قابلیتهای مورد نیاز شما را دارا میباشد. تنها شما باید با یک IDE مناسب مانند InstallSheild به خوبی کار کرده و خم و چم آن به دستتان بیاید و بعد از آن متوجه خواهید شد که کاری بس ساده و مفرحی است.

- دوست عزیزی که در مورد برنامه های دات نت که قرار است حکم رابط کاربری این تکنیک را داشته باشند باید عرض کنم که اتفاقا این روش تنها برای برنامه های دات نت پیاده سازی شده است تا بتوان به خوبی رابط کاربری آن را طراحی نمود. جهت انجام این کار هم شما نیاز به نرم افزار Xenocode دارید که برای شما دات نت را در دل برنامه شما میگنجاند. البته دات نتی که شما باید تحت آن Setup را پیاده سازی نمایید بهتر است دات نت 2 باشد چرا که حجم آن حدود 20 مگابایت بوده و برای Setup یک نرم افزار ، حجم معقولی است.

در صورتی که سوالی دیگری بود در خدمتم. موفق باشید...

PetekDincos
سه شنبه 01 شهریور 1390, 07:22 صبح
با سلام
دوست عزیز اگه می شه شما محبت کنید و با یه مثال مراحل نصب Sql Express رو با این روش توضیح بدید ممنون می شیم با تشکر