本文討論:
Windows Installer XML 概述
建立 WiX 打包說明
整合 WiX 和 MSBuild
自動執行產生和打包
本文使用了以 下技術:Visual Studio, Windows Installer XML (WiX), MSBuild
目 錄
WiX 簡介
建立 WiX 檔案WiX 和 MSBuildMSBuild 批處理自動執 行產生和打包分析 MSBuild 指令碼綜述自訂過程總結
在開發過程中,重要的 是有自動的產生過程。同樣重要的是要有自動建立發布的手段。遺憾的是,在很 多組織中(尤其是較小的組織),並沒有這些。通常,您會發現發布內容只是在 最後一分鐘才被拼合在一起。但是,如果花時間建立自動產生和發布計劃,就會 節省無數的時間,您就可以將這些時間更好地用在完成任務上,而不是用來產生 和發布項目。
在本文中,我將介紹如何使用 Microsoft® Build Engine (MSBuild) 和 Windows® Installer XML (WiX) 工具集在組織中實現 自動和可重複的產生和發布過程。本文討論了 WiX v2(注意,當 WiX v3 發布時 ,不會直接轉換某些文法樣本)。雖然 WiX 的確簡化了建立發布的過程,但無論 您是否使用 WiX 建立發布,本文描述的技術都可供您參考。也可以對這些技術進 行一些修改後,將它們應用於不使用 Microsoft .NET Framework 2.0 所開發的 應用程式(本文還包含指向英文網頁的連結)。
我將假定您熟悉 MSBuild (如果需要重新瞭解它,請參閱我在 2006 年 6 月的《MSDN®雜誌》上的文 章 深入瞭解 MSBuild:通過 Microsoft Build Engine 的自訂任務以自己的方 式編譯應用程式)。我將為那些不熟悉該工具的人提供 WiX 工具集的概述。請參 見側欄“MSBuild 和 WiX 資源”中關於更多相關文章和工具的參考。 在本文中,為了進行示範,我將使用我的 Sedodream MSBuild 項目。您可以從 www.codeplex.com/Sedodream 獲得最新原始碼。
WiX 簡介
建立應 用程式時,通常最終結果是要在生產電腦上安裝並運行它。WiX 工具集可以幫 助您完成此任務。在這一節中,我將描述 WiX,並介紹如何使用 WiX 建立安裝程 序。
WiX 描述了在目標電腦上的安裝是什麼樣子的。從 Visual Studio® 到 Microsoft Office,在很多 Microsoft 應用程式中都使用了 Windows Installer。您可能會吃驚地發現:WiX 實際上是個開放原始碼的項目, 並且承載在 sourceforge.net 上。您可以從 wix.sourceforge.net 下載最新的 二進位檔案和源檔案。下載並安裝 WiX 後,您會發現電腦上安裝了如圖 1 中 總結的大量可執行檔。我將重點介紹 Candle.exe 和 Light.exe 工具的使用。
Figure1WiX 組件
名稱 |
說明 |
Candle.exe |
將 WiX 源檔案轉換為中間表示形式。 這實際上是另一個 XML 檔案,但永遠不應手動更改這些產生的檔案。 |
Dark.exe |
將 MSI 檔案轉換為適當的 WiX 源檔案( 可以視為“反編譯”安裝程式)。 |
Light.exe |
從 WiX 源檔案的中間表示形式產生 Windows Installer。 |
Lit.exe |
產生 WiX 庫,該庫 可用於產生其他安裝程式包。 |
Tallow.exe |
用於建立 WiX 源 XML,以複製它在安裝目錄或檔案中的檔案和檔案夾。 |
WixCop.exe |
檢查 WiX 源檔案中存在潛在問題的區 域,類似於 FxCop。 |
WiX 使用聲明性語言,而不是過程性 語言,這意味著您要描述您的安裝將是什麼樣子的,而不用描述為了實現它需要 執行哪些步驟。這可能與您的習慣不同,但它非常容易掌握。通常,要安裝在目 標電腦上的描述檔案將填充 WiX 源檔案。在這裡,我將重點介紹這些組件。
在 WiX 源檔案中,有三個與您希望安裝的檔案有關的主要元素:檔案、 組件和功能。檔案元素是對單個檔案的引用。檔案必須包含在組件元素中,組件 元素是最小的安裝單位。就是說,如果您有一個包含 100 個檔案的組件,並且您 要安裝該組件,則會安裝它包含的所有檔案。相反,如果不安裝該組件,則不安 裝任何檔案。建議不要建立包含大量檔案的組件。
組件始終包含在功能元 素中,並且可以包含在多個功能中。功能是一組組件,也可能是一組子功能。如 果安裝程式具有允許使用者選擇要安裝哪些項的圖形介面,則使用者實際是在選擇功 能。