網頁

搜尋此網誌

2016年7月11日 星期一

WiX toolset

WiX 是 Windows Installer XML 的縮寫,WiX 顧名思義是「Windows 安裝程式的 XML 語言」,除此之外, WiX 提供一系列命令列工具程式,因此稱為「WiX 工具集 (toolset)」。我們使用 WiX toolset 可以做出專業的 Windows 安裝程式來部署我們的產品,重點是 WiX toolset 是免費和開源的軟體,另外 WiX toolset 和 Visual Studio 與 MSBuild 高度整合,支援 IntelliSense 和專案方式的操作,讓開發上更是方便。現在 WiX toolset 的版本是 3.10,大約是每年會發佈一次,目前這個專案已經是 .NET Foundation 的其中一個專案了。

在開始使用 WiX toolset  之前,必須先瞭解 Microsoft Windows Installer 相關的基礎知識,因為 WiX toolset 是基於 Windows Installer 技術所開發出來的工具,XML 標籤的組織方式也是依據 Windows Installer 的概念。Windows Installer 是 Windows 作業系統提供的安裝 (installation) 和配置 (configuration) 服務,目前最新的版本是 Windows Installer 5.0。

我們透過安裝包 (installation package) 部署產品 (product) 或應用程式 (application),安裝上最重要的概念是「元件 (Components)」和「功能 (Features)」。一個產品包含一至多個功能,功能之間可以是階層關係 (父功能和子功能 ),而一個功能則由一至多個元件所組成 ,注意到一個元件可能屬於多個功能之中。功能是從使用者的觀點來看,而元件則是從程式設計的觀點來看,使用者通常不會察覺到元件,當使用者選擇安裝的功能後,Installer 會自動安裝相關的元件。因此在打造一個安裝包的過程中,我們必須決定如何組織元件和功能之間的關係。

WiX toolset 是編譯式的工具,需要將 XML 的原始碼透過編譯和連結才能產生 Windows 的安裝包,以下介紹相關的檔案類型和工具。

WiX 工具

  • candle.exe
    前處理器 (preprocessor) 和編譯器 (compiler),將 XML 的原始碼檔案 (.wxs) 編譯成物件檔 (.wixobj)。
  • light.exe
    連結器 (linker),將一至多個物件檔連結成 Windows Installer 資料庫 (.msi 或 .msm)。
  • lit.exe
    用來將多個物件檔變成程式庫 (.wixlib) 以提供 light 連結器使用。
  • dark.exe
    將 Windows Installer 資料庫轉換成原始碼檔案 (.wxs)。
  • heat.exe
    將目錄、檔案或專案「收割 (harvest) 」成原始碼檔案 (.wxs)。
  • insignia.exe
    數位簽章的工具
  • melt.exe
    將 .msm 換成原始碼檔案 (.wxs) 的元件群組。
  • torch.exe
    執行 diff 差異產生.wixmst 或 .mst 檔案。
  • smoke.exe
    執行 .msi 或 .msm 的確認驗證。
  • pyro.exe
    將 .wixmsp 和 wixmst 產生補丁 (patch) 安裝檔。
  • WixCop.exe
    原始碼檔案的 schema 升級與格式化。
  • WixUnit.exe
    驗證 XML 檔案和輸出檔案。
  • lux.exe
    Wix 的擴充套件,用來做資料驅動的單元測試。
  • nit.exe
    執行 lux 的單元測試。

WiX 檔案類型

  • WiX Include File (.wxi)
    類似 C++  語言的標頭檔,這是一個 XML 檔案,根元素是 <Include>。這個檔案是用來被被引入到其他原始碼檔案中。
  • WiX Localization File (.wxl)
    語言本地化的檔案,根元素是 <WixLocalization>,這個檔案是用來翻譯顯示的文字。
  • WiX Source File (.wxs)
    WiX toolset 的原始碼檔案,最重要的一個檔案,根元素是 <Wix>,用來定義安裝包的行為。
  • WiX Object File (.wixobj)
    candle.exe 編譯原始碼檔案產生的物件檔。
  • WiX XML Output File (.wixout)
    light.exe 連結各物件檔產生的輸出檔案。
  • WiX Library File (.wixlib)
    程式庫檔案,在多個 WiX 專案中共用程式碼。
  • WiX Debug File (.wixpdb)
    由連結器產生的檔案,用來除錯。
  • WiX XML Patch File (.wixmsp)
    在補丁專案中連結各物件檔產生的輸出檔案。
  • WiX Transform File (.wixmst)
    用來表示輸出檔之間的差異
  • Windows Installer Installation Package (.msi)
    安裝包檔案,Windows Installer 最基本的安裝單位。
  • Windows Installer Merge Module (.msm)
    模組合併檔,用來在多個.msi 檔案之間共用安裝邏輯。
  • Windows Installer Transform (.mst)
    用來在 .msi 檔案上套用變更。
  • Windows Installer Patch Creation Process (.pcp)
    使用 Windows Installer SDK 用來建置補丁的輸入檔。
上述介紹這些可能還不是很清楚,最快認識的方式是自己用 WiX toolset 建置一個 Windows 安裝程式,如果你已經有現成的 Visual Studio 專案,建議先參考「Creating a Simple Setup 」這篇文章將專案做成一個安裝程式。

參考資料:
###

熱門文章