.Net应用程序打包部署总结
编译源代码并完成测试以后,开发过程其实并没有结束。在这个极端,需要把应用程序提供给用户。无论是ASP.NET应用程序,客户端应用程序还是 Compact Framework构建的应用程序,开发出来的软件都必须部署到目标环境中。.NET Framework的部署工作比以前容易得多了,因为不再需要注册COM组件也不需要编写新的注册表配置但愿。
记得以前安装程序的时候,经常需要安装注册表项什么的,.NET完全不需要操作注册表。
部署过程中,最大的问题就是第三库的依赖问题的解决。开发人员的计算机上可能提前安装了用于开发的第三方的类库,比如我们做图形处理的经常需要用到 opencv类库或者emgucv类库,但是目标计算机上一般不会安装这些第三方类库。这样在部署的时候就需要在目标计算机上安装相应的类库。部署过程对 于大型应用程序可能非常复杂,就像我们玩的使命召唤的部署,或者Visual Studio的部署,在部署的过程中还可以选择哪些组件可以安装,哪些组件不可以安装等操作。
本文主要是简要的介绍一下部署的基本方法,起到一个抛砖引玉的作用,要是想写出非常强大的部署功能,还需要学习更多的文档和资料。
.NET中的部署分类:
1. XCopy
XCopy允许把一个程序集或者一组程序集复制到目标计算机应用程序文件夹中,从而减少开发时间。.NET程序集是自我包含的(元数据描述了包含在程序集中的内容),因为不需要在注册表中进行注册。
每个程序集都跟踪他需要执行的其他程序集,因此,在默认情况下,程序集会在当前应用程序文件夹中查找依赖项。这就是为什么当我们的程序引用了第三方的程序集的时候,把第三方程序集放在应用程序文件夹下就可以正确的运行,及时将应用程序移动到其他的计算机上。
2. 发布Web站点
在发布Web站点之前,会编译整个站点,然后复制到指定的位置。编译后的站点,不包含任何源代码。
3. 部署项目
部署项目就是我们经常用的安装程序的方式。VS2010可以为应用程序创建安装程序。基于Windows Installer技术有四种选择:
创建合并模块
为客户端应用程序创建安装程序
为Web应用程序创建安装程序
为基于智能设备的应用程序创建安装程序
创建cab文件,用过windows moblie操作系统的都知道,那个系统中的安装程序都是cab文件,还有就是在win ce系统中也是使用cab安装文件。
4. ClickOnce技术
ClickOnce技术可以构建自动升级的,基于Windows的应用程序。
ClickOnce允许把应用程序发布到Web站点,文件共享,或者CD上。对应用程序进行升级或者更新版本以后,开发小组可以把他们发布到相同的位置或者站点上,最后用户在使用应用程序的时候,应用程序会自动检查是否有最新版本,如果有就进行更新。
接下来详细介绍每种部署方式。
部署方式介绍
一. XCopy部署
XCopy部署就是把一组文件复制到目标计算机上的一个文件夹中,然后在客户端执行应用程序。无论程序集的数目是多少,如果把文件复制到同一个文件夹中,应用程序就可以执行。不需要配置设置或注册表。
简单的说,XCopy部署就是把程序集复制到目标计算机上,就可以部署功能完善的应用程序。使用这种方法对可以部署的程序集的大小咩有限制。
XCopy部署的缺点:不能把程序集放到全局程序集缓存(GAC)中,不能在开始菜单中添加图标,如果程序依赖某种类型的COM库,就不能很容易的注册COM组件。
二. 发布Web站点
XCopy也可以用于Web应用程序的发布。建立虚拟目录,把Web应用程序文件复制到虚拟目录即可。
Web项目的另一个部署选项是发布Web站点,发布Web站点就是预编译整个站点,并将编译好的版本放在指定的位置,VS中有发布Web站点的用户向导,根据向导提示就可以进行操作了。
发布Web站点的优点是速度快,安全性高。速度快是因为所有的程序集都已经编译过了。
三. Visual Studio 2010安装和部署项目
XCopy使用起来非常简单,但是缺乏一些功能。Visual Studio 2010提供了6个安装程序项目类型。有4个是基于 Windows Installer技术。
如图所示的安装项目类型。

