前段时间做一个项目,因为其中数据库有许多数据是初始化的数据, 为了便于部署.于是我在制作安装程序的时候加入了 DB install的功能.
首先最好单独创建一个DB install 的Class Library的Project.
File NewProjectVisual C# WindowsClass Library
然后创建一个class, 命名为DBInstall.cs. 下面就是如何在这个class 中实现DB"安装"的过程.
首先需要将 DBInstall 继承 Installer class. 还需要加上[RunInstaller(true)]的attribute.
![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMS5qcGc%3D.jpg?w=700&webp=1)
继承
1
[RunInstaller(true)]
2![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
3
public partial class DBInstall : Installer
4
此时图标会由变为, 说明这个class 已经成为了安装的组件了.
然后就是 override Rollback, Uninstall, Install 三个方法:
![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMS5qcGc%3D.jpg?w=700&webp=1)
Override Install Method
1
public override void Rollback(System.Collections.IDictionary savedState)
2![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
3![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMi5qcGc%3D.jpg?w=700&webp=1)
{
4![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
5
base.Rollback(savedState);
6![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
7
8![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
9
if (MessageBox.Show("Do you want to remove exist databases during rollback?", "Confirm", MessageBoxButtons.YesNo)
10![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
11
== DialogResult.Yes)
12![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
13![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
14![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
15
string dbname = "XXX"; //XXX 代表数据库名称
16![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
17
try
18![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
19![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
20![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
21
ExecuteSql("master", string.Format("DROP DATABASE [{0}]", dbname)); //回滚的时候删除数据库文件
22![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
23
}
24![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
25
catch
26![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
27![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
28![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
29
MessageBox.Show(string.Format("Can not delete [{0}] database. Please delete it by yourself."), dbname);
30![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
31
}
32![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
33
34![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
35
}
36![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
37
}
38![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
39
40![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
41
public override void Uninstall(System.Collections.IDictionary savedState)
42![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
43![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMi5qcGc%3D.jpg?w=700&webp=1)
{
44![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
45
base.Uninstall(savedState);
46![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
47
48![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
49
try
50![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
51![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
52![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
53
if (MessageBox.Show("Do you want to remove databases?", "Confirm", MessageBoxButtons.YesNo)
54![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
55
== DialogResult.Yes)
56![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
57![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
58![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
59
DBConfig dbConfig = new DBConfig(); //自定义的一个界面,便于输入DB的信息
60![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
61
dbConfig.ShowDialog(); //安装过程中显示自定义的数据DB安装信息的节目
62![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
63
64![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
65
if (this.Context.Parameters.ContainsKey("dbsource")) //用自定义的界面输入的信息赋值给Context.Parameter,它主要负责记录install和uninstall过程中的参数
66![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
67![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
68![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
69
this.Context.Parameters["dbsource"] = DBConfig.IP;
70![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
71
}
72![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
73
else
74![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
75![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
76![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
77
this.Context.Parameters.Add("dbsource", DBConfig.IP);
78![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
79
}
80![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
81
if (this.Context.Parameters.ContainsKey("user")) //用自定义的界面输入的信息赋值给Context.Parameter,它主要负责记录install和uninstall过程中的参数
82![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
83![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
84![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
85
this.Context.Parameters["user"] = DBConfig.DBUser;
86![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
87
}
88![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
89
else
90![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
91![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
92![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
93
this.Context.Parameters.Add("user", DBConfig.DBUser);
94![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
95
}
96![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
97
if (this.Context.Parameters.ContainsKey("pwd")) //用自定义的界面输入的信息赋值给Context.Parameter,它主要负责记录install和uninstall过程中的参数
98![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
99![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
100![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
101
this.Context.Parameters["pwd"] = DBConfig.DBPwd;
102![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
103
}
104![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
105
else
106![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
107![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
108![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
109
this.Context.Parameters.Add("pwd", DBConfig.DBPwd);
110![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
111
}
112![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
113
string dbname = "XXX"; // 数据库的名称
114![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
115
try
116![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
117![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
118![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
119
ExecuteSql("master", string.Format("DROP DATABASE [{0}]", dbname));
120![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
121
}
122![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
123
catch
124![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
125![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
126![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
127
MessageBox.Show(string.Format("Can not delete [{0}] database. Please delete it by your self."), dbname);
128![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
129
}
130![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
131
}
132![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
133
}
134![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
135
catch (Exception ex)
136![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
137![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
138![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
139
MessageBox.Show("Can not delete some databases, please delete them manually.");
140![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
141
}
142![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
143
}
144![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
145
146![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
147
public override void Install(System.Collections.IDictionary stateSaver)
148![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
149![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMi5qcGc%3D.jpg?w=700&webp=1)
{
150![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
151
base.Install(stateSaver);
152![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
153
154![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
155
if (MessageBox.Show("Do you want to install databases?", "Confirm", MessageBoxButtons.YesNo)
156![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
157
== DialogResult.Yes)
158![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
159![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
160![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
161
DBConfig dbConfig = new DBConfig();
162![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
163
dbConfig.ShowDialog();
164![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
165
if (this.Context.Parameters.ContainsKey("dbsource"))
166![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
167![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
168![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
169
this.Context.Parameters["dbsource"] = DBConfig.IP;
170![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
171
}
172![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
173
else
174![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
175![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
176![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
177
this.Context.Parameters.Add("dbsource", DBConfig.IP);
178![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
179
}
180![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
181
if (this.Context.Parameters.ContainsKey("user"))
182![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
183![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
184![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
185
this.Context.Parameters["user"] = DBConfig.DBUser;
186![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
187
}
188![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
189
else
190![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
191![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
192![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
193
this.Context.Parameters.Add("user", DBConfig.DBUser);
194![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
195
}
196![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
197
if (this.Context.Parameters.ContainsKey("pwd"))
198![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
199![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
200![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
201
this.Context.Parameters["pwd"] = DBConfig.DBPwd;
202![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
203
}
204![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
205
else
206![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
207![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
208![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
209
this.Context.Parameters.Add("pwd", DBConfig.DBPwd);
210![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
211
}
212![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
213
string dbname = "XXX"; // 数据库的名称
214![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
215
ExecuteSql("master", string.Format("CREATE DATABASE[{0}]", dbname)); //创建一个数据库
216![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
217
string sql = LoadSqlFromAssembly("SPRC.DB.sql"); //加载这个sql脚本
218![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
219
ExecuteSql(dbname, sql); //运行生成数据的sql脚本.
220![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
221
}
222![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
223
}
224
上面描述了自定义安装的初步过程.
![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMS5qcGc%3D.jpg?w=700&webp=1)
Read Sql and Execute Sql
1
2![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
3
private string LoadSqlFromAssembly(string Name)
4![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
5![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMi5qcGc%3D.jpg?w=700&webp=1)
{
6![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
7
//得到当前程序集对象
8![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
9
Assembly Asm = Assembly.GetExecutingAssembly();
10![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
11
//创建sql脚本的流对象
12![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
13
Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);
14![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
15
//读sql流对象
16![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
17
StreamReader reader = new StreamReader(strm);
18![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
19
return reader.ReadToEnd();
20![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
21
}
22![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
23
24![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
25
private void ExecuteSql(string DatabaseName, string Sql)
26![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMy5qcGc%3D.jpg?w=700&webp=1)
27![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMi5qcGc%3D.jpg?w=700&webp=1)
{
28![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
29
//创建一个数据库连接对象
30![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
31
this.conn = new SqlConnection();
32![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
33
this.conn.ConnectionString = "user id=" + this.Context.Parameters["user"]
34![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
35
+ ";data source=" + this.Context.Parameters["dbsource"]
36![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
37
+ ";initial catalog=master;password=" + this.Context.Parameters["pwd"] + ";";
38![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
39
//创建一个sql command对象,去运行sql脚本的内容
40![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
41
SqlCommand command = new SqlCommand(Sql, conn);
42![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
43
//open数据库的连接
44![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
45
command.Connection.Open();
46![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
47
//因为调用这个方法前,在install的方法里面command是运行在master的库上面的,所以需要change到当前数据库中.
48![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
49
command.Connection.ChangeDatabase(DatabaseName);
50![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
51
try
52![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
53![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
54![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
55
//执行sql脚本,生成数据表和初始数据.
56![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
57
command.ExecuteNonQuery();
58![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
59
}
60![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
61
finally
62![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
63![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMjMuanBn.jpg?w=700&webp=1)
{
64![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
65
//Finally, blocks are a great way to ensure that the connection
66![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
67
//is always closed.
68![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
69
command.Connection.Close();
70![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
71
}
72![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
73
74![.NET 制作有DB安装功能的安装文件 .NET 制作有DB安装功能的安装文件](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pLzQzZjIzNzE4ZGE0MWQzNzM4ZDFjMmM2MjRiMmJkMDNjMTQuanBn.jpg?w=700&webp=1)
75
}
76
下面描述下LoadSqlFromAssembly 和 ExecuteSql两个方法:
自此在上面DBInstall的Project已经全部实现完毕.还需要在安装部署中添加这个DBInstall.
创建一个Setup Project(File NewProjectOther Project Type Setup and DeploymentSetup Project,然后再刚创建号的
Setup project点击右键, 点击"添加", 选择Project Output,在Project 选择刚已经完成的DBInstall, 然后点击 Primary output.
然后点击"确定".
然后再在Setup Project上面点击右键, 点击"View""Custom Actions",会弹出一个窗口
然后在窗口中依次在Install, Rollback, Uninstall 三个文件夹上面创建 一个Action.
方法如下:
在文件夹上面点击右键,然后点击"Add Custom Action", 再弹出窗口里面选择Application Folder.
选择刚才创建的一个DBInstall的Primary Output .
然后点击"确定".
注意一定要在Install, Rollback, Uninstall 都添加 "Primary output from DBInstall(Active)".
只有这样,我们在DBInstall中override的 Rollback, Uninstall才会有意义.
然后编译setup project, 得到安装文件,双击安装.
PS: 有时候大家生成的脚本在sql里面执行的正常, 但是在安装过程中会出现 "Create 附近有错误"类似的错误,
请大家去掉sql文件里面的"GO". 就可以一切正常了.
如果大家有更好的办法, 请多多指教! 谢谢!
谢谢各位的捧场,应大家要求,我写了一个简单的DB安装的程序供大家参考.
有什么好的意见和建议,请大家不吝赐教.
带DB安装功能的源码 : DBInstallSolution