1. 程式人生 > >Visual Studio2010 “安裝專案” Step By Step

Visual Studio2010 “安裝專案” Step By Step

感謝原作者分享

目錄

一 基本操作

四 總結

  .NET程式集因為包含了元資料,所以程式集具有自描述性。多數程式自身包含了執行所需要的全部資訊,這類程式集就是我們常說的“綠色軟體”。對於綠色軟體,使用壓縮工具製作自解壓檔案就足以滿足我們大多數需要。如果我們構建的是部署比較繁瑣的應用程式,或者是希望以一種更為正規的形式來分發軟體,我們則可以使用VS內建的“安裝專案”模版。“安裝專案”常用於安裝Windows窗體應用程式以及Windows服務,其基於Windos Installer技術,可以幫助使用者在嚮導的指引下完成程式的部署。

一 基本操作

Step 1:準備應用程式需要的所有外部資源

  應用程式常用的外部資源包括配置檔案、COM元件、第三方程式集、相關檔案等。好的實踐是,在專案構建階段,就建立並維護這樣一份依賴性列表。

Step 2:新建安裝專案並設定屬性

Step 3:定義“生成”方式

進入屬性設定對話方塊,配置安裝程式的生成方式及必備元件:

Step 4:設定“檔案系統”

  開啟“檔案系統編輯器”,配置安裝程式在目標機器中的不同位置如何部署檔案及程式集:

  通過“檔案系統編輯器”,可以在以上3個目錄中定製部署涉及的檔案及程式集。可以新增的項包括:“資料夾”、“專案輸出”(其他專案的所包含的項,如程式集和檔案等等)、“檔案”、“程式集”。

  新增專案輸出:

Step 5:設定“登錄檔”

  開啟“登錄檔編輯器”設定目標機器的登錄檔項和值:

Step 6:建立檔案關聯

  建立檔案關聯實際上是為某個副檔名對映處理程式,開啟“檔案型別編輯器”可以設定副檔名與應用程式的對映關係。

  1 建立並設定檔案型別

  2 定義操作

  預設定義了一個“開啟”操作,該操作也是該型別的預設操作,即當用戶雙擊該型別檔案時執行的操作。

  操作可以定義多個,預設操作會加粗顯示在首行,所有操作都會顯示在對應檔案的右鍵選單中,其顯示順序與定義操作時的排列順序相同。

Step 7:設定安裝程式的使用者介面

  根據安裝方式不同,分為了2組,每組又細分為3個階段——啟動、進度、結束。在簡單應用中,我們可以完全使用預設設定,預設預置5個介面,並自動生成的相應屬性值。

  安裝專案每個對話方塊只能在專案中使用一次,所以我們在使用時,會發現功能相同的對話方塊但是不同名字。下面顯示了VS內建的安裝對話方塊:

  1 歡迎使用

  2 安裝資料夾

  3 確認安裝

  4 進度

  5 已完成

  6 單選按鈕

  7 複選框

  8 客戶資訊

  9 啟動畫面

  10 文字框

  11 許可協議

  12 註冊使用者

  13 自述檔案

Step 8:新增自定義操作

  通過新增自定義操作使我們可以在應用程式安裝時執行附加操作,例如:安裝資料庫,修改配置檔案等,可以在安裝的某和時間點執行程式集和指令碼。(VS內建了“安裝程式類”模板,用以定義此處使用的程式集,具體用法見下文。)

  開啟“自定義操作管理器”,會看到四個階段,使用者可以按需要在各個階段新增自定義操作。

  新增操作後,需要設定操作的屬性:

  需要注意的是自定義操作最好成對使用,即在“安裝”階段新增的檔案,最好在“解除安裝”階段進行刪除。

Step 9:應用條件部署

  “條件部署”就如其名字一樣,能根據安裝環境選擇不同的部署操作,是安裝專案中少有的分支操作。但其使用並不夠簡單直接,其最常用的場景是限制安裝程式的安裝條件。即在安裝程式時檢查客戶機的安裝環境,對不滿足要求的客戶機執行某個處理。實現條件部署功能由兩種方式,分別是“屬性方式”和“管理器方式”。

  1 通過“Condition”屬性實現條件部署

   在安裝專案中的很多項,都有一個“Condition”屬性,用於指定必須滿足的Windos Installer條件,以達到在特性條件下的部署需要。在VS中,並沒有給出類似WF那樣的規則編輯器,條件需要人為鍵入,其語法比較複雜,也不太常用,如果讀者感興趣請參考MSDN關於“Windos Installer條件語句語法”相關內容的描述。

  2 在“啟動條件管理器”中實現條件部署

  綜上所述,VS為我們完成了大量的工作,如果我們沒有特殊要求,完全可以跳過很多步驟,我們僅僅需要少量配置即可完成打包。下面,我將分享安裝專案的“外掛”功能,以幫助讀者打造複雜安裝程式。

