一、不同类型的部署编辑器

二、文件系统编辑器

三、注册表编辑器

四、文件类型编辑器

五、自定义操作编辑器

六、启动条件编辑器

七、用户界面编辑器

八、部署IIS配置信息

九、VS.NET安装项目 VS. 其他部署方案

正文:

在本文的第一部分中,我们看到了如何用各种不同的方式来部署一个ASP.NET Web应用,包括XCOPY部署、VS.NET的“复制项目”功能、VS.NET的Web安装项目。在这一部分,我们将了解如何利用VS.NET Web安装项目提供的功能,构建复杂的Windows安装程序。在此过程中,我们还将看到如何使用VS.NET Web安装项目模板提供的诸多部署编辑器。

一、不同类型的部署编辑器

当我们部署一个应用程序时,可能需要执行各种特殊的安装操作,例如设置目标服务器上安装目录的结构、添加注册键、检查启动条件,以及调整安装过程中出现的用户界面。VS.NET提供的Web安装项目非常强大、灵活,我们可以轻而易举地完成上述任务。VS.NET提供了下列部署编辑器:

⑴ 文件系统编辑器:将文件加入到安装包。

⑵ 注册表编辑器:定义要在目标机器上创建的注册键。

⑶ 文件类型编辑器:允许将文件扩展名关联到应用程序,当用户打开带有指定扩展名的文件时,应用程序自动启动。

⑷ 用户界面编辑器:指定和设置在目标计算机上进行安装的过程中显示的预定义对话框的属性。

⑸ 自定义操作编辑器:指定安装结束时在目标计算机上执行的附加操作,例如运行将服务器组件与特定消息队列相关联的程序。自定义操作必须编译为.dll或.exe文件,或者作为脚本或程序集添加到某个项目中,只有这样才能添加到部署项目中。自定义操作只能在安装结束后运行。

⑹ 启动条件编辑器:指定要成功运行安装程序必须满足的条件。例如,检查特定版本的操作系统。如果用户在不满足该条件的系统上安装,安装将不能进行。

接下来我们通过实例深入了解上述各种编辑器的使用。

二、文件系统编辑器

从这个编辑器的名称也可以猜出,文件系统编辑器的功能是将项目输出文件、程序集和其他文件加入到部署项目的特定目录。有了这个编辑器,我们还可以指定这些文件要安装到用户计算机的哪一个目录位置。文件系统编辑器可以用如下方式打开:选择菜单“视图”→“编辑器”→“文件系统”。

文件系统编辑器预定义了许多特殊文件夹,我们可以选择这些文件夹作为应用程序的安装目录。有了这些文件系统编辑器定义的特殊文件夹,我们甚至能够在不知道确切路径的情况下,选择目标计算机上的安装位置。文件系统编辑器提供的预定义文件夹主要包括:

⑴ 应用程序文件夹:应用程序文件夹通常可以用[ProgramFilesFolder][Manufacturer][ProductName]路径表示,其中Manufacturer(厂商)和ProductName的值从项目属性的设置获取。

⑵ Global Assembly Cache文件夹:即全局程序集缓冲区文件夹。允许将程序集安装成目标计算机上的共享程序集。

⑶ 用户桌面:即保存桌面项目的位置。该文件夹的默认路径是[DriveName]\Documents and Settings\[UserName]\Desktop,其中UserName是当前正在执行安装的用户的名字。

⑷ 用户的“程序”菜单:用户计算机上放置“程序”菜单项目的位置。默认路径是[DriveName]\Documents and Settings\[UserName]\Start Menu\Programs,其中UserName是当前正在执行安装的用户的名字。

作为一个例子,我们假定要把应用程序的某个程序集安装到Global Assembly Cache文件夹。设置方法是:选择菜单“视图”→“编辑器”→“文件系统”,打开文件系统编辑器,然后右击“目标计算机上的文件系统”,选择“添加特殊文件夹”→“Global Assembly Cache文件夹”。加入Global Assembly Cache文件夹之后,它将以“目标计算机上的文件系统”的子节点的形式出现。接下来就可以将必需的程序集加入到Global Assembly Cache文件夹,加入方法是:右击“Global Assembly Cache文件夹”子节点,并选择菜单“添加”→“程序集”,在“组件选择器”对话框中,选择要添加的程序集。将程序集加入到“Global Assembly Cache文件夹”子节点后,安装程序会自动把程序集复制到目标机器的Global Assembly Cache文件夹。

三、注册表编辑器

顾名思义,注册表编辑器用来管理目标机器上的注册表设置。默认情况下,注册表编辑器将显示出标准的Windows注册键,包括HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE和HKEY_USERS,如图一所示。我们可以在这些键下面添加任意注册键。



图一


