天天看點

VS2012程式打包部署詳解

VS2012 打包安裝程式的時候看到一篇比較用心的博文,這可能是連很多C#教材都忽略的部分,或有也沒一下詳細,果斷收了

文章來源   

http://blog.csdn.net/zhang_xinxiu/article/details/9099757

轉載請注明原出處

上篇部落格把收費系統的總體設計進行了一遍講解,講解的同時摻雜了些有關.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程式打包工具雖然使用時較繁瑣,但原始的就是最進階的,其它的打包工具和它相比也差不到哪兒去。