ايجاد Setup در ويژوال استوديو - قسمت اول

جمعه 31 خرداد 1392

ايجاد Setup در ويژوال استوديو - قسمت اول <br/> اگر تاكنون اپليكيشن هاي تحت ويندوز طراحي كرده باشيد، حتما با چالش بزرگ تحويل نرم افزار به مشتري مواجه شده ايد. اين مشكل زماني بيشتر نمود پيدا مي كند كه محصول توليد شده بين تعداد زيادي از مشتريان توزيع شود و شما عملا نتوانيد در محل نصب برنامه حضور داشته باشيد.

 

اگر تاكنون اپليكيشن هاي تحت ويندوز طراحي كرده باشيد، حتما با چالش بزرگ تحويل نرم افزار به مشتري مواجه شده ايد. اين مشكل زماني بيشتر نمود پيدا مي كند كه محصول توليد شده بين تعداد زيادي از مشتريان توزيع شود و شما عملا نتوانيد در محل نصب برنامه حضور داشته باشيد. وابستگي اپليكيشن ها به دانت نت فريم ورك، كامپوننت ها و سرويس پايگاه داده ها (اغلب اس كيو ال اكسپرس) اجراي درست برنامه بر روي سيستم ميزبان را با چالش هاي بزرگي مواجه مي سازد.

پس از اتمام فرآيند توليد نرم افزار و انجام كليه تست ها، طي مجموعه فعاليت هايي كه Software Deployment ناميده مي شود، نرم افزار براي استفاده نهايي در اختيار كاربران قرار مي گيرد. يكي از اين فعاليت ها، Setup مي باشد. Setup كردن توسط برنامه اي به همين نام انجام مي شود. برنامه Setup مجموعه اي از عمليات را بر روي سيستم ميزبان انجام مي دهد كه برخي از آنها عبارت اند از:

 

  • كپي كردن فايل هاي اپليكيشن شامل فايل اجرايي، كتابخانه ها، منابع و ... بر روي سيستم ميزبان
  • ثبت مقادير مورد نياز از قبيل مسير نصب در رجيستري ويندوز سيستم ميزبان
  • ثبت فرمت فايل مورد استفاده توسط برنامه بر روي سيستم ميزبان
  • نصب نيازمندي هاي جانبي مورد نياز براي اجراي برنامه
  • ايجاد ميانبرهاي لازم بر روي سيستم ميزبان براي اجراي برنامه و دسترسي به فايل ها از قبيل فايل راهنما

 

براي ايجاد فايل Setup برنامه هاي زيادي وجود دارند كه مهم ترين آنها InstallShield مي باشد كه جديدا نسخه Limited Edition آن به عنوان يك تمپليت در بخش Setup and Deployment ويژوال استوديو 2010 ارائه شده است. اگر قصد داشته باشيد از تمامي امكانات InstallShield بهره مند شويد نيازمند تهيه نسخه كامل آن خواهيد بود!

يك راه حل ديگر ايجاد Setup از طريق ويژوال استوديو مي باشد. ويژوال استوديو در تمامي نسخه هاي خود پروژه Setup را در بخش Setup and Deployment ارائه كرده است. به كمك اين پروژه مي توان اغلب نيازهاي فرآيند Software Deployment را پوشش داد. خروجي حاصل از اين پروژه يك فايل Setup است كه كاربر نهايي (End User) مي تواند به وسيله آن اپليكيشن را بر روي سيستم خود نصب كند. در اين مقاله سعي بر آن است تا مهم ترين نكات ايجاد پروژه Setup مورد بررسي قرار گيرند.


نگارش دات نت فريم را با دقت انتخاب كنيد!


