Пошаговое руководство. Использование настраиваемого действия для создания базы данных при установке

В следующем пошаговом руководстве объясняется методика использования настраиваемого действия и свойства CustomActionData для создания базы данных и таблицы базы данных при установке.

Примечание

Для данного руководства необходимо наличие SQL Server на компьютере, на котором будет разворачиваться приложение.

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Примечание

В приведенных ниже инструкциях показывается способ создания проекта развертывания с использованием проекта Visual Basic; однако эти общие принципы применимы к проектам на всех языках Visual Studio, поддерживающих развертывание приложений Windows.

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

  1. В меню Файл выберите команду Создать проект.

  2. В диалоговом окне Создание проекта в области Тип проекта выберите пункт Проекты Visual Basic, а затем в области Шаблоны выберите пункт Библиотека классов. В поле Имя введите DBCustomAction.

  3. В меню Проект выберите команду Добавить новый элемент.

  4. В диалоговом окне Добавление нового элемента выберите пункт Класс установщика. В поле Имя введите VbDeployInstaller.vb.

Создание объекта подключения к источнику данных

  1. В Обозревателе серверов выберите Подключения данных. Щелкните правой кнопкой мыши и выберите команду Добавить подключение.

  2. В диалоговом окне Выбор источника данных выберите пункт Microsoft SQL Server.

  3. В диалоговом окне Добавить подключение выполните следующие действия:

    1. В списке Имя сервера введите или выберите имя сервера.

    2. Выберите Использовать проверку подлинности Windows .

    3. В поле "База данных" введите master.

    4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно.

  4. В меню Данные выберите пункт Добавить новый источник данных, а затем воспользуйтесь мастером, чтобы добавить подключение, установленное в предыдущих шагах. Чтобы убедиться, что источник данных был добавлен в проект, выберите в меню Данные пункт Показать источники данных .

