第16章部 署.docx
- 文档编号:12156842
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:44
- 大小:39.39KB
第16章部 署.docx
《第16章部 署.docx》由会员分享,可在线阅读,更多相关《第16章部 署.docx(44页珍藏版)》请在冰点文库上搜索。
第16章部署
第16章部署
编译源代码并完成测试后,开发过程并没有结束。
在这个阶段,需要把应用程序提供
给用户。
无论是ASP.NET应用程序、智能客户应用程序还是用CompactFramework构建的
应用程序,软件都必须部署到目标环境中。
.NETFramework使部署工作比以前容易得多,
因为不再需要注册COM组件,编写新的注册表项。
本章将介绍可用于应用程序部署的选项,包括ASP.NET应用程序和智能客户应用程序
的部署选项。
本章的主要内容如下:
●部署要求
●简单的部署情况
●基于Windows安装程序的项目
●ClickOnce
16.1部署的设计
部署常常是开发过程之后的工作,如果不下一定的工夫,可能会导致错误。
为了避免
在部署过程中出错,应在最初的设计阶段就对部署过程进行规划。
任何部署问题,例如服
务器的容量、桌面的安全性或从哪里加载程序集等,都应从一开始就纳入设计,这样部署
过程才会比较顺利。
另一个必须在开发过程早期解决的问题是,在什么环境下测试部署。
应用程序代码的
单元测试和部署选项的测试可以在开发系统中进行,而部署必须在类似于目标系统的环境
中测试。
这是非常重要的,特别是目标计算机上不存在从属文件时。
例如,第三方的库很
早就安装在项目的开发计算机上,但目标计算机可能没有安装这个库。
在部署软件包中很
容易忘记包含这个库。
在开发系统上进行的测试不可能发现这个错误,因为库已经存在了。
对从属文件的说明可以帮助减少这种潜在的错误。
部署过程对于大型应用程序来说可能非常复杂。
提前规划部署,在部署过程中可以节
省时间和精力。
第Ⅱ部分VisualStudio
16.2部署选项
本节概述.NET开发人员可以使用的部署选项。
其中大多数选项将在本章的后面详细
论述。
16.2.1Xcopy实用工具
Xcopy实用工具允许把程序集或程序集组复制到应用程序文件夹中,从而减少了开发
时间。
由于程序集是自我包含的,元数据描述了包含在程序集中的内容,所以不需要在注
册表中注册。
每个程序集都跟踪它需要执行的其他程序集。
默认情况下,程序集会在当前
的应用程序文件夹中查找从属文件。
把程序集移动到其他文件夹的过程将在本章后面讨论。
16.2.2CopyWeb工具
如果开发的是Web项目,使用Web站点菜单中的CopyWeb选项就会把运行应用程序
所需要的组件复制到服务器上。
16.2.3发布Web站点
在发布Web站点时,会编译整个站点,然后复制到指定的位置。
在预编译时,所有的
源代码都会从最终的输出中删除,找出和处理所有编译错误。
16.2.4部署项目
VisualStudio2005可以为应用程序创建安装程序。
基于MicrosoftWindowsInstaller技
术有4种选择:
创建合并模块;为客户应用程序创建安装程序;为Web应用程序创建安装
程序;以及为基于智能设备(CompactFramework)的应用程序创建安装程序。
还可以创建cab
文件。
部署项目为安装过程提供了极大的灵活性和可定制性。
这4种部署方式对于大型应
用程序都十分有用。
16.2.5ClickOnce
ClickOnce可以建立自动升级的、基于Windows的应用程序。
ClickOnce允许把应用程
序发布到Web站点、文件共享、甚或CD上。
在对应用程序进行升级、重新生成后,开发
小组可以把它们发布到相同的位置或站点上。
最终用户在使用应用程序时,程序会检查是
否有更新版本,如果有,就进行更新。
16.3部署的要求
基于.NET的应用程序一般都有运行要求。
在执行任何托管的应用程序之前,CLR对
404
第15章部署
目标平台都有一定的要求。
首先必须满足的要求是操作系统。
目前下面的操作系统可以运行基于.NET的应用
程序:
●Windows98
●Windows98,第2版(SE)
●WindowsMillenniumEdition(ME)
●WindowsNT4.0(ServicePack6a)
●Windows2000
●WindowsXPHome
●WindowsXPProfessional
●WindowsXPProfessionalTabletPCEdition
●WindowsVista
其次,必须支持下面的服务器平台:
●Windows2000Server和AdvancedServer
●Windows2003Server系列
其他要求有WindowsInternetExplorer5.01或更高版本,MDAC2.6或更高版本(应用程
序需要访问数据)和用于ASP.NET应用程序的InternetInformationServices(IIS)。
在部署.NET应用程序时,还必须考虑硬件要求。
硬件的最低要求是:
●客户机:
奔腾90MHz,32MBRAM
●服务器:
奔腾133MHz,128MBRAM
要获得最佳性能,应增加RAM,RAM越大,.NET应用程序运行得就越好。
服务器应
用程序更是如此。
如果要运行使用WindowsPresentationFoundation(WPF)、WindowsCommunication
Foundation(WCF)或WindowsWorkflowFoundation(WWF)的.NET3.0应用程序,要求就更
严格。
.NET3.0至少需要WindowsXPSP2。
上述列表还应添加如下内容:
●WindowsXPHome(SP2)
●WindowsXPProfessional(SP2)
●WindowsXPProfessionalTabletPCEdition(SP2)
●WindowsVista(不包括IA64平台)
支持下述服务器平台:
●Windows2003ServerFamily(SP1)
●WindowsServer“Longhorn”IA64版本
最低的硬件要求也有变化:
●客户机:
奔腾400MHz,96MBRAM
16.4部署.NET运行库
使用.NET开发应用程序时,需要依赖.NET运行库。
这似乎很明显,但有时可以忽略
405
第Ⅱ部分VisualStudio
这一点。
如果应用程序不使用任何.NET3.0功能,就只需要安装dotnetfx.exe。
如果使用
了.NET3.0功能,还需要安装dotnetfx3.exe。
在下面对创建部署软件包的讨论中,运行库的安装是可选的。
安装程序会检查是否安
装了相应的运行库,如果没有,安装程序会从本地媒介中安装运行库,或者到指定的下载
站点上下载并安装运行库。
16.5简单的部署
如果在应用程序的初始设计阶段考虑了部署,那么部署就只是把一组文件复制到目标
计算机上。
对于Web应用程序,就只需使用VisualStudio2005中的一个简单的菜单选项。
本节就讨论这种简单的部署情况。
为了了解如何设置各种部署选项,必须有一个要部署的应用程序。
从
上下载的示例包含3个项目:
SampleClientApp、SampleWebApp和AppSupport。
SampleClientApp是一个智能客户应用程序,SampleWebApp是一个简单的Web应用程序,
AppSupport是一个类库,它包含一个简单的类,该类返回一个包含当前日期和时间的字符
串。
SampleClientApp和SampleWebApp使用AppSupport的结果填充一个标签。
为了使用
这些示例,首先加载并构建AppSupport。
然后在其他两个应用程序中,设置对新构建的
AppSupport.dll的引用。
下面是AppSupport程序集的代码:
usingSystem;
namespaceAppSupport
{
///
///Simpleassemblytoreturndateandtimestring.
///
publicclassSupport
{
privateSupport()
{
}
publicstaticstringGetDateTimeInfo()
{
DateTimedt=DateTime.Now;
returnstring.Concat(dt.ToLongDateString(),"",dt.ToLongTimeString());
}
}
}
这个简单的程序集足以演示可用的部署选项。
406
第15章部署
16.5.1Xcopy部署
Xcopy部署就是把一组文件复制到目标计算机上的一个文件夹中,然后在客户机上执
行应用程序。
这个术语来自于DOS命令xcopy.exe。
无论程序集的数目是多少,如果文件
复制到同一个文件夹中,应用程序就会运行,不需要编辑配置设置或注册表。
为了理解Xcopy部署的工作原理,打开示例下载文件中的SampleClientApp解决方案
(SampleClientApp.sln),把目标改为Release,进行完整的编译。
然后,使用“我的电脑”
或文件管理器导航到项目文件夹\SampleClientApp\bin\Release,双击SampleClientApp.exe,
运行应用程序。
现在单击按钮,打开另一个对话框。
这将验证应用程序是否能正常运行。
当然,这个文件夹是VisualStudio放置输出的地方,所以应用程序能正常工作。
创建一个新文件夹,命名为ClientAppTest。
把这两个文件从Release文件夹复制到这
个新文件夹中,然后删除Release文件夹。
再次双击SampleClientApp.exe文件,验证它是
否正常工作。
Xcopy部署只需把程序集复制到目标机器上,就可以部署功能完善的应用程序。
这里
使用的示例非常简单,但这并不意味着这个过程对较复杂的应用程序无效。
实际上,使用
这种方法对要部署的程序集的大小和数目没有限制。
不想使用Xcopy部署的原因是它不能
把程序集放在全局程序集缓存(GAC)中,或者不能在“开始”菜单中添加图标。
如果应用
程序仍依赖于某种类型的COM库,就不能很容易地注册COM组件。
16.5.2Xcopy和Web应用程序
Xcopy部署也可以用于Web应用程序,但文件夹结构有点不同。
我们必须建立Web
应用程序的虚拟目录,并配置合适的用户权限。
这个过程通常需要使用IIS管理工具来完
成。
在建立虚拟目录后,Web应用程序文件就可以复制到虚拟目录中。
复制Web应用程序
的文件有点困难,需要考虑两个配置文件和页面使用的图像。
16.5.3CopyWeb工具
一种较好的方法是使用CopyWeb工具。
在VisualStudio2005的Website|CopyWebSite
菜单项中就可以访问工具。
它基本上是一个FTP客户程序,用于给远程位置来回传送文件。
远程位置可以是任意FTP或Web站点,包括本地Web站点、IISWeb站点和Remote
(Frontpage)Web站点。
CopyWeb工具的另一个特性是,它会把远程服务器上的文件与源站
点上的文件同步。
源站点总是VisualStudio2005中当前打开的站点。
如果当前项目有多个
开发人员,就可以使用这个工具与本地开发站点保持同步。
所进行的修改可以与用于测试
的公共服务器进行同步。
16.5.4发布Web站点
Web项目的另一个部署选项是发布Web站点。
发布Web站点就是预编译整个站点,并把
编译好的版本放在指定的位置。
该位置可以是文件共享、FTP位置,或可以通过HTTP访问的
407
第Ⅱ部分VisualStudio
其他位置。
编译过程会从程序集中去除所有的源代码,为部署创建dll文件。
这也包括.ASPX
源文件中的标记。
.ASPX文件并不包含一般的标记,而是包含程序集的一个指针。
每个.ASPX
文件都与一个程序集相关。
无论是模型、后台代码或单个文件,这个过程都会执行。
发布Web站点的优点是速度快,很安全。
速度有所提高,是因为所有的程序集都已编
译。
否则,第一次访问页面时会有一个延迟,因为要编译和缓存页面和从属代码。
安全性
有所提高,是因为不部署源代码。
另外,在部署前所有的源代码都进行了预编译,找出了
所有的编译错误。
使用Website|PublishWebSite菜单项就可以发布Web站点。
我们需要提供要发布的
位置。
这也可以是文件共享、FTP位置、Web站点或本地磁盘路径。
在完成编译后,文件
就放在指定的位置。
在这里可以把文件复制到阶段服务器、测试服务器或产品服务器上。
16.6Installer项目
xcopy部署使用起来很简单,但有时它缺乏一些功能。
为了克服这个缺点,VisualStudio
2005提供了6个Installer项目类型。
其中4个类型基于WindowsInstaller技术,表15-1列
出了这些项目类型。
表15-1
项目类型说明
SetupProject用于安装客户应用程序、中间层应用程序和运行为Windows服务的应
用程序
WebSetupProject用于安装基于Web的应用程序
MergeModuleProject创建合并模块,这些模块可以和其他基于WindowsInstaller的安装应用
程序一起使用
CabProject创建cab文件,通过旧式的部署技术进行发布
SetupWizard帮助创建部署项目
SmartDeviceCABProjectPocketPC、Smartphone和其他基于CE的应用程序的CAB项目
Setup和WebSetupProject非常相似。
主要的区别是使用WebSetup,项目会部署到
Web服务器上的一个虚拟目录中,而使用SetupProject,项目会部署到文件夹结构中。
这
两个项目类型都基于WindowsInstaller,拥有基于WindowsInstaller的安装程序的所有功
能。
在创建包含在多个部署项目中的组件或功能库时,一般使用MergeModuleProject。
创
建合并模块时,可以设置专用于组件的配置项目,而无需在主部署项目的创建过程中考虑
它们。
CabProject类型仅为应用程序创建Cab文件。
Cab文件由旧式的安装技术以及一些
基于Web的安装过程使用。
SetupWizard项目类型逐步完成创建部署项目的步骤,在此过
程中向用户询问特定的问题。
下面的几节讨论如何创建这些部署过程,可以改变哪些设置
和属性,可以增加什么定制内容。
408
第15章部署
16.6.1WindowsInstaller
WindowsInstaller是一个服务,负责管理在大多数Windows操作系统上安装、更新、
修复和删除应用程序。
它是WindowsME、Windows2000、WindowsXP和WindowsVista
的一部分,可以用于Windows95、Windows98和WindowsNT4.0。
WindowsInstaller的当
前版本是2.0。
WindowsInstaller在数据库中跟踪应用程序的安装。
在卸载应用程序时,Windows
Installer很容易跟踪和删除已添加的注册表设置、复制到硬盘上的文件,以及已添加的桌
面和“开始”菜单图标。
如果有某个文件仍被另一个应用程序引用,安装程序就会把它保
留在硬盘上,不会使其他的应用程序中断。
数据库还可以修复应用程序。
如果注册表设置
或与应用程序相关的dll被破坏或不小心删除了,就可以修复安装。
在修复过程中,安装
程序会从上一次安装中读取数据库,并复制该安装。
VisualStudio2005中的部署项目可以创建Windows安装软件包。
部署项目允许访问大
多数需要访问的内容,以便安装给定的应用程序。
但是,如果需要更多的控制,就应查看
WindowsInstallerSDK,它在PlatformSDK中,其中包含了为应用程序创建定制安装软件
包的说明。
下面几节将使用VisualStudio2005部署项目创建这些安装软件包。
16.6.2创建安装程序
为客户应用程序或Web应用程序创建安装软件包并不困难。
第一个任务是标识应用程
序需要的所有外部资源,包括配置文件、COM组件、第三方库、控件和图像。
前面说过,
在项目的文档说明中应包含一个从属文件列表。
这个文档说明是非常有用的。
VisualStudio
2005可以询问程序集,提取该程序集的从属文件,但我们仍需要审查这些内容,以防遗漏。
另一个问题是,在过程的什么时候创建安装软件包。
如果设置了一个自动构建过程,
就可以把安装软件包的构建包含在项目成功构建的过程中。
在耗时而复杂的大型项目中,
过程的自动进行会大大减少出错的可能性,我们可以把部署项目包含在项目解决方案中。
SolutionPropertyPages对话框中有一个ConfigurationProperties设置。
使用这个设置可以选
择要为各种构建配置包含的项目。
如果选择ReleasebuildsbutnotfortheDebugbuilds下面
的Build复选框,安装软件包就只在创建发布版本时创建。
这也是下面示例所使用的过程。
图15-1显示了SampleClientApp解决方案的SolutionPropertyPages对话框。
其中显示了
Dubug配置,没有给安装项目选中Build复选框。
1.简单的客户应用程序
在下面的示例中,要为SampleClientApp解决方案创建一个安装程序(它包含在示例下
载文件中,其中还包含已完成的安装程序项目)。
对于SampleClientApp,创建两个部署项目。
一个创建为独立的解决方案,另一个在原
来的解决方案中创建,以便说明选择创建这两个部署项目的优缺点。
第一个示例将说明如何在独立的解决方案中创建部署项目。
在开始创建部署项目之前,
要确保部署的应用程序有一个发布版本。
接着,在VisualStudio2005中创建一个新项目。
在
409
第Ⅱ部分VisualStudio
NewProject对话框中,选择左边的SetupandDeploymentProjects,再选择右边的Setup
Project,给它指定一个名称(例如SampleClientStandaloneSetup)。
此时,屏幕如图15-2所示。
图15-1
图15-2
在SolutionExplorer窗口中,单击项目,再单击Properties窗口,就会看到一组属性。
这
些属性将在应用程序的安装过程中显示。
其中一些属性还会显示在“添加/删除程序”控件
410
第15章部署
面板上。
由于用户在安装过程中可以看到大多数属性(或者在“添加/删除程序”控件面板上
查看安装时可以看到它们),所以正确设置它们会使应用程序更专业。
这个属性列表非常重
要,特别是在应用程序要进行商业化部署时,更是如此。
表15-2描述了这些属性及其值。
表15-2
项目属性说明
AddRemoveProgramIcon显示在“添加/删除程序”对话框中的图标
Author应用程序的编写者。
这个属性设置通常与Manufacturer的相同,它显
示在msi软件包的Properties对话框中的Summary页面上,以及“添
加/删除程序”对话框的SupportInfo页面上的Contact字段中
Description这是一个形式自由的文本字段,描述了要安装的应用程序或组件。
这
些信息显示在msi软件包的Properties对话框中的Summary页面上,
以及“添加/删除程序”对话框的SupportInfo页面上的Contact字段中
DetectNewerInstalledVersion这是一个布尔值,设置为true时,将检查是否已安装了应用程序的更
新版本,如果是,就停止安装过程
InstallAllUsers这是一个布尔值,设置为true时,将为计算机的所有用户安装应用程
序。
设置为false时,就只有当前用户能访问应用程序
Keywords可用于在目标计算机上搜索msi文件。
这些信息显示在msi软件包的
Properties对话框中的Summary页面上
Localization用于字符串资源和注册设置的地域。
这会影响安装程序的用户界面
Manufacturer生产应用程序或组件的公司名称。
一般与Author属性中指定的信息
相同。
这些信息显示在msi软件包的Properties对话框中的Summary
页面上,以及“添加/删除程序”对话框的SupportInfo页面上的Publisher
字段中,用作应用程序默认安装路径的一部分
ManufacturerURL一个Web站点的URL,该站点与要安装的应用程序或组件相关
PostBuildEvent在构建结束后执行的命令
PreBuildEvent在构建开始前执行的命令
ProductCode应用程序或组件的唯一的字符串GUID。
WindowsInstaller使用这个
属性标识应用程序的后续升级或安装
ProductName描述应用程序的名称,在“添加/删除程序”对话框中用作应用程序的
描述,还用作默认安装路径的一部分:
C:
\ProgramFiles\Manufacturer\
ProductName
RemovePreviousVersions一个布尔值,如果设置为true,就检查计算机上是否安装了应用程序
的以前版本。
如果是,就调用以前版本的卸载功能,之后继续安装。
这个属性使用ProductCode和UpgradeCode确定是否卸载。
UpgradeCode应相同,而ProductCode应不同
411
第Ⅱ部分VisualStudio
(续表)
项目属性说明
RunPostBuildEvent运行PostBuildEvent的时间,其选项有Onsuccessfulbuild或Always
SearchPath一个字符串,表示从属程序集、文件或合并模块的搜索路径。
在开发
机器上建立安装软件包时使用该属性
Subject与应用程序相关的其他信息。
这些信息显示在msi软件包的Properties
对话框中的Summary页面上
SupportPhone为应用程序或组件提供支持的电话号码。
这些信息显示在“添加/删除
程序”对话框的SupportInfo页面上的SupportInformation字段中
SupportURL为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第16章 16