Пошаговое руководство. Перенаправление приложения для выбора другой целевой веб-службы при установке
Обновлен: Ноябрь 2007
В данном руководстве демонстрируется создание веб-приложения, которое затем может быть перенаправлено на другую веб-службу с использованием свойства Поведение URL-адреса, класса установщика и проекта веб-установки. Это бывает полезно, когда необходимо локально указать целевую веб-службу в процессе разработки и нужно использовать рабочую версию веб-службы при развертывании приложения.
Примечание. |
---|
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, в меню Сервис выберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделеПараметры Visual Studio. |
Создание проекта веб-приложения
Первым шагом является создание проекта веб-приложения ASP.NET, который содержит веб-ссылку на веб-службу.
Создание проекта
- Создайте веб-приложение, содержащее веб-ссылку на веб-службу. Для данного пошагового руководства подойдет веб-ссылка на любую допустимую веб-службу. Например, можно использовать веб-приложение, описанное в Пошаговое руководство. Получение доступа к веб-службам с помощью Visual Basic или Visual C#.
Добавление класса установщика
Классы установщика, называемые также компонентами установки, являются классами .NET Framework, которые вызываются как настраиваемые действия в процессе установки. В этом случае в решение будет добавлен проект библиотеки классов. В этом проекте библиотеки классов предстоит создать класс установщика и переопределить его метод Install, добавив код для изменения файла .config веб-приложения. Дополнительные сведения о классах установщика см. в разделе Знакомство с компонентами установки.
Чтобы создать проект библиотеки классов
Щелкните правой кнопкой узел решений в Обозревателе решений и нажмите кнопку Добавить, а затем Новый проект.
В диалоговом окне Добавить новый проект в узле Visual Basic выберите Библиотека классов.
Дайте проекту имя InstallerClassLibrary.
Чтобы добавить и реализовать класс установщика
Щелкните правой кнопкой мыши узел проекта InstallerClassLibrary в Обозревателе решений и щелкните Добавить, а затем ― Класс.
В диалоговом окне Добавить новый элемент выберите Класс установщика и измените значение в поле Имя на WebServiceInstaller.vb.
После того как вы щелкнете Добавить, класс будет добавлен к проекту, и откроется конструктор класса установщика.
Дважды щелкните конструктор, чтобы открыть редактор кода.
Добавьте в WebServiceInstaller.vb следующий код в нижней части модуля класса установщика (сразу перед объявлением End Class); этот код реализует метод Install:
Public Overrides Sub Install(ByVal stateSaver As _ System.Collections.IDictionary) ' Gets the parameter passed across in the CustomActionData. Dim installlog As New System.IO.StreamWriter("Installation.log") installlog.AutoFlush = True Try Dim ProvidedName As String = Me.Context.Parameters.Item("ServerName") Dim SvcName As String = Me.Context.Parameters.Item("ServiceName") installlog.WriteLine("Starting Edit of the config file") If ProvidedName = "" Or SvcName = "" Then Throw New InstallException("No arguments specified") End If ' Uses reflection to find the location of the config file. Dim Asm As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly Dim strConfigLoc As String strConfigLoc = Asm.Location Dim strTemp As String strTemp = strConfigLoc strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _ strTemp.LastIndexOf("\")) strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - _ strTemp.LastIndexOf("\")) Dim FileInfo As System.IO.FileInfo = New System.IO.FileInfo( _ strTemp & "\web.config") installlog.WriteLine("File info: " & strTemp) If Not FileInfo.Exists Then Throw New InstallException("Missing config file") End If ' Loads the config file into the XML DOM. Dim XmlDocument As New System.Xml.XmlDocument() XmlDocument.Load(FileInfo.FullName) ' Finds the right node and change it to the new value. Dim Node As System.Xml.XmlNode Dim FoundIt As Boolean = False For Each Node In _ XmlDocument.Item("configuration").Item("appSettings") ' Skips any comments. If Node.Name = "add" Then If Node.Attributes.GetNamedItem("key").Value = _ "servername.service" Then ' Note that "Service1.asmx" should be replaced with the ' actual name of the XML Web service file. Node.Attributes.GetNamedItem("value").Value = "http://" _ & ProvidedName & "/" & SvcName & "/Service1.asmx" FoundIt = True End If End If Next Node If Not FoundIt Then Throw New InstallException("Config file did not contain a ServerName section") End If ' Writes out the new config file. XmlDocument.Save(FileInfo.FullName) Finally installlog.WriteLine("Ending edit of config file") installlog.Close() End Try End Sub
Приведенный выше код сначала создает файл журнала установки, в котором будет записан ход выполнения настраиваемого действия. Для определения расположения устанавливаемой сборки и поиска соответствующего файла .config используется пространство имен System.Reflection. Модель документа XML используется для последовательного просмотра всех элементов в файле .config, пока не будет найден раздел appSettings Когда ключ servername.service найден, в назначенное ему значение включаются переданные параметры; перенаправляя приложение на использование новой веб-службы.
В Обозревателе решений дважды щелкните файл Web.config, чтобы открыть его.
Скопируйте значение ключа для веб-службы в раздел appSettings. Ключ имеет вид servername.service, где имя_сервера Ї сервер, на котором расположена веб-служба XML, а служба Ї имя веб-службы.
Откройте модуль класса установщика в редакторе кода и подставьте вместо текста "servername.service" значение, скопированное на предыдущем шаге.
Добавитье проект веб-установки
Для создания установщика приложения используются проекты установки. Проекты установки, базируясь на технологии установщика Windows, имеют такие функциональные возможности, как выполнение настраиваемых действий в процессе установки, и настройка пользовательского интерфейса установки. Дополнительные сведения о проектах установки см. в разделе Развертывание приложений и компонентов.
Чтобы добавить проект веб-установки
Щелкните правой кнопкой узел решений в Обозревателе решений и нажмите кнопку Добавить, а затем Новый проект.
В диалоговом окне Добавить новый проект в области Типы проектов откройте узел Другие типы проектов и выберите узел Проект установки и развертывания.
В области Шаблоны выберите Проект веб-установки. В поле Имя введите имя проекта WebAppSetup.
Если щелкнуть ОК, проект будет добавлен в решение, и откроется Редактор файловой системы.
В окне Свойства выберите свойство Свойство ProductName и присвойте ему имя веб-приложения.
В Редакторе файловой системы выберите узел Папка веб-приложения.
В меню Действие выберите пункт Добавить, а затем щелкните Выходные данные проекта.
В диалоговом окне Добавить выходную группу проекта выберите InstallerClassLibrary в раскрывающемся списке Проект, после чего выберите Основные выходные файлы.
Если щелкнуть ОК, основные выходные файлы из InstallerClassLibrary будут добавлены в проект веб-приложения.
Добавление настраиваемого действия
Настраиваемые действия применяются для выполнения кода в конце установки, что позволяет осуществлять действия, которыми нельзя управлять в процессе установки. Код настраиваемого действия может содержаться в файлах типа .dll, .exe, а также в файлах сценариев или сборки. Дополнительные сведения о настраиваемых действиях см. в разделе Управление настраиваемыми действиями при развертывании.
Чтобы добавить класс установщика как настраиваемое действие
Выберите в Обозревателе решений проект WebAppSetup.
В меню Вид щелкните Редактор, а затем Настраиваемые действия.
Откроется Редактор настраиваемых действий.
В Редакторе настраиваемых действий выберите узел Установка.
В меню Действие выберите команду Добавить настраиваемое действие.
Дважды щелкните Папка веб-приложения, а затем выберите Основной выходной файл проекта InstallerClassLibrary (Active).
Убедитесь, что свойство InstallerClass в окне Свойства имеет значение True.
Выберите свойство CustomActionData и введите следующий текст: /ServerName=[EDITA1] /ServiceName=[EDITA2]
Свойство CustomActionData позволяет задать два параметра, передаваемые настраиваемому действию разделенными пробелом.
Добавление диалогового окна
Диалоговые окна пользовательского интерфейса выводятся в процессе установки для сбора информации от пользователя. Дополнительные сведения о диалоговых окнах пользовательского интерфейса см. в разделе Управление пользовательским интерфейсом при развертывании.
Чтобы добавить настраиваемое диалоговое окно пользовательского интерфейса
Выберите проект установки в Обозревателе решений.
В меню Вид выберите Редактор, а затем щелкните Пользовательский интерфейс.
В окне Редактор пользовательского интерфейса под узлом Установка выберите узел Начало.
В меню Действие выберите команду Добавить диалоговое окно.
В диалоговом окне Добавление диалогового окна выберите Текстовые поля (A) и нажмите кнопку ОК.
В меню Действие выберите Вверх и повторяйте это действие до тех пор, пока диалоговое окно Текстовые поля (A) не окажется над диалоговым окном Адрес установки.
В окне Свойства задайте значения следующих свойств:
Свойство
Значение
BannerText
Введите имя сервера и имя службы
Edit1Label
Имя сервера:
Edit1Value
Localhost
Примечание.Этим способом указывается сервер по умолчанию. Здесь можно ввести ваше собственное имя сервера по умолчанию.Edit2Label
Имя службы:
Edit2Value
<имя службы>
Edit3Visible
False
Edit4Visible
False
Обратите внимание, что для свойства Edit1Property установлено значение "EDITA1", а для свойства Edit2Property — "EDITA2" Эти значения соответствуют значениям, введенным в свойстве CustomActionData в редакторе настраиваемых действий. Когда пользователь вводит текст, изменяя элементы управления в процессе установки, эти значения автоматически передаются при помощи свойства CustomActionData.
Сборка и развертывание приложения
Заключительным этапом является построение проекта установки для создания установщика, а затем установка приложения на целевой сервер.
Чтобы построить проект установки
- В меню Построение выберите команду Построить ИмяПроекта, где ИмяПроекта — имя вашего проекта установки.
Чтобы развернуть приложение на веб-сервере, используя компьютер разработчика
В Обозревателе решений выберите проект установки.
В меню Проект выберите пункт Установка.
Чтобы развернуть приложение на веб-сервере, используя другой компьютер
В Проводнике Windows перейдите в каталог проекта и найдите построенный установщик. Путь по умолчанию будет иметь вид \documents and settings\имя_пользователя\My Documents\Visual Studio Projects\имя_проекта_установки\конфигурация_проекта\имя_продукта.msi. По умолчанию конфигурация_проекта имеет значение Отладка.
Скопируйте файл .msi и все остальные файлы и вложенные папки в каталог на компьютере веб-сервера.
На компьютере веб-сервера дважды щелкните файл Setup.exe, чтобы запустить установщик.
См. также
Основные понятия
Знакомство с компонентами установки
Другие ресурсы
Развертывание приложений и компонентов