Создание текстового файла с инструкциями SQL для создания базы данных

  1. В Обозревателе решений выберите проект DBCustomAction. В меню Проект выберите команду Добавить новый элемент.

  2. В диалоговом окне Добавление нового элемента выберите Текстовый файл. В поле Имя введите sql.txt (обязательно строчными буквами).

  3. Добавьте в файл sql.txt следующий код:

    CREATE TABLE [dbo].[Employees] (
    [Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
    [Rsvp] [int] NULL ,
    [Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
    ) ON [PRIMARY];
    
    ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD 
    CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED 
    (
    [Name]
    ) ON [PRIMARY];
    
  4. В Обозревателе решений выберите файл sql.txt. В окне Свойства задайте для свойства BuildAction значение Внедренный ресурс.

Добавление к классу установщика кода для чтения текстового файла

  1. В Обозревателе решений выберите файл VbDeployInstaller.vb. В меню Вид выберите пункт Код.

  2. Добавьте в начало модуля следующую инструкцию Imports:

    Imports System.IO
    Imports System.Reflection
    Imports System.Data.SqlClient
    
  3. Добавьте следующий код к классу VbDeployInstaller после объявления элемента MyBase.New:

    Public Class VbDeployInstaller
    
        Dim masterConnection As New System.Data.SqlClient.SqlConnection
    
        Public Sub New()
            MyBase.New()
    
            'This call is required by the Component Designer.
            InitializeComponent()
    
            'Add initialization code after the call to InitializeComponent
    
        End Sub
    
        Private Function GetSql(ByVal Name As String) As String
            Try
    
                ' Gets the current assembly.
                Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()
    
                ' Resources are named using a fully qualified name.
                Dim strm As Stream = Asm.GetManifestResourceStream(
                  Asm.GetName().Name + "." + Name)
    
                ' Reads the contents of the embedded file.
                Dim reader As StreamReader = New StreamReader(strm)
                Return reader.ReadToEnd()
    
            Catch ex As Exception
                MsgBox("In GetSQL: " & ex.Message)
                Throw ex
            End Try
        End Function
    
        Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
            Dim Command As New SqlClient.SqlCommand(Sql, masterConnection)
    
            ' Initialize the connection, open it, and set it to the "master" database
            masterConnection.ConnectionString = My.Settings.masterConnectionString
            Command.Connection.Open()
            Command.Connection.ChangeDatabase(DatabaseName)
            Try
                Command.ExecuteNonQuery()
            Finally
                ' Closing the connection should be done in a Finally block
                Command.Connection.Close()
            End Try
        End Sub
    
        Protected Sub AddDBTable(ByVal strDBName As String)
            Try
                ' Creates the database.
                ExecuteSql("master", "CREATE DATABASE " + strDBName)
    
                ' Creates the tables.
                ExecuteSql(strDBName, GetSql("sql.txt"))
    
            Catch ex As Exception
                ' Reports any errors and abort.
                MsgBox("In exception handler: " & ex.Message)
                Throw ex
            End Try
        End Sub
    
        Public Overrides Sub Install(
            ByVal stateSaver As System.Collections.IDictionary)
    
            MyBase.Install(stateSaver)
            AddDBTable(Me.Context.Parameters.Item("dbname"))
        End Sub
    
    End Class
    
  4. В меню Построение выберите Построить DBCustomAction.

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

  1. В меню Файл выберите команду Добавить и выберите Новый проект.

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

  3. В окне Свойства выберите свойство ProductName и введите DB Installer.

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

  5. В диалоговом окне Добавление группы выходных данных проекта выберите для проекта DBCustomAction пункт Основные выходные файлы.

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

  1. Выберите в Обозревателе решений проект DBCustomAction_Setup. В меню Вид выберите пункт Редактор, а затем пункт Пользовательский интерфейс.

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

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

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

  5. В окне Свойства выберите свойство BannerText и введите "Укажите имя базы данных".

  6. Выберите свойство BodyText и введите "В этом диалоговом окне задается имя базы данных, которая будет создана на сервере баз данных".

  7. Выберите свойство Edit1Label и введите "Имя базы данных:".

  8. Выберите свойство Edit1Property и наберите CUSTOMTEXTA1.

  9. Выберите свойства Edit2Visible, Edit3Visible и Edit4Visible и задайте для них значение False.

Чтобы создать настраиваемое действие

  1. Выберите в Обозревателе решений проект DBCustomAction_Setup. В меню Вид выберите пункт Редактор, а затем пункт Настраиваемые действия.

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

  3. В диалоговом окне Выбор элемента в проекте дважды щелкните Папку приложения.

  4. Выберите элемент Основные выходные файлы DBCustomAction(Active), а затем нажмите кнопку ОК, чтобы закрыть диалоговое окно.

  5. Убедитесь, что пункт Основные выходные файлы DBCustomAction (Active) выбран в Редакторе настраиваемых действий. В окне Свойства выберите свойство CustomActionData и введите /dbname=[CUSTOMTEXTA1]. Эти данные передаются настраиваемому действию, запущенному в конце процедуры установки. Дополнительные сведения см. в разделе Свойство CustomActionData.

  6. В меню Построение выберите Построить DBCustomAction_Setup.

Установка приложения на компьютер разработчика

  • Выберите в Обозревателе решений проект DBCustomAction_Setup. В меню Проект выберите пункт Установить.

    При этом на компьютере разработчика будет запущен установщик.

    Примечание

    Для запуска установщика требуются разрешения на установку программ на данном компьютере.

Развертывание приложения на другом компьютере

  1. В Проводнике перейдите в каталог проекта и найдите построенный установщик. Путем по умолчанию будет "\documents and settings\ВашеИмяПользователя\DBCustomAction_Setup\КонфигурацияПроекта\DBCustomAction_Setup.msi". По умолчанию конфигурация проекта имеет значение "Debug".

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

    Примечание

    Для установки на компьютер, не подключенный к сети, скопируйте файлы на традиционный носитель, например на компакт-диск.

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

    Примечание

    Для запуска установщика требуются разрешения на установку программ на данном компьютере.

Чтобы удалить приложение

  1. В Панели управления Windows дважды щелкните пункт Установка и удаление программ.

  2. В диалоговом окне Установка и удаление программ выберите DBCustomAction_Setup, нажмите кнопку Удалить, а затем нажмите кнопку ОК, чтобы закрыть диалоговое окно.

    Совет

    Чтобы удалить приложение с компьютера разработчика, в меню Проект выберите Удалить.

См. также

Ссылки

Свойство CustomActionData

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

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

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

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