Асемблита и разпространение


Създаване на MSI инсталационен пакет



страница6/6
Дата10.01.2017
Размер0.64 Mb.
#12406
1   2   3   4   5   6

Създаване на MSI инсталационен пакет


След като описахме различните инсталационни стратегии е време да преминем към практическата част. За съжаление няма да можем да обхванем всички описани варианти за разпространение, но ще демонстри­раме най-важните от тях. Ще се спрем на два вида MSI пакети – за Windows базирано приложение и за уеб базирано приложение.

Примерът, който ще разгледаме, включва следните проекти:



  • CreditCardValidatorWS – уеб услуга, която проверява валидността на кредитна карта.

  • CreditCardValidatorClient – Windows базирано приложение, което използва методите на CreditCardValidatorWS.

  • MyLibrary – библиотека от класове, съдържаща клас за четене на ресурсни файлове, които са компилирани в асемблитата. Силно име­нуваното асембли MyLibrary.dll ще бъде добавено в GAC.

Ето как изглежда във VS.NET решението, което включва трите проекта:

Няма да навлизаме в описание на тези проекти, понеже целта е друга – да покажем процеса на създаване на инсталационни пакети за всеки от тях.


Създаване на инсталационен пакет на Windows базирано приложение


Нека първо създадем инсталационен пакет за Windows Forms базираното приложе­ние CreditCardValidatorClient.

От зареденото решение CreditCardValidator.sln във Visual Studio .NET 2003, избираме File -> New -> Project и избираме Setup Project от категорията Setup and Deployment Projects. За име въвеждаме InstallClient и избираме опцията Add to Solution. Потвърждаваме с бутона [OK].



Новият проект се създава и се добавя към решението CreditCardValidator.sln.


Характеристики на инсталационния проект


Трябва да зададем свойствата на проекта – да зададем име на продукта, код, производител и др. За целта избираме проекта InstallClient и отваряме прозореца Properties на Visual Studio .NET 2003. Задаваме стойности на свойствата Title и ProductName “Credit Card Validator”. Задаваме и автор и производител на продукта, ако е необходимо:


Добавяне на файлове към инсталационния проект


Следващата стъпка е добавяне на проектните файлове към създадения инсталационен проект. От контекстното меню на проекта InstallClient избираме Add -> Project Output…

Отваря се диалогов прозорец, от който се избира кои части на проекта (и конкретния проект) да се включат в инсталацията. Избираме проекта CreditCardValidatorClient, избираме Primary Output. (Тази опция доба­вя само файловете, които се създават по време на компилация. Всички други файлове трябва да се добавят допълнително.)



Потвърждаваме с бутона [OK] и към инсталационния проект е добавен Primary Output. Обърнете внимание, че Visual Studio .NET 2003 е доба­вило реферираното асембли MyLibrary.dll в категорията Detected Dependencies. По подразбиране папката, в която ще бъде инсталирано MyLibrary.dll, е инсталационната папка на прило­жението, която потребителят избира по време на инсталация. За да инста­лираме MyLibrary.dll в Global Assembly Cache трябва да направим допъл­нителни настройки.

В изгледа File System на инсталационния проект (отваря се от контекст­ното меню на инсталационния проект InstallClient -> View -> File System) отваряме контекстното меню на File System on Target Machine -> Add Special Folder -> Global Assembly Cache Folder:

След като вече имаме добавен GAC към инсталационните папки на проекта може да зададем местоположението на MyLibrary.dll. Отваряме контекстното меню на MyLibrary.dll от Solution Explorer (от категорията Detected Dependencies на проекта InstallClient) и избираме Properties. От прозореца Properties избираме свойството Folder. Неговата стойност по подразбиране е Application Folder. Избираме бутона и от диалоговия прозорец Select Folder избираме Global Assembly Cache и потвърждаваме с бутона [OK].




Създаване на икони за инсталираното приложение


За да е завършен инсталационния процес трябва да добавим препратки за бързо стартиране на приложението. За програмни продукти, насочени към обикновените потребители (не администратори) е задължително добавя­нето на препратки в Start Menu на Windows. Добавянето на препратки на работната площ (desktop) и лентата за бързо стартиране (Quick Launch) не е задължително, но може да се извърши за удобство на потребителя.

Добавяне на препратки в Start Menu на Windows


От изгледа File System избираме User's Programs Menu с десен бутон на мишката и от контекстното меню избираме Add -> Folder. За име на пап­ката въвеждаме "Credit Card Validator". Избираме я и от контекстното меню на детайлната област (в средата) избираме Create New Shortcut.

