ASP.NET 项目安装包制作(二)数据库安装、其他组件的安装

  上一节是讲述如何制作Web安装包的过程,只要按照步骤做就可以了。这一节将讲述安装过程中如何部署数据库,以及执行其他组件的安装。

  在这里使用直接执行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.Sql
Client" />

  就是替换#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包了。

  下载示例

时间: 2024-09-18 23:27:50

ASP.NET 项目安装包制作(二)数据库安装、其他组件的安装的相关文章

一起谈.NET技术,ASP.NET 项目安装包制作(三)补充说明

相关文章:ASP.NET项目安装包制作.ASP.NET 项目安装包制作(二)数据库安装.其他组件的安装 一. 安装标题 按照前面的做法中,在安装过程中,如下图: 安装的标题是HxjWebSteup,这样的标题和产品名称显然是无法再实际项目中使用的. 这里我们需要通过设置安装项目的属性来设置一下就可以,选中HxjWebSetup项目按F4出来属性窗口,这个和右击项目属性是不一样的.如下图: 我们修改一下ProductName这个属性,变成Steven hu ProductName,我们再来看看安装

ASP.NET 项目安装包制作(三)补充说明

相关文章:ASP.NET项目安装包制作 .ASP.NET 项目安装包制作(二)数据库安装.其他组件的安装 一. 安装标题 按照前面的做法中,在安装过程中,如下图: 安装的标题是HxjWebSteup,这样的标题和产品名称显然是无法再实际项目中使用的. 这里我们需要通过设置安装项目的属性来设置一下就可以,选中HxjWebSetup项目按F4出来属性窗口,这个和右击项目属性是不一样的.如下图: 我们修改一下ProductName这个属性,变成Steven hu ProductName,我们再来看看安

C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

原文:C#进阶系列--使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll) 前言:上篇C#进阶系列--使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起来是相对比较简单的,只要知道了博主提供的方法,相信都不是问题,其实博主当初寻找相关方法配置IIS和Web.config的时候也是费了九牛二虎之力的,毕竟资料太少,只能

使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)

原文:使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll) 前言:上篇使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.config的过程,操作起来是相对比较简单的,只要知道了博主提供的方法,相信都不是问题,其实博主当初寻找相关方法配置IIS和Web.config的时候也是费了九牛二虎之力的,毕竟资料太少,只能各种方式挨个尝试一遍,解决问题之

IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权

原文:IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权 上一篇: IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权 本文经原作者特许授权于海洋女神发布,转载请务必注明出处与链接:原作者和海洋女神保留对该文的一切法律许可下的权益:需要发布在盈利性报刊.网站等请与原作者或海洋女神联系. 第三部分:使用IS2009向导设置1. 打开 InstallShield2009,新建一个Installscript MSI Project,建议选择此工程,因为该工程支持脚本编

用inno Setup制作web项目安装包

原文:用inno Setup制作web项目安装包 用inno Setup制作安装包 新建一个文件夹exambody,放apache-tomcat-6.0.33.mysql-5.1.37-win32.java(注:jdk)和图标exambody.ico   1.       批处理安装mysql服务: 在mysql-5.1.37-win32\bin 的目录下: 新建一个文件:启动服务.bat 里面写: cd /d %~dp0                                     

使用Setup Factory安装包制作工具制作安装包

在我们开发完软件后,除了极个别案例我们把整个目录复制给客户用外,我们一般都需要做成安装包,方便整个软件的部署操作,以安装包的部署操作可能简单的是复制文件,也可能包括一些注册表.数据库等额外的操作,不过安装包部署肯定是能够给客户提供专业.统一的软件安装体验,同时封装了很多细节方面的处理.在我们日常的基于.NET的开发中,VS2010之前我们还可以使用内置的安装包制作工具,自从VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,我自己在这方面也写了

NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版

原文:NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版 nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序.nsis它功能强,源码是直接使用C语言编写而成,并且可以直接到nsis官网下载所有nsis版本,并且提供了详细的帮助文档,方便用户制作时使用.安装页面可以使用Page自定义界面.卸载页面可以配置让用户选择是否删除用户文件.系

基于InstallShield2013LimitedEdition的安装包制作

原文:基于InstallShield2013LimitedEdition的安装包制作 在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不多,但是处理还是有很大的不同,本文主要基于VS2013的基础上,介绍使用InstallShield2013LimitedEdition的安装包制作. 1.安装使用InstallShield2013LimitedEd