演练:安装时使用自定义操作创建数据库
http://msdn.microsoft.com/zh-cn/library/49b92ztk(VS.80).aspx
创建安装程序类
1. 在“文件”菜单上单击“新建项目”。
2. 在“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic 项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入 DBCustomAction。
3. 在“项目”菜单上单击“添加新项”。
4. 在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入 VbDeployInstaller.vb。
创建数据连接对象
1. 在“服务器资源管理器”中,选择“数据连接”。右击并选择“添加连接”。
2. 在“选择数据源”对话框中,选择“Microsoft SQL Server”。
3. 在“添加连接”对话框中,执行以下操作:
a. 在“服务器名称”下拉列表中,键入或选择一个服务器名称。
b. 选择“使用 Windows 身份验证”。
c. 在“数据库”框中,键入 master。
d. 单击“确定”关闭对话框。
4. 从“数据”菜单中,单击“添加新数据源”,然后使用向导添加在之前步骤中建立的连接。若要验证数据源是否在项目中,请单击“数据”菜单上的“显示数据源”。
创建包含 SQL 语句的文本文件以创建数据库
1. 在解决方案资源管理器中,选择 DBCustomAction 项目。在“项目”菜单上选择“添加新项”。
2. 在“添加新项”对话框中,选择“文本文件”。在“名称”框中,键入 sql.txt(必须小写)。
3. 将以下内容添加到 sql.txt 文件中:
CREATE TABLE [dbo].[Employees] (
[Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Rsvp] [int] NULL ,
[Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY];
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD
CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED
(
[Name]
) ON [PRIMARY];
4. 在“解决方案资源管理器”中选择 sql.txt。在“属性”窗口中,将“BuildAction”属性设置为“嵌入的资源”。
将代码添加到安装程序类中以阅读文本文件 [自我测试使用C#代码]
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.Data.SqlClient;
namespace CustomAction
{
partial class DeployInstaller
{
SqlConnection myTestConnection = new SqlConnection();
///
/// Required designer variable.
///
private System.ComponentModel.IContainer components = null;
///
/// Clean up any resources being used.
///
/// true if managed resources should be disposed; otherwise, false.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
private string GetSql(string name)
{
try
{
Assembly asm = Assembly.GetExecutingAssembly();
Stream strm = asm.GetManifestResourceStream(asm.GetName().Name + "." + name);
StreamReader reader = new StreamReader(strm);
return reader.ReadToEnd();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return ex.Message;
}
}
private void ExecuteSql(string databaseName, string sql)
{
SqlCommand command = new SqlCommand(sql, myTestConnection);
myTestConnection.ConnectionString = @"Data Source=910.941.500.660;Initial Catalog=master;Persist Security Info=True;User ID=pa;Password=pa";
command.Connection.Open();
command.Connection.ChangeDatabase(databaseName);
try
{
command.ExecuteNonQuery();
}
finally
{
command.Connection.Close();
}
}
protected void AddDBTable(string strDBName)
{
try
{
ExecuteSql("master", " Create DataBase " + strDBName);
ExecuteSql(strDBName, GetSql("SqlTest.txt"));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public override void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
}
}
}
创建部署项目
1. 在“文件”菜单中单击“添加”,然后单击“新建项目”。
2. 在“添加新项目”对话框中,打开“其他项目类型”节点,在“项目类型”窗格中选择“安装和部署项目”。然后,在“模板”窗格中选择“安装项目”。在“名称”框中键入 DBCustomAction_Setup。
3. 在“属性”窗口中,选择“ProductName”属性并键入 DB Installer。
4. 在“文件系统编辑器”中,选择“应用程序文件夹”。在“操作”菜单上单击“添加”,然后单击“项目输出”。
5. 在“添加项目输出组”对话框中,为“DBCustomAction”项目选择“主输出”。
创建自定义安装对话框
1. 在“解决方案资源管理器”中选择“DBCustomAction_Setup”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。
2. 在“用户界面编辑器”中,选择“安装”下面的“启动”节点。在“操作”菜单上选择“添加对话框”。
3. 在“添加对话框”对话框中,选择“文本框 (A)”,然后单击“确定”。
4. 在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框 (A)”对话框位于“安装文件夹”节点之上。
5. 在“属性”窗口中,选择“BannerText”属性并键入“指定数据库名称”。
6. 选择“BodyText”属性并键入“此对话框允许指定将在数据库服务器上创建的数据库的名称”。
7. 选择“Edit1Label”属性并键入“数据库名称:”。
8. 选择“Edit1Property”属性并键入 CUSTOMTEXTA1。
9. 选择“Edit2Visible”、“Edit3Visible”和“Edit4Visible”属性,将它们设置为“False”。
创建自定义操作
1. 在“解决方案资源管理器”中选择“DBCustomAction_Setup”项目。在“视图”菜单上指向“编辑器”,然后单击“自定义操作”。
2. 在“自定义操作编辑器”中选择“安装”节点。在“操作”菜单上选择“添加自定义操作”。
3. 在“选择项目中的项”对话框中,双击“应用程序文件夹”。
4. 选择“DBCustomAction 的主输出(活动)”,然后单击“确定”关闭对话框。
5. 确保在“自定义操作编辑器”中选择了“DBCustomAction 的主输出(活动)”项。在“属性”窗口中,选择“CustomActionData”属性并键入 /dbname=[CUSTOMTEXTA1]。
6. 在“生成”菜单上选择“生成 DBCustomAction_Setup”。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-588925/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12476590/viewspace-588925/