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

جمعه 31 خرداد 1392

ايجاد Setup در ويژوال استوديو - قسمت دوم <br/> مورد بحث و بررسي قرار گرفت. رئوس اصلي مقاله قبل را مي توان در فهرست زير خلاصه كرد

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

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


32 يا 64 بيتي، مساله اين است!

در سال هاي اخير و با گسترش معماري 64 بيتي سيستم هاي عامل، معضل ديگري بر سر راه برنامه هاي نصب قرار گرفت. نكته مهمي كه هنگام ايجاد پروژه نصب بايد مورد توجه قرار گيرد، 32 يا 64 بيتي بودن نسخه سيستم عامل مي باشد. اين مساله مستقيما بر روي خروجي پروژه (ها) و نيز كامپوننت هايي كه Setup وابسته به آنهاست، تاثير مي گذارد. در مورد پروژه هاي ويندوزي به راحتي با مراجعه به بخش Properties > Debug مي توان پلتفرم مناسب را انتخاب كرد. حالت پيش فرض Any CPU بوده كه معماري هاي x86 و x64 را پوشش مي دهد. اما در مورد كامپوننت ها اينگونه نيست. به عنوان مثال دات نت فريم ورك ها و يا اس كيو ال اكسپرس با توجه به نوع معماري سيستم عامل، نسخه هاي نصب 32 و 64 بيتي جداگانه اي را ارائه مي دهند.

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

 






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

با اين توضيحات، دو سوال مهم در رابطه با اين كامپوننت ها مطرح مي شود:

 

  • برنامه نصب با چه مكانيزمي اين كامپوننت ها را - در صورت نياز - نصب مي كند؟
  • ويژوال استوديو چگونه اين كامپوننت ها را فهرست مي كند و آيا مي توان كامپوننت هاي ديگري را به اين فهرست افزود؟
در ادامه مقاله به اين سوالات پاسخ داده مي شود.

 

Bootstrapper چيست؟

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

 





اما نكته مهم ديگري نيز وجود دارد و آن اينكه در كنار PdSetup.msi فايل اجرايي ديگري به نام setup.exe ايجاد مي شود. اين فايل تحت عنوان bootstrapper شناخته مي شود كه قبل از نصب اپليكيشن، سيستم ميزبان را ارزيابي كرده در صورت لزوم تمامي كامپپوننت ها را به صورت يكجا بدون درگيري كاربر نصب مي كند. bootstrapper ويژگي هاي زير را داراست:

  • Minimal initial download size
  • Minimal platform requirements
  • Platform detection
  • Component detection and download as required
  • Handling reboots
  • License agreements
  • Install from Web, file shares, and local drives
  • Extensible to custom redistributables


دقت داشته باشيد كه هنگام نصب بايد bootstrapper يا به عبارتي setup.exe اجرا شود. اجراي مستقيم PdSetup.msi در صورت عدم نصب نيازمندي ها با خطا مواجه خواهد شد. به اين ترتيب سوال اول پيش روي مقاله پاسخ داده شد. سوال دوم اين است كه bootstrapper چگونه وظايف خود را انجام مي دهد؟ يا به عبارت ديگر bootstrapper چگونه با تشخيص پلتفرم و نيازمندي ها اقدام به نصب يكپارچه آنها مي كند؟

 

پكيج نصب چيست؟

هر يك از كامپپونت هاي فهرست شده در ديالوگ نيازمندي هاي ويژوال استوديو، يك پكيج محسوب مي شود. پكيج نصب مي تواند شامل يك يا چند فايل نصب باشد كه عهده دار نصب آن كامپوننت اند. هنگام نصب نسخه هاي مختلف ويژوال استوديو، پكيج هاي نصب متناسب نيز بر روي سيستم نصب مي شوند. براي بررسي اين پكيج ها مي توان به مسيرهاي زير مراجعه كرد:

 

VS 2008 : Installation Path\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages
VS 2010 : Installation Path\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages
هر پكيج اطلاعات مرتبط (Metadata) با خود را در يك فايل package manifest تحت فرمت xml نگهداري مي كند. به عنوان مثال فايل manifest مربوط به پكيج دات نت فريم ورك 2.0 به شكل زير مي باشد:

 

 

 

اين  فايل شامل سه تگ اصلي ست:
  •  <Package> : اين تگ شامل اطلاعاتي از قبيل نام نمايشي پكيج در واسط كاربري (مانند ويژوال استوديو)، فرهنگ پكيج (culture) و فايل اطلاعات لايسنس جهت نمايش به كاربر مي باشد.
  •  <PackageFiles> : اين تگ فهرستي از تمامي فايل هاي موجود در پكيج را شامل مي شود. مثلا براي دات نت فريم ورك 2.0 - نسخه زبان انگليسي - فايل لايسنس نيز در كنار آن قرار داده شده است.
  •  <Strings> : اين تگ شامل تمامي پيام ها و رشته هاي نمايشي براي فرهنگ (culture) استفاده شده در پكيج مي باشد. هر رشته با يك نام يكتا مشخص شده است و مي توان در قسمت هاي ديگر با اشاره به اين نام ها، از محتواي رشته ها استفاده كرد.


هر يك از فايل هاي نصبي نيز شامل يك فايل metadata بوده كه اطلاعات جزئي تر در مورد چگونگي نصب محصول را دربر مي گيرد. براي دات نت فريم ورك 2.0 فايل manifest به شكل زير مي باشد.

 

 


تگ هايي كه در اين فايل از اهميت بيشتري برخوردارند، عبارت اند از:


  • <ProductCode> : هر محصول بايد شامل يك ID يكتا باشد كه هنگام نصب براي شناسايي آن مورد استفاده قرار مي گيرد.
  • <PackageFiles> : فهرست فايل هاي مرتبط با نصب محصول در اين تگ ارائه مي شود.
  • <InstallChecks> : بررسي هايي كه جهت نصب نيازمندي بر روي سيستم ميزبان صورت مي گيرند، در اين تگ مشخص مي شوند.
  • <Commands> : اكشن هايي هستند كه bootstrapper بايد در حين عمليات نصب آنها را فراهم كند.
  • <InstallConditions>: شرايطي هستند كه تحت آنها bootstrapper بايد براي نصب، عدم نصب و يا اعلام خطا اقدام كند.
  • <ExitCodes> : هر فايل اجرايي مي تواند كدي را پس از نصب برگرداند. اين تگ نحوه برخورد bootstrapper با كدهاي برگردانده شده توسط برنامه نصب را مشخص مي كند.


به اين ترتيب boostrapper وظايف خود را با دريافت اطلاعات از فايل هاي manifest پكيج ها انجام مي دهد.


يك خبر بد، يك خبر خوب!

خبر بد اينكه پكيج هايي كه تا قبل از نسخه ويژوال استوديو 2010 ارائه شده اند، فقط شامل نسخه 32 بيتي محصولاتشان مي باشند. اين بدين معناست كه پكيج كامپوننت هاي مهمي چون دات نت فريم ورك 2.0 و اس كيو ال اكسپرس 2005 فقط شامل نسخه 32 بيتي اين محصولات بوده و در نتيجه بر روي سيستم هاي 64 بيتي با مشكل نصب مواجه خواهند شد! و خبر خوب اينكه اين معضل در ويژوال استوديو 2010 و براي نسخه هاي جديدتر مرتفع شده است. به عنوان مثال پكيج دات نت فريم ورك 4.0 و يا اس كيو ال اكسپرس 2008 شامل هر دو نسخه 32 و 64 بيتي بوده و متناسب با نياز سيستم ميزبان يكي از آن دو نصب خواهند شد.

 

پكيج هاي اختصاصي

 

ممكن است در پاره اي موارد (مانند سناريوي 64 بيتي) نياز ايجاد پكيج هاي اختصاصي وجود داشته باشد. براي اين منظور ابزاري به نام Bootstrapper Manifest Generator ارائه شده است. با نصب اين ابزار مي توان به راحتي پكيج هاي دلخواه و مورد نياز - جهت رفع كبودها -  را طراحي كرد. پس از نصب اين ابزار و اجراي آن، نوع جديد Package Manifest را ايجاد كرده، فايل هاي موجود در پكيج را به آن اضافه كنيد.

 

همانطور كه مشخص شده است، اطلاعات مربوط به پكيج و همچين محصول را وارد كنيد. يكي از بخش هاي موجود، Install Conditions بوده كه مي توان شروط نصب را به آن اضافه كرد.
پس از تكميل كردن اطلاعات، پكيج را كامپايل كنيد. در صورتي كه خطايي وجود نداشته باشد، پكيج شما مطابق مسير مشخص شده، توليد مي شود. با كپي كردن محتواي آن در مسير پكيج ها، مي توان در پروژه هاي Setup جديد از آن بهره برد.

مجید رمضانی

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

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

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