연습: 설치할 때 사용자 지정 작업을 사용하여 데이터베이스 만들기

다음 연습에서는 사용자 지정 작업 및 CustomActionData 속성을 사용하여 설치하는 동안 데이터베이스 및 데이터베이스 테이블을 만드는 과정을 보여 줍니다.

참고

이 연습을 사용하려면 응용 프로그램을 배포할 컴퓨터에 SQL Server가 설치되어 있어야 합니다.

참고

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

참고

다음 지침에서는 Visual Basic 프로젝트를 사용하여 배포 프로젝트를 만드는 방법을 보여 줍니다. 여기에서 설명하는 일반 원칙은 Windows 기반 응용 프로그램의 배포를 지원하는 모든 Visual Studio 언어 프로젝트에도 적용됩니다.

설치 관리자 클래스를 만들려면

  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. MyBase.New를 선언한 후 VbDeployInstaller 클래스에 다음 코드를 추가합니다.

    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, Edit3VisibleEdit4Visible 속성을 선택하고 False로 설정합니다.

사용자 지정 작업을 만들려면

  1. 솔루션 탐색기에서 DBCustomAction_Setup 프로젝트를 선택합니다. 보기 메뉴에서 편집기를 가리킨 다음 사용자 지정 작업을 클릭합니다.

  2. 사용자 지정 작업 편집기에서 설치 노드를 선택합니다. 작업 메뉴에서 사용자 지정 작업 추가를 클릭합니다.

  3. 프로젝트에서 항목 선택 대화 상자에서 응용 프로그램 폴더를 두 번 클릭합니다.

  4. **DBCustomAction의 기본 출력(활성)**을 선택한 다음 확인을 클릭하여 대화 상자를 닫습니다.

  5. 사용자 지정 작업 편집기DBCustomAction의 기본 출력(활성) 항목이 선택되어 있는지 확인합니다. 속성 창에서 CustomActionData 속성을 선택한 다음 /dbname=[CUSTOMTEXTA1]을 입력합니다. 이 데이터는 설치 종료 시점에서 실행되는 사용자 지정 작업에 전달됩니다. 자세한 내용은 CustomActionData 속성을 참조하십시오.

  6. 빌드 메뉴에서 DBCustomAction_Setup 빌드를 클릭합니다.

개발 컴퓨터에 응용 프로그램을 설치하려면

  • 솔루션 탐색기에서 DBCustomAction_Setup 프로젝트를 선택합니다. 프로젝트 메뉴에서 설치를 클릭합니다.

    그러면 개발 컴퓨터에서 설치 관리자가 실행됩니다.

    참고

    설치 관리자를 실행하려면 해당 컴퓨터에 대한 설치 권한이 있어야 합니다.

응용 프로그램을 다른 컴퓨터에 배포하려면

  1. Windows 탐색기에서 프로젝트 디렉터리로 이동한 다음 빌드된 설치 관리자를 찾습니다. 기본 경로는 \documents and settings\yourloginname\DBCustomAction_Setup\project configuration\ DBCustomAction_Setup.msi입니다. 기본 project configuration은 Debug입니다.

  2. 디렉터리에 있는 DBCustomAction_Setup.msi 및 다른 모든 파일과 하위 디렉터리를 다른 컴퓨터로 복사합니다.

    참고

    네트워크에 연결되어 있지 않은 컴퓨터에 응용 프로그램을 설치하려면 CD-ROM 등의 미디어에 파일을 복사하십시오.

    대상 컴퓨터에서 Setup.exe 파일을 두 번 클릭하여 설치 관리자를 실행합니다.

    참고

    설치 관리자를 실행하려면 해당 컴퓨터에 대한 설치 권한이 있어야 합니다.

응용 프로그램을 제거하려면

  1. Windows 제어판에서 프로그램 추가/제거를 두 번 클릭합니다.

  2. 프로그램 추가/제거 대화 상자에서 DBCustomAction_Setup을 선택하고 제거를 클릭한 다음 확인을 클릭하여 대화 상자를 닫습니다.

    개발 컴퓨터에서 응용 프로그램을 제거하려면 프로젝트 메뉴에서 제거를 클릭합니다.

참고 항목

참조

CustomActionData 속성

개념

사용자 지정 작업의 오류 처리

기타 리소스

배포 시 사용자 지정 작업 관리