نحوه اجرا کردن action های سفارشی و ارتقاء با استفاده از Visual Studio Installer

دوشنبه 19 تیر 1396

در این مقاله قصد داریم که نحوه ساختن یک برنامه نصب را به همراه نحوه نوشتن action سفارشی آن به شما به صورت قدم به قدم آموزش بدهیم.

نحوه اجرا کردن action های سفارشی و ارتقاء با استفاده از Visual Studio Installer

ویژال استودیو installer projects را به منظور ساده سازی گسترش برنامه ارائه داده است.برای داشتن Visual Studio installer project type   همگام با نسخه ویژال استودیو  ، مطمئن شوید نسخه مربوط به سیستم خودتان را نصب کرده اید.

برای دانلود Visual Studio Installer همگام با ویژال استودیو 2015 از این لینک استفاده کنید.

انواع Visual Studio Installer

5 نوع قالب installer در حال حاضر دردسترس است:

Setup Project

Web Setup Project

Merge Module Project

Setup Wizard

CAB Project

 

نوع Setup Project در حوزه بحث مقاله ما قرار دارد و اینکه ما در این مقاله بر روی افزودن action سفارشی و ارتقاء آن تمرکز خواهیم داشت.

تنظیمات اصلی نصب Action ها

یک پروژه با نام SampleInstaller و با استفاده از قالب “Setup Project” ایجاد کنید.هدف نهایی از پروژه SampleInstaller گسترش باینری های ساخته شده با استفاده از Windows project است.از این رو ، پروژه دیگری به نام SampleWinService از نوع  windows servic ایجاد میکنیم.

باینری های تولید شده از پروژه SampleWinService باید برای سیستم موردنظر با استفاده از پروژه SampleInstaller گسترش یابد.

بر روی پروژه SampleInstaller راست کلیک کنید> (افزودن)Add> (خروجی پروژه) Project Output

از دیالوگ باز شده Add Project Output Group ، پروژه مورد نظر را در قسمت پروژه انتخاب کنید که برای شما برنامه ریزی شده است تا باینری را بفرستید.در زیر list box دیالوگ  ، گزینه “Primary output”را برای اینکه به Installer بگویید فقط باید Dll ها و EXE ها را از پروژه مشخص شده برای گسترش آن بردارد و کلید Ok را بزنید.

حالا ، SampleInstaller را انتخاب کنیدو بر روی تب Properties که در سمت راست پروژه قرار دارد ، کلیک کنید.نمای زیر دیده می شود:

حالا ، همانطوریکه در توضیحات زمانی که یک فیلد را انتخاب می کنید ذکر شده است ، فیلدها را به درستی پر کنید.به فیلد target platform دقت کنید و مطمئن شوید که فیلد مورد نظر بدرستی پر شده باشد.اگر میخواهید این فایل نصبی را روی دستگاه 64 بیتی نصب کنید پس باید برنامه 64 بیتی باشد ، که به منظور اینکار گزینه x64 را به جای x86 انتخاب کنید.

UpgradeCode یک GUID  (شناسه جهانی منحصر به فرد)  مهم است که برای شناسایی گروهی از محصولات  از این شماره استفاده میشود.زمانیکه نسخه شماره محصولات تغییر می کند ، UpgradeCodeتغییر نمیکند ولی ProductCodeتغییر میکند.

که این به کاربر اجازه میدهد تا کاربر عمیات ارتقاء محصول را انجام دهد.از این رو ، اگر قصد عملیات ارتقاء را دارید ، مطمئن شوید که ProductCode هنگام تغییر نسخه تغییر پیدا میکند.

اینکار را می توان با کلیک کردن بر روی Yes زمانیکه از شما سوال زیر پرسیده می شود انجام داد.

و اگر نمیخواهید اینکار را انجام بدهید بر روی گزینه No کلیک کنید.

تنظیمات Action های سفارشی

Custom Action ها اولین موردی هستند که باید در کدهای سفارشی پروژه اصلی (SampleWinService ) فعال شوند تا در زمان اجرا عمل شوند.

برای تنظیمات آن:

بر روی پروژه SampleInstaller راست کلیک کنید> Custom Actions<View 

در اینجا 4 مرحله اصلی  installer action ها بیان میشود:

 Commit ، Rollback ، Install و Uninstall. 

اگر می خواهید هر کدام از installer action ها را سفارشی کنید ، Action  را انتخاب کنید > گزینه Add Custom Action را انتخاب کنید... و project و نوع خروجی آن را در جایی که کد کنترلر کننده Action سفارشی (custom action handler code) نوشته شده است انتخاب کنید.

به عنوان نمونه ، به طور پیشفرض ، پروژه SampleWinService بر روی سیستم مورد نظر (target machine) شروع به نصب سرویس نمیکند.همچنین ما میخواهیم زمانیکه محصول حذف شد سرویس متوقف شود.

اگر میخواهید به این اهداف برسید نیاز است که کد سفارشی آن را در پروژه SampleWinService با استفاده از کلاس مخصوص  و  متدهایی مانند زیر بنویسید:

متد OnAfterInstall از کلاس ProjectInstaller را بازنویسی کنید و عملیات شروع را فعال کنید تا  windows service  به طور خودکار بعد از نصب شروع شود.به طور مشابه ، متد OnBeforeUninstall را برای متوقف کردن سرویس در زمان حذف آن بازنویسی کنید.

ارتقاء (Upgrade)

ارتقاء روند مورد نیاز نصب یا حذف برنامه است که ویژگی ها یا کامپوننت یا باینری ها یا فایلیست که در هنگام نصب مورد نیاز هستند را بررسی میکند.

برای انجام عملیات ارتقا با استفاده از Visual Studio installer ، باید این مراحل را انجام دهید:

1)شماره نسخه installer را از properties آن تغییر دهید.

2)هنگامیکه از شما در ارتباط با تغییر product code پرسیده می شود گزینه Yes را انتخاب کنید

3)UpgradeCode را تغییر ندهید

4) شماره نسخه assembly که (EXE/DLL) از  قبل نصب شده است را تغییر دهید ، بنابراین installer متوجه میشود که چه assembly برای عمل ارتقاء باید جایگزین شود.

5)کنترل کننده مناسب CustomAction را در متد OnBeforeInstall برای حذف سرویس موجود و مورد نیاز این نسخه بنویسید.

6)installer  را با version number اصلاح شده ، ProductCode و assembly version بسازید و نصب کنید.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

تاکنون هیچ کاربری از این پست تشکر نکرده است

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