二 定製安裝對話方塊

  在定義安裝程式安裝介面時,VS為我們內建了多種介面。但對於複雜需求來講,我們會發現VS提供的安裝對話方塊無法滿足當前的需求,此時就需要我們來自定義安裝對話方塊了。遺憾的是該功能不能在VS裡操作,而是需要藉助“Orca”來完成。Orca是一款由微軟提供的用於Windows Installer資料庫表的編輯器,是VS附帶的工具,但預設不會安裝,可以在“\%Program Files%\Microsoft SDKs\Windows\v6.0A\bin”(筆者安裝的是VS2008,VS2010的路徑與之類似)下找到該工具的安裝包。

  安裝對話方塊被安裝在VS安裝目錄下的Common7\Tools\Deployment\VsdDialogs子目錄,副檔名為wid。開啟該目錄,看到的是複數個以數字命名的子目錄,裡面的東西都差不多,它們代表了不同語言版本,其中有三個目錄需要注意:第一,“0”目錄下的對話方塊是我們自定義對話方塊的“基類”,它們是語言中性的;第二,“1033”目錄為英語專用;第三,“2052”為中文專用。開啟任意子目錄,我們可以看到以wid為副檔名的檔案,這就是我們在VS中看到的安裝對話方塊。

  用Orca開啟VsdCustomText3Dlg.wid,可以檢視“預置三個文字框的對話方塊”的相關表設定,如下:

  其它表還包括:

  • ModuleDialog:定義對話方塊的現實資訊。
  • ModuleSignature:定義簽名。
  • ModuleInstallExecuteSequence:定義了一些操作這些操作將合併到主安裝程式的InstallExecuteSequence中。
  • ModuleInstallUISequence:定義了一些操作這些操作將合併到主安裝程式的InstallUISequence中。

  定義對話方塊的一般步驟如下:

  • Step 1:從0目錄中,已定義好的對話方塊中複製一個副本,並用於修改(我喜歡直接用2052的,這樣就不用設定語言了)。
  • Step 2:用Orca開啟原型,通過修改相關表資料,來改變UI介面(具體用法參考示例)。
  • Step 3:檢視預覽效果。
  • Step 4:將製作好的對話方塊檔案複製到VS下了對應語言目錄。

  P.S.經過筆者嘗試,使用Ocra定義安裝對話方塊理論上是可行的,但實踐中可能只能滿足簡單需求。筆者曾使用Ocra定義複雜對話方塊,並陷入相等痛苦的過程,Orca的專案均採用手工輸入,且資料有限,使用起來十分困難。所以筆者建議,如果是定義簡單對話方塊,請使用該方法,如果定義負責的對話方塊,除非對自身能力有足夠自信,否則誤嘗試。

三 安裝程式類

  在新增自定義操作時,我們可以使用指令碼(例如:vbs),但對於大多數人來說,指令碼可能比較陌生,安裝程式類使我們能夠以一種更熟悉的方式定義操作。

  自定義安裝程式類需要一些步驟:

  • Step 1:引用System.Configuration.Install名稱空間,定義安裝類並繼承Installer類。(VS新建項包括“安裝程式類”模版。)
  • Step 2:為該類宣告[RunInstaller(true)]特性。
  • Step 3:重寫Install類中的方法(包括“安裝”、“提交”、“回滾”、“解除安裝”)。

具體用法請參考MSDN。

 四 總結

  在實際使用中,對於簡單介面我們只需用使用內建的安裝對話方塊即可,如果需要使用與內建對話方塊類似的,但有少許區別的,可以使用Orca定製對話方塊,但大多數情況,我們的安裝對話方塊會比較複雜,這時最簡單的方法是使用WinFrom窗體。篇幅有限,本文不再贅述具體例項,讀者可以參考MSDN或其他技術社群關於“安裝時使用自定義操作建立資料庫”的相關主題。