博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用Visual Studio 2010来部署Windows应用程序

Posted on 2011-04-25 17:31  gczhao  阅读(397)  评论(0编辑  收藏  举报

本文转自:http://www.cnblogs.com/xuefeng1982/archive/2011/04/25/2027662.html

 

 

在Visual Studio过去的一些版本中,你只能使用“安装向导”来部署你的应用程序。在最新的版本中,微软对ClickOnce模型做了一些调整,以鼓励开发者使 用这个模型。在Visual Studio 2010中,通过ClickOnce你可以很轻松地部署你的应用程序。那么,具体应该怎样做呢?请继续阅读本文,我们接下来将会为您讲述具体的步骤:

步骤1:通过解决方案资源管理器发布一个项目

在解决方案资源管理器中,右键单击那个你想要部署的项目。然后,你会看到一个可以“Publish”你的项目的选项。选择这个选项就可以启动one-click向导了。

Publish”你的项目的选项

步骤2:选择你要部署的应用程序的发布位置

这个向导启动以后,它会提示你:你想把你的软件发布到哪里。实际上,你有很多的选择,不止局限于你的硬盘驱动器。你可以发布到一个文件共享服务器 上,也可以通过ftp发布到互联网上,甚至可以直接发布到Web站点上。微软那带有“魔力”的自动化功能可以搞定必须要一起发布的所有依赖程序集。在这个 例子中,我们使用默认的设置。

默认设置

步骤3:选择用户安装这个应用程序的方式

接下来这个步骤可以给你提供很大的灵活性,因为这个步骤可以让你指定用户安装这个应用程序的方式。

设置

由于有了互联网和其他的网络媒介,你不再局限于必须通过物理介质来安装应用程序了。虽然你可以选择了“From a Website”,但是你只能使用IIS,如下图所示。就像它说明的那样,在部署这个应用程序的机器上,你必须安装IIS6或更高的版本,并且,你还必须 是那台机器的管理员。

自定义

如果你刚好有一个IIS站点,并且你还是管理员,那么你可以把它输入到“Specify the URL”域中。点击“Next”以后,这个向导会提示你这个应用程序是否只能在线使用,或者说,这个应用程序是否还可以直接在用户的机器上运行(离线)

离线

当然,你也可以通过一个CD来安装这个应用程序,这是默认的选项。在我们的例子中,我们保留了这个选项,所以我们可以把这个应用程序打包到一个zip文件中,然后把这个文件发送给用户。

步骤4:这个应用程序从哪里检查更新

Click-Once的一个优势是它提供了软件更新机制,这就是说,无论何时,当一个新的修订版本可用的时候,用户都可以轻松地更新他们的软件。在我们的例子中,我们选择了发布到一个Web站点,所以我们可以检查更新。

检查更新

步骤5:我们已经完成了!

最后一个界面会告诉我们要部署的文件会被发布到哪里,以及这个应用程序在客户机器上的行为。

文件被部署在哪里?

如果你点击了“Finish”按钮,那么在你的机器上,包含你的部署文件的文件夹会自动弹出来。如果你要通过CD来安装你的应用程序,它甚至可以给你提供一个autorun文件,只要把这张CD放入光驱,它就会自动地安装你的应用程序了。

你可能也注意到了,发布你的应用程序会在你的项目中添加一个扩展名是pfx的文件。这个文件是一个Authenticode Certificate。实际上,它就是大家熟悉的“self-cert”,它可以发挥作用,但是它无法识别出你是一个发布者。你必须要从Thawte 或 Verisign获取更安全的证书才可以。但是,对于我们的目标来说,一个“self-cert”已经足够了。要更深入地了解ClickOnce的签名机 制,可以参考MSDN上的这篇文章:http://msdn.microsoft.com/en-us/library/aa730868%28VS.80%29.aspx

理解部署结构

ClickOnce不只是创建了一个一次性的安装解决方案。它还可以检查更新,在客户端实时地更新你的应用程序,这样的话,用户就可以通过 ClickOnce机制获得修订和变更的好处了。使用ClickOnce,你可以选择更新策略。这个策略可以决定ClickOnce检查更新的方式。如果 你在步骤4种选择了检查更新,那么,在你的发布目录中,.application文件将会包含下面这个小节:

  1. <deployment install="true" mapFileExtensions="true"> 
  2.   <subscription> 
  3.     <update> 
  4.       <beforeApplicationStartup /> 
  5.     </update> 
  6.   </subscription> 
  7.   <deploymentProvider codebase="http://www.microgold.com/TestDeployment.application" /> 
  8. </deployment> 

这个策略会告诉这个应用程序,应该在应用程序启动以前检查更新。如果存在一个更新,它会下载这个更新,然后再启动这个应用程序。那么,还有其他的可用策略吗?

你可以让运行中的应用程序每10个小时检查一次更新。如果有一个更新可用,会在用户下次运行这个应用程序的时候提示用户进行更新。

  1. <subscription> 
  2.       <update> 
  3.          <expiration maximumAge="10" unit="hours" /> 
  4.       </update> 
  5. </subscription> 

如果你的要求是只让高于某个版本的用户安装这个更新,你可以在ClickOnce的.application配置文件中添加下面这个deployment标签

  1. <deployment install="true" minimumRequiredVersion="5.1.0.0"> > 
  2.     <subscription> 
  3.       <update> 
  4.         <beforeApplicationStartup /> 
  5.       </update> 
  6.     </subscription> 
  7.     <deploymentProvider codebase="http://www.microgold.com/TestDeployment.application" /> 
  8. </deployment> 

注意:每次你通过Visual Studio发布一个项目的时候,它都会自动地为你创建一个新的修订版本。例如,下面那个1.0.0.1版本的文件夹就是自动生成的(在文件夹名字中的数 字分别代表主版本号,次版本号,内部版本号,和修订版本号)。.application文件将指向最新的修订版本文件夹 (TestDeployment_1_0_0_1)。

修订版本

TestDeployment_1_0_0_1文件夹将会包含最新的程序集。实际上,如果我们把 TestDeployment.exe.deploy重命名为TestDeployment.exe,就可以运行这个应用程序了。如果这个项目存在依赖程 序集,它们也会被部署到这个文件夹中(同样,也是以.deploy作为扩展名),注意,每个修订版本都有自己的.application文件。这可以让你 为不同的修订版本指定不同的部署策略。

.manifest文件包含你正在部署的程序集的属性(attribute)。它还包含重要的安全信息(在部署平台上,这个程序集必须要获得的权限)。.manifest文件还包含发布者的标识和强名签名

总结

如果你的应用程序发布了,那么用户就可以通过运行setup文件来安装这个应用程序了。这个应用程序可以按照你在.application文件中设 置的更新策略自动地检查更新。Visual Studio提供的这些强大的特性可以让部署.NET应用程序快如闪电,而且,持续地对应用程序进行更新也变得更加轻松了。