设为首页 | 加入收藏 | 联系站长
Google
 | 星际争霸 | 星际争霸II | 暗黑破坏神
 | 魔兽争霸 | 英雄无敌  
 您现在的位置: 好技术学习网 >> 技术文章 >> ASP.NET技术 >> ASP.NET基础知识 >> 文章正文
相 关 文 章
解析.Net框架下的XML编程技…
VS.NET下web项目源代码管理
NUnit学习之VS.net 2005篇
在VS.NET 2005中体验clicko…
使用VS.NET 2005 Beta 2初次…
VS.NET 2002下水晶报表的安…
VS.Net中的水晶报表的应用
vs.net+c#程序快速开发数据…
VS.NET解决方案的版本兼容问…
当VS.NET2003遇上2005,WebS…
最 新 热 门
最 新 推 荐
精 彩 游 戏
移动能力强,防御强大,任何地方都可以建筑,隐形,多样性,船舶,科技树…
[星际补丁]1.14·1.13f·1.08b
[星际2]酷图 [星际2]人族视频
[人类]大法师  [兽族]暗影猎手
[精灵]恶魔猎手 [不死]死亡骑士
[资讯]魔兽资讯 [图库]魔兽酷图
[下载]魔兽下载 [壁纸]精美壁纸
暗黑破坏神入门 暗黑破坏神指引
[Hero5]宝物一览   英雄无敌
当前时间是:
VS.NET安装部署深入研究(图)
作者:- 来源:天新网 时间:2008-7-7 15:52:15 『 字号:  』

相信很多人都做过安装程序,目前最大功能最全的当属InstallShield,但是InstallShield的语法学习起来实在费劲,相对而言VS.net自带的安装部署短小精悍,且使用C#语法,对于一般C#开发者来说使用起来就极为简便,在对其作了一些研究之后,发现vs.net的安装部署项目的功能也已经非常好用,一般的程序安装都可以轻松实现,当然,在研究的过程中也发现了一些缺陷,这个后面再提。

下面就向大家介绍一下ASP.NET安装部署项目的一些复杂应用实现:

首先我们假设存在一个已经完工的Web项目eHRM,其文件列表如图:

其中web.config中存在我们的数据库连接及系统的一些其他配置,如数据库类型等,这些配置需要在安装时进行修改。

OK,知道了我们的安装对象,现在开始做安装部署程序,首先,在解决方案中添加一个新项目,如图,项目类型为Web安装项目,项目名称eHRMSetUp。

项目添加完毕,选中eHRMSetUp,会发现工具栏发生了一些变化,如图所示,

主要有6个工具按钮,分别代码安装部署的6大编辑器:

1、表示文件系统编辑器,主要用于目标机器的文件安装操作。

2、表示注册表编辑器,用于目标机器的注册表操作。

3、表示文件类型编辑器,用于向目标机器安装新的文件类型。

4、用户界面编辑器,用于确定安装过程中所用到的一些界面。

5、自定义操作编辑器,调用用户自定义的操作代码。

6、启动条件编辑器,用于设置安装程序的启动条件。

这6个编辑器不一定全部会用到,我们的demo安装就只需要用到1/4/5大部分的安装包属性均存在于eHRMSetUp项目的属性中,属性界面如图:

在这里可以设置产品名称(eHRMSetUp),产品编号(ProductCode)以及安装包全球化类型(Localization)等相关的安装程序属性。

除了eHRMSetUp安装部署项目,我们还需要添加一个eHRMSetUpCompenent项目,用来自定义安装操作,在eHRMSetUpCompenent项目中添加一个新的安装程序类,如图:

名称为eHRMInstaller.cs,在其中添加如下代码:

protected override void OnAfterInstall(IDictionary savedState)
{
base.OnAfterInstall (savedState);
}
public override void Install(IDictionary stateSaver)
{
base.Install (stateSaver);
}
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall (savedState);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall (savedState);
}
public override void Rollback(IDictionary savedState)
{
base.Rollback (savedState);
}

