Asp.net 는 SQLserver 와 함께 설치 그림 튜 토리 얼 을 포장 하여 배치 합 니 다.

1.필요 한 파일 준비 1.SQL 스 크 립 트 파일,생 성 후 설치 과정 에서 필요 한 표 와 저장 과정 등;생 성 후 db.sql(대소 문자 주의)2.LisenceFile.rtf 의 설치 파일 로 잠시 이름 을 지 었 습 니 다.제 시스템 은 개인 적 이 고 free 이기 때문에 하지 않 았 습 니 다.이거 앞으로 도 쓸 거 야.2.기 존 프로젝트 에 배치 항목 을 만 듭 니 다.1.'파일'메뉴 에서'항목 추가'를 가리 키 고'새 항목'을 선택 하 십시오.(그림 1-2)2.'새 항목 추가'대화 상자 에서'항목 유형'창 에 있 는'설치 및 배치 항목'을 선택 한 다음'템 플 릿'창 에 있 는'웹 설치 항목'을 선택 하 십시오."이름"상자 에 Test Installer 를 입력 하 십시오.(그림 1-3)3."확인"을 누 르 면 대화 상 자 를 닫 습 니 다.4.프로젝트 가 솔 루 션 자원 관리자 에 추가 되 고 파일 시스템 편집기 가 열 립 니 다.5."속성"창 에서 ProductName 속성 을 선택 하고 GCRM 을 입력 합 니 다.(1-2)(그림 1-3)기타 항목 의 역할 은 웹 캐 스 트 3 을 참고 할 수 있다.VbNetTest 프로젝트 의 출력 을 배치 항목 에 추가 합 니 다(가상 디 렉 터 리 가 SQLANDASPNet 이 라면)1.'파일 시스템 편집기'에서'웹 응용 프로그램 폴 더'를 선택 하 십시오.'조작'메뉴 에서'추가'를 가리 키 고'항목 출력'을 선택 하 십시오.(그림 1-4)2.'항목 출력 그룹 추가'대화 상자 에서'항목'드 롭 다운 목록 의'SQLANDASPNet'을 선택 하 십시오.3."확인"을 누 르 면 대화 상 자 를 닫 습 니 다.4.목록 에서'주 출력'과'내용 파일'그룹 을 선택 하고'확인'을 누 르 십시오.(그림 1-5)  (그림 1-4)(그림 1-5)다른 역할 은 웹 캐 스 트 를 참고 할 수 있 습 니 다.원본 파일 은 모든 항목 의 파일 4 입 니 다.
사용자 정의 설치 대화 상 자 를 만 듭 니 다.1.솔 루 션 자원 관리자 에서'Test Installer'항목 을 선택 하 십시오."보기"메뉴 에서"편집기"를 가리 키 고"사용자 인터페이스"를 선택 하 십시오.(그림 1-6)2.사용자 인터페이스 편집기 에서'설치'아래 의'시작'노드 를 선택 하 십시오.'조작'메뉴 에서'대화 상자 추가'를 선택 하 십시오.3."대화 상자 추가"대화 상자 에서"허가 프로 토 콜"대화 상 자 를 선택 하고"확인"을 누 르 면 대화 상 자 를 닫 습 니 다.(주:추가 하지 않 았 습 니 다.잠시 필요 하지 않 기 때문에 추가 할 것 이 있 습 니 다.)4."대화 상자 추가"대화 상자 에서"텍스트 상자(A)"대화 상 자 를 선택 하고"확인"을 누 르 면 대화 상 자 를 닫 습 니 다.(그림 1-7)5.'조작'메뉴 에서'위로 이동'을 선택 하 십시오.'텍스트 상자(A)'대화 상자 가'폴 더 설치'노드 위 에 있 을 때 까지 이 단 계 를 반복 합 니 다.6."속성"창 에서 BannerText 속성 을 선택 하고 입력:데이터베이스 설치...7.BodyText 속성 을 선택 하고 입력:설치 프로그램 은 대상 기기 에 데이터 베 이 스 를 설치 합 니 다.8.Edit1Label 속성 을 선택 하고 입력:데이터베이스 이름:.9.Edit1Property 속성 을 선택 하고 CUSTOMTEXTA 1 을 입력 합 니 다.10.Edit1Value 속성 을 선택 하고 입력:GsCrm.11.Edit2Label 속성 을 선택 하고 입력:서버 이름:.12.Edit2Property 속성 을 선택 하고 CUSTOMTEXTA 2 를 입력 합 니 다.13.Edit2Value 속성 을 선택 하고 입력:(local).14.Edit3Label 속성 을 선택 하고 입력:사용자 이름:.15.Edit3Value 속성 을 선택 하고 입력:sa.16.Edit3Property 속성 을 선택 하고 CUSTOMTEXTA 3 를 입력 하 십시오.17.Edit4Label 속성 을 선택 하고 입력:비밀번호:.18.Edit4Property 속성 을 선택 하고 CUSTOMTEXTA 4 를 입력 합 니 다.19.Edit2Visible,Edit3Visible 을 선택 하고 false 로 설정 합 니 다.(그림 1-8)(그림 1-7)
(그림 1-8)
(5).사용자 정의 작업 을 만 듭 니 다.1.솔 루 션 자원 관리자 에서'Test Installer'항목 을 선택 하 십시오.'보기'메뉴 에서'편집기'를 가리 키 고'사용자 정의 작업'을 선택 하 십시오.(그림 1-9)2.사용자 정의 작업 편집기 에서'설치'노드 를 선택 하 십시오.'조작'메뉴 에서'사용자 정의 조작 추가'를 선택 하 십시오.3.'항목 의 항목 선택'대화 상자 에서'응용 프로그램 폴 더'를 두 번 클릭 합 니 다.4."주 는 DBCustomAction(이벤트)에서 지 는 것"항목 을 선택 하고"확인"을 누 르 면 대화 상 자 를 닫 습 니 다.5."속성"창 에서 CustomActionData 속성 을 선택 하고/dbname=[CUSTOMTEXTA 1]/server=[CUSTOMTEXTA 2]/user=[CUSTOMTEXTA 3]/pwd=[CUSTOMTEXTA 4]/targetdir="[TARGETDIR]\"(그림 1-10)
첨부/targetdir="[targetdir]\"는 설 치 된 대상 경로 입 니 다.dbcustomeaction 류 에서 설 치 된 경 로 를 얻 기 위해 이 인 자 를 설정 합 니 다.또한,설 치 된 경 로 는 Reflection 을 통 해 얻 을 수 있 습 니 다:Dim As System.Reflection.Assembly=System.Reflection.Assembly.GetExecuting Assembly MsgBox("Asm.Location")(그림 1-9)(그림 1-10)하하,많이 좋아 졌 다.남 은 것 은 관건 적 인 절차 이다.나 는 많은 시간 을 들 여 연구 했다.(6)설치 프로그램 클래스 를 만 듭 니 다.1.'파일'메뉴 에서'새로 만 들 기'를 가리 키 고'항목'을 선택 하 십시오.2.'새 항목'대화 상자 에서'항목 형식'창의'Visual Basic 항목'을 선택 한 다음'템 플 릿'창의'라 이브 러 리'를 선택 하 십시오."이름"상자 에 DBCustomAction 을 입력 하 십시오.3."열기"를 누 르 면 대화 상 자 를 닫 습 니 다.4.'항목'메뉴 에서'새 항목 추가'를 선택 하 십시오.5.'새 항목 추가'대화 상자 에서'설치 프로그램 클래스'를 선택 하 십시오."이름"상자 에 DBCustomAction 을 입력 하 십시오.6."확인"을 누 르 면 대화 상 자 를 닫 습 니 다.(그림 1-11,1-12)주:여 기 는 원래 프로젝트 에 간단 한 설치 파일 을 만 들 면 됩 니 다.(그림 1-11) 추 가 된 효과 그림:(그림 1-12)여기 있 는 sql 파일 은 잠시 후에 추 가 될(7)추가 파일 입 니 다.1.SQL Server 에서 생 성 된 스 크 립 트 파일 db.sql 을"Test Installer"항목(그림 1-12)에 추가 합 니 다.2.설치 파일 Lisence File.rtf 를"Test Installer"항목 에 추가 합 니 다.3.사용자 인터페이스 편집기 에서 허가 프로 토 콜 을 선택 하 십시오.LisenceFile 속성 을 LisenceFile.rtf 파일(8)로 설정 한 코드 는 전체 배치 의 가장 중요 한 부분 입 니 다.
설치 프로그램 클래스 에 코드 를 추가 합 니 다.dbcustomeaction.vb 클래스