От отворилия се диалогов прозорец избираме Application Folder -> Primary Output for CreditCardValidatorClient (Release .NET). Затваряме прозореца с бутона [OK].



В детайлната област се добавя препратка към основния файл на приложението. Името е в режим на редактиране и можем да въведем подходящо име, напр. "Credit Card Validation":



По подразбиране лип­сва икона за тази препратка. От прозореца Properties избираме свойството Icon и се отваря прозорец за избор на икона. Файлът трябва да е включен в инсталацията. Добра практика е да се избира иконата от изпълнимия файл, към който сочи препратката. Ако изберем .exe от проекта CreditCardValidatorClient, се показват се всички икони, които се съдържат в него:



Избираме подходяща икона и потвърждаваме с бутона [OK].


Добавяне на препратка на работния плот (Desktop)


Добавянето на препратка на работния плот технически не се различава много от Добавяне на препратки в Start Menu на Windows.

В указанията на Майкрософт за Windows базираните приложения (“Designed for Microsoft Windows XP” Application Specification – http://www.microsoft.com/ winlogo/software/downloads.mspx) е посочено, че поради претрупване на работния плот следва поставянето на икони да се извършва само по изрично указание на потребителя. Технически това означава добавяне на диалогов прозорец, в който потребителя да укаже предпочитанията си. Като следваме указанията от точката Добавяне на препратки в Start Menu на Windows, добавяме икона в папката User's Desktop.

Показваме изгледа User Interface – от контекстното меню на инстала­ционния проект InstallClient, избираме View -> User Interface. В него е показана последователността на диалозите, които се показват по време на нормална инсталация и административна инсталация.

От контекстното меню на диалога Start избираме Add Dialog:



Показва се диалоговия прозорец Add Dialog, от който можем да изберем шаблон, съдържащ контролите, от които имаме нужда:



Избираме шаблона CheckBoxes (A) и потвърждаваме с бутона [OK]. Новосъздаденият диалог се добавя като последен в поредицата, но е необходимо да бъде преместен преди диалога Installation Folder. С левия бутон на мишката може да го влачим и пуснем върху диалога Welcome или от контекстното меню на CheckBoxes (A) да избираме позицията му чрез командите Move Up и Move Down. След това действие последователността на диалоговите прозорци трябва да е подобна на тази:



След като вече имаме подходящия диалог в поредицата, трябва да го настроим, за да показва подходящи съобщения. От прозореца с неговите свойства въвеждаме както следва:



Свойство

Стойност

Banner Text

Credit Card Validation

Body Text

Select which shortuts to be placed during installtion

CheckBox1Label

Create shortcut on Desktop

CheckBox1Property

CHECKBOXDESKTOP

CheckBox2Label

Create shortcut in Quick Launch

CheckBox2Property

CHECKBOXQUICKLAUNCH

CheckBox2Value

Checked

CheckBox3Visible

false

CheckBox4Visible

false

Ето как изглежда този диалогов прозорец в действие:

Вече имаме функциониращ диалогов прозорец в поредицата на нашия MSI пакет. Имаме и зададени променливи, които пазят избора на потребителя ([CHECKBOXDESCTOP] и [CHECKBOXQUICKLAUNCH]). Сега трябва да ги доба­вим като условие за инсталиране.

От изгледа File System избираме User's Desktop отваряме прозореца с характеристиките (командата Properties от контекстното меню). За свой­ството Condition задаваме стойност "[CHECKBOXDESKTOP]=1".

Добавяне на препратки в Quick Launch


Quick Launch е възможност на Internet Explorer да показва лента с препратки на работния плот на Windows. Пътят до тази директория по подразбиране е C:\Documents and Settings\[UserName]\Application Data\Microsoft\Internet Explorer\Quick Launch като на мястото на [UserName] стои името на текущия потребител. За щастие в променливите на Windows Installer съществува User's Application Data Folder, която извлича пътя до C:\Documents and Settings\[UserName]\Application Data на текущия потребител. Можем да добавим директорията User's Application Data Folder от контекстното меню File System on Target Machine -> Add Special Folder -> User's Application Data Folder.

След това от изгледа File System избираме User's Application Data Folder с десен бутон на мишката и от контекстното меню избираме Add -> Folder. За име въвеждаме Microsoft. От контекстното меню на новосъз­дадената папка повтаряме горното действие и създаваме поддиректория Internet Explorer. В нея създаваме поддиректория Quick Launch.

От контекстното меню на детайлната област избираме Create New Shortcut и повтаряме действията от точка "Добавяне на препратки в Start Menu на Windows".

Като резултат екранът трябва да изглежда подобно на този:



За да може потребителят да избира дали да се създаде препратка в Quick Launch (чрез диалоговия прозорец, който създадохме в точка "Добавяне на препратка на работната площ (Desktop)") трябва да зададем инстала­ционно условие: избираме папката User's Application Data Folder и от прозореца с характеристиките въвеждаме за свойството Condition стойност "[CHECKBOXQUICKLAUNCH]=1".


Препратка за деинсталиране на приложението


Като цяло създаването на препратка за деинсталиране на приложението не се препоръчва от Майкрософт и е залегнало в указания за приложения за Windows (“Designed for Microsoft Windows XP” Application Specification – http://www.microsoft.com/winlogo/software/­downloads.mspx). Поради спе­цификата на добавяне на подобна функционалност и честите практики на софтуерните компании да поставят подобна препратка в стартовото меню ще го опишем. Това следва да се разглежда като пример за създаване на икони към приложения, които не се инсталират от текущия MSI пакет.

За да се запази целостта на MSI пакета, Windows Installer не позволява поставяне на препратки към файлове, които не се разпространяват с дадения MSI пакет. По този начин се предотвратява зависимостта на MSI пакетите към външни файлове. Както ще покажем в точката "Инстали­ране/деинсталиране на MSI пакетите", основният команден файл на Windows Installer е msiexec.exe. Това е командата, към която Windows на насочва обработката на MSI пакетите независимо от мястото, от което са инициирани (Control Panel, Windows Explorer или чрез команда).

Създаваме файл Uninstall.bat в директорията на проекта CreditCardValidatorClient със следното съдържание:

Uninstall.bat

msiexec /x {A3E3AA3C-3D63-4A5B-8F0A-B32BDEDCD4D8}

Последния параметър е от свойството ProductCode на инсталационния проект (вж. Характеристики на инсталационния проект).

От контекстното меню на проекта InstallClient избираме Add -> File… и избираме Uninstall.bat. След като вече имаме подходящ файл може да създадем препратка в стартовото меню към Uninstall.bat.


Създаване на инсталационен пакет на уеб услуга


След като създадохме инсталационен пакет за Windows приложението, остава да добавим и инсталационен пакет за уеб услугата.

От зареденото решение CreditCardValidator.sln във Visual Studio .NET 2003, избираме Add -> New Project и избираме Web Setup Project от категорията Setup and Deployment Projects. За име въвеждаме InstallWebService и избираме опцията Add to Solution. Потвърждаваме с бутона [OK].

Новият проект се създава и се добавя към решението CreditCardValidator.sln.

Задаваме стойности на свойствата Title и ProductName “Credit Card Web Service” от прозореца с характеристиките на инсталационния проект проекта както направихме в точка Характеристики на инсталационния проект.

Както и в подточка Добавяне на файлове към инсталационния проект към Създаване на инсталационен пакет на Windows базирано приложение ще добавим проектните файлове към създадения инсталационен проект. От контекстното меню на проекта InstallClient избираме Add -> Project Output…

Както вече споменахме, Project Output включва създаваните по време на компилация файлове – .exe, .dll и .config. За да е функционална уеб услугата, трябва да добавим още фалове – Web.config, Global.asax и CreditCardValidator.asmx. За целта отваряме изгледа File System на инсталационния проект InstallWebService (от контекстното меню на InstallWebService избираме View -> File System). От контекстното меню на Web Application Folder избираме Add -> File… Отваря се стандартен File Open Dialog. Отваряме проектната директория на проекта CreditCardValidatorWS и избираме файловете Web.config, Global.asax и CreditCardValidator.asmx:



От прозореца със свойствата на Web Application Folder задаваме на VirtualDirectory стойност "CreditCardValidatorWS". Това е всичко.


Допълнителни настройки на инсталационните проекти във Visual Studio .NET 2003


За всеки от двата инсталационни проекта се създават по три файла след компилация на решението: Setup.Exe, Setup.Ini и [име на проекта] .msi (InstallWebService.msi и InstallClient.msi).

Освен това по подразбиране файловете се пакетират с ниско ниво на компресия. За да променим това, от характеристиките на инсталационния проект (от менюто на Visual Studio .NET 2003 Project -> Properties) задаваме следните характеристики:



  • Bootstraper – None

  • Compression – Optimize for size

В резултат след компилация ще се генерират по един .msi файл за всеки от проектите, който ще бъде оптимално компресиран.


Инсталиране/деинсталиране на MSI пакетите


След като създадохме двата инсталационни пакета, е време да ги тества­ме. Компилираме ги и намираме .msi файловете. Препоръчително е да използваме Virtual PC за тестовете, за да няма конфликти с вече инста­лираните приложения и за да проверим дали всичко работи върху чиста инсталация на Windows и IIS. Ако тестваме локално, ще се получи конфликт с CreditCardValidatorWS, тъй като InstallWebService.msi съз­дава виртуална директория в IIS с име CreditCardValidatorWS.

Инсталацията на MSI пакет може да се стартира чрез двойно щракване на мишката върху .msi файла или чрез командата:



msiexec.exe /I InstallClient.msi

Първо инсталираме InstallClient.msi. Инсталацията протича по начин, който е добре познат на потребителите. Обърнете внимание, че препрат­ките от InstallClient.msi са създадени в зависимост от избраните настройки в диалоговия прозорец, който доба­вихме в точка Добавяне на препратка на работната площ (Desktop).

Стартираме и инсталацията на уеб услугата от InstallWebService.msi. От втория диалогов прозорец имаме възможност да зададем настройките на виртуалната директория, която ще бъде създадена в IIS.



Не правим промени по тези настройки и завършваме инсталационния процес.

Ако сте направили промени в настройките на виртуалната директория в IIS от прозореца по-горе (или уеб услугата е инсталирана на отделен компютър) трябва да се промени конфигурационният файл на клиентското приложе­ние, за да може да се достъпи уеб услугата.

Ето го съдържанието на конфигурационния файл на CreditCardValidatorClient:



CreditCardValidatorClient.exe.config













На по-късен етап приложенията могат да се деинсталират чрез Control Panel -> Add/Remove Programs или чрез командата:

msiexec.exe /x InstallClient.msi

Упражнения


  1. Създайте многомодулно асембли. Именувайте го силно. Разгледайте манифеста му.

  2. Създайте проект TestLibrary от тип Class Library. Дайте силно име на резултатното асембли TestLibrary.dll. Добавете в проекта примерен клас и статичен метод, който връща в резултат текста “MyAssembly v.1.0.0.1”. Използвайте атрибутите в AssemblyInfo.cs, за да зададете за асем­блито версия 1.0.0.1.

  3. Създайте Windows базирано приложение TestWinApp и реферирайте от него асем­блито от предходното упражнение (TestLibrary.dll) като частно асембли. Можете да направите това като от VS.NET добавите референ­ция към проекта TestLibrary. При стартиране на проекта TestWinApp покажете диа­логова кутия със съдър­жание върнатия от статичния от метод TestLibrary текст. След компилация би трябвало в изходната директория да имате файловете TestWinApp.exe и TestLibrary.dll.

  4. Създайте поддиректория assemblies в директорията с компилираното приложение от предходното упражнение (TestWinApp.exe) и преме­стете в нея асемблито TestLibrary.dll. Добавете конфигурационен файл и задайте частни пътища за търсене на частните асемблита с тага
    . Посочете директорията assemblies. Приложението работи правилно, нали? Пре­махнете тага
    от конфигурацион­ния файл и използвайте вместо него тага . Тествайте отново.

  5. Добавете асемблито от TestLibrary.dll в GAC. Изтрийте поддирек­тория assemblies. Приложението TestWinApp.exe работи нормално, нали? Деинсталирайте TestLibrary.dll от GAC. Приложението спря да работи, нали?

  6. Променете текста, връщан от статичния метод от проекта TestLibrary, на “MyAssembly v1.0.0.2” и променете версията на 1.0.0.2. Добавете новата версия на асемблито TestLibrary.dll в GAC. Приложението TestWinApp.exe все още не работи, нали?

  7. Създайте Publisher Policy File, за да пренасочите TestLibrary.dll 1.0.0.1 към TestLibrary.dll 1.0.0.2. Приложението TestWinApp.exe трябва отново да работи нормално.

  8. Създайте проста система за събиране на числа, реализирана като уеб услуга с Windows базиран и уеб базиран клиент. Създайте инстала­ционни пакети за уеб услугата и за клиентските приложения. Инстали­райте ги върху друга машина и ги тествайте. Работят ли правилно? Деинста­лирайте ги чрез Control Panel -> Add/Remove Programs. Работи ли правилно деинсталацията?

Използвана литература


  1. Михаил Стойнов, Асемблита и Deployment – http://www.nakov.com/ dotnet/lectures/Lecture-23-Assemblies-v1.0.ppt

  2. Paul Slater, Deploying .NET Applications Lifecycle Guide, Microsoft Press, 2003, ISBN 0735618461

  3. “Designed for Microsoft Windows XP” Application Specification – http://go.microsoft.com/fwlink/?LinkId=9775

  4. Microvision Corporation's Website – http://www.InstallShield.com/

  5. Wise Solutions's Website – http://www.wise.com

  6. MSDN Library – http://msdn.microsoft.com





Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница