创建自定义操作
1. 在解决方案资源管理器中选择“Test Installer”项目。在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。
2. 在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。
3. 在“选择项目中的项”对话框中,双击“应用程序文件夹”。
4. 选择“主输出来自 DBCustomAction(活动)”项,然后单击“确定”关闭对话框。
5. 在“属性”窗口中,选择 CustomActionData 属性并键入 /dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"。
附/targetdir="[targetdir]\"是安装后的目标路径,为了在dbcustomaction类中获得安装后的路径,我们设置此参数。
另外,安装后的路径也可以通过Reflection得到:
Dim Asm As System.Reflection.Assembly = _
System.Reflection.Assembly.GetExecutingAssembly
MsgBox("Asm.Location")
添加文件
1. 将SQL Server生成的脚本文件DB.sql添加到“Test Installer”项目
2. 将安装文件LisenceFile.rtf添加到“Test Installer”项目
3. 在用户界面编辑器中,选择许可协议,设置LisenceFile属性为LisenceFile.rtf文件
将代码添加到安装程序类中,dbcustomaction.vb类
Imports System.ComponentModel
imports System.Configuration.Install
imports System.IO
imports System.Reflection
<runinstaller(true)> Public Class DBCustomAction
inherits System.Configuration.Install.Installer
#region "组件设计器生成的代码 "
public Sub New()
mybase.new()
''该调用是组件设计器所必需的
initializecomponent()
''在 InitializeComponent() 调用之后添加任何初始化
end Sub
'' Installer 重写 dispose 以清理组件列表。
protected Overloads Overrides 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()
end Sub
#end Region
''执行sql 语句
private 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(ByVal stateSaver As System.Collections.IDictionary)
MyBase.Insta