这些代码将主要负责对于安装中的操作进行自定义处理,包括建数据库,配置web.config等。

为了在安装部署中调用项目eHRMSetUpCompenent定义的操作,需要在项目eHRMSetUp中添加eHRMSetUpCompenent的主输出和项目eHRM的内容输出,具体操作是选择eHRMSetUp项目后右键 —— 添加 —— 项目输出 ——选择项目eHRMSetUpCompenent的主输出,添加完毕后如图:

现在回到项目eHRMSetUp,打开文件系统编辑器,点击Web应用程序文件夹,编辑其属性,界面如下:

其中比较重要的就是VirtualDirectory属性,表示安装后建立的虚拟目录名称,其他属性视具体情况而定。

下面通过用户界面编辑器来配置用户的安装界面,vs.net2003目前所提供的窗口比较少,如图:

基本是几个比较简单的配置窗口,所以如果需要用到一些复杂的配置,那么这些窗口就远远不够用了,不过我们可以进行部分的扩展来实现这些复杂的配置,具体方法如下:

1、在项目eHRMSetUpCompenent中添加一个Windows窗口FrmConfig.cs,设计我们需要用的界面。

2、修改eHRMInstaller.cs中的代码如下:

protected override void OnAfterInstall(IDictionary savedState)
{
FrmConfig _FC = new FrmConfig();
_FC.ShowDialog();
base.OnAfterInstall (savedState);
}

3、这样,在安装的过程中会中断并弹出FrmConfig让用户进行配置。

最后就是通过自定义操作编辑器来设置安装过程中的自定义操作,从web应用程序文件夹选择主输出来自eHRMSetUpCompenent(活动),添加完毕如图所示:

分别设置4个主输出的CustomActionData属性为:

/LogicDir=[TARGETDIR]  /VitualDir=[TARGETVDIR]

[TARGETDIR]和[TARGETVDIR]是系统部署自带属性,分别表示安装物理目录地址和虚拟目录地址。

设置完这些自定义操作的传入参数后就可以直接在eHRMSetUpCompenent项目的代码中进行调用,调用代码如下:

public override void Install(IDictionary stateSaver)
{
//安装物理目录
string LogicDir = Context.Parameters["LogicDir"];
//安装虚拟目录
string VitualDir = Context.Parameters["VitualDir"];
//TODO 根据配置安装操作
base.Install (stateSaver);
}

最后需要做的就是卸载时的一些文件处理:

public override void Uninstall(IDictionary savedState)
{
//安装物理目录
string LogicDir = Context.Parameters["LogicDir"];
//安装虚拟目录
string VitualDir = Context.Parameters["VitualDir"];
//处理自定义部分的安装内容,如数据库等
base.Uninstall (savedState);
}

完成了这一系列动作后,整个程序的安装雏形已经基本OK,只要在相应的地方加入实际安装中所需要进行的一系列Action就可以制作一个完整的安装部署程序。

注意事项:

1、Resource文件属于项目的源文件,而非内容文件,所以如果项目中有Resource文件存在,则需要添加项目的源文件输出,同时利用排除筛选器设置好对*.cs文件和*.resx文件的过滤。

2、Bin目录默认不在web项目中,所以打包还需要加入web项目的主输出或直接把bin目录下的文件加入到web项目中,这样生成的dll会包含在内容文件输出中。

3、安装制作过程中某些目录可能会无法创建(偶没能找到具体原因,估计是因为文件依赖性的缘故),则可以手工在Web应用程序文件夹中直接创建。

水平有限,如果大家有任何疑问,欢迎和我一起讨论davixiong@hotmail.com

  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【打印本文】【关闭窗口

    网站公告 | 关于本站 | 联系站长 | 设为首页 | 加入收藏 | 友情链接 | 版权申明 | 广告服务 | 网站地图 | 访客留言

    Copyright ©
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览
    | |
    本站大部分信息资源来源于网络,仅供学习|研究|探讨|收藏之用,版权归原作者所有!