由于注册表编辑器显示的内容代表着目标机器上注册表的结构,所以它实际上提供了一个编辑目标机器上注册键的可视化工具,这里加入的注册键将在安装时自动加入到目标机器的注册表中。假设我们要在HKEY_LOCAL_MACHINE下面添加注册键,操作步骤是:右击HKEY_LOCAL_MACHINE,选择菜单“新建Key”,将新加入的子节点命名为Software。现在右击Software节点,加入子节点MyCompany。按照同样的方法,在MyCompany下加入子节点ConfigurationSettings。右击ConfigurationSettings节点,选择“新建”→“字串值”,将字串值的名字改成DBConnectionString,再设置合适的值。设置好之后,注册表编辑器的内容如图二所示。



图二



在目标机器上安装好应用之后,目标机器上的注册表也将包含图二所示的ConnectionString。

四、文件类型编辑器

文件类型编辑器允许设定要求安装程序在目标机器上建立的文件关联,即将特定的文件扩展名关联到对该类文件采取各类操作时要启动的应用程序。建立关联之后,Windows资源管理器中就会出现该类文件的扩展名及其描述。如果应用程序用到了某种自定义的文件类型,而且对这类文件执行各种操作时必须启动独立的外部应用程序,文件编辑器提供的机制是很有用的。

在VS.NET中选择菜单“视图”→“编辑器”→“文件类型”,打开文件类型编辑器。下表显示了将文件扩展名关联到特定的应用程序时,应当设置的重要关联属性。

文件类型编辑器允许设置的属性

属性 作用

Name 为该类文件指定一个类型名称。

Command 用户对该类文件执行操作时应当启动的应用程序

Extensions 指定该类文件的扩展名

Icon 指定该类文件的图标。

Description 有关该类文件的简短描述

五、自定义操作编辑器

允许在安装时运行其他程序。自定义操作的运行顺序与它们在编辑器中的显示顺序相同。可通过鼠标拖动或使用“编辑”菜单上的“剪切”和“粘贴”命令将自定义操作重新排序。

六、启动条件编辑器

利用这个编辑器可以设定目标机器必须满足的条件。如果用户试图在一个不能满足启动条件的系统上运行安装程序,安装程序将拒绝执行。设定启动条件时,我们可以要求安装程序搜索目标机器,查找是否存在特定的文件、注册键或组件。图三显示的启动条件编辑器提供了两类设定条件的选项:

㈠ 搜索目标机器:指定在目标机器上执行的搜索操作,例如搜索特定的文件、注册键等。

㈡ 启动条件:允许检查目标机器上是否存在特定的应用,例如IIS、.NET框架,等等。



图三



下表提供的清单显示了可以通过启动条件编辑器设定的启动条件。

条件 作用

文件启动条件 用来搜索目标系统上已安装的文件。

注册表启动条件 安装开始之前搜索注册键。

Windows安装程序启动条件 搜索Windows安装程序文件。

.NET Framework启动条件 检查目标计算机上是否存在.NET Framework。

Internet信息服务(IIS)启动条件 检查已安装的IIS的版本。

■ 检查目标机器上是否安装了.NET Framework

作为一个例子,假设我们要在安装期间检查目标机器上是否存在.NET Framework。选择菜单“视图”→“编辑器”→“启动条件”,右击“目标计算机上的要求”,选择菜单“添加.NET Framework启动条件”,这样就设置好了.NET Framework启动条件。当用户试图在没有安装.NET Framework的机器上安装应用,安装程序将提示用户必须安装.NET Framework才能继续执行安装。

七、用户界面编辑器

顾名思义,用户界面编辑器的作用是设置在目标机器上安装期间用户界面对话框出现的序列。



图四



如图四所示,用户界面编辑器包含两类安装模式:

⑴ 安装:列出了最终用户执行安装程序时将要显示的所有对话框。

⑵ 管理员安装:列出了当管理员将安装程序上载到一个网络位置然后执行安装时将要显示的对话框。

在“安装”和“管理员安装”模式中,预定义的对话框又可以分为三类:

  ⑴ 启动对话框:安装开始之前显示的对话框。

  ⑵ 进度对话框:向用户显示出安装进度的对话框。

  ⑶ 结束对话框:显示出安装已经顺利完成的对话框,可以让用户通过该对话框启动应用程序。

调整用户界面对话框显示序列很方便,只要用拖放的方式把对话框移到适当的位置就可以了。即使不作配置,图四显示的一组默认对话框总是在应用程序的安装期间显示出来。

■ 加入一个启动画面

在用户界面编辑器中,我们可以方便地加入安装期间要显示的额外的对话框。右击“启动”节点,选择“添加对话框”,在“添加对话框”窗口中,从对话框清单中选择要添加的对话框,即“启动画面”,参见图五。将对话框加入之后,我们可以用拖放的方式调整其显示时机。



图五



由于“启动画面”总是在安装开始的时候显示,所以我们要把它拖到对话框序列的最前面。在启动画面窗口中,我们可以显示一个位图,加入位图的方法是:右击用户界面编辑器中的“启动画面”节点,选择菜单“属性窗口”,将SplashBitMap属性的值设置为一个适当的图形文件(bmp或jpg文件)。


除了“启动画面”对话框之外,用户界面编辑器还提供了许多其他预定义的对话框,例如“许可协议”、“自述文件”、“注册用户”、“客户信息”等,这些对话框都可以利用图五的“添加对话框”窗口直接加入。