يكي از مهم ترين نكاتي كه برنامه نويسان و توسعه دهندگان بايد به آن توجه داشته باشند، نگارش (Version) دات نت فريم وركي ست كه اپليكيشن خود را بر مبناي آن پياده سازي مي كنند. اگر نسخه اي از دات نت فريم ورك كه اپليكيشن با آن توسعه پيدا كرده است بر روي سيستم ميزبان نصب نشده باشد، برنامه  اجرا نخواهد شد. شركت مايكروسافت پس از ويندوز ويستا، دات نت فريم ورك را به عنوان يكي از كامپوننت هاي ويندوزي معرفي كرد. اين بدين معناست كه با نصب ويندوز تمامي نسخه هاي دات نت فريم ورك كه تا زمان انتشار ويندوز، پشتيباني شده اند، نصب خواهند شد. ولي با توجه به اينكه هنوز طيف وسيعي از كاربران در كشور از نسخه ويندوز XP (و حتي نسخه هاي قديمي تر!) استفاده مي كنند، بايد به اين امر توجه كامل داشت. توصيه مي شود كه تمامي نيازمندي هاي اپليكيشن در مرحله طراحي بررسي شده و پايين ترين نگارش دات نت فريم ورك براي پياده سازي آن در نظر گرفته شود. مثلا اگر قصد استفاده از كتابخانه هاي WPF، WCF و مباحث جديد سال هاي اخير را نداريد، نسخه 2.0 دات نت فريم ورك جوابگوي نيازهاي شما خواهد بود. بسياري از برنامه نويسان در مرحله Deploy متوجه اين معضل شده كه رفع آن ممكن است زمانبر و حتي در پاره اي از موارد غيرممكن باشد. انتخاب نگارش درست در حجم Setup نيز ايفاي نقش مي كند. از آنجايي كه در پاره اي مواقع ممكن است Setup از طريق دانلود در اختيار كاربران نهايي قرار گيرد اين حجم نيز حائز اهميت خواهد بود. در ادامه نحوه ايجاد پروژه Setup و نكات مهم پيرامون آن مورد بررسي قرار مي گيرند.


ايجاد پروژه Setup


براي اينجاد پروژه Setup مسير زير را دنبال كنيد:


 

File > New > Project ... > Other Project Types > Setup and Deployment > Setup Project

 


پروژه Setup بخش هايي را در اختيار قرار مي دهد كه در شكل زير نمايش داده شده اند.


 


اين بخش ها عبارت اند از:
  • File System : سيستم فايل ميزبان را در اختيار قرار مي دهد. تمامي فايل هايي كه بايد بر روي سيستم ميزبان كپي شوند در اين قسمت مشخص مي شوند.
  • Registry : از طريق اين بخش مي توان كليدهاي مورد نظر را به رجيستري سيستم ميزبان اضافه كرد.
  • File Types : امكان ثبت ساختار فايل جديد در سيستم ميزبان را ميسر مي سازد.
  • User Interface : واسط كاربري برنامه نصب را ارائه مي دهد. امكان افزودن و جابجا كردن ديالوگ ها بر حسب نياز در اين قسمت فراهم شده است.
  • Custom Actions : اگر عمل خاصي در حين يكي از مراحل نصب يا حذف اپليكيشن مد نظر باشد، مي توان از اين قسمت استفاده كرد.
  • Launch Condition : اگر لازم باشد شروطي براي عمليات نصب بررسي شويد، مثل وجود فايل يا نگارش خاصي از برنامه، از طريق اين قسمت مي توان آنها را تعريف كرد.
همانطور كه در شكل ديده مي شود، علاوه بر پروژه PdSetup، دو پروژه ديگر در سناريوي مورد بررسي مقاله وجود دارند. PdWinApp پروژه اصلي سناريوي مورد بررسي مقاله است كه يك ويندوز اپليكيشن مي باشد. PdDeploy كتابخانه كمكي ست كه در مراحل نصب مورد استفاده قرار خواهد گرفت. قصد بر آن است كه براي خروجي PdWinApp يك فايل Setup تهيه شود.

گام اول

