VS2012程式打包部署詳解
上篇部落格把收費系統的總體設計進行了一遍講解,講解的同時摻雜了些有關.NET編譯機制的總結。程式編寫測試完成後接下來我們要做的是打包部署程式,但VS2012讓人心痛的是沒有了打包工具。不知道出於什麼原因微軟沒有將打包工具整合在開發環境中,但是我知道總會有解決辦法的。
經過翻閱資料發現,VS2012雖然沒有整合打包工具,但它為我們提供了下載的埠,需要我們手動安裝一個外掛InstallShield。網上有很多第三方的打包工具,但為什麼偏要使用微軟提供的呢?因為最原始的也是最高階的,萬變不離其宗。
一、.NET程式部署機制
上篇部落格稍微總結了下.NET程式的編譯機制,下面瞭解些有關程式部署的一些機制。在.NET程式包下有三個資料夾分別是bin檔案、obj檔案、My Project檔案,他們分別封存著程式的組成部分。
bin目錄用來存放程式的編譯結果,它有Debug和Release兩個版本,分別對應的資料夾為bin/Debug和bin/Release,這個資料夾是預設的輸出路徑,在編譯後生成的程式檔案會存放在該目錄下。當然我們也可以手動修改程式的輸出路徑,修改方法:專案屬性—>配置屬性—>輸出路徑來修改。
obj目錄是用來儲存每個模組的編譯結果,用來放置程式生成時的中間檔案。程式不會直接生成出可用的檔案,而是由源程式生成中間檔案,再編譯中間檔案生成可執行檔案的。在.NET中,編譯是分模組進行的,編譯整個完成後會合併為一個.DLL或.EXE儲存到bin目錄下。因為每次編譯時預設都是採用增量編譯,即只重新編譯改變了的模組,obj儲存每個模組的編譯結果,用來加快編譯速度。是否採用增量編譯,可以通過:專案屬性—>配置屬性—>高階—>增量編譯來設定。
My Project目錄定義你程式集的屬性,被稱為專案屬性資料夾。目錄下的AssemblyInfo類檔案,用於儲存程式集的資訊,如名稱,版本等,這些資訊一般與專案屬性面板中的資料對應,不需要手動編寫。
在程式編譯生成後,程式的原始檔就不在重要了,重要的是DLL、EXE、Config等的程式的元件,有了程式的元件程式就能夠正常執行。所以在釋出製作安裝程式時我們只需要將程式的元件打包即可。
二、InstallShield程式打包圖解
VS2012中打包工具被看做程式集,在使用時和程式集一樣被建立到程式解決方案下。需要我們做的是新增專案即可。但是對於初次使用的朋友來說,我們需要根據提示一步步的先下載安裝該打包工具。具體的安裝方法不再詳述,網上資料很多 。
1、設定安裝程式集
InstallShield安裝完成後,執行以下步驟右鍵解決方案-->新增-->新建專案-->其他專案型別-->安裝和部署,具體操作如下圖:
2、釋出程式
在繼續往下操作前一定要選擇釋出,在啟動專案的屬性內設定釋出資料夾預設路徑設定為安裝系統的資料夾。
3、設定程式安裝資訊
Application Information主要設定程式在安裝時顯示的有關程式的一些資訊,如:程式的開發者、程式開發公司,程式安裝圖示和程式簡介等。
4、新增程式檔案
在下圖中的第四步中新增程式檔案時會有主輸出、原始檔等多個選項框,其實它的生成機制和.NET程式的編譯機制是相同的。下圖中的第五部顯示出的UI.主輸出,在生成安裝檔案後程序包中包含了與UI層進行互動引用的其它層的引用檔案,但不會生成和UI層(啟動層)沒有相連的元件,我們只能通過手動新增。
5、新增程式的資原始檔
程式原始檔是程式執行的資原始檔,也包含了程式的原始碼檔案。如果不需要打包原始檔的話,這步可以省略。
6、設定安裝註冊檔案
如果開發的程式中使用了第三方控制元件,這時在安裝時往往需要註冊到目標系統中,同樣Install也為使用者提供了此功能。Install能夠通過設定dll檔案或OCX檔案的註冊,首先要添加註冊的檔案,然後通過設定檔案的安裝屬性來指定註冊與否,設定如下圖。
7、設計程式的開啟方式
Application Shortcuts 程式快捷開啟方式,Install為使用者提供了兩種顯示形式,分別是Win選單和桌面。下圖顯示了設定的一些注意項,此階段也可以設定程式的顯示圖示。
8、設定程式安裝登錄檔項
一般的應用程式在安裝時不需要考慮程式的登錄檔項,此步驟可以不用設定。
9、設定程式安裝時的安裝檢視
根據自己的需要進行設計即可。
10、打包環境
設定完上面的步驟後,我們的打包程式基本設定完成,但是在一些情況下我們往往要打包.net環境或者其它程式執行所需要的Windows環境,Install也為我們很好的設計了環境的打包。
在選擇需要打包的環境時一定要注意檔案的名稱,一般往往是需要直接將環境安裝包放到安裝exe中這時我們要選擇名稱為Client的檔案,如我想要將.NET Framework 4.0的完成安裝包整合到exe中,這時我要選中Microsoft .NET Framework 4.0 Clinet然後等待Vs將該環境的安裝包下載到程式集資料夾中即可。另外一定要注意名稱後面的(Web Download)括號的內容說明檔案只是一個連結,在安裝時需要網路下載才可以實現完成安裝。
11、釋出程式
上面的安裝步驟執行完成後即可生成解決方案,但是生成的檔案會放在DVD-5資料夾內,想要使用安裝檔案的話就必須拷貝整個資料夾否則安裝會出錯,這樣內容很繁瑣,而且給客戶的安裝體驗度也很差,那應該有其它的解決辦法吧,是的,如下圖所示,我們將使用SingleImage的安裝包,將所有檔案整合到一個Setup.exe中,再次安裝的時候只需要一個Setup.exe即可。
如果我們的安裝檔案內沒有打包程式執行環境那上面的操作步驟就完全可以滿足只需要一個Setup.exe即可的要求了,但如果需要將安裝環境打包到Setup.exe中的話還必須要經過下圖的步驟。
好了設定完成後,接下來就是生成解決方案了或者是隻生成單個程式集,這時候安裝檔案就只有一個setup.exe了,如下圖。
操作完上述步驟後,程式打包基本設定已經完成,接下來要做的就是生成解決方案。生成解決方案後會在安裝程式集下面生成一個名為Setup的資料夾,安裝檔案就儲存在下面的目錄中。Install在生成安裝檔案後會有Setup.exe和.msi兩中安裝檔案,exe檔案是安裝的引導檔案,核心檔案是msi檔案,裡面封存了程式的元件。在裡面找到Setup.exe檔案及msi檔案即可進行安裝。
最後還要強調一點,Install打包工具中並沒有繼承中文環境,在它的底層語言庫中沒有中文語言,所以解決方案、程式集名稱等涉及到與主輸出相關的檔案最好不要以中文名命名,否則會出現如下的錯誤:“ -7184: The FileName column of the File table includes characters that are not available on code page 1252”,該錯誤是在說明在程式碼段1252處沒有發現和檔名相關的語言庫。
萬變不離其宗,微軟的Install程式打包工具雖然使用時較繁瑣,但原始的就是最高階的,其它的打包工具和它相比也差不到哪兒去。
轉自:https://blog.csdn.net/zhang_xinxiu/article/details/9099757