八、部署IIS配置信息

在准备部署ASP.NET应用程序的时候,一个必须考虑的重要问题是如何在部署应用的同时部署IIS的配置信息。如果用直接复制的方法部署Web应用,例如用XCOPY命令、Windows资源管理器的复制功能、FTP操作等,部署操作显然不涉及IIS的配置信息,IIS的配置必须单独设置,或者在目标机器上手工设置,或者编写脚本程序自动设置。

如果用VS.NET的“复制项目”功能部署应用,目标服务器上会自动创建虚拟目录,但IIS的配置信息仍旧不会复制到目标服务器上新建的虚拟目录,新建的虚拟目录只是从Web网站继承默认的设置,也就是说,我们仍旧要单独设置IIS的配置信息。只有用Web安装项目来部署ASP.NET应用程序,我们才可以让安装程序自动在目标机器上设置IIS的配置信息。

要配置虚拟目录的设置信息,首先打开文件系统编辑器,右击“Web应用程序文件夹”,选择菜单“属性窗口”,打开图六的“属性”窗口。



图六



在图六对话框中,我们可以配置许多重要的属性,包括:

⑴ AllowDirectoryBrowsing:允许设定指定目录的IIS目录浏览属性。这个设置项目相当于IIS管理器中Web网站属性对话框目录设置页的“目录浏览”检查框,可以设置为True或False。

⑵ AllowReadAccess:该属性允许设定文件夹的IIS“读取”属性,可以设置成True或False。

⑶ AllowScriptSourceAccess:该属性设置文件夹的IIS“脚本资源访问”属性。

⑷ AllowWriteAccess:该属性设置文件夹的IIS“写入”属性。

⑸ ApplicationProtection:该属性设置文件夹的IIS“应用程序保护”属性,可以设置成vsdapLow、vsdapMedium、vsdapHigh。

⑹ AppMappings:该属性设置文件夹的IIS“应用程序映射”属性。

■ 设置其他IIS属性

某些IIS配置属性不能在Web安装项目的属性窗口中直接设置,包括目录安全的配置(匿名访问,基本验证或Windows验证)、自定义错误等。

但是,我们可以用其他办法解决问题,其中一种很有效的办法是在Windows安装文件中采用“自定义操作”。如前所述,我们可以用“自定义操作”在安装结束时运行一些代码,完成安装期间未能执行的操作,自定义操作的代码可以是DLL、执行文件、脚本或程序集。

■ 安装ASP.NET Web应用

创建好Windows安装文件(.msi文件)后,在目标服务器上安装ASP.NET应用就很方便了,只要在Windows资源管理器中双击.msi文件就可以启动安装向导,安装向导将帮助用户完成整个安装过程。安装好ASP.NET应用程序后,我们可以在控制面板的“添加或删除程序”功能中看到该应用程序,而且可以利用“添加或删除应用程序”功能随时删除已安装的ASP.NET应用。

九、VS.NET安装项目 VS. 其他部署方案

如前所述,我们可以用下列方案之一来部署ASP.NET Web应用:

⑴ XCOPY或VS.NET的“复制项目”功能。

⑵ VS.NET的Web安装项目。

任何技术都有局限,用XCOPY和“复制项目”功能部署.NET应用也不例外。一般地,它们只适用于比较简单的、允许手工操作的场合,同时用于即时更新也很理想。但是,在某些场合,XCOPY不太适用,我们需要某种更加强大的部署方案,例如:

⑴ .NET应用程序用到了一些COM组件,我们想要自动部署这些COM组件(而不想手工部署),必须在安装期间完成这些COM组件的注册。

⑵ 需要在远程计算机上把一个程序集预编译成本机代码。

⑶ 需要将一些程序集安装到远程机器的Global Assembly Cache。

⑷ 需要将一个应用程序安装成Windows服务。

⑸ 打算创建桌面快捷方式、把程序加入到“添加或删除程序”清单、创建“开始”菜单的快捷方式,等等。

在上面这些情况下,我们需要一种更加强大的部署方案,这就是VS.NET提供的Web部署项目。许多时候,实际使用某种部署方案的是最终用户,最终用户往往缺乏手工配置应用所必需的技能,VS.NET的Web安装项目提供了很容易使用的用户界面,把安装期间必须执行的各种复杂的配置操作全部自动化。不仅如此,VS.NET的Web安装项目还有下列优势:

⑴ 当我们安装一个应用程序时,有关应用的所有信息都被记录在一个Windows安装数据库中。如果我们要删除该应用程序,系统会检查安装数据库,确认其他应用程序不依赖于某些将要被删除的组件,从而避免臭名昭著的DLL Hell问题。

⑵ 如果安装失败,可以执行彻底的回退,从系统清除一切安装痕迹。

结束语:在这篇文章中,我们探讨了部署ASP.NET Web应用程序的各种方案,包括XCOPY、VS.NET的“复制项目”功能,以及VS.NET的Web安装项目,了解了各种部署方案的优缺点及其适用场合。希望本文介绍的内容对你有所帮助