ASP.NET安装部署代码实现之添加文件简介:
1. 将SQL Server生成的脚本文件db.sql添加到“Test Installer”项目
2. 将安装文件LisenceFile.rtf添加到“Test Installer”项目
3. 在用户界面编辑器中,选择许可协议,设置LisenceFile属性为LisenceFile.rtf文件
以下的ASP.NET安装部署代码实现是整个部署的最重要的一部分了
将代码添加到安装程序类中,dbcustomaction.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)
- ' ----------ASP.NET安装部署代码实现建立数据库------------
- 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"))
- 'ASP.NET安装部署代码实现之调用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()
- 'ASP.NET安装部署代码实现之删除脚本文件
- 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
- ' -ASP.NET安装部署代码实现之将连接字符串写入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
- 'ASP.NET安装部署代码实现之写入连接字符串
- 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。
web.config的修改代码是利用xml的语法实现。不是很难理解。
***编译生成!如图:
安装界面:如图
ASP.NET安装部署代码实现的基本情况就向你介绍到这里,希望对你学习ASP.NET安装部署有所帮助。
【编辑推荐】