Setup Project会部署项目到文件夹结构中,而Web Setup Project会部署项目到Web服务器的虚拟目录中。
在创建包含在多个部署项目中的组件或者功能库时,一般使用Merge Module Project,通过创建合并模块,可以设置专用于组件的配置项,而无需在主项目的创建过程中担心他们。
3.1 Windows Installer简介
Windows Installer是一个服务,负责管理在大多数的 windows操作系统上安装、更新、修复和删除应用程序。
Windows Installer在数据库中跟踪应用程序的安装,在卸载应用程序的时候,Windows Installer和内容以跟踪和删除已经添加的注册表设置和复制到硬盘上的文件,以及已经添加的桌面图标和开始菜单中的图标。如果注册表设置或与应用程 序相关的DLL被不小心删除了,就可以修复安装。在修复的过程中,安装程序会从上一次安装中读取数据库,并重制该安装过程。
如果需要更多的更空,就应该查看Windows Installer SDK, 他是Platform SDK的一部分,其中包含了为应用程序创建自动以安装软件包的文档。
3.2 创建安装程序
创建安装包的第一个任务是:标识应用程序需要的所有外部资源,宝库配置文件,COM组件,第三方类库,控件和图像资源等。
这里首先介绍如何在独立的解决方案中创建安装程序项目。然后介绍在原来的解决方案中创建安装程序项目。
我们这里使用的例子,都是一个基于Adaboost人脸检测的程序,这个程序使用了Emgucv的第三方类库。
3.2.1 在独立的解决方案中创建安装项目
在开始创建部署项目之前,要确保部署的应用程序有一个发布版本,即Release版本。
新建Setup Project 项目,填写相关信息,如图:

然后可以看到这样的界面:

在“‘Solution Explorer”中右击项目选择Add,选择Assembly.如图

添加本项目需要的程序集。选择了已经Release好了的FaceDetectTest.exe, 然后可以看到,在Detected Dependencies部分,Vs给出了这个可执行文件需要的程序集依赖。这样Vs会自动的包含程序集。依赖程序集如图:

接着需要确定把程序集部署到用户计算机什么地方。
单击左侧列表的树根,然后在空白地方右击鼠标,可以选择添加特殊的文件夹,可以根据自己的需要添加相应的特殊文件夹。这里我们添加了GAC文件夹。但是添加到GAC文件夹中的程序集必须有强命。添加GAC以后,把GAC需要放置的程序集拖进去。
接下来,用户可以再桌面或者开始菜单添加快捷方式。就需要把快捷方式拖放到相应的文件夹。
要创建桌面快捷方式,进入Application文件夹,右击Application文件夹中的需要创建快捷方式的程序,如图

选择“Create Shortcut to FaceDetectTest.ext”, 然后会生成一个这个应用程序的快捷方式。如图

然后将这个快捷方式文件拖放到User's Desktop文件夹中,这样,在安装程序的时候,就会在用户的桌面显示一个程序的快捷方式。

然后Build整个项目就可以获得安装文件了。
3.2.2 在同一个解决方案中创建安装项目
上面的部署方式有几个缺点:例如,当心的程序集添加到原始应用程序汇总,部署项目不会自动的识别任何改动的地方,而必须手动的添加新的程序集,然后 再次盐城心的依赖项,包含依赖项。如果在包含几十个或者上百个应用程序集的应用程序中,这样就很难维护了。VS提供了一个简单的解决方案,吧部署项目包含 在应用程序的解决方案中,这样就可以把主项目的输出作为部署程序集了。
在原来的解决方案中,添加一个新的Project, 选择Setup Project。如图

上面的安装程序通过Add->Assemblies添加程序集,这次我们通过Add->Project Output添加程序集。如图

在弹出的窗口中,选择要添加部署的项目,然后选择"Primary Output",如图

这包括构建应用程序时的输出和所有依赖项。选择Configuration 为Release x86
系统仍然会自动检测到依赖项和主输出:

剩下的操作和上面的创建安装项目的操作一样。
就可以获得安装程序文件。
这种方法的优点:当把新的项目添加到解决方案中,在原来的工程中添加一个新的引用,部署项目会自动的选择新的程序集,无需我们做任何工作。
四. ClickOnce部署
ClickOnce是一种允许应用程序自动升级的部署技术。应用程序发布到共享文件、Web站点或其他媒介,如果后来程序发布者对程序进行了升级,ClickOnce会自动检测程序版本进行升级,无需用户干涉。
ClickOnce还解决了安全权限问题,一般情况下,要安装应用程序,用户需要由管理权限。而利用ClickOnce,用户只要有运行应用程序所需的最低绝对权限,就可以安装和运行应用程序。
发布ClickOnce应用程序的方法:
右击需要创建ClickOnce安装方法的项目,选择属性,看到如下界面

选择Publish,

