VS2012 程序打包部署圖文詳解
程序編寫測試完成后接下來我們要做的是打包部署程序,但VS2012讓人心痛的是沒有了打包工具。不知道出于什么原因微軟沒有將打包工具集成在開發(fā)環(huán)境中,但是我知道總會有解決辦法的。
經(jīng)過翻閱資料發(fā)現(xiàn),VS2012雖然沒有集成打包工具,但它為我們提供了下載的端口,需要我們手動安裝一個插件InstallShield。網(wǎng)上有很多第三方的打包工具,但為什么偏要使用微軟提供的呢?因為最原始的也是最高級的,萬變不離其宗。
一、.NET程序部署機制
上篇博客稍微總結(jié)了下.NET程序的編譯機制,下面了解些有關(guān)程序部署的一些機制。在.NET程序包下有三個文件夾分別是bin文件、obj文件、My Project文件,他們分別封存著程序的組成部分。
bin目錄用來存放程序的編譯結(jié)果,它有Debug和Release兩個版本,分別對應(yīng)的文件夾為bin/Debug和bin/Release,這個文件夾是默認的輸出路徑,在編譯后生成的程序文件會存放在該目錄下。當(dāng)然我們也可以手動修改程序的輸出路徑,修改方法:項目屬性—>配置屬性—>輸出路徑來修改。
obj目錄是用來保存每個模塊的編譯結(jié)果,用來放置程序生成時的中間文件。程序不會直接生成出可用的文件,而是由源程序生成中間文件,再編譯中間文件生成可執(zhí)行文件的。在.NET中,編譯是分模塊進行的,編譯整個完成后會合并為一個.DLL或.EXE保存到bin目錄下。因為每次編譯時默認都是采用增量編譯,即只重新編譯改變了的模塊,obj保存每個模塊的編譯結(jié)果,用來加快編譯速度。是否采用增量編譯,可以通過:項目屬性—>配置屬性—>高級—>增量編譯來設(shè)置。
My Project目錄定義你程序集的屬性,被稱為項目屬性文件夾。目錄下的AssemblyInfo類文件,用于保存程序集的信息,如名稱,版本等,這些信息一般與項目屬性面板中的數(shù)據(jù)對應(yīng),不需要手動編寫。
在程序編譯生成后,程序的源文件就不在重要了,重要的是DLL、EXE、Config等的程序的組件,有了程序的組件程序就能夠正常運行。所以在發(fā)布制作安裝程序時我們只需要將程序的組件打包即可。
二、InstallShield程序打包圖解
VS2012中打包工具被看做程序集,在使用時和程序集一樣被創(chuàng)建到程序解決方案下。需要我們做的是添加項目即可。但是對于初次使用的朋友來說,我們需要根據(jù)提示一步步的先下載安裝該打包工具。具體的安裝方法不再詳述,網(wǎng)上資料很多 。
1、設(shè)置安裝程序集
InstallShield安裝完成后,執(zhí)行以下步驟右鍵解決方案-->添加-->新建項目-->其他項目類型-->安裝和部署,具體操作如下圖:
2、發(fā)布程序
在繼續(xù)往下操作前一定要選擇發(fā)布,在啟動項目的屬性內(nèi)設(shè)置發(fā)布文件夾默認路徑設(shè)置為安裝系統(tǒng)的文件夾。
3、設(shè)置程序安裝信息
Application Information主要設(shè)置程序在安裝時顯示的有關(guān)程序的一些信息,如:程序的開發(fā)者、程序開發(fā)公司,程序安裝圖標(biāo)和程序簡介等。
4、添加程序文件
在下圖中的第四步中添加程序文件時會有主輸出、源文件等多個選項框,其實它的生成機制和.NET程序的編譯機制是相同的。下圖中的第五部顯示出的UI.主輸出,在生成安裝文件后程序包中包含了與UI層進行交互引用的其它層的引用文件,但不會生成和UI層(啟動層)沒有相連的組件,我們只能通過手動添加。
5、添加程序的資源文件
程序源文件是程序運行的資源文件,也包含了程序的源碼文件。如果不需要打包源文件的話,這步可以省略。
6、設(shè)置安裝注冊文件
如果開發(fā)的程序中使用了第三方控件,這時在安裝時往往需要注冊到目標(biāo)系統(tǒng)中,同樣Install也為用戶提供了此功能。Install能夠通過設(shè)置dll文件或OCX文件的注冊,首先要添加注冊的文件,然后通過設(shè)置文件的安裝屬性來指定注冊與否,設(shè)置如下圖。
7、設(shè)計程序的打開方式
Application Shortcuts 程序快捷打開方式,Install為用戶提供了兩種顯示形式,分別是Win菜單和桌面。下圖顯示了設(shè)置的一些注意項,此階段也可以設(shè)置程序的顯示圖標(biāo)。
8、設(shè)置程序安裝注冊表項
一般的應(yīng)用程序在安裝時不需要考慮程序的注冊表項,此步驟可以不用設(shè)置。
9、設(shè)置程序安裝時的安裝視圖
根據(jù)自己的需要進行設(shè)計即可。
10、打包環(huán)境
設(shè)置完上面的步驟后,我們的打包程序基本設(shè)置完成,但是在一些情況下我們往往要打包.net環(huán)境或者其它程序運行所需要的Windows環(huán)境,Install也為我們很好的設(shè)計了環(huán)境的打包。
在選擇需要打包的環(huán)境時一定要注意文件的名稱,一般往往是需要直接將環(huán)境安裝包放到安裝exe中這時我們要選擇名稱為Client的文件,如我想要將.NET Framework 4.0的完成安裝包集成到exe中,這時我要選中Microsoft .NET Framework 4.0 Clinet然后等待Vs將該環(huán)境的安裝包下載到程序集文件夾中即可。另外一定要注意名稱后面的(Web Download)括號的內(nèi)容說明文件只是一個鏈接,在安裝時需要網(wǎng)絡(luò)下載才可以實現(xiàn)完成安裝。
11、發(fā)布程序
上面的安裝步驟執(zhí)行完成后即可生成解決方案,但是生成的文件會放在DVD-5文件夾內(nèi),想要使用安裝文件的話就必須拷貝整個文件夾否則安裝會出錯,這樣內(nèi)容很繁瑣,而且給客戶的安裝體驗度也很差,那應(yīng)該有其它的解決辦法吧,是的,如下圖所示,我們將使用SingleImage的安裝包,將所有文件集成到一個Setup.exe中,再次安裝的時候只需要一個Setup.exe即可。
如果我們的安裝文件內(nèi)沒有打包程序運行環(huán)境那上面的操作步驟就完全可以滿足只需要一個Setup.exe即可的要求了,但如果需要將安裝環(huán)境打包到Setup.exe中的話還必須要經(jīng)過下圖的步驟。
好了設(shè)置完成后,接下來就是生成解決方案了或者是只生成單個程序集,這時候安裝文件就只有一個setup.exe了,如下圖。
操作完上述步驟后,程序打包基本設(shè)置已經(jīng)完成,接下來要做的就是生成解決方案。生成解決方案后會在安裝程序集下面生成一個名為Setup的文件夾,安裝文件就保存在下面的目錄中。Install在生成安裝文件后會有Setup.exe和.msi兩中安裝文件,exe文件是安裝的引導(dǎo)文件,核心文件是msi文件,里面封存了程序的組件。在里面找到Setup.exe文件及msi文件即可進行安裝。
最后還要強調(diào)一點,Install打包工具中并沒有繼承中文環(huán)境,在它的底層語言庫中沒有中文語言,所以解決方案、程序集名稱等涉及到與主輸出相關(guān)的文件最好不要以中文名命名,否則會出現(xiàn)如下的錯誤:“ -7184: The FileName column of the File table includes characters that are not available on code page 1252”,該錯誤是在說明在代碼段1252處沒有發(fā)現(xiàn)和文件名相關(guān)的語言庫。
萬變不離其宗,微軟的Install程序打包工具雖然使用時較繁瑣,但原始的就是最高級的,其它的打包工具和它相比也差不到哪兒去。
欄 目:C#教程
下一篇:C# 漢字轉(zhuǎn)拼音實例(支持GB2312字符集中所有漢字)
本文標(biāo)題:VS2012 程序打包部署圖文詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6073.html
您可能感興趣的文章
- 01-10WinForm實現(xiàn)程序一段時間不運行自動關(guān)閉的方法
- 01-10C#實現(xiàn)將程序鎖定到Win7任務(wù)欄的方法
- 01-10C#使用windows服務(wù)開啟應(yīng)用程序的方法
- 01-10C#一個簡單的定時小程序?qū)崿F(xiàn)代碼
- 01-10C#實現(xiàn)程序等待延遲執(zhí)行的方法
- 01-10C#使用Mutex簡單實現(xiàn)程序單實例運行的方法
- 01-10C#計算程序執(zhí)行過程花費時間的方法
- 01-10C#實現(xiàn)將應(yīng)用程序設(shè)置為開機啟動的方法
- 01-10WPF實現(xiàn)類似360安全衛(wèi)士界面的程序源碼分享
- 01-1010個C#程序員經(jīng)常用到的實用代碼片段


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子