ASP.NET 项目安装包制作(二)数据库安装、其他组件的安装
2010-10-26 09:13
567 查看
上一节是讲述如何制作Web安装包
的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。
在这里使用直接执行sql脚本来创建数据库。(也可以使用附件数据库文件的形式)只要在Install方法中添加执行sql脚本的方法,就是使用SqlConnection连接数据库操作。
在这里使用嵌入式资源的形式打包sql脚本。我们添加createdatabase.sql和dropdatabase.sql添加到项目中,如下图:
右击createdatabase.sql查看属性,如下图:
设置生成操作为嵌入的资源。dropdatabase.sql也是如此操作。下面我们来使用代码如何读取资源的脚本,就是上面代码中的GetResource方法。
这样再来看install方法的全部代码,如下:
这样就完成了安装中数据库的创建。在卸载中删除数据库则需要重写Uninstall方法,来执行dropdatabase.sql中的脚本。
创建表、创建示例数据的操作就是类似操作,就是打包新的资源。Web项目的数据库连接都是在Web.config中的,所以安装过程还要修改Web.config的数据库连接,这里使用简单的替换。如下:
Web 项目中WebConfig中配置:
就是替换#constring#为安装过程中生成的新的链接字符串。还有在我们的OA项目中还是用微软的AJAX库,所以还要安装Ajax包。我们将AJAX包打包进安装项目。
我们执行ajax 2.0.msi的代码,如下:
这样在安装过称中就会安装这个ajax包了。
的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。
在这里使用直接执行sql脚本来创建数据库。(也可以使用附件数据库文件的形式)只要在Install方法中添加执行sql脚本的方法,就是使用SqlConnection连接数据库操作。
using (SqlConnectionconnection = newSqlConnection(connectionString)) { connection.Open(); ExecuteSQL(connection, GetResource( " createdatabase.sql " )); } /// <summary> /// 执行sql语句 /// </summary> /// <param name="connection"></param> /// <param name="sql"></param> void ExecuteSQL(SqlConnection connection, string sql) { SqlCommand cmd = new SqlCommand(sql, connection); cmd.ExecuteNonQuery(); } /// <summary> /// 获取数据库登录连接字符串 /// </summary> /// <param name="databasename"> 数据库名称 </param> /// <returns></returns> private string GetConnectionString( string databasename) { return " server= " + Context.Parameters[ " server " ].ToString() + " ;database= " + ( string .IsNullOrEmpty(databasename) ? " master " : databasename) + " ;User ID= " + Context.Parameters[ " user " ].ToString() + " ;Password= " + Context.Parameters[ " pwd " ].ToString(); }
在这里使用嵌入式资源的形式打包sql脚本。我们添加createdatabase.sql和dropdatabase.sql添加到项目中,如下图:
右击createdatabase.sql查看属性,如下图:
设置生成操作为嵌入的资源。dropdatabase.sql也是如此操作。下面我们来使用代码如何读取资源的脚本,就是上面代码中的GetResource方法。
/// <summary> /// 获取资源文件中的脚本 /// </summary> /// <param name="resourceName"></param> /// <returns></returns> string GetResource(string resourceName) { Assembly ass = Assembly .GetExecutingAssembly(); using (Stream stream = ass.GetManifestResourceStream(ass.GetName().Name + "." + resourceName)) { using (StreamReader reader = new StreamReader (stream, System.Text.Encoding .Default)) { return reader.ReadToEnd(); } } }
这样再来看install方法的全部代码,如下:
/// <summary> /// 安装 /// </summary> /// <param name="stateSaver"></param> public override void Install(IDictionary stateSaver) { base .Install(stateSaver); string connectionString = GetConnectionString(null ); try { using (SqlConnection connection = new SqlConnection (connectionString)) { connection.Open(); ExecuteSQL(connection, GetResource("createdatabase.sql" )); } } catch (Exception ex) { MessageBox .Show("数据库安装失败!/n数据库配置有误,请正确配置信息!/n" + ex.Message, "出错啦!" ); this .Rollback(stateSaver); } }
这样就完成了安装中数据库的创建。在卸载中删除数据库则需要重写Uninstall方法,来执行dropdatabase.sql中的脚本。
/// <summary> /// 卸载 /// </summary> /// <param name="savedState"></param> public override void Uninstall(IDictionary savedState) { base .Uninstall(savedState); /* //这里要获取保存的链接字符串 string connectionString = try { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); ExecuteSQL(connection, GetResource("dropdatabase.sql")); } } catch (Exception ex) { MessageBox.Show("数据库卸载失败!/n数据库配置有误,请正确配置信息!/n" + ex.Message, "出错啦!"); } */ }
创建表、创建示例数据的操作就是类似操作,就是打包新的资源。Web项目的数据库连接都是在Web.config中的,所以安装过程还要修改Web.config的数据库连接,这里使用简单的替换。如下:
/* * 设置webconfig连接字符串 */ string webconfigpath = Path .Combine(this .Context.Parameters["targetdir" ].ToString(), "web.config" ); string webcofnigstring = File .ReadAllText(webconfigpath).Replace("#constring#" , GetConnectionString("hxjdatabasename" )); File .WriteAllText(webconfigpath, webcofnigstring);
Web 项目中WebConfig中配置:
< add name = "ConnectionString " connectionString = "#constring# " providerName = "System.Data.SqlClient " />
就是替换#constring#为安装过程中生成的新的链接字符串。还有在我们的OA项目中还是用微软的AJAX库,所以还要安装Ajax包。我们将AJAX包打包进安装项目。
我们执行ajax 2.0.msi的代码,如下:
/* * 安装ajax2.0框架 */ System.Diagnostics.Process process = new System.Diagnostics.Process (); process.StartInfo.FileName = Path .Combine(this .Context.Parameters["targetdir" ].ToString(), "Ajax 2.0.msi" ); process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle .Hidden; process.Start(); process.WaitForExit();
这样在安装过称中就会安装这个ajax包了。
相关文章推荐
- 一起谈.NET技术,ASP.NET 项目安装包制作(二)数据库安装、其他组件的安装
- Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- .Net Web项目安装包制作 (二)数据库安装、其他组件的安装(转)
- .Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- .Net Web 项目安装包制作(二)数据库及其他组件的安装
- .Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- .Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- [转].Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- .Net Web项目安装包制作 (二)数据库安装、其他组件的安装
- asp.net 连接access 数据库时要安装的组件
- ASP.NET项目安装包制作
- 一起谈.NET技术,ASP.NET 项目安装包制作(三)补充说明
- asp.net 开发的WEB项目和数据库怎样打包成exe安装文件
- asp.net 开发的WEB项目和数据库打包成exe安装文件
- [转贴]用Vs.net制作安装程序,在安装包中自动为客户创建数据库
- 2012年在杭州承接的第一个软件项目经验浅谈 -- 门户网站数据库、ASP.NET程序性能改进
- ASP.Net C#2.0全能数据库组件 (含下载实例源码地址)
- Net项目制作安装程序
- (转)winform安装项目、安装包的制作、部署
- C# ASP.NET 权限设计 完全支持多数据库多语言包的通用权限管理系统组件源码