Поделиться через


Пошаговое руководство. Перенаправление приложения для выбора другой целевой веб-службы при установке

Обновлен: Ноябрь 2007

В данном руководстве демонстрируется создание веб-приложения, которое затем может быть перенаправлено на другую веб-службу с использованием свойства Поведение URL-адреса, класса установщика и проекта веб-установки. Это бывает полезно, когда необходимо локально указать целевую веб-службу в процессе разработки и нужно использовать рабочую версию веб-службы при развертывании приложения.

5k10s063.alert_note(ru-ru,VS.90).gifПримечание.

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, в меню Сервис выберите команду Импорт и экспорт параметров. Дополнительные сведения см. в разделеПараметры Visual Studio.

Создание проекта веб-приложения

Первым шагом является создание проекта веб-приложения ASP.NET, который содержит веб-ссылку на веб-службу.

Создание проекта

Добавление класса установщика

Классы установщика, называемые также компонентами установки, являются классами .NET Framework, которые вызываются как настраиваемые действия в процессе установки. В этом случае в решение будет добавлен проект библиотеки классов. В этом проекте библиотеки классов предстоит создать класс установщика и переопределить его метод Install, добавив код для изменения файла .config веб-приложения. Дополнительные сведения о классах установщика см. в разделе Знакомство с компонентами установки.

Чтобы создать проект библиотеки классов

  1. Щелкните правой кнопкой узел решений в Обозревателе решений и нажмите кнопку Добавить, а затем Новый проект.

  2. В диалоговом окне Добавить новый проект в узле Visual Basic выберите Библиотека классов.

  3. Дайте проекту имя InstallerClassLibrary.

Чтобы добавить и реализовать класс установщика

  1. Щелкните правой кнопкой мыши узел проекта InstallerClassLibrary в Обозревателе решений и щелкните Добавить, а затем ― Класс.

  2. В диалоговом окне Добавить новый элемент выберите Класс установщика и измените значение в поле Имя на WebServiceInstaller.vb.

    После того как вы щелкнете Добавить, класс будет добавлен к проекту, и откроется конструктор класса установщика.

  3. Дважды щелкните конструктор, чтобы открыть редактор кода.

  4. Добавьте в 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 найден, в назначенное ему значение включаются переданные параметры; перенаправляя приложение на использование новой веб-службы.

  5. В Обозревателе решений дважды щелкните файл Web.config, чтобы открыть его.

  6. Скопируйте значение ключа для веб-службы в раздел appSettings. Ключ имеет вид servername.service, где имя_сервера Ї сервер, на котором расположена веб-служба XML, а служба Ї имя веб-службы.

  7. Откройте модуль класса установщика в редакторе кода и подставьте вместо текста "servername.service" значение, скопированное на предыдущем шаге.

Добавитье проект веб-установки

Для создания установщика приложения используются проекты установки. Проекты установки, базируясь на технологии установщика Windows, имеют такие функциональные возможности, как выполнение настраиваемых действий в процессе установки, и настройка пользовательского интерфейса установки. Дополнительные сведения о проектах установки см. в разделе Развертывание приложений и компонентов.

Чтобы добавить проект веб-установки

  1. Щелкните правой кнопкой узел решений в Обозревателе решений и нажмите кнопку Добавить, а затем Новый проект.

  2. В диалоговом окне Добавить новый проект в области Типы проектов откройте узел Другие типы проектов и выберите узел Проект установки и развертывания.

    В области Шаблоны выберите Проект веб-установки. В поле Имя введите имя проекта WebAppSetup.

    Если щелкнуть ОК, проект будет добавлен в решение, и откроется Редактор файловой системы.

  3. В окне Свойства выберите свойство Свойство ProductName и присвойте ему имя веб-приложения.

  4. В Редакторе файловой системы выберите узел Папка веб-приложения.

  5. В меню Действие выберите пункт Добавить, а затем щелкните Выходные данные проекта.

  6. В диалоговом окне Добавить выходную группу проекта выберите InstallerClassLibrary в раскрывающемся списке Проект, после чего выберите Основные выходные файлы.

    Если щелкнуть ОК, основные выходные файлы из InstallerClassLibrary будут добавлены в проект веб-приложения.

Добавление настраиваемого действия

