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

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

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры 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 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 найден, в назначенное ему значение включаются переданные параметры; перенаправляя приложение на использование новой веб-службы.

  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

    ПримечаниеПримечание
    Этим способом указывается сервер по умолчанию.Здесь можно ввести ваше собственное имя сервера по умолчанию.

    Edit2Label

    Имя службы:

    Edit2Value

    <имя службы>

    Edit3Visible

    False

    Edit4Visible

    False

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

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