Imports System.ComponentModel
imports System.Configuration.Install
imports System.IO
imports System.Reflection
<runinstaller(true)> Public Class DBCustomActionClass DBCustomAction
inherits System.Configuration.Install.Installer
#region " "
public Sub New()Sub New()
mybase.new()
'
initializecomponent()
' InitializeComponent()
end Sub
' Installer dispose 。
protected Overloads Overrides Sub Dispose()Sub Dispose(ByVal disposing As Boolean)
if disposing Then
if Not (components Is Nothing) Then
components.dispose()
end If
end If
mybase.dispose(disposing)
end Sub
private components As System.ComponentModel.IContainer
<system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent()Sub InitializeComponent()
end Sub
#end Region
' sql
private Sub ExecuteSql()Sub ExecuteSql(ByVal conn As String, ByVal DatabaseName As String, ByVal Sql As String)
dim mySqlConnection As New SqlClient.SqlConnection(conn)
dim Command As New SqlClient.SqlCommand(Sql, mySqlConnection)
command.connection.open()
command.connection.changedatabase(databasename)
try
command.executenonquery()
finally
'close Connection
command.connection.close()
end Try
end Sub
public Overrides Sub Install()Sub Install(ByVal stateSaver As System.Collections.IDictionary)
MyBase.Install(stateSaver)
' ------------------------ -------------------------------------------------
try
dim connStr As String = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"))
'
executesql(connstr, "master", "CREATE DATABASE " + Me.Context.Parameters.Item("dbname"))
' osql
dim sqlProcess As New System.Diagnostics.Process
sqlprocess.startinfo.filename = "osql.exe "
sqlprocess.startinfo.arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("targetdir"))
sqlprocess.startinfo.windowstyle = ProcessWindowStyle.Hidden
sqlprocess.start()
sqlprocess.waitforexit() '
sqlprocess.close()
'
dim sqlFileInfo As New System.IO.FileInfo(String.Format("{0}db.sql", Me.Context.Parameters.Item("targetdir")))
if sqlFileInfo.Exists Then
sqlfileinfo.delete()
end If
catch ex As Exception
throw ex
end Try
' --------------------- Web.config-----------------------------------
try
dim FileInfo As System.IO.FileInfo = New System.IO.FileInfo(Me.Context.Parameters.Item("targetdir") & "\web.config")
if Not FileInfo.Exists Then
throw New InstallException(" ")
end If
' xml
dim XmlDocument As New System.Xml.XmlDocument
xmldocument.load(fileinfo.fullname)
' appsettings
dim Node As System.Xml.XmlNode
dim FoundIt As Boolean = False
for Each Node In XmlDocument.Item("configuration").Item("appSettings")
if Node.Name = "add" Then
if Node.Attributes.GetNamedItem("key").Value = "connString" Then
'
node.attributes.getnameditem("value").value = String.Format("Persist Security Info=False;Data Source={0};Initial Catalog={1};User ID={2};Password={3};Packet Size=4096;Pooling=true;Max Pool Size=100;Min Pool Size=1", _
me.context.parameters.item("server"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"))
foundit = True
end If
end If
next Node
if Not FoundIt Then
throw New InstallException("web.Config connString ")
end If
xmldocument.save(fileinfo.fullname)
catch ex As Exception
throw ex
end Try
end Sub
end Class
좀 어 려 운 것 은 바로 그 Process 류 입 니 다.osql.exe 프로그램 을 호출 하여 sql 문 구 를 실행 하 는 osql-U,-P,,-d,-i 입 니 다.웹.config 의 수정 코드 는 xml 의 문법 을 이용 하여 이 루어 집 니 다.이해 하기 어렵 지 않 습 니 다.마지막 컴 파일 생 성!그림:
설치 인터페이스:그림하하,드디어 다 썼 습 니 다.잘 썼 는 지 모 르 겠 습 니 다.마지막 으로 이 홍 근 선생님 과 마이크로소프트 강사 님 께 감 사 드 립 니 다.그들의 공 통 된 경험 을 결합 하여 배치 하 는 것 은 정말 간단 하 다.

좋은 웹페이지 즐겨찾기