用VS2005制造WEB安装程序

简介: 用VS2005制造WEB安装程序 环境:windows2003 + vs2005+sqlserver2000  1、打开VS2005,打开工程或网站(这里的示例是一个已发布的网站系统).   2、从“解决方案资源管理器中”右键点击解决方案名称,选择“添加”――“新建项目”,从打开的“添加新项目”窗口,在“项目类型”栏选择“其他项目类型”――“安装部署”,在模板栏,选“web项目”,在下面的名称和地址栏输入名称和地址。

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

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.baksqlserver备份数据库名,也可以没有后缀,如果没有后缀,在程序中也不要有,还有备份文件要和发布的网站文件放在一起,water_datawater_log是逻辑数据名,在sqlserver数据库中的备份恢复中都能查看到的,TO 后面是把*.mdf*.ldf文件复制到一个路径下,直接写死就可以了。

相关文章
|
3月前
|
安全 测试技术 数据库
维护的Web应用程序
【10月更文挑战第4天】维护的Web应用程序
56 4
|
5月前
|
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应用打下基础。
67 1
|
2月前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
30 6
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
数据可视化 数据库 开发者
使用Dash构建交互式Web应用程序
【10月更文挑战第16天】本文介绍了使用Python的Dash框架构建交互式Web应用程序的方法。Dash结合了Flask、React和Plotly等技术,让开发者能够快速创建功能丰富的数据可视化应用。文章从安装Dash开始,逐步介绍了创建简单应用程序、添加交互元素、部署应用程序以及集成更多功能的步骤,并提供了代码示例。通过本文,读者可以掌握使用Dash构建交互式Web应用程序的基本技巧和高级功能。
79 3
|
3月前
|
JavaScript 前端开发
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
|
3月前
|
前端开发 JavaScript 测试技术
构建响应式Web应用程序:React实战指南
【10月更文挑战第9天】构建响应式Web应用程序:React实战指南
|
3月前
|
存储 JavaScript 前端开发
如何使用React和Redux构建现代化Web应用程序
【10月更文挑战第4天】如何使用React和Redux构建现代化Web应用程序
|
3月前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
47 2
|
3月前
|
SQL 安全 测试技术
漏洞扫描技术:对Web应用程序进行漏洞扫描
漏洞扫描技术:对Web应用程序进行漏洞扫描
123 1