【51CTO独家译稿】序言
在Visual Studio过去的一些版本中,你只能使用“安装向导”来部署你的应用程序。在***的版本中,微软对ClickOnce模型做了一些调整,以鼓励开发者使用这个模型。在Visual Studio 2010中,通过ClickOnce你可以很轻松地部署你的应用程序。那么,具体应该怎样做呢?请继续阅读本文,我们接下来将会为您讲述具体的步骤:
步骤1:通过解决方案资源管理器发布一个项目
在解决方案资源管理器中,右键单击那个你想要部署的项目。然后,你会看到一个可以“Publish”你的项目的选项。选择这个选项就可以启动one-click向导了。
步骤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文件将会包含下面这个小节:
- <deployment install="true" mapFileExtensions="true">
- <subscription>
- <update>
- <beforeApplicationStartup />
- </update>
- </subscription>
- <deploymentProvider codebase="http://www.microgold.com/TestDeployment.application" />
- </deployment>
这个策略会告诉这个应用程序,应该在应用程序启动以前检查更新。如果存在一个更新,它会下载这个更新,然后再启动这个应用程序。那么,还有其他的可用策略吗?
你可以让运行中的应用程序每10个小时检查一次更新。如果有一个更新可用,会在用户下次运行这个应用程序的时候提示用户进行更新。
- <subscription>
- <update>
- <expiration maximumAge="10" unit="hours" />
- </update>
- </subscription>
如果你的要求是只让高于某个版本的用户安装这个更新,你可以在ClickOnce的.application配置文件中添加下面这个deployment标签
- <deployment install="true" minimumRequiredVersion="5.1.0.0"> >
- <subscription>
- <update>
- <beforeApplicationStartup />
- </update>
- </subscription>
- <deploymentProvider codebase="http://www.microgold.com/TestDeployment.application" />
- </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应用程序快如闪电,而且,持续地对应用程序进行更新也变得更加轻松了。
原文标题:Deploying Windows Applications using Visual Studio 2010
【编辑推荐】