2.7 简单应用程序部署(私有部署的程序集)
2011-11-25 14:00 iRead 阅读(553) 评论(0) 编辑 收藏 举报本章已解释了如何生成模块,以及如何将模块合并成一个程序集。接着要解释的是如何打包和部署所有这些程序集,使用户能够运行应用程序。
程序集的打包方式没有任何特殊要求。打包一组程序集最简单的方式就是直接复制所有文件。例如,可将所有程序集文件放到一张光盘上,将光盘分发给用户,执行上面的一个批处理文件,将光盘上的文件复制到用户硬盘上的一个目录。由于已经包含了所有依赖的程序集和类型,所以用户能直接运行应用程序,“运行时”会在应用程序的目录中查找引用的程序集。不需要对注册表进行任何修改就能运行程序。要卸载应用程序,删除所有文件就可以了--就是那么简单!
当然,也可使用其他机制来打包和安装程序集文件,比如使用.cab文件(通常在需要从Internet下载的时候使用,目的是压缩文件并缩短下载时间)。还可将程序集文件打包成一个MSI文件,以便由Windows Installer服务(MSIExec.exe)使用。使用MSI文件可实现程序集的“按需安装”(install on demand)--在CLR首次尝试加载程序集的时候才安装这个程序集。但这并不是MSI的新功能;非托管EXE和DLL文件也能进行按需加载。
注意:使用批处理程序或其他简单的“安装软件”,足以将应用程序“弄”到用户的机器上。但是,用在用户的桌面和“开始”菜单上创建快捷方式,仍需使用一款较高级的安装软件。除此之外,可以方便地备份和还原应用程序,或者把它从一台机器移动到另一台机器,但快捷方式仍需特殊处理。
当然,也可利用Visual Studio内建的一个机制来发布应用程序。具体做法是打开项目的属性对话框,选择“发布”选项卡。利用这张选项卡中的选项,可以让Visual Studio生成一个MSI文件,并将它复制到一个网站、FTP服务器或者文件路径。这个MSI文件还能安装系统必备组件,比如.NET Framework或Microsoft SQL Server 2008 Express Edition。最后,利用ClickOnce技术,应用程序还能自动检查更新,并在用户的机器上安装更新。
部署到和应用程序相同的目录中的程序集成为私有部署的程序集(privately deployed assebmly),这是因为程序集文件不和其他任何应用程序共享(除非其他应用程序也部署到这个目录中)。私有部署的程序集为开发人员、最终用户和管理员带来了许多便利,因为只需把它们复制到一个应用程序的基目录,CLR便会加载它们,并执行其中的代码。除此之外,要卸载一个应用程序,从目录中删除程序集即可。这使备份和还原也变得异常简单。
之所以能实现这种简单的安装/移动/卸载,是因为每个程序集都用元数据指明了自己引用的程序集,不需要依靠注册表设置。另外,引用(别的程序集的)程序集限定了每个类型的作用域。也就是说,一个应用程序总是和它生成和测试时的那些类型绑定。即便另一个程序集恰好提供了一个同名类型,CLR也不可能加载那个程序集。这一点有别于COM。在COM中,类型是在注册表中登记的,造成机器上运行的任何应用程序都能使用那些类型。
第3章将讨论如何部署可由多个应用程序访问的共享程序集。