用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 StringAs 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 StringByVal 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
6 、添加 SQL 脚本文件到类库中。
    右键点击类库名称――添加――现有项,选择 watertable.txt 文件。点击“确定”。
    右键选择刚刚添加的 watertable.txt 文件,选“属性”,把“生成操作”项内容修改为“嵌入的资源”。
 
7 、生成类库的 DLL 文件。
 
8 、右键安装项目名称――“视图”――“文件系统”,在打开的“文件系统窗口”,右键“ WEB 应用程序文件夹”――“添加”――项目输出,
 
从“项目”下拉列表框中,选择类库为“主输出”,
 
重复上步操作,选择网站为“内容文件”
 
 
9 、添加安装时用户要输入的数据库服务器名称、用户名、密码的用户界面。
    右键安装项目名称――视图――用户界面,在打开的安装界面中,右键“启动”,选择“添加对话框”,在弹出的窗口中,选择“文本框 A ”。
右键文本框 A ,选择“上移”,重复执行,直到在“安装地址”上。
 
 
右键“文本框 A ”――属性,进行如下修改。
Edit1lable1        数据库服务器 :
Edit1property     DBSERVERNAME
Edit1visible       true
 
Edit2lable1        用户名 :
Edit2property     USERNAME
Edit2visible       true
 
Edit3lable1        用户名 :
Edit3property     PASSWORD
Edit3visible       true
 
Edit4visible       false
 
 
10 、添加自定义操作
 
在“解决方案资源管理器中”,右键安装项目名称――“视图”――“自定义操作”,在打开的自定义操作窗口,右键“安装”――“添加自定义操作”,在打开的“选择项目的项”,双击“ WEB 应用程序文件夹”――主输出来自 clslib( 活动 )
 
右键“主输出来自 clslib( 活动 ) ”――“属性窗口”,修改属性
Customactiondata 
 /server=[DBSERVERNAME] /user=[USERNAME] /pwd=[PASSWORD]  /targetdir="[TARGETDIR]\"
注意:每个变量之间一定要有一个空格做间隔,如果想得到安装文件在安装机器中的路径,一定要添加   targetdir  变量。
 
11 、添加系统必备
右键安装项目名称――属性――选择系统必备
在打开的系统必备窗口,选择  .net framework 2.0――选择“从与我的应用程序相同路径下载系统必备”,点击“确定”
 
12 、生成安装项目。
从菜单“生成”――“生成 websetup , 生成安装项目。
 
13 、安装项目界面
从“解决方案资源管理器”――安装项目,右键安装项目名称――安装。
 
生成的数据库
 
生成的网站
 
修改后的 web.config
写在后面的话:
做完程序后,发现用 SQLSER 的恢复数据库方法比用 SQL 文件要好的多,也方便的多,就做了一个过程,代码如下:
 
Private sub RestoreDB()
Dim strdir as string
Dim strSql as string
 
得到安装程序路径
Strdir=me.context.parameters.item(“targetdir”)
Strsql="RESTORE DATABASE water FROM DISK = '" + strdir + "data.bak' " +
                " WITH MOVE 'water_data' TO '" + "c:\water.mdf', " +
                " MOVE 'water_log' TO '" + "c:\water_log.ldf' "
 
Executesql(“master”,strsql)
 
End sub
       
 
注意: data.bak sqlserver 备份数据库名,也可以没有后缀,如果没有后缀,在程序中也不要有,还有备份文件要和发布的网站文件放在一起, water_data water_log 是逻辑数据名,在 sqlserver 数据库中的备份恢复中都能查看到的, TO  后面是把 *.mdf *.ldf 文件复制到一个路径下,直接写死就可以了。









本文转自 牛海彬 51CTO博客,原文链接:http://blog.51cto.com/newhappy/135713,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
安全 测试技术 数据库
维护的Web应用程序
【10月更文挑战第4天】维护的Web应用程序
48 4
|
4月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
61 1
|
1月前
|
数据可视化 数据库 开发者
使用Dash构建交互式Web应用程序
【10月更文挑战第16天】本文介绍了使用Python的Dash框架构建交互式Web应用程序的方法。Dash结合了Flask、React和Plotly等技术,让开发者能够快速创建功能丰富的数据可视化应用。文章从安装Dash开始,逐步介绍了创建简单应用程序、添加交互元素、部署应用程序以及集成更多功能的步骤,并提供了代码示例。通过本文,读者可以掌握使用Dash构建交互式Web应用程序的基本技巧和高级功能。
44 3
|
2月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
2月前
|
前端开发 JavaScript 测试技术
构建响应式Web应用程序:React实战指南
【10月更文挑战第9天】构建响应式Web应用程序:React实战指南
|
2月前
|
存储 JavaScript 前端开发
如何使用React和Redux构建现代化Web应用程序
【10月更文挑战第4天】如何使用React和Redux构建现代化Web应用程序
|
2月前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
39 2
|
2月前
|
SQL 安全 测试技术
漏洞扫描技术:对Web应用程序进行漏洞扫描
漏洞扫描技术:对Web应用程序进行漏洞扫描
|
2月前
|
Rust 网络协议 应用服务中间件
granian:让你的 Web 应用程序快如闪电
granian:让你的 Web 应用程序快如闪电
73 2
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
46 0