Пошаговое руководство. Перенаправление приложения для выбора другой целевой веб-службы при установке
В данном руководстве демонстрируется создание веб-приложения, которое затем может быть перенаправлено на другую веб-службу с использованием свойства Поведение URL-адреса, класса установщика и проекта веб-установки. Это бывает полезно, когда необходимо локально указать целевую веб-службу в процессе разработки и нужно использовать рабочую версию веб-службы при развертывании приложения.
Примечание
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.
Создание проекта веб-приложения
Первым шагом является создание проекта веб-приложения ASP.NET, который содержит веб-ссылку на веб-службу.
Создание проекта
- Создайте веб-приложение, содержащее веб-ссылку на веб-службу. Для данного пошагового руководства подойдет веб-ссылка на любую допустимую веб-службу.
Добавление класса установщика
Классы установщика, называемые также компонентами установки, являются классами .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 install_log As New System.IO.StreamWriter("Installation.log") install_log.AutoFlush = True Try Dim providedName = Me.Context.Parameters.Item("ServerName") Dim svcName = Me.Context.Parameters.Item("ServiceName") install_log.WriteLine("Starting Edit of the config file") If providedName = "" OrElse svcName = "" Then Throw New InstallException("No arguments specified") End If ' Uses reflection to find the location of the config file. Dim strConfigLoc = System.Reflection.Assembly.GetExecutingAssembly().Location Dim strTemp = strConfigLoc strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - strTemp.LastIndexOf("\")) strTemp = strTemp.Remove(strTemp.LastIndexOf("\"), Len(strTemp) - strTemp.LastIndexOf("\")) Dim fInfo As New System.IO.FileInfo(strTemp & "\web.config") install_log.WriteLine("File info: " & strTemp) If Not fInfo.Exists Then Throw New InstallException("Missing config file") End If ' Loads the config file into the XML DOM. ' Loads the config file into the XML DOM. Dim xmlDoc = XDocument.Load(fInfo.FullName) ' Finds the right node and change it to the new value. Dim foundIt As Boolean = False For Each node In xmlDoc.<configuration>.<appSettings>.<add> If node.@key = "servername.service" Then ' Note that "Service1.asmx" should be replaced with the ' actual name of the XML Web service file. node.@value = "http://" & providedName & "/" & svcName & "/Service1.asmx" foundIt = True 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. xmlDoc.Save(fInfo.FullName) Finally install_log.WriteLine("Ending edit of config file") install_log.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.
Сборка и развертывание приложения
Заключительным этапом является построение проекта установки для создания установщика, а затем установка приложения на целевой сервер.
Чтобы построить проект установки
- В меню Построение выберите команду Построить ИмяПроекта, где ИмяПроекта — имя вашего проекта установки.
Чтобы развернуть приложение на веб-сервере, используя компьютер разработчика
В Обозревателе решений выберите проект установки.
В меню Проект выберите пункт Установка.
Чтобы развернуть приложение на веб-сервере, используя другой компьютер
В Проводнике перейдите в каталог проекта и найдите построенный установщик. Путь по умолчанию будет иметь вид \documents and settings\имя_пользователя\My Documents\Visual Studio Projects\имя_проекта_установки\конфигурация_проекта\имя_продукта.msi. По умолчанию конфигурация_проекта имеет значение Отладка.
Скопируйте файл .msi и все остальные файлы и вложенные папки в каталог на компьютере веб-сервера.
На компьютере веб-сервера дважды щелкните файл Setup.exe, чтобы запустить установщик.
См. также
Другие ресурсы
Развертывание приложений и компонентов