WEB开发网
开发学院数据库MSSQL Server 用VS2005制造WEB安装程序 阅读

用VS2005制造WEB安装程序

 2008-12-24 10:17:29 来源:WEB开发网   
核心提示:环境:windows2003 + vs2005+sqlserver20001、打开VS2005,打开工程或网站(这里的示例是一个已发布的网站系统). 2、从“解决方案资源管理器中”右键点击解决方案名称,用VS2005制造WEB安装程序,选择“添加”――“新建项

环境:windows2003 + vs2005+sqlserver2000

1、打开VS2005,打开工程或网站(这里的示例是一个已发布的网站系统). 

2、从“解决方案资源管理器中”右键点击解决方案名称,选择“添加”――“新建项目”,从打开的“添加新项目”窗口,在“项目类型”栏选择“其他项目类型”――“安装部署”,在模板栏,选“web项目”,在下面的名称和地址栏输入名称和地址。

3、生成sql文件(只生成创建数据表的SQL语句)

打开SQLSER企业管理器,登录,选择数据库――选择要生成SQL语句的表,右键――所有任务――生成SQL脚本。在打开的窗口中点击“确定”,保存SQL脚本(注意:sql文件一定要用小写的英文名称命名,保存完成后把SQL文件另存为TXT文件,并把里面的所有的“GO”去掉。)

4、创建安装程序类库和安装程序类

从“解决方案资源管理器中”右键点击解决方案名称,选择“添加”――“新建项目”,从打开的“添加新项目”窗口,在“项目类型”栏选择“VISAL BASIC”,在模板栏,选“类库”,在下面的名称和地址栏输入名称和地址。点击“确定”。

5、从“解决方案资源管理器中”点击刚生成的类库,删除自动生成的class1.vb类,右键点击类库名称――添加――新建项,选择“安装程序类”,输入名称,点击“添加”按钮。

6、打开刚生成的安装程序类,在dbtest.vb中,添加如下代码

Imports System.ComponentModel
Imports System.Configuration.Install
Imports System.IO
Imports System.Reflection
  
Public Class dbtest
  
  '声明私有变量
  Private sqlConnection1 As SqlClient.SqlConnection
  Private ServerName As String
  Private AdminName As String
  Private AdminPwd As String
  
  Public Sub New()
    MyBase.New()
  
    '组件设计器需要此调用。
    InitializeComponent()
  
    '调用 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("读取SQL文件出错: " & 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, sqlConnection1)
  
    Command.Connection.Open()
    Command.Connection.ChangeDatabase(DatabaseName)
    Try
      Command.ExecuteNonQuery()
    Finally
      ' Finally, blocks are a great way to ensure that the connection
      ' is always closed.
      Command.Connection.Close()
    End Try
  End Sub
  
  Protected Sub AddDBTable()
    Try
      ' 生成数据库
      ExecuteSql("master", "CREATE DATABASE water")
  
      ' 根据SQL语句生成表
      ExecuteSql("water", GetSql("watertable.txt"))
  
    Catch ex As Exception
      ' Reports any errors and abort.
      MsgBox("生成数据库错误: " & ex.Message)
      Throw ex
    End Try
  End Sub
  Private Sub WriteWebConfig()
    '修改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 = "AdoConnBySql" Then
            '写入连接字符串
            Node.Attributes.GetNamedItem("value").Value = String.Format("Provider=SQLOLEDB;Data Source={0};Password={2};User ID={1};Initial Catalog=water", Me.Context.Parameters.Item("server"), 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
  ''' <summary>
  ''' 安装程序入口
  ''' </summary>
  ''' <param name="stateSaver"></param>
  ''' <remarks></remarks>
  Public Overrides Sub Install(ByVal stateSaver As _
    System.Collections.IDictionary)
  
    MyBase.Install(stateSaver)
  
    '读取用户连接数据库信息
    ServerName = Trim(Me.Context.Parameters.Item("server"))
    AdminName = Trim(Me.Context.Parameters.Item("user"))
    AdminPwd = Trim(Me.Context.Parameters.Item("pwd"))
    '根据用户界面输入的信息建立数据库联接
    sqlConnection1 = New SqlClient.SqlConnection
    sqlConnection1.ConnectionString = "User ID=" + AdminName + ";Data Source = " + ServerName + ";Password=" + AdminPwd + ";Initial Catalog=master"
    'sqlConnection1.Open()
  
    '添加数据库中的表
    AddDBTable()
  
    '修改web.config文件中的数据库连接串
    WriteWebConfig()
  
  End Sub
End Class

1 2 3  下一页

Tags:VS 制造 WEB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接