در مقاله بعد به توضيح بقيه موارد و همچنين نحوه ايجاد برنامه نصب با استفاده از 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
![چگونه برنامه setup بسازيم (قسمت اول)](/userfiles/Article/1390/09/03/23761.JPG)
شکل 1
![چگونه برنامه setup بسازيم (قسمت اول)](/userfiles/Article/1390/09/03/23762.JPG)
شکل 2
![چگونه برنامه setup بسازيم (قسمت اول)](/userfiles/Article/1390/09/03/23763.JPG)
شکل 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 اشاره ميكند.
![چگونه برنامه setup بسازيم (قسمت اول)](/userfiles/Article/1390/09/03/23764.JPG)
شکل 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 تعيين کنيد كه با اجراي هر فايل با اين پسوند، چه برنامهاي اجرا شود.
![چگونه برنامه setup بسازيم (قسمت اول)](/userfiles/Article/1390/09/03/23765.JPG)
شکل 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 را اجرا ميكند. اين دو همان فايلهايي هستند كه در اختيار كاربر قرار ميدهيم تا توسط آنها بتواند برنامه ما را روي كامپيوتر خود نصب كند.
منبع:تبيان زنجان ارسال توسط کاربر محترم سايت : mohamadaminsh