Настраиваемые действия применяются для выполнения кода в конце установки, что позволяет осуществлять действия, которыми нельзя управлять в процессе установки. Код настраиваемого действия может содержаться в файлах типа .dll, .exe, а также в файлах сценариев или сборки. Дополнительные сведения о настраиваемых действиях см. в разделе Управление настраиваемыми действиями при развертывании.

Чтобы добавить класс установщика как настраиваемое действие

  1. Выберите в Обозревателе решений проект WebAppSetup.

  2. В меню Вид щелкните Редактор, а затем Настраиваемые действия.

    Откроется Редактор настраиваемых действий.

  3. В Редакторе настраиваемых действий выберите узел Установка.

  4. В меню Действие выберите команду Добавить настраиваемое действие.

  5. Дважды щелкните Папка веб-приложения, а затем выберите Основной выходной файл проекта InstallerClassLibrary (Active).

  6. Убедитесь, что свойство InstallerClass в окне Свойства имеет значение True.

  7. Выберите свойство CustomActionData и введите следующий текст: /ServerName=[EDITA1] /ServiceName=[EDITA2]

    Свойство CustomActionData позволяет задать два параметра, передаваемые настраиваемому действию разделенными пробелом.

Добавление диалогового окна

Диалоговые окна пользовательского интерфейса выводятся в процессе установки для сбора информации от пользователя. Дополнительные сведения о диалоговых окнах пользовательского интерфейса см. в разделе Управление пользовательским интерфейсом при развертывании.

Чтобы добавить настраиваемое диалоговое окно пользовательского интерфейса

  1. Выберите проект установки в Обозревателе решений.

  2. В меню Вид выберите Редактор, а затем щелкните Пользовательский интерфейс.

  3. В окне Редактор пользовательского интерфейса под узлом Установка выберите узел Начало.

  4. В меню Действие выберите команду Добавить диалоговое окно.

  5. В диалоговом окне Добавление диалогового окна выберите Текстовые поля (A) и нажмите кнопку ОК.

  6. В меню Действие выберите Вверх и повторяйте это действие до тех пор, пока диалоговое окно Текстовые поля (A) не окажется над диалоговым окном Адрес установки.

  7. В окне Свойства задайте значения следующих свойств:

    Свойство

    Значение

    BannerText

    Введите имя сервера и имя службы

    Edit1Label

    Имя сервера:

    Edit1Value

    Localhost

    5k10s063.alert_note(ru-ru,VS.90).gifПримечание.
    Этим способом указывается сервер по умолчанию. Здесь можно ввести ваше собственное имя сервера по умолчанию.

    Edit2Label

    Имя службы:

    Edit2Value

    <имя службы>

    Edit3Visible

    False

    Edit4Visible

    False

    Обратите внимание, что для свойства Edit1Property установлено значение "EDITA1", а для свойства Edit2Property — "EDITA2" Эти значения соответствуют значениям, введенным в свойстве CustomActionData в редакторе настраиваемых действий. Когда пользователь вводит текст, изменяя элементы управления в процессе установки, эти значения автоматически передаются при помощи свойства CustomActionData.

Сборка и развертывание приложения

Заключительным этапом является построение проекта установки для создания установщика, а затем установка приложения на целевой сервер.

Чтобы построить проект установки

  • В меню Построение выберите команду Построить ИмяПроекта, где ИмяПроекта — имя вашего проекта установки.

Чтобы развернуть приложение на веб-сервере, используя компьютер разработчика

  1. В Обозревателе решений выберите проект установки.

  2. В меню Проект выберите пункт Установка.

Чтобы развернуть приложение на веб-сервере, используя другой компьютер

  1. В Проводнике Windows перейдите в каталог проекта и найдите построенный установщик. Путь по умолчанию будет иметь вид \documents and settings\имя_пользователя\My Documents\Visual Studio Projects\имя_проекта_установки\конфигурация_проекта\имя_продукта.msi. По умолчанию конфигурация_проекта имеет значение Отладка.

  2. Скопируйте файл .msi и все остальные файлы и вложенные папки в каталог на компьютере веб-сервера.

  3. На компьютере веб-сервера дважды щелкните файл Setup.exe, чтобы запустить установщик.

См. также

Основные понятия

Знакомство с компонентами установки

Другие ресурсы

Развертывание приложений и компонентов

Управление настраиваемыми действиями при развертывании

Управление пользовательским интерфейсом при развертывании