installDB.vb
上传用户:wj57717022
上传日期:2014-12-16
资源大小:4093k
文件大小:4k
源码类别:

医药行业

开发平台:

Visual Basic

  1. Imports System.ComponentModel
  2. Imports System.Configuration.Install
  3. <RunInstaller(True)> Public Class installDB
  4.     Inherits System.Configuration.Install.Installer
  5. #Region " 组件设计器生成的代码 "
  6.     Public Sub New()
  7.         MyBase.New()
  8.         '该调用是组件设计器所必需的。
  9.         InitializeComponent()
  10.         '在 InitializeComponent() 调用之后添加任何初始化
  11.     End Sub
  12.     'Installer 重写 dispose 以清理组件列表。
  13.     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  14.         If disposing Then
  15.             If Not (components Is Nothing) Then
  16.                 components.Dispose()
  17.             End If
  18.         End If
  19.         MyBase.Dispose(disposing)
  20.     End Sub
  21.     '组件设计器所必需的
  22.     Private components As System.ComponentModel.IContainer
  23.     '注意: 以下过程是组件设计器所必需的
  24.     '可以使用组件设计器来修改此过程。
  25.     '不要使用代码编辑器来修改它。
  26.     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
  27.         components = New System.ComponentModel.Container
  28.     End Sub
  29. #End Region
  30.     Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
  31.         MyBase.Install(stateSaver)
  32.         If Not InstallDB() Then
  33.             '失败,反安装
  34.             Me.Uninstall(stateSaver)
  35.             Exit Sub
  36.         End If
  37.         DeleteFile(String.Format("{0}webjxc.dat", Me.Context.Parameters.Item("targetdir")))
  38.     End Sub
  39.     Public Overrides Sub Uninstall(ByVal stateSaver As System.Collections.IDictionary)
  40.         '执行反安装
  41.         MyBase.Uninstall(stateSaver)
  42.         DeleteFile(String.Format("{0}webjxc.dat", Me.Context.Parameters.Item("targetdir")))
  43.     End Sub
  44.     Private Sub DeleteFile(ByVal paths As String)
  45.         '删除指定的文件
  46.         Try
  47.             Dim delFile As New System.IO.FileInfo(paths)
  48.             If delFile.Exists Then
  49.                 delFile.Delete()
  50.             End If
  51.         Catch ex As Exception
  52.         End Try
  53.     End Sub
  54.     Private Sub CreateSql(ByVal paths As String)
  55.         Dim File As System.IO.StreamWriter
  56.         Dim db As String = String.Format("{0}", Me.Context.Parameters.Item("dbname"))
  57.         Dim path As String = String.Format("{0}", Me.Context.Parameters.Item("targetdir"))
  58.         Try
  59.             Dim s As New System.Text.StringBuilder
  60.             s.Append("use master" & vbCrLf)
  61.             s.Append("" & vbCrLf)
  62.             s.Append("EXEC sp_attach_db @dbname = N'webjxc',@filename1 = N'" & path & "webjxc_Data.mdf',@filename2 = N'" & path & "webjxc_log.ldf'" & vbCrLf)
  63.             File = New System.IO.StreamWriter(paths)
  64.             File.Write(s.ToString)
  65.         Catch ex As Exception
  66.         Finally
  67.             File.Close()
  68.         End Try
  69.     End Sub
  70.     Private Function InstallDB() As Boolean
  71.         '安装数据库,调用自动批处理。
  72.         Try
  73.             '创建临时脚本
  74.             CreateSql(String.Format("{0}Mydb2000tp.sql", Me.Context.Parameters.Item("targetdir")))
  75.             '调用osql执行脚本
  76.             Dim sqlProcess As New System.Diagnostics.Process
  77.             sqlProcess.StartInfo.FileName = "osql.exe"
  78.             sqlProcess.StartInfo.Arguments = String.Format(" -E -S {0} -i {1}Mydb2000tp.sql", Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("targetdir"))
  79.             sqlProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  80.             sqlProcess.Start()
  81.             sqlProcess.WaitForExit()  '等待执行
  82.             sqlProcess.Close()
  83.             '删除脚本文件
  84.             DeleteFile(String.Format("{0}Mydb2000tp.sql", Me.Context.Parameters.Item("targetdir")))
  85.             Return True
  86.         Catch ex As Exception
  87.             Return False
  88.         End Try
  89.     End Function
  90. End Class