VS2005 Web引用程序打包并安装数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个解决方案中可能会包含多个类库项目和一个网站,打包过程如下:
1、在【解决方案资源管理器】中【右键-添加-新建项目】,左侧选择【其他类型项目】,右侧选择【安装项目】,如下图:
2、点击【确定】后,右侧【文件系统】选项卡中选择【应用程序文件夹】-【添加】-【项目输出】,类库项目选择添加【主输出】,网站选择添加【内容文件】
3、在网站的制作过程中可能用到一些其他的BLL组件,也需要添加进来,还是选择【应用程序文件夹】-【添加】-【程序集】,选择你网站BIN文件夹下的一些BLL
4、因为要带数据库带包,我是采用打包程序利用系统存储过程附加MDF和LDF 文件的方法,所以【应用程序文件夹】中还需要【添加-文件】,将数据库的MDF 和LDF文件添加进来,如果安装的需要在控制面板的添加删除程序列表中有图标的话,也需要将ICO图标文件添加进来。
5、设置安装项目的常用属性:
Author:作者
Manufactuer:公司
Title:安装程序的标题
AddRemoveProgramsIco:设置为添加进来的ICO文件
如果不带数据库安装的话,可以将安装项目直接生成就可以了,如果Debug设置为True,则生成的MSI文件在Debug文件夹中,如果为False,生成的MSI文件在Release文件夹中。
6、在【解决方案资源管理器】中,右键,添加【新建项目】-【Visual C#】-【类库】,建立数据库安装程序,类库建好后,将默认的Class1.cs文件删除,右键,添加【新建项】-【安装程序类】,下面主要是此类的代码。
7、安装程序类的代码:
1using ponentModel;
2using System.Configuration.Install;
3using System.Collections; //以下引入
4using System.Collections.Specialized;
5using System.Data;
6using System.Data.SqlClient;
7using System.Reflection;
8using System.Xml;
9
10namespace DbClass
11 {
12 [RunInstaller(true)]
13public partial class InstallDB : Installer
14 {
15///
16///必需的设计器变量,均来自于安装程序的“自定义操作”视图中的设置
17///
18private string hostname;
19private string username;
20private string userpassword;
21private string dbname;
22
23public InstallDB()
24 {
25 InitializeComponent();
26 }
27
28private string CreateSqlStr()
29 {
30string sqlstr = "";
31string datafile = Context.Parameters["installdir"] + @"FlowerShop.mdf";
32string logfile = Context.Parameters["installdir"] + @"FlowerShop_log.ldf";
33sqlstr = "EXEC sp_attach_db @dbname ='"+ Context.Parameters["dbname"] + "',@filename1='"+ datafile + "',@filename2='" + logfile + "'";
34return sqlstr;
35 }
36
37private void ExecuteSql(string DatabaseName, string SqlStr) 38 {
39string SqlConnectionStr = @"server="+ hostname + ";uid=" + username + ";pwd=" + userpassword;
40SqlConnection myConnection = new
SqlConnection(SqlConnectionStr);
41SqlCommand myCommand = new SqlCommand(SqlStr, myConnection);
42 myCommand.Connection.Open();
43 myCommand.Connection.ChangeDatabase(DatabaseName);
44 myCommand.ExecuteNonQuery();
45 myCommand.Connection.Close();
46 }
47
48private void AddFlowerShopDataBase()
49 {
50 ExecuteSql("pubs", CreateSqlStr());
51 }
52
53private void ModifyXML()
54 {
55string XMLdir = Context.Parameters["installdir"] + @"Web.config";
56 XmlNodeReader reader = null;
57 XmlTextWriter writer = null;
58 XmlDocument doc = new XmlDocument();
59 doc.Load(XMLdir);
60 reader = new XmlNodeReader(doc);
61writer = new XmlTextWriter(XMLdir, System.Text.Encoding.UTF8);
62
63try
64 {
65while (reader.Read())
66 {
67if (reader.NodeType == XmlNodeType.Element && == "connectionStrings")
68 {
69string strContent = reader.ReadInnerXml(); 70strContent = "
71 XmlNode root = doc.DocumentElement;
72XmlElement elem = doc.CreateElement("connectionStrings");
73 elem.InnerXml = strContent;
74root.ReplaceChild(elem, root.ChildNodes[1]);