用VS2005制造WEB安装程序

2016-02-19 16:04 4 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐用VS2005制造WEB安装程序,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

  环境:windows2003 + vs2005+sqlserver2000

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

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

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

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

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

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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文件复制到一个路径下,直接写死就可以了。

来源:https://www.tulaoshi.com/n/20160219/1611008.html

延伸阅读
标签: Java JAVA基础
JBuilder是一个开放的Java IDE,它集成了Tomcat、Weblogic等服务器。虽然JDK、Tomcat、Weblogic不断升级,我们仍可以在JBuilder中使用它们的最新版本。由于Tomcat服务器的配置比较复杂,习惯了Windows平台的程序员常常对Tomcat的使用感到困惑。本文给出了一个使用Tomcat环境下的数据库连接池Database Connection Pool (DBCP) 的...
标签: Web开发
早做出来了,忘记传了,这会修改目录才发现,哈哈,8好意思的很啊! http://www.cnblogs.com/thcjp/archive/2006/09/04/494054.html
标签: SQLServer
场景如下: 安装sqlserver2005中文版,然后升级vs2005以支持WebApplicationProject项目模版(就是从微软的网站上下载的那两个安装包,以支持使用vs2005开发WebApplicationProject)。问题就出来了:打开vs2005,发现大部分菜单都已经自动变成中文的,这个还好,当你准备新建一个project时,发现除了刚安装的WebApplicationProject项目模版之外...
五一前拿到的光盘,安装了好几次,因为变化比较大,装卸几次,都是因为一些大大小小的问题。总的感觉这东西太大,运行速度和JBuilder有一拼了。狂吃内存,看来我512M是不够了,还得升啊。 说说几点注意事项和体会: 1.VS2003的J#发布包安装后是可以卸载的,VS2005的不行,卸载后进入主界会有出错警告,忽略它也可以正常进行C#等程序的编写,没...
标签: Web开发
制作第一个页面-欢迎您进入.Net(语法解释)-启动运行 http://www.cnblogs.com/thcjp/archive/2006/09/01/492652.html

经验教程

697

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部