<script language="JavaScript1.1" src="http://ad.doubleclick.net/adj/minisite.sina.com.cn/tech;sz=1x1;num=28729036424615452?" type="text/javascript"> </script> |
雖然,沒有了.NET SDK的支持,就連一個簡單的在屏幕上面打印“Hello,World!”的應用程序都無法運行,那我們也不可能要求用戶必須手工安裝將近120M的.NET SDK後才能運行我們自己開發的應用程序!有沒有更爲簡便的發佈.NET應用程序的方法呢?答案是肯定的,下面我們就提供兩種可以正確部署和發佈.NET應用程序的方法。
一、用VS.NET來部署和分發.NET應用程序無庸置疑的是,VS.NET是開發.NET應用程序的一個非常強大和快捷的集成開發環境(IDE),微軟歷來在配合自己的應用技術方面都能做到盡善盡美,當然,我想也只有微軟才能真正做到和.NET技術的無縫銜接。
下面我們就詳細看看如何利用VS.NET來部署和分發.NET應用程序。爲了講解的方便,我們例舉一個非常簡單的Windows應用程序:簡單的在屏幕上面放置一個按鈕Button。
我們開發.NET應用程序的測試環境是:Windows2000 Server中文版(SP2)+VS.NET Beta2中文版。
第一步:
在原有的項目基礎上,再新建立一個項目,並且選擇其中的“安裝和部署項目”,如下圖所示:
注意上圖中紅色標記的地方,尤其需要注意選擇“添入解決方案”這個選項,因爲只有這樣纔會將部署項目和我們自己的應用程序放置到同一個“解決方案”當中,這一點千萬要注意了!
第二步:
點擊“確定”按鈕之後,會出現安裝嚮導,如下圖所示:
因爲我們的.NET測試程序是一個Windows應用程序,所以我們在上圖中選擇“創建用於Windows應用程序的安裝程序(S)”。點擊“下一步(N)”,我們將會看到需要選擇的畫面,如下圖所示:
上圖中的各個選擇項目的含義相信大家可以從中文名稱中直觀的理解到,我們就不再多費口舌了。一路點擊“下一步”直到最終安裝嚮導的完成會需要5步,最終會在當前的解決方案中添加一個名稱爲“Setup1”的安裝項目。
在這裏我們稍微提一下在VS.NET中的“解決方案”這個概念,其實在VS.NET中的所謂“解決方案”就類似於以前VB中的“項目組”概念,也就是將多個項目集成到一起而已,只不過VS.NET中的“解決方案”這個概念的覆蓋範圍更廣泛而已罷了,這個我們知道一下就可以了。
第三步:
在完成上面的兩個步驟之後,我們就會發現,VS.NET的安裝嚮導已經將我們的應用程序中所用到的各種程序集、系統DLL文件、資源文件等等依賴文件找到了,並且我們還可以方便的繼續添加額外的我們需要的其他相關文件,在這方面做的有些類似於InstallShield了,不過不需要編寫安裝Script腳本。
這樣,我們選擇VS.NET的菜單“生成(B)”—〉“生成解決方案”,即可立即生成我們的安裝文件Setup1.msi,這個安裝文件你可以在你的應用程序解決方案所在的目錄中找到。
找到了這個安裝文件你就會大吃一驚了,即使我們的應用程序只有簡單的一句話,打包之後就會有17M之大!不過沒有辦法,VS.NET會生成一個簡潔的.NET SDK放在我們剛纔生成的那個安裝文件當中。
剩下來的事情,就是直接在沒有安裝.NET環境的Windows9x/NT/2000/XP中運行我們的這個Setup1.msi文件就可以了!
二、手工部署和分發.NET應用程序在上面的第一種方法中,我們可以感受到VS.NET來做.NET應用程序的方便和快捷,但是並不是所有的人都是使用VS.NET集成開發環境來開發.NET應用程序的,對於一些小的應用程序,根本不需要安裝龐大的VS.NET開發環境也可以方便的開發,比如使用UtraEdit軟件來編寫小巧玲瓏的.NET應用程序也是一個不錯的選擇。
在這裏我們就說說如何不使用VS.NET來自己手工的部署和分發我們的.NET應用程序。首先分兩類:
第一類:基於Web的.NET應用程序
對於這一類應用程序,可以說在部署和分發方面是最爲簡單的了,我們只需要將.NET運行環境安裝到我們自己的服務器上面就可以了,用戶端需要的僅僅是兼容IE4.0以上的任何瀏覽器就可以了。
第二類:基於Windows的.NET應用程序
對於這一類,應用程序,我們可以使用InstallShield安裝軟件來手工打包。首先,先在我們的.NET Frameword SDK光盤中找到目錄dotNet,在這個目錄裏面我們可以發現一個大小大約15M的一個安裝文件,這個就是我們的.Net的運行時刻文件,類似於JAVA的JRE(JAVA運行時環境)。這個文件的體積也是比較大的,但是相對於.NET SDK文件的龐大的120M可以算是要好許多了。
至於InstallShield的詳細使用方法我在這裏也無法透徹講解,不過使用起來是非常方便的,我只提出需要注意的地方:
1、在使用InstallShield中,可以稍微編寫一段腳本來監測目標機器時候已經存在了.NET的運行環境,如果有了,就不必安裝.NET運行時文件了。
2、所有我們自己的DLL文件不在需要註冊,只需要簡單的將他們拷貝到我們應用程序所在的目錄即可!
我們在這裏例舉的是使用InstallShield來製作安裝程序,當然還可以使用其它的任何第三方安裝製作軟件來部署和分發我們的.NET應用程序,比如Windows Installer等等。
好了,最終我們比較這兩種部署和分發.NET應用程序的方法,我們可以看到,使用第二種方法能夠帶來的一個潛在好處是,我們可以將.NET運行時環境文件和自己的應用程序分離開來,從而在某些情況下可以大大減少部署安裝應用程序的文件大小;而第一種方法就不可以了,他將始終將.NET運行時環境文件打包進入安裝文件。但是第一種方法的優點也是顯而易見的,就是比較智能化,需要人干預的地方很少,並且如果需要部署和分發的.NET應用程序是比較大型的軟件的話,我們推薦使用第一種方法!
相信在微軟正式發佈.NET以及VS.NET之後,部署和分發.NET應用程序將會變得更加簡單和快捷,但是最好的方式是希望微軟在下一版本的操作系統中能夠內置.NET運行時環境就好了,那樣的話,我們就不必時刻“隨身攜帶”體積不算小的.NET運行時環境文件了,讓我們拭目以待吧。