در گام نخست، به سراغ بخش File System رفته، فايل هايي را كه Setup مي بايست آن ها را بر روي سيستم ميزبان كپي كند، به اين بخش اضافه كنيد. File System به صورت پيش فرض شامل سه پوشه اصلي بر روي سيستم ميزبان مي باشد:
  • Application Folder : تمامي فايل هايي كه در اين پوشه قرار داده شوند، در پوشه برنامه كه به صورت پيش فرض در Program Files ايجاد مي شود، كپي خواهند شد.
  • User's Desktop : دسكتاپ كاربر نهايي را براي ايجاد ميانبرها در اختيار قرار مي دهد.
  • User's Programs Menu : منوي برنامه هاي كاربر نهايي را در اختيار قرار مي دهد و پوشه برنامه به همراه ميانبرها را مي توان به اين قسمت اضافه كرد.
مي توان تمامي فايل هاي خروجي يك پروژه را (شامل فايل اجرايي و كتابخانه هاي مورد استفاده) به صورت يكجا با اضافه كردن Project Output به Setup اضافه كرد.


در پنجره ظاهر شده، پروژه ي مورد نظر و نوع فايل هايي كه قصد افزودن آنها به Setup را داريد، انتخاب كنيد.


اين كار را مي توانيد براي پروژه هاي ديگر و يا نوع فايل هاي مورد نظر تكرار كنيد. پس از آن مي توان ميانبرهاي برنامه را به دسكتاپ و منوي برنامه ها اضافه كنيد. براي اين منظور فولدر مورد نظر را انتخاب كنيد. (مثلا User's Desktop) سپس از منوي كليك راست بر روي گزينه ... Create Shortcut كليك كنيد. در پنجره ظاهر شده خروجي خود يا فايل مد نظر را كه قرار است ميانبر آن را اجرا كند، انتخاب كنيد.



نكته آخر اينكه از طريق كليك راست در بخش File System مي توان هر يك از پوشه هاي استاندارد ويندوزي را به پروژه اضافه كرد. سپس فايل هايي را كه بايد در پوشه ي خاص كپي شوند، انتخاب كرد.



گام دوم

پس از اضافه كردن تمامي فايل ها و منابع در بخش File System، مي توان به تنظيم ديالوگ ها (واسط كاربري) Setup پرداخت. همانطور كه قبلا هم اشاره شد، براي اين منظور به بخش User Interface رفته و از طريق منوي كليك راست به اضافه كردن يا جابجا كردن ديالوگ ها بپردازيد. (همانطور كه در تصوير مشاهده مي شود، Setup داراي دو حالت اجراي معمولي و  Administrative مي باشد كه هر حالت مي تواند ديالوگ ها و واسط كاربري خاص خود را داشته باشد.)


در اغلب موارد لازم است در حين نصب، اطلاعاتي از كاربر دريافت شوند. با توجه به نوع اطلاعات (boolean، string  و ...) ديالوگ هاي مختلفي فراهم شده اند كه مي بايست مناسب ترين ديالوگ براي نياز خود را انتخاب كنيد.


پس از انتخاب ديالوگ مورد نظر، چنانچه از انواع ديالوگ هاي داراي كنترل هاي واسط كاربري باشد، مي توان از طريق پنجره Properties، متن ليبل كنترل ها و نيز عدم مشاهده شدن كنترل هاي غيرضروري را وارد كرد. 


EditProperty، نامي است كه مقدار وارد شده توسط كاربر يعني EditValue را در اختيار قرار مي دهد. مي توانيد مقادير پيش فرض را به اسامي مورد نظر خود تغيير دهيد. (در ادامه نحوه استفاده از مقادير وارد شده توسط كاربر بررسي خواهد شد)

نكته : فرم نوع Splash براي نمايش تصوير در ابتداي ويزارد Setup در نظر گرفته شده است. اندازه تصوير آن 317*477 مي باشد كه در بخش Properties قابل انتخاب مي باشد. همچنين تمامي ديالوگ ها يك تصوير به نام BannerBitmap براي نمايش در قسمت بالاي فرم دارند. اندازه بنر نيز 68*496 مي باشد. اگر قصد داريد از تصاوير مورد نظر خود (و نه تصاوير پيش فرض) استفاده كنيد، پس از طراحي، آنها را در بخش File System به پوشه Application Folder اضافه كنيد. (براي اين منظور مي توانيد پوشه اي به نام Resources در Application Folder ايجاد كنيد) سپس هنگام انتخاب در پنجره Properties، كافيست كه تصوير مورد نظر خود را از پوشه اي كه براي اين منظور ايجاد كرده ايد، انتخاب كنيد.

گام سوم

در اين مرحله، نيازمندي هاي لازم براي اجراي اپليكيشن خود را مشخص كنيد. همانطور كه در ابتداي مقاله اشاره شد، انتخاب درست نگارش دات نت فريم ورك بر فرآيند نصب برنامه تاثيرگذار خواهد بود. جهت تعيين نگارش دات نت فريم ورك بر روي سيستم ميزبان، از بخش Launch Conditions، روي گزينه Net Framework. كليك كرده از پنجره Properties نسخه را مطابق شكل زير انتخاب كنيد.


پس از تعيين نگارش دات نت فريم ورك مسير Project > Properties را انتخاب كرده، در پنچره ظاهر شده بر روي ... Prerequisites كليك كنيد. در اين قسمت مي توان تمامي نيازمندي هاي اپليكيشن را مشخص كرده، از Setup بخواهيد كه آنها را در صورتي كه بر روي سيستم ميزبان نصب نباشند، به صورت خودكار نصب كند.


همانطور كه مشاهده مي كنيد، تمامي كامپوننت هاي پركاربرد در اين ديالوگ فهرست شده اند (Sql Server 2005 Express Edtion SP2 x86 در انتها قرار گرفته و در تصوير ديده نمي شود). انتخاب گزينه Download prerequisites from the same location as my application باعث مي شود كه تمامي اين كامپوننت پس از Build در كنار فايل Setup قرار بگيرند. دقت داشته باشيد كه در كنار فايل اصلي Setup (در تصوير زير PdSetup.msi) فايل ديگري با نام setup.exe ايجاد شده است. براي نصب كامپوننت هاي مورد نياز برنامه بايد اين فايل هنگام نصب اجرا شود. با اجراي آن برنامه نصب بررسي هاي لازم بر روي سيستم ميزبان را انجام داده، در صورت عدم نصب يكي از نيازمندي ها، آنها را نصب مي كند. پس از اين مرحله Setup اصلي به صورت خودكار اجرا مي شود.



نكته : Setup وابسته به دات نت فريم ورك نمي باشد. اما براي اجراي آن بايد Windows Installer 3.1 بر روي سيستم ميزبان نصب باشد. معمولا اين كتابخانه همراه ويندوز نصب مي شود اما در مواردي كه اين كتابخانه نصب نشده باشد، نصب آن براي اجراي Setup ضروري خواهد بود. به همين دليل گزينه Windows Installer 3.1 به صورت پيش فرض انتخاب شده است.


چالشي بزرگ : پايگاه داده و اس كيو ال سرور!

يكي از چالش هاي بزرگ اغلب برنامه نويسان، نصب اس كيو ال سرور و اضافه كردن پايگاه داده به آن مي باشد. اگر برنامه شما از پايگاه داده براي ذخيره سازي اطلاعات استفاده مي كند، نيازمند نصب اس كيو ال سرور بر روي سيستم ميزبان و پيوست كردن پايگاه داده به آن خواهيد بود. در گام سوم طريقه نصب خودكار اس كيو ال سرور نسخه اكسپرس بيان شد. اگر با ويژوال استوديو 2010 كار مي كنيد، اس كيو ال اكسپرس موجود در كامپوننت ها نسخه 2008 آن خواهد بود. اما بايد راه حلي براي پيوست كردن پايگاه داده به اس كيو ال سرور ارائه كرد. Custom Actions دقيقا براي سناريوهاي اين چنيني در نظر گرفته شده است. اگر به اين قسمت مراجعه كنيد، خواهيد ديد كه Custom Action را مي توان براي يكي از مراحل زير تعريف كرد:


  • Install : مرحله نصب
  • Commit :  مرحله تاييد پس از نصب
  • Rollback : مرحله انصراف و بازپس خواندن عمليات نصب
  • Unistall : مرحله حذف اپليكيشن از سيستم
همانطور كه اشاره شد يكي از پروژه هاي ارائه شده در سناريوي نصب، PdDeploy مي باشد. اين پروژه نيز به عنوان يك خروجي به Setup اضافه شده است. نوع اين پروژه Class Library بوده كه شامل يك كلاس از نوع Installer مي باشد. (اين كلاس را از مسير ... Project > Add New Item اضافه كنيد) كلاس PdInstaller عمليات مورد نظر در هنگام نصب براي پيوست را انجام مي دهد. Primary output from PdDeploy به عنوان يك Custom Action زير شاخه Install اضافه شده است. از طريق كليك راست و انتخاب آن مي توان اين كار را انجام داد.


پس از اين كار سراغ Properties رفته و براي Custom Action اضافه شده مقادير پارامتري CustomActionData را وارد كنيد. اين مقادير در اختيار كلاس Installer قرار خواهند گرفت. هر مقدار با / شروع شده و يك نام اختصاصي دارد. مقادير را با يك فاصله از هم جدا كنيد. براي مقاديري كه از چند كلمه تشكيل شده اند حتما از "" استفاده شود.

قبل از اينكه محتواي كلاس PdInstaller بررسي شود، لازم است سناريوي پايگاه داده مشخص شود. معمولا دو سناريوي رايج وجود دارد:
  • پايگاه داده هنگام نصب بايد ايجاد شود (در مواردي كه اطلاعات پايه و يا اطلاعات ديگر وجود ندارد)
  • پايگاه داده هنگام نصب بايد پيوست شود (معمولا به دليل وجود اطلاعات در پايگاه داده)
البته مي توان سناريوي دوم را به شكل سناريوي اول پيش برد. و پس از ايجاد پايگاه داده، اطلاعات پايه و مورد نياز را ثبت كرد (اين روش اصولي تر هست). در اين مقاله سناريوي دوم مورد بررسي قرار مي گيرد. بنابراين ساختار كلاس PdInstaller به شكل زير خواهد بود (به پروژه Setup فايل هاي فيزيكي پايگاه داده به نام PdDataBase اضافه شده اند):

 

تابع Install به شكلي كه ديده مي شود، بازنويسي شده است. استفاده از پارامترهاي ارسال شده به كلاس هم از طريق Context و نام هر متغير امكانپذير مي باشد. اگر قصد ايجاد پايگاه داده را داريد، كافيست commandString را با اسكريپت ايجاد پايگاه داده و جداول و ... جايگزين كنيد. لازم به ذكر است كه  در سيستم هاي عامل ويستا و 7 به دليل مسائل امنيتي بهتر است برنامه نصب به صورت Run as administrator اجرا شود. 

گام آخر

به عنوان آخرين مرحله تنظيمات پروژه Setup را چك كنيد. برنامه Unistall به صورت خودكار در فهرست برنامه هاي نصب شده در سيستم مقصد ثبت شده و كاربر مي تواند هر زماني نسبت به حذف آن اقدام نمايد. در تنظيماتي كه در شكل زير نمايش داده شده اند، مي توان آيكون برنامه حذف را نيز انتخاب كرد.



حاشيه

سناريويي كه در اين مقاله مورد بررسي قرار گرفت، رايج ترين سناريوي Setup مي باشد. اين سناريو با ويژوال استوديو 2008 پياده سازي شده است. ممكن است نيازهاي مختلفي در سناريوهاي ديگر مطرح باشند كه با استفاده از امكانات پروژه Setup قابل حل مي باشند. مثلا نصب سرويس ويندوز يكي ديگر از اين موارد مي باشد. اگر سوالي در خصوص مواردي كه مطرح نشده اند داريد، در بخش پيام اين مقاله آنها را مطرح كنيد.


منابع براي مطالعه بيشتر



مجید رمضانی

نویسنده 24 مقاله در برنامه نویسان
  • C#.net
  • 4k بازدید
  • 1 تشکر

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید