در مقاله بعد به توضیح بقیه موارد و همچنین نحوه ایجاد برنامه نصب با استفاده از ClickOnce خواهیم پرداخت.
مقدمه
برنامه نصب به پروژه ما شکل و شمایلی زیبا میدهد و در مرحله پایانی پروژه،
کار را تکمیل میکند و برنامه ما را به برنامهای کامل و تمامعیار تبدیل
مینماید. برنامه نصب کار انتقال پروژه از دستگاه خودمان به کامپیوتر کاربر
را سهل و آسان میکند و به آن نظم خاصی میبخشد. Setup همانند نمای یک
ساختمان است که بعد از اتمام ساخت، جلوه آن را متحول میکند. امیدواریم از
این مقاله بیشترین بهره را برای ایجاد برنامههای نصب در پروژههای خود
ببرید.
برنامه Setup چیست؟
برنامه Setup برنامهای است که پروژه تولید شده ما را به یک پروژه قابل نصب
روی دستگاه کاربر تبدیل میکند. این برنامه شامل فایل EXE پروژه ما و
تمامی فایلهای مورد نیازی است که برنامه ما در هنگام اجرا شدن و در حین
اجرا به آنها نیازمند است: فایلهایی از قبیل فونتهای خاص، فایلهای منابع
(Resource)، فایلهای کتابخانهای خاص برنامه ما و غیره.
برنامه نصب امکانات زیادی از قبیل ثبت مواردی در رجیستری در هنگام نصب و
قرار دادن آیکون برنامه در منوی استارت و غیره را برای استقرار پروژه روی
دیگر کامپیوترها فراهم میآورد و بخشهای مختلف برنامه را به صورت منظم در
جایگاههای خاصی که ما تعیین میکنیم، قرار میدهد. بدون آنکه نیاز باشد ما
به عنوان تولید کننده پروژه، کوچکترین کاری روی کامپیوتر کاربر انجام
دهیم.
تصور کنید بدون امکان ایجاد برنامههای نصب چه اتفاقی میافتاد؟ آن گاه
برای اجرای پروژه روی دستگاه کاربر، برنامهنویس مجبور بود فایل EXE برنامه
را به همراه کلیه فایلهای مورد نیاز آن در یک فولدر قرار داده و آن را در
اختیار کاربر قرار دهد و از او بخواهد تغییرات لازم را در رجیستری انجام
دهد و فایلهای مورد نظر را در مکانهای خاص کپی کند. همچنین عزل برنامه
(Uninstall) نیز به کاری زمانبر و طاقتفرسا تبدیل میشد.
در این حالت بسیاری از اختیارات برنامهنویس از او سلب میشد. چرا که دیگر
برنامهنویس قادر نبود فایلهای اجرایی برنامه را به طور اتوماتیک جزو
پوشههای برنامه موجود در ProgramFiles و یا هر جای مهم دیگر در دستگاه
مقصد قرار دهد. در برخی موارد نیز مجبور میشد به طور دستی فونتهایی را در
کامپیوتر کاربر نصب کند. اما با وجود برنامههای نصب، کار برنامهنویس و
تولیدکنندگان نرمافزار در انتقال پروژه به کاربر بسیار آسان شده و دست
آنها نیز در ترتیب نصب در دستگاه کاربران بسیار بازتر است.
فناوریهای Setup
تا پیش از سال 2005، شرکت مایکروسافت یک فناوری به نام Microsoft Installer
(MSI) داشت که امکان نصب برنامهها را فراهم میکرد. این فناوری بسیار
قدرتمند است و تقریبا هر کاری از قبیل پخش فایل صوتی یا تصویری در هنگام
نصب و بسیاری کارهای دلخواه دیگر را میتوان توسط آن انجام داد. اما باید
در نظر داشت که این فناوری از توابع API استفاده میکند و بنابراین کار با
آن مشکل است و لازم است روی این توابع تسلط داشته باشیم.
اما ویژوال استودیو یک نوع پروژه به نام SetupProject در اختیار
برنامهنویسان میگذارد که توسط آن میتوان برنامه نصب ایجاد کرد. این نوع
پروژه از جنس MSI است و تنها از بخشی از امکانات آن برای ایجاد برنامههای
نصب استفاده میکند. با استفاده از آن، میتوان برنامههای نصب ساده و با
امکانات کم را در مدت زمان کوتاه و به سهولت ساخت. این نوع پروژه امکانات
ابتدایی مورد نیاز یک برنامهنویس را در اختیار او قرار میدهد، اما برای
کسانی که میخواهند یک برنامه نصب پیشرفته بسازند، توصیه میشود از برنامه
معروف InstallShield استفاده کنند.
پروژه Setup موجود در ویژوال استودیو نیز راه حلی مناسب برای برخی
برنامهنویسان است. از امکانات جالب آن میتوان به این موضوع اشاره کرد که
نسبت به نسخه برنامه هوشمند عمل میکند. به این معنی که اگر کاربر قبلا یک
نسخه قدیمیتر از برنامه را روی سیستم خود نصب کرده باشد، هنگام نصب نسخه
جدید، برنامه نصب آن را تشخیص داده و به کاربر پیغام میدهد تا ابتدا نسخه
قدیمی را حذف نماید و سپس نسخه جدید را نصب کند. اما این پروژه نقاط ضعفی
نیز دارد؛ مثلا قبل از اجرای نصب برنامه حتما باید داتنت روی دستگاه کاربر
نصب شده باشد و در غیر این صورت برنامه نصب عمل نخواهد کرد. عیب بزرگ
دیگر آن این است که اگر به طور مثال پروژه ما برای یک سازمان بزرگ با تعداد
زیادی کاربر نوشته شده باشد، با هر تغییر در کد، باید برنامه تغییر یافته
روی تکتک کامپیوترهای سازمان مجددا نصب شود که این کاری زمانبر و
طاقتفرساست.
مهمتر آنکه اگر به هر دلیل فراموش شود برنامه جدید روی کامپیوتر اشخاص نصب
شود، این افراد با نسخه قدیمی کار خواهند کرد و برنامه آنها هیچگاه از
وجود نسخه جدید مطلع نخواهد شد.
این بود که شرکت مایکروسافت در سال 2005 فناوری جدید برنامههای نصب خود
را با نام ClickOnce ارایه کرد. همانطور که از نام این فناوری پیداست،
نحوه کار با آن بسیار آسان است و یکی از دلایل استقبال کاربران نیز همین
سهولت استفاده از آن است. البته Click Once بسیاری از قابلیتهای MSI را
ندارد، اما به دلیل برخورداری از امکاناتی جدید و سهولت کار، در مدت زمان
کوتاهی که به دنیای کامپیوتر راه پیدا کرده توجه بسیاری را به خود جلب کرده
است و به نظر میرسد سرانجام جانشین MSI خواهد شد.
ClickOnce این امکان را برای برنامهنویس فراهم میآورد که در هنگام نصب
ابتدا ارتباط با اینترنت و یا اینترانت کنترل شود، سپس برنامه اجرا شود و
در غیر این صورت مانع از نصب برنامه شود. این حالت در زمانی مفید است که
برنامه ما از یک XML Web Service در اینترنت یا شبکه محلی استفاده کند.
از دیگر امکانات بسیار مفید این فناوری آن است که میتوان یک آدرس فیزیکی
روی دستگاه محلی و یا آدرس FTP یا آدرس اینترنتی را مشخص کرد تا برنامه قبل
از هر بار اجرا، ابتدا به آن جا مراجعه کرده و اگر نسخه جدیدی موجود بود،
به طور خودکار آن را دریافت و نصب کند.
از کجا باید شروع کرد؟
در این شماره، به نحوه ایجاد برنامه نصب با استفاده از فناوری MSI
میپردازیم و Setup Project داتنت را بررسی میکنیم. همانطور که قبلا'
اشاره شد، برای این کار از یک نوع پروژه تحت داتنت به نام «Setup Project»
استفاده میکنیم. این پروژه باید به پروژههای برنامه ما در داخل Solution
اضافه شود. هنگامی که میخواهیم در ویژوال استودیو یک پروژه به Solution
خود اضافه کنیم، در پنجره Add New Project در بخش Project Types یک شاخه به
نام Other Project Types وجود دارد که از زیرشاخههای آن Setup And
Deployment است.با انتخاب این زیرشاخه در قسمت Templates انواع پروژههای
نصب قابل مشاهده خواهند بود که پروژه Setup Project همان پروژه مورد نظر
ماست (شکل 1). با اضافه کردن این پروژه به داخل Solution برنامه و با دوبار
کلیک روی آن، پنجرهای که در شکل 2 نمایش داده شده است، مشاهده خواهد شد.
با انتخاب پروژه نصب در داخل Solution در بالای پنجره
Solution Explorer دکمههایی ظاهر میشود (شکل 3). با کلیک روی هر یک از
این دکمهها یک پنجره باز میشود که کار خاصی را به عهده دارد. به این
پنجرهها View یا نما گفته میشود. در داخل هر View تنظیمات مربوط به یکی
از مراحل Setup انجام میگیرد. نماهای موجود در ویژوال استودیو عبارتند از
موارد زیر که به ترتیب به آنها میپردازیم.
File System Editor
Registry Editor
File Types Editor
User Interface Editor
Custom Actions Editor
Launch Conditions Editor
شکل 1
شکل 2
شکل 3
File System Editor
در حالت پیشفرض، با ایجاد یک پروژه نصب، پنجره مربوط به این نما نمایان
خواهد شد (شکل 4). این نما مهمترین نما در نماهای موجود است. در این نما
به طور پیشفرض 3 زیرشاخه مشاهده میشود:
Application Folder
User’s Desktop
User’s Programs Menu
هر یک از این زیرشاخهها به یکی از پوشههای دستگاه کاربر اشاره دارد.
Application Folder فولدری است که برنامهنویس میخواهد برنامه اصلی در
کامپیوتر کاربر در آن جای بگیرد که به طور پیشفرض C:\Program Files است.
User’s Desktop اشاره به دسکتاپ کاربر دارد که آدرس آن در Profile کاربر
قرار دارد. معمولا' یک Shortcut از فایل اجرایی برنامه روی دسکتاپ کاربر
گذاشته میشود. User’s Program Menu نیز به فولدر Programs در منوی Start
اشاره میکند.
شکل 4
هر فایلی که در این فولدرها قرار دهیم، در هنگام نصب برنامه در کامپیوتر
کاربر در محلهایی که ذکر شد، کپی میشوند. حال اگر بخواهیم به غیر از
فولدرهای موجود، در آدرسهای دیگری نیز فایلهایی را کپی کنیم، میتوان با
کلیک راست روی صفحه و انتخاب منوی Add Special Folder این کار را انجام
داد. در این منو بسیاری از فولدرهای دیگر که هر یک مربوط به محلی از
کامپیوتر کاربر است وجود دارد که توضیح آنها از حوصله این مقاله خارج است.
به هر حال با اضافه کردن هر یک از این فولدرها به File System میتوان
فایلهای مورد نظر خود را در آنها قرار دهید.
به طور معمول فایل اجرایی برنامهامان (که پس از Build کردن پروژه در فولدر
برنامه و در فولدر Debug داخل فولدر Bin قرار میگیرد) را به Application
Folder افزوده و یک Shortcut از آن را در User’s Desktop اضافه میکنیم که
در مقاله شماره بعدی به توضیح کامل آن خواهیم پرداخت.
Registry Editor
این نما به ما اجازه میدهد تا بتوانیم درون رجیستری کامپیوتر کاربر
تغییراتی را اعمال کنیم. همانطور که در مقاله رجیستری نیز به آن اشاره شد،
کار با رجیستری و دستکاری آن ممکن است باعث صدمه به ویندوز شود، لذا کار
با آن مستلزم آشنایی کامل با رجیستری است.
با انتخاب این نما تمامی ساختار رجیستری به شما نشان داده خواهند شد.
میتوان با کلیک راست روی هر یک و انتخاب گزینه New زیرشاخه مورد نظر را در
آن ایجاد کرد. تمامی این تغییرات در هنگام نصب در رجیستری کامپیوتر کاربر و
در محلهای تعیین شده اعمال میشوند.
File Types Editor
در این قسمت میتوان تعیین کرد که بعد از نصب برنامه کدامیک از پسوندها به
برنامه ما وابسته شوند؛ به این معنی که اگر کاربر روی فایلی با پسوند مشخص
شده در این قسمت کلیک کرد، برنامه ما اجرا شده و آن فایل را باز کند.
همچنین در این نما میتوان تعیین کرد که آیکون پسوندهای تعیین شده به شکل
مورد نظر ما تغییر نماید. به طور مثال با نصب برنامه آفیس روی یک کامپیوتر،
با اجرای هر فایل با پسوند .doc یا .docx آن فایل تحت برنامه Word اجرا
میشود ضمن اینکه آیکون مربوط به این نوع فایلها نیز به آیکون تعریف شده
در این برنامه تغییر میکند.
با انتخاب این نما یک ریشه با نام File Types On Target Machine ایجاد
خواهد شد. با کلیک راست روی آن و انتخاب گزینه Add File Type میتوان یک
پسوند به آن اضافه کرد (شکل 5). ابتدا باید پسوند را به همراه علامت '.'
وارد کنید (مثلا .xyz یا .abc). سپس میتوان با کلیک روی این پسوند و
مراجعه به پنجره Properties برای پسوند مورد نظر آیکون تعیین کرده و از
طریق مشخصه Command و با انتخاب فایل اجرایی برنامه از داخل Application
Folder تعیین کنید که با اجرای هر فایل با این پسوند، چه برنامهای اجرا
شود.
شکل 5
User Interface Editor
همانطور که میدانید برنامه نصب به صورت یک ویزارد عمل میکند. در این نما
این امکان در اختیار برنامهنویس قرار داده میشود که پنجرههای مختلف این
ویزارد را ویرایش کند. در این نما 2 درخت مشاهده میشود: یکی مربوط به
ویزارد زمان نصب توسط کاربران عادی که Install نام دارد و دیگری مربوط به
نصب برنامه توسط Administrator که Administrative Install نام دارد. در هر
یک از این درختها 3 زیرشاخه مشترک دیده میشود که مربوط به زمان و مراحل
مختلف نصب برنامهاند و در زیر هر یک از مراحل، پنجرههای نمایش داده شده
قابل دسترسی هستند. با انتخاب هر یک از این پنجرهها و مراجعه به بخش
Properties میتوان برخی از خصیصههای آنها را تغییر داده یا پنجرهای را
حذف کنیم و یا با کلیک راست روی هر مرحله و انتخاب گزینه Add Dialog یک
پنجره دلخواه به آن مرحله اضافه کنیم.
پنجرههای موجود در برنامه ایجاد Setup در داتنت محدود و ثابت بوده و قدرت
چندانی ندارند. اما توسط برنامه Install Shield خودمان میتوانیم
پنجرههای دلخواه و با خصیصههای زیاد بسازیم.
پس از اتمام عملیات مورد نظر روی پروژه نصب، در پنجره Solution Explorer
کلیک راست کرده و آن را Build میکنیم. با این کار 2 فایل در آدرس برنامه
روی هارددیسک در داخل پوشه مربوط به پروژه نصب و در پوشه Debug درون پوشه
Bin ایجاد میشوند. یکی با پسوند MSI است که همان فایل نصب برنامه بوده و
فایل دیگر نیز با پسوند EXE است که آن هم فایل MSI را اجرا میکند. این دو
همان فایلهایی هستند که در اختیار کاربر قرار میدهیم تا توسط آنها بتواند
برنامه ما را روی کامپیوتر خود نصب کند.
پنجشنبه 11 اسفندماه سال 1390 ساعت 18:45