.Net應用程序打包部署總結

openkk 12年前發布 | 123K 次閱讀 .NET .NET開發

編譯源代碼并完成測試以后,開發過程其實并沒有結束。在這個極端,需要把應用程序提供給用戶。無論是ASP.NET應用程序,客戶端應用程序還是 Compact Framework構建的應用程序,開發出來的軟件都必須部署到目標環境中。.NET Framework的部署工作比以前容易得多了,因為不再需要注冊COM組件也不需要編寫新的注冊表配置但愿。

記得以前安裝程序的時候,經常需要安裝注冊表項什么的,.NET完全不需要操作注冊表。

部署過程中,最大的問題就是第三庫的依賴問題的解決。開發人員的計算機上可能提前安裝了用于開發的第三方的類庫,比如我們做圖形處理的經常需要用到 opencv類庫或者emgucv類庫,但是目標計算機上一般不會安裝這些第三方類庫。這樣在部署的時候就需要在目標計算機上安裝相應的類庫。部署過程對 于大型應用程序可能非常復雜,就像我們玩的使命召喚的部署,或者Visual Studio的部署,在部署的過程中還可以選擇哪些組件可以安裝,哪些組件不可以安裝等操作。

本文主要是簡要的介紹一下部署的基本方法,起到一個拋磚引玉的作用,要是想寫出非常強大的部署功能,還需要學習更多的文檔和資料。

.NET中的部署分類:

1. XCopy

XCopy允許把一個程序集或者一組程序集復制到目標計算機應用程序文件夾中,從而減少開發時間。.NET程序集是自我包含的(元數據描述了包含在程序集中的內容),因為不需要在注冊表中進行注冊。

每個程序集都跟蹤他需要執行的其他程序集,因此,在默認情況下,程序集會在當前應用程序文件夾中查找依賴項。這就是為什么當我們的程序引用了第三方的程序集的時候,把第三方程序集放在應用程序文件夾下就可以正確的運行,及時將應用程序移動到其他的計算機上。

2. 發布Web站點

在發布Web站點之前,會編譯整個站點,然后復制到指定的位置。編譯后的站點,不包含任何源代碼。

3. 部署項目

部署項目就是我們經常用的安裝程序的方式。VS2010可以為應用程序創建安裝程序。基于Windows Installer技術有四種選擇:

創建合并模塊

為客戶端應用程序創建安裝程序

為Web應用程序創建安裝程序

為基于智能設備的應用程序創建安裝程序

創建cab文件,用過windows moblie操作系統的都知道,那個系統中的安裝程序都是cab文件,還有就是在win ce系統中也是使用cab安裝文件。

4. ClickOnce技術

ClickOnce技術可以構建自動升級的,基于Windows的應用程序。

ClickOnce允許把應用程序發布到Web站點,文件共享,或者CD上。對應用程序進行升級或者更新版本以后,開發小組可以把他們發布到相同的位置或者站點上,最后用戶在使用應用程序的時候,應用程序會自動檢查是否有最新版本,如果有就進行更新。

接下來詳細介紹每種部署方式。

部署方式介紹

 

一. XCopy部署

XCopy部署就是把一組文件復制到目標計算機上的一個文件夾中,然后在客戶端執行應用程序。無論程序集的數目是多少,如果把文件復制到同一個文件夾中,應用程序就可以執行。不需要配置設置或注冊表。

簡單的說,XCopy部署就是把程序集復制到目標計算機上,就可以部署功能完善的應用程序。使用這種方法對可以部署的程序集的大小咩有限制。

XCopy部署的缺點:不能把程序集放到全局程序集緩存(GAC)中,不能在開始菜單中添加圖標,如果程序依賴某種類型的COM庫,就不能很容易的注冊COM組件。

二. 發布Web站點

XCopy也可以用于Web應用程序的發布。建立虛擬目錄,把Web應用程序文件復制到虛擬目錄即可。

Web項目的另一個部署選項是發布Web站點,發布Web站點就是預編譯整個站點,并將編譯好的版本放在指定的位置,VS中有發布Web站點的用戶向導,根據向導提示就可以進行操作了。

發布Web站點的優點是速度快,安全性高。速度快是因為所有的程序集都已經編譯過了。

三. Visual Studio 2010安裝和部署項目

XCopy使用起來非常簡單,但是缺乏一些功能。Visual Studio 2010提供了6個安裝程序項目類型。有4個是基于 Windows Installer技術。

如圖所示的安裝項目類型。

.Net應用程序打包部署總結

Setup Project會部署項目到文件夾結構中,而Web Setup Project會部署項目到Web服務器的虛擬目錄中。

在創建包含在多個部署項目中的組件或者功能庫時,一般使用Merge Module Project,通過創建合并模塊,可以設置專用于組件的配置項,而無需在主項目的創建過程中擔心他們。

3.1 Windows Installer簡介

Windows Installer是一個服務,負責管理在大多數的 windows操作系統上安裝、更新、修復和刪除應用程序。