ClickOnce应用程序的发布,需要和IIS服务器配合操作。
这里我把ClickOnce应用程序放到了本地IIS服务器上

然后点击Publish.
然后就可以通过浏览器访问地址进行应用程序安装了。
.Net应用程序打包部署总结的更多相关文章
- VS2013程序打包部署(图解),vs2013部署
VS2013程序打包部署(图解),vs2013部署 首先要说明的是VS解决方案配置下的Debug模式和Release模式有什么区别.Debug模式通常称为调试模式,它包含调试信息,未对代码进行优化,方 ...
- VS2013 Winform程序打包部署 InstallShield2015LimitedEdition
VS2013 Winform程序打包部署 VS2013默认是没有安装打包程序的,需要手动安装,我安装的是 InstallShield2015LimitedEdition. 1.点击解决方案,右键,选择 ...
- VS2012程序打包部署详解
VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具: InstallShield2015LimitedEdition.下载地址:https://msdn.micr ...
- 【转】VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- [转载]VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- (转) VS2012程序打包部署详解
程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的. 经过翻阅资料发现 ...
- VS2012及以上版本 程序打包部署详解
引用: http://blog.csdn.net/zhang_xinxiu/article/details/9099757 程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的 ...
- VS2012 QT程序打包部署详解
1.设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: 2.发布程序 在 ...
- 【CITE】VS2012程序打包部署
选择Debug模式将项目重新生成,并保证没有任何bug 选择解决方案,右击——添加——新建项目——安装和部署 下载过打包工具InstallShield2013LimitedEdition, ...
- VS2013程序打包部署详细图解
目录(?)[+] 新建项目 FILE –> New –> Project,如下图所示: 注意:如果 InstallShield Limited Edition Project 显 ...
随机推荐
- Hades:移动端静态分析框架
只有通过别人的眼睛,才能真正地了解自己 ——<云图> 背景 作为全球最大的互联网 + 生活服务平台,美团点评近年来在业务上取得了飞速的发展.为支持业务的快速发展,移动研发团队规模也逐渐从零 ...
- ARM 中必须明白的几个概念
文章具体介绍了关于ARM的22个常用概念. 1.ARM中一些常见英文缩写解释 MSB:最高有效位: LSB:最低有效位: AHB:先进的高性能总线: VPB:连接片内外设功能的VLSI外设总线: EM ...
- windows svn 客户端连不上linux svn server
采坑记录:linux服务器上svn://127.0.0.1可以正常使用,windows客户端远程连接不上,说明是端口号的问题. linux正常配置了iptables开启了3690端口,连接不上. 干脆 ...
- SQLSERVER2014集群实战——IP引发的坑
在之前的帖子里有提到过,为了避免IP变更带来的一系列问题,采取了不改变IP的策略.原以为,只要SQLSERVER的群集IP保持与之前单机部署的IP一致,就基本上不会有问题.然而实际永远比预想的更复杂. ...
- Educational Codeforces Round 45 (Div 2) (A~G)
目录 Codeforces 990 A.Commentary Boxes B.Micro-World C.Bracket Sequences Concatenation Problem D.Graph ...
- Codeforces.739E.Gosha is hunting(DP 带权二分)
题目链接 \(Description\) 有\(n\)只精灵,两种精灵球(高级和低级),每种球能捕捉到第\(i\)只精灵的概率已知.求用\(A\)个低级球和\(B\)个高级球能捕捉到精灵数的最大期望. ...
- 【2016NOIP十连测】【test4】【状压DP】【容斥原理】巨神兵
题目大意: 给一个n个点(n<=17),m条边的有向图(无自环.无重边),求其无环子图的方案数. 题解: 看到n<=17,显然是用状压dp. 用f[i]表示点集i的满足条件的方案数. 状态 ...
- 51Nod 快速傅里叶变换题集选刷
打开51Nod全部问题页面,在右边题目分类中找到快速傅里叶变换,然后按分值排序,就是本文的题目顺序. 1.大数乘法问题 这个……板子就算了吧. 2.美妙的序列问题 长度为n的排列,且满足从中间任意位置 ...
- JVM内存模型以及垃圾回收
JAVA堆的描述如下: 内存由Perm和Heap组成.其中Heap = {Old + NEW = { Eden , from, to } } JVM内存模型中分两大块: NEW Generation: ...
- zookeeper【3】服务发现
服务发现:指对集群中的服务上下线做统一管理,每个工作服务器都可以作为数据的发布方,向集群注册自己的基本信息,而让某些监控服务器作为订阅方,订阅工作服务器的基本信息.当工作服务器的基本信息改变时,如服务 ...