Visual Studio 2010部署Windows應用程序
原創【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
【編輯推薦】