Windows Installer在數據庫中跟蹤應用程序的安裝,在卸載應用程序的時候,Windows Installer和內容以跟蹤和刪除已經添加的注冊表設置和復制到硬盤上的文件,以及已經添加的桌面圖標和開始菜單中的圖標。如果注冊表設置或與應用程 序相關的DLL被不小心刪除了,就可以修復安裝。在修復的過程中,安裝程序會從上一次安裝中讀取數據庫,并重制該安裝過程。

如果需要更多的更空,就應該查看Windows Installer SDK, 他是Platform SDK的一部分,其中包含了為應用程序創建自動以安裝軟件包的文檔。

3.2 創建安裝程序

創建安裝包的第一個任務是:標識應用程序需要的所有外部資源,寶庫配置文件,COM組件,第三方類庫,控件和圖像資源等。

這里首先介紹如何在獨立的解決方案中創建安裝程序項目。然后介紹在原來的解決方案中創建安裝程序項目。

我們這里使用的例子,都是一個基于Adaboost人臉檢測的程序,這個程序使用了Emgucv的第三方類庫。

3.2.1 在獨立的解決方案中創建安裝項目

在開始創建部署項目之前,要確保部署的應用程序有一個發布版本,即Release版本。

新建Setup Project 項目,填寫相關信息,如圖:

.Net應用程序打包部署總結

然后可以看到這樣的界面:

.Net應用程序打包部署總結

在“‘Solution Explorer”中右擊項目選擇Add,選擇Assembly.如圖

.Net應用程序打包部署總結

添加本項目需要的程序集。選擇了已經Release好了的FaceDetectTest.exe, 然后可以看到,在Detected Dependencies部分,Vs給出了這個可執行文件需要的程序集依賴。這樣Vs會自動的包含程序集。依賴程序集如圖:

.Net應用程序打包部署總結

接著需要確定把程序集部署到用戶計算機什么地方。

單擊左側列表的樹根,然后在空白地方右擊鼠標,可以選擇添加特殊的文件夾,可以根據自己的需要添加相應的特殊文件夾。這里我們添加了GAC文件夾。但是添加到GAC文件夾中的程序集必須有強命。添加GAC以后,把GAC需要放置的程序集拖進去。

接下來,用戶可以再桌面或者開始菜單添加快捷方式。就需要把快捷方式拖放到相應的文件夾。

要創建桌面快捷方式,進入Application文件夾,右擊Application文件夾中的需要創建快捷方式的程序,如圖

.Net應用程序打包部署總結

選擇“Create Shortcut to FaceDetectTest.ext”,  然后會生成一個這個應用程序的快捷方式。如圖

.Net應用程序打包部署總結

然后將這個快捷方式文件拖放到User's Desktop文件夾中,這樣,在安裝程序的時候,就會在用戶的桌面顯示一個程序的快捷方式。

.Net應用程序打包部署總結

然后Build整個項目就可以獲得安裝文件了。

3.2.2 在同一個解決方案中創建安裝項目

上面的部署方式有幾個缺點:例如,當心的程序集添加到原始應用程序匯總,部署項目不會自動的識別任何改動的地方,而必須手動的添加新的程序集,然后 再次鹽城心的依賴項,包含依賴項。如果在包含幾十個或者上百個應用程序集的應用程序中,這樣就很難維護了。VS提供了一個簡單的解決方案,吧部署項目包含 在應用程序的解決方案中,這樣就可以把主項目的輸出作為部署程序集了。

在原來的解決方案中,添加一個新的Project, 選擇Setup Project。如圖

.Net應用程序打包部署總結

上面的安裝程序通過Add->Assemblies添加程序集,這次我們通過Add->Project Output添加程序集。如圖

.Net應用程序打包部署總結

在彈出的窗口中,選擇要添加部署的項目,然后選擇"Primary Output",如圖

.Net應用程序打包部署總結

這包括構建應用程序時的輸出和所有依賴項。選擇Configuration 為Release x86

系統仍然會自動檢測到依賴項和主輸出:

.Net應用程序打包部署總結

剩下的操作和上面的創建安裝項目的操作一樣。

就可以獲得安裝程序文件。

這種方法的優點:當把新的項目添加到解決方案中,在原來的工程中添加一個新的引用,部署項目會自動的選擇新的程序集,無需我們做任何工作。

四. ClickOnce部署

ClickOnce是一種允許應用程序自動升級的部署技術。應用程序發布到共享文件、Web站點或其他媒介,如果后來程序發布者對程序進行了升級,ClickOnce會自動檢測程序版本進行升級,無需用戶干涉。

ClickOnce還解決了安全權限問題,一般情況下,要安裝應用程序,用戶需要由管理權限。而利用ClickOnce,用戶只要有運行應用程序所需的最低絕對權限,就可以安裝和運行應用程序。

發布ClickOnce應用程序的方法:

右擊需要創建ClickOnce安裝方法的項目,選擇屬性,看到如下界面

.Net應用程序打包部署總結

選擇Publish,

.Net應用程序打包部署總結

ClickOnce應用程序的發布,需要和IIS服務器配合操作。

這里我把ClickOnce應用程序放到了本地IIS服務器上

.Net應用程序打包部署總結

然后點擊Publish.

然后就可以通過瀏覽器訪問地址進行應用程序安裝了。

轉自:http://blog.csdn.net/weixingstudio/